| // 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<MojoFetcher> fetcher_; |
| RefPtr<Module> module_; |
| |
| base::WeakPtrFactory<ModuleLoader> weak_factory_; |
| }; |
| |
| } // namespace blink |
| |
| #endif // SKY_ENGINE_CORE_APP_MODULELOADER_H_ |