// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef SKY_ENGINE_CORE_APP_MODULELOADER_H_ #define SKY_ENGINE_CORE_APP_MODULELOADER_H_ #include "base/memory/weak_ptr.h" #include "sky/engine/platform/fetcher/MojoFetcher.h" #include "sky/engine/wtf/OwnPtr.h" #include "sky/engine/wtf/RefCounted.h" #include "sky/engine/wtf/RefPtr.h" namespace blink { class Application; class Document; class Module; class ModuleLoader : public MojoFetcher::Client { public: class Client { public: virtual void OnModuleLoadComplete(ModuleLoader*, Module*) = 0; protected: virtual ~Client(); }; enum State { LOADING, COMPLETE, }; ModuleLoader(Client*, Application*, const KURL&); ~ModuleLoader(); State state() const { return state_; } Module* module() const { return module_.get(); } private: // MojoFetcher::Client void OnReceivedResponse(mojo::URLResponsePtr) override; void OnParsingComplete(); State state_; Client* client_; Application* application_; OwnPtr fetcher_; RefPtr module_; base::WeakPtrFactory weak_factory_; }; } // namespace blink #endif // SKY_ENGINE_CORE_APP_MODULELOADER_H_