1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef EXTENSIONS_BROWSER_APP_WINDOW_APP_WINDOW_CONTENTS_H_ 6 #define EXTENSIONS_BROWSER_APP_WINDOW_APP_WINDOW_CONTENTS_H_ 7 8 #include "base/basictypes.h" 9 #include "base/memory/scoped_ptr.h" 10 #include "content/public/browser/notification_observer.h" 11 #include "content/public/browser/web_contents_observer.h" 12 #include "extensions/browser/app_window/app_window.h" 13 #include "extensions/browser/extension_function_dispatcher.h" 14 #include "url/gurl.h" 15 16 namespace content { 17 class BrowserContext; 18 } 19 20 namespace extensions { 21 22 struct DraggableRegion; 23 24 // AppWindowContents class specific to app windows. It maintains a 25 // WebContents instance and observes it for the purpose of passing 26 // messages to the extensions system. 27 class AppWindowContentsImpl : public AppWindowContents, 28 public content::WebContentsObserver, 29 public ExtensionFunctionDispatcher::Delegate { 30 public: 31 explicit AppWindowContentsImpl(AppWindow* host); 32 virtual ~AppWindowContentsImpl(); 33 34 // AppWindowContents 35 virtual void Initialize(content::BrowserContext* context, 36 const GURL& url) OVERRIDE; 37 virtual void LoadContents(int32 creator_process_id) OVERRIDE; 38 virtual void NativeWindowChanged(NativeAppWindow* native_app_window) OVERRIDE; 39 virtual void NativeWindowClosed() OVERRIDE; 40 virtual void DispatchWindowShownForTests() const OVERRIDE; 41 virtual content::WebContents* GetWebContents() const OVERRIDE; 42 43 private: 44 // content::WebContentsObserver 45 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 46 47 // ExtensionFunctionDispatcher::Delegate 48 virtual WindowController* GetExtensionWindowController() const OVERRIDE; 49 virtual content::WebContents* GetAssociatedWebContents() const OVERRIDE; 50 51 void OnRequest(const ExtensionHostMsg_Request_Params& params); 52 void UpdateDraggableRegions(const std::vector<DraggableRegion>& regions); 53 void SuspendRenderViewHost(content::RenderViewHost* rvh); 54 55 AppWindow* host_; // This class is owned by |host_| 56 GURL url_; 57 scoped_ptr<content::WebContents> web_contents_; 58 scoped_ptr<ExtensionFunctionDispatcher> extension_function_dispatcher_; 59 60 DISALLOW_COPY_AND_ASSIGN(AppWindowContentsImpl); 61 }; 62 63 } // namespace extensions 64 65 #endif // EXTENSIONS_BROWSER_APP_WINDOW_APP_WINDOW_CONTENTS_H_ 66