• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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