Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1250)

Side by Side Diff: extensions/browser/app_window/app_window.h

Issue 494033002: Move AppWindow to extensions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove unneeded include in chrome_shell_delegate.cc Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « extensions/browser/DEPS ('k') | extensions/browser/app_window/app_window.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef APPS_APP_WINDOW_H_ 5 #ifndef EXTENSIONS_BROWSER_APP_WINDOW_APP_WINDOW_H_
6 #define APPS_APP_WINDOW_H_ 6 #define EXTENSIONS_BROWSER_APP_WINDOW_APP_WINDOW_H_
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "base/memory/weak_ptr.h" 12 #include "base/memory/weak_ptr.h"
13 #include "components/sessions/session_id.h" 13 #include "components/sessions/session_id.h"
14 #include "components/web_modal/popup_manager.h" 14 #include "components/web_modal/popup_manager.h"
15 #include "components/web_modal/web_contents_modal_dialog_manager_delegate.h" 15 #include "components/web_modal/web_contents_modal_dialog_manager_delegate.h"
16 #include "content/public/browser/notification_observer.h" 16 #include "content/public/browser/notification_observer.h"
(...skipping 10 matching lines...) Expand all
27 27
28 namespace base { 28 namespace base {
29 class DictionaryValue; 29 class DictionaryValue;
30 } 30 }
31 31
32 namespace content { 32 namespace content {
33 class BrowserContext; 33 class BrowserContext;
34 class WebContents; 34 class WebContents;
35 } 35 }
36 36
37 namespace ui {
38 class BaseWindow;
39 }
40
37 namespace extensions { 41 namespace extensions {
42
38 class AppDelegate; 43 class AppDelegate;
39 class AppWebContentsHelper; 44 class AppWebContentsHelper;
40 class Extension; 45 class Extension;
41 class NativeAppWindow; 46 class NativeAppWindow;
42 class PlatformAppBrowserTest; 47 class PlatformAppBrowserTest;
43 class WindowController; 48 class WindowController;
44 49
45 struct DraggableRegion; 50 struct DraggableRegion;
46 }
47
48 namespace ui {
49 class BaseWindow;
50 }
51
52 namespace apps {
53 51
54 // Manages the web contents for app windows. The implementation for this 52 // Manages the web contents for app windows. The implementation for this
55 // class should create and maintain the WebContents for the window, and handle 53 // class should create and maintain the WebContents for the window, and handle
56 // any message passing between the web contents and the extension system or 54 // any message passing between the web contents and the extension system or
57 // native window. 55 // native window.
58 class AppWindowContents { 56 class AppWindowContents {
59 public: 57 public:
60 AppWindowContents() {} 58 AppWindowContents() {}
61 virtual ~AppWindowContents() {} 59 virtual ~AppWindowContents() {}
62 60
63 // Called to initialize the WebContents, before the app window is created. 61 // Called to initialize the WebContents, before the app window is created.
64 virtual void Initialize(content::BrowserContext* context, 62 virtual void Initialize(content::BrowserContext* context,
65 const GURL& url) = 0; 63 const GURL& url) = 0;
66 64
67 // Called to load the contents, after the app window is created. 65 // Called to load the contents, after the app window is created.
68 virtual void LoadContents(int32 creator_process_id) = 0; 66 virtual void LoadContents(int32 creator_process_id) = 0;
69 67
70 // Called when the native window changes. 68 // Called when the native window changes.
71 virtual void NativeWindowChanged( 69 virtual void NativeWindowChanged(NativeAppWindow* native_app_window) = 0;
72 extensions::NativeAppWindow* native_app_window) = 0;
73 70
74 // Called when the native window closes. 71 // Called when the native window closes.
75 virtual void NativeWindowClosed() = 0; 72 virtual void NativeWindowClosed() = 0;
76 73
77 // Called in tests when the window is shown 74 // Called in tests when the window is shown
78 virtual void DispatchWindowShownForTests() const = 0; 75 virtual void DispatchWindowShownForTests() const = 0;
79 76
80 virtual content::WebContents* GetWebContents() const = 0; 77 virtual content::WebContents* GetWebContents() const = 0;
81 78
82 private: 79 private:
83 DISALLOW_COPY_AND_ASSIGN(AppWindowContents); 80 DISALLOW_COPY_AND_ASSIGN(AppWindowContents);
84 }; 81 };
85 82
86 // AppWindow is the type of window used by platform apps. App windows 83 // AppWindow is the type of window used by platform apps. App windows
87 // have a WebContents but none of the chrome of normal browser windows. 84 // have a WebContents but none of the chrome of normal browser windows.
88 class AppWindow : public content::NotificationObserver, 85 class AppWindow : public content::NotificationObserver,
89 public content::WebContentsDelegate, 86 public content::WebContentsDelegate,
90 public content::WebContentsObserver, 87 public content::WebContentsObserver,
91 public web_modal::WebContentsModalDialogManagerDelegate, 88 public web_modal::WebContentsModalDialogManagerDelegate,
92 public extensions::IconImage::Observer { 89 public IconImage::Observer {
93 public: 90 public:
94 enum WindowType { 91 enum WindowType {
95 WINDOW_TYPE_DEFAULT = 1 << 0, // Default app window. 92 WINDOW_TYPE_DEFAULT = 1 << 0, // Default app window.
96 WINDOW_TYPE_PANEL = 1 << 1, // OS controlled panel window (Ash only). 93 WINDOW_TYPE_PANEL = 1 << 1, // OS controlled panel window (Ash only).
97 WINDOW_TYPE_V1_PANEL = 1 << 2, // For apps v1 support in Ash; deprecate 94 WINDOW_TYPE_V1_PANEL = 1 << 2, // For apps v1 support in Ash; deprecate
98 // with v1 apps. 95 // with v1 apps.
99 }; 96 };
100 97
101 enum Frame { 98 enum Frame {
102 FRAME_CHROME, // Chrome-style window frame. 99 FRAME_CHROME, // Chrome-style window frame.
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 // constraints. 189 // constraints.
193 gfx::Size GetContentMinimumSize(const gfx::Insets& frame_insets) const; 190 gfx::Size GetContentMinimumSize(const gfx::Insets& frame_insets) const;
194 gfx::Size GetContentMaximumSize(const gfx::Insets& frame_insets) const; 191 gfx::Size GetContentMaximumSize(const gfx::Insets& frame_insets) const;
195 gfx::Size GetWindowMinimumSize(const gfx::Insets& frame_insets) const; 192 gfx::Size GetWindowMinimumSize(const gfx::Insets& frame_insets) const;
196 gfx::Size GetWindowMaximumSize(const gfx::Insets& frame_insets) const; 193 gfx::Size GetWindowMaximumSize(const gfx::Insets& frame_insets) const;
197 }; 194 };
198 195
199 // Convert draggable regions in raw format to SkRegion format. Caller is 196 // Convert draggable regions in raw format to SkRegion format. Caller is
200 // responsible for deleting the returned SkRegion instance. 197 // responsible for deleting the returned SkRegion instance.
201 static SkRegion* RawDraggableRegionsToSkRegion( 198 static SkRegion* RawDraggableRegionsToSkRegion(
202 const std::vector<extensions::DraggableRegion>& regions); 199 const std::vector<DraggableRegion>& regions);
203 200
204 // The constructor and Init methods are public for constructing a AppWindow 201 // The constructor and Init methods are public for constructing a AppWindow
205 // with a non-standard render interface (e.g. v1 apps using Ash Panels). 202 // with a non-standard render interface (e.g. v1 apps using Ash Panels).
206 // Normally AppWindow::Create should be used. 203 // Normally AppWindow::Create should be used.
207 // Takes ownership of |app_delegate| and |delegate|. 204 // Takes ownership of |app_delegate| and |delegate|.
208 AppWindow(content::BrowserContext* context, 205 AppWindow(content::BrowserContext* context,
209 extensions::AppDelegate* app_delegate, 206 AppDelegate* app_delegate,
210 const extensions::Extension* extension); 207 const Extension* extension);
211 208
212 // Initializes the render interface, web contents, and native window. 209 // Initializes the render interface, web contents, and native window.
213 // |app_window_contents| will become owned by AppWindow. 210 // |app_window_contents| will become owned by AppWindow.
214 void Init(const GURL& url, 211 void Init(const GURL& url,
215 AppWindowContents* app_window_contents, 212 AppWindowContents* app_window_contents,
216 const CreateParams& params); 213 const CreateParams& params);
217 214
218 const std::string& window_key() const { return window_key_; } 215 const std::string& window_key() const { return window_key_; }
219 const SessionID& session_id() const { return session_id_; } 216 const SessionID& session_id() const { return session_id_; }
220 const std::string& extension_id() const { return extension_id_; } 217 const std::string& extension_id() const { return extension_id_; }
221 content::WebContents* web_contents() const; 218 content::WebContents* web_contents() const;
222 WindowType window_type() const { return window_type_; } 219 WindowType window_type() const { return window_type_; }
223 bool window_type_is_panel() const { 220 bool window_type_is_panel() const {
224 return (window_type_ == WINDOW_TYPE_PANEL || 221 return (window_type_ == WINDOW_TYPE_PANEL ||
225 window_type_ == WINDOW_TYPE_V1_PANEL); 222 window_type_ == WINDOW_TYPE_V1_PANEL);
226 } 223 }
227 content::BrowserContext* browser_context() const { return browser_context_; } 224 content::BrowserContext* browser_context() const { return browser_context_; }
228 const gfx::Image& app_icon() const { return app_icon_; } 225 const gfx::Image& app_icon() const { return app_icon_; }
229 const GURL& app_icon_url() const { return app_icon_url_; } 226 const GURL& app_icon_url() const { return app_icon_url_; }
230 const gfx::Image& badge_icon() const { return badge_icon_; } 227 const gfx::Image& badge_icon() const { return badge_icon_; }
231 const GURL& badge_icon_url() const { return badge_icon_url_; } 228 const GURL& badge_icon_url() const { return badge_icon_url_; }
232 bool is_hidden() const { return is_hidden_; } 229 bool is_hidden() const { return is_hidden_; }
233 230
234 const extensions::Extension* GetExtension() const; 231 const Extension* GetExtension() const;
235 extensions::NativeAppWindow* GetBaseWindow(); 232 NativeAppWindow* GetBaseWindow();
236 gfx::NativeWindow GetNativeWindow(); 233 gfx::NativeWindow GetNativeWindow();
237 234
238 // Returns the bounds that should be reported to the renderer. 235 // Returns the bounds that should be reported to the renderer.
239 gfx::Rect GetClientBounds() const; 236 gfx::Rect GetClientBounds() const;
240 237
241 // NativeAppWindows should call this to determine what the window's title 238 // NativeAppWindows should call this to determine what the window's title
242 // is on startup and from within UpdateWindowTitle(). 239 // is on startup and from within UpdateWindowTitle().
243 base::string16 GetTitle() const; 240 base::string16 GetTitle() const;
244 241
245 // Call to notify ShellRegistry and delete the window. Subclasses should 242 // Call to notify ShellRegistry and delete the window. Subclasses should
(...skipping 13 matching lines...) Expand all
259 // Specifies a url for the window badge. 256 // Specifies a url for the window badge.
260 void SetBadgeIconUrl(const GURL& icon_url); 257 void SetBadgeIconUrl(const GURL& icon_url);
261 258
262 // Clear the current badge. 259 // Clear the current badge.
263 void ClearBadge(); 260 void ClearBadge();
264 261
265 // Set the window shape. Passing a NULL |region| sets the default shape. 262 // Set the window shape. Passing a NULL |region| sets the default shape.
266 void UpdateShape(scoped_ptr<SkRegion> region); 263 void UpdateShape(scoped_ptr<SkRegion> region);
267 264
268 // Called from the render interface to modify the draggable regions. 265 // Called from the render interface to modify the draggable regions.
269 void UpdateDraggableRegions( 266 void UpdateDraggableRegions(const std::vector<DraggableRegion>& regions);
270 const std::vector<extensions::DraggableRegion>& regions);
271 267
272 // Updates the app image to |image|. Called internally from the image loader 268 // Updates the app image to |image|. Called internally from the image loader
273 // callback. Also called externally for v1 apps using Ash Panels. 269 // callback. Also called externally for v1 apps using Ash Panels.
274 void UpdateAppIcon(const gfx::Image& image); 270 void UpdateAppIcon(const gfx::Image& image);
275 271
276 // Enable or disable fullscreen mode. |type| specifies which type of 272 // Enable or disable fullscreen mode. |type| specifies which type of
277 // fullscreen mode to change (note that disabling one type of fullscreen may 273 // fullscreen mode to change (note that disabling one type of fullscreen may
278 // not exit fullscreen mode because a window may have a different type of 274 // not exit fullscreen mode because a window may have a different type of
279 // fullscreen enabled). If |type| is not FORCED, checks that the extension has 275 // fullscreen enabled). If |type| is not FORCED, checks that the extension has
280 // the required permission. 276 // the required permission.
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 345
350 void SetAppWindowContentsForTesting(scoped_ptr<AppWindowContents> contents) { 346 void SetAppWindowContentsForTesting(scoped_ptr<AppWindowContents> contents) {
351 app_window_contents_ = contents.Pass(); 347 app_window_contents_ = contents.Pass();
352 } 348 }
353 349
354 protected: 350 protected:
355 virtual ~AppWindow(); 351 virtual ~AppWindow();
356 352
357 private: 353 private:
358 // PlatformAppBrowserTest needs access to web_contents() 354 // PlatformAppBrowserTest needs access to web_contents()
359 friend class extensions::PlatformAppBrowserTest; 355 friend class PlatformAppBrowserTest;
360 356
361 // content::WebContentsDelegate implementation. 357 // content::WebContentsDelegate implementation.
362 virtual void CloseContents(content::WebContents* contents) OVERRIDE; 358 virtual void CloseContents(content::WebContents* contents) OVERRIDE;
363 virtual bool ShouldSuppressDialogs() OVERRIDE; 359 virtual bool ShouldSuppressDialogs() OVERRIDE;
364 virtual content::ColorChooser* OpenColorChooser( 360 virtual content::ColorChooser* OpenColorChooser(
365 content::WebContents* web_contents, 361 content::WebContents* web_contents,
366 SkColor color, 362 SkColor color,
367 const std::vector<content::ColorSuggestion>& suggestions) OVERRIDE; 363 const std::vector<content::ColorSuggestion>& suggestions) OVERRIDE;
368 virtual void RunFileChooser(content::WebContents* tab, 364 virtual void RunFileChooser(content::WebContents* tab,
369 const content::FileChooserParams& params) 365 const content::FileChooserParams& params)
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 // callback. 456 // callback.
461 void UpdateBadgeIcon(const gfx::Image& image); 457 void UpdateBadgeIcon(const gfx::Image& image);
462 458
463 // Callback from web_contents()->DownloadFavicon. 459 // Callback from web_contents()->DownloadFavicon.
464 void DidDownloadFavicon(int id, 460 void DidDownloadFavicon(int id,
465 int http_status_code, 461 int http_status_code,
466 const GURL& image_url, 462 const GURL& image_url,
467 const std::vector<SkBitmap>& bitmaps, 463 const std::vector<SkBitmap>& bitmaps,
468 const std::vector<gfx::Size>& original_bitmap_sizes); 464 const std::vector<gfx::Size>& original_bitmap_sizes);
469 465
470 // extensions::IconImage::Observer implementation. 466 // IconImage::Observer implementation.
471 virtual void OnExtensionIconImageChanged(extensions::IconImage* image) 467 virtual void OnExtensionIconImageChanged(IconImage* image) OVERRIDE;
472 OVERRIDE;
473 468
474 // The browser context with which this window is associated. AppWindow does 469 // The browser context with which this window is associated. AppWindow does
475 // not own this object. 470 // not own this object.
476 content::BrowserContext* browser_context_; 471 content::BrowserContext* browser_context_;
477 472
478 const std::string extension_id_; 473 const std::string extension_id_;
479 474
480 // Identifier that is used when saving and restoring geometry for this 475 // Identifier that is used when saving and restoring geometry for this
481 // window. 476 // window.
482 std::string window_key_; 477 std::string window_key_;
483 478
484 const SessionID session_id_; 479 const SessionID session_id_;
485 WindowType window_type_; 480 WindowType window_type_;
486 content::NotificationRegistrar registrar_; 481 content::NotificationRegistrar registrar_;
487 482
488 // Icon shown in the task bar. 483 // Icon shown in the task bar.
489 gfx::Image app_icon_; 484 gfx::Image app_icon_;
490 485
491 // Icon URL to be used for setting the app icon. If not empty, app_icon_ will 486 // Icon URL to be used for setting the app icon. If not empty, app_icon_ will
492 // be fetched and set using this URL. 487 // be fetched and set using this URL.
493 GURL app_icon_url_; 488 GURL app_icon_url_;
494 489
495 // An object to load the app's icon as an extension resource. 490 // An object to load the app's icon as an extension resource.
496 scoped_ptr<extensions::IconImage> app_icon_image_; 491 scoped_ptr<IconImage> app_icon_image_;
497 492
498 // Badge for icon shown in the task bar. 493 // Badge for icon shown in the task bar.
499 gfx::Image badge_icon_; 494 gfx::Image badge_icon_;
500 495
501 // URL to be used for setting the badge on the app icon. 496 // URL to be used for setting the badge on the app icon.
502 GURL badge_icon_url_; 497 GURL badge_icon_url_;
503 498
504 // An object to load the badge as an extension resource. 499 // An object to load the badge as an extension resource.
505 scoped_ptr<extensions::IconImage> badge_icon_image_; 500 scoped_ptr<IconImage> badge_icon_image_;
506 501
507 scoped_ptr<extensions::NativeAppWindow> native_app_window_; 502 scoped_ptr<NativeAppWindow> native_app_window_;
508 scoped_ptr<AppWindowContents> app_window_contents_; 503 scoped_ptr<AppWindowContents> app_window_contents_;
509 scoped_ptr<extensions::AppDelegate> app_delegate_; 504 scoped_ptr<AppDelegate> app_delegate_;
510 scoped_ptr<extensions::AppWebContentsHelper> helper_; 505 scoped_ptr<AppWebContentsHelper> helper_;
511 506
512 // Manages popup windows (bubbles, tab-modals) visible overlapping the 507 // Manages popup windows (bubbles, tab-modals) visible overlapping the
513 // app window. 508 // app window.
514 scoped_ptr<web_modal::PopupManager> popup_manager_; 509 scoped_ptr<web_modal::PopupManager> popup_manager_;
515 510
516 base::WeakPtrFactory<AppWindow> image_loader_ptr_factory_; 511 base::WeakPtrFactory<AppWindow> image_loader_ptr_factory_;
517 512
518 // Bit field of FullscreenType. 513 // Bit field of FullscreenType.
519 int fullscreen_types_; 514 int fullscreen_types_;
520 515
(...skipping 27 matching lines...) Expand all
548 // reinstated when the window exits fullscreen and moves away from the 543 // reinstated when the window exits fullscreen and moves away from the
549 // taskbar. 544 // taskbar.
550 bool cached_always_on_top_; 545 bool cached_always_on_top_;
551 546
552 // Whether |alpha_enabled| was set in the CreateParams. 547 // Whether |alpha_enabled| was set in the CreateParams.
553 bool requested_alpha_enabled_; 548 bool requested_alpha_enabled_;
554 549
555 DISALLOW_COPY_AND_ASSIGN(AppWindow); 550 DISALLOW_COPY_AND_ASSIGN(AppWindow);
556 }; 551 };
557 552
558 } // namespace apps 553 } // namespace extensions
559 554
560 #endif // APPS_APP_WINDOW_H_ 555 #endif // EXTENSIONS_BROWSER_APP_WINDOW_APP_WINDOW_H_
OLDNEW
« no previous file with comments | « extensions/browser/DEPS ('k') | extensions/browser/app_window/app_window.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698