Index: chrome/browser/guest_view/app_view/app_view_guest.h |
diff --git a/chrome/browser/guest_view/app_view/app_view_guest.h b/chrome/browser/guest_view/app_view/app_view_guest.h |
index 33e01972b56ece5c51f86d39e3f6111217251f59..78a4d8fcab0d3c60c87795456e91e428af80764d 100644 |
--- a/chrome/browser/guest_view/app_view/app_view_guest.h |
+++ b/chrome/browser/guest_view/app_view/app_view_guest.h |
@@ -5,15 +5,41 @@ |
#ifndef CHROME_BROWSER_GUEST_VIEW_APP_VIEW_APP_VIEW_GUEST_H_ |
#define CHROME_BROWSER_GUEST_VIEW_APP_VIEW_APP_VIEW_GUEST_H_ |
+#include "base/id_map.h" |
#include "chrome/browser/guest_view/guest_view.h" |
+#include "extensions/browser/extension_function_dispatcher.h" |
-class AppViewGuest : public GuestView<AppViewGuest> { |
+namespace extensions { |
+class Extension; |
+class ExtensionHost; |
+}; |
+ |
+class AppViewGuest : public GuestView<AppViewGuest>, |
+ public extensions::ExtensionFunctionDispatcher::Delegate { |
public: |
static const char Type[]; |
+ static bool CompletePendingRequest( |
+ const GURL& url, |
+ int guest_instance_id, |
+ content::BrowserContext* browser_context, |
+ const std::string& guest_extension_id); |
+ |
AppViewGuest(content::BrowserContext* browser_context, |
int guest_instance_id); |
+ // ExtensionFunctionDispatcher::Delegate implementation. |
+ virtual extensions::WindowController* GetExtensionWindowController() const |
+ OVERRIDE; |
+ virtual content::WebContents* GetAssociatedWebContents() const OVERRIDE; |
+ |
+ // content::WebContentsObserver implementation. |
+ virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; |
+ |
+ // content::WebContentsDelegate implementation. |
+ virtual bool HandleContextMenu( |
+ const content::ContextMenuParams& params) OVERRIDE; |
+ |
// GuestViewBase implementation. |
virtual void CreateWebContents( |
const std::string& embedder_extension_id, |
@@ -21,9 +47,30 @@ class AppViewGuest : public GuestView<AppViewGuest> { |
const base::DictionaryValue& create_params, |
const WebContentsCreatedCallback& callback) OVERRIDE; |
virtual void DidAttachToEmbedder() OVERRIDE; |
+ virtual void DidInitialize() OVERRIDE; |
private: |
virtual ~AppViewGuest(); |
+ |
+ void OnRequest(const ExtensionHostMsg_Request_Params& params); |
+ |
+ void CompleteCreateWebContents(const GURL& url, |
+ const extensions::Extension* guest_extension, |
+ const WebContentsCreatedCallback& callback); |
+ |
+ void LaunchAppAndFireEvent(const WebContentsCreatedCallback& callback, |
+ extensions::ExtensionHost* extension_host); |
+ |
+ GURL url_; |
+ std::string guest_extension_id_; |
+ scoped_ptr<extensions::ExtensionFunctionDispatcher> |
+ extension_function_dispatcher_; |
+ |
+ // This is used to ensure pending tasks will not fire after this object is |
+ // destroyed. |
+ base::WeakPtrFactory<AppViewGuest> weak_ptr_factory_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(AppViewGuest); |
}; |
#endif // CHROME_BROWSER_GUEST_VIEW_APP_VIEW_APP_VIEW_GUEST_H_ |