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

Side by Side Diff: apps/app_window.h

Issue 186343002: Create windows for new app window bounds API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Self nit: comment Created 6 years, 9 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
« no previous file with comments | « no previous file | apps/app_window.cc » ('j') | apps/app_window.cc » ('J')
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 APPS_APP_WINDOW_H_
6 #define APPS_APP_WINDOW_H_ 6 #define APPS_APP_WINDOW_H_
7 7
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/memory/weak_ptr.h" 9 #include "base/memory/weak_ptr.h"
10 #include "chrome/browser/extensions/extension_icon_image.h" 10 #include "chrome/browser/extensions/extension_icon_image.h"
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 109
110 // Fullscreen entered by the OS. ChromeOS uses this type of fullscreen to 110 // Fullscreen entered by the OS. ChromeOS uses this type of fullscreen to
111 // enter immersive fullscreen when the user hits the <F4> key. 111 // enter immersive fullscreen when the user hits the <F4> key.
112 FULLSCREEN_TYPE_OS = 1 << 2, 112 FULLSCREEN_TYPE_OS = 1 << 2,
113 113
114 // Fullscreen mode that could not be exited by the user. ChromeOS uses 114 // Fullscreen mode that could not be exited by the user. ChromeOS uses
115 // this type of fullscreen to run an app in kiosk mode. 115 // this type of fullscreen to run an app in kiosk mode.
116 FULLSCREEN_TYPE_FORCED = 1 << 3, 116 FULLSCREEN_TYPE_FORCED = 1 << 3,
117 }; 117 };
118 118
119 struct BoundsSpecification {
120 // INT_MIN represents an unspecified position component.
121 static const int kUnspecifiedPosition;
122
123 BoundsSpecification();
124 ~BoundsSpecification();
125
126 // INT_MIN designates 'unspecified' for the position components, and 0 for
benwells 2014/03/05 02:33:30 Does INT_MIN mean 0 for size, or does 0 mean unspe
tmdiep 2014/03/05 03:06:47 I'll reword this comment. INT_MIN means unspecifie
127 // the size components. When unspecified, they should be replaced with a
128 // default value.
129 gfx::Rect bounds;
130
131 gfx::Size minimum_size;
132 gfx::Size maximum_size;
133
134 // Reset the bounds fields to their 'unspecified' values.
tapted 2014/03/05 03:14:03 nit: mention that minimum/maximum size are unchang
135 void ResetBounds();
136 };
137
119 struct CreateParams { 138 struct CreateParams {
120 CreateParams(); 139 CreateParams();
121 ~CreateParams(); 140 ~CreateParams();
122 141
123 WindowType window_type; 142 WindowType window_type;
124 Frame frame; 143 Frame frame;
125 144
126 bool has_frame_color; 145 bool has_frame_color;
127 SkColor frame_color; 146 SkColor frame_color;
128 bool transparent_background; // Only supported on ash. 147 bool transparent_background; // Only supported on ash.
129 148
130 // Specify the initial content bounds of the window (excluding any window 149 // The initial content/inner bounds specification (excluding any window
131 // decorations). INT_MIN designates 'unspecified' for the position 150 // decorations).
132 // components, and 0 for the size components. When unspecified, they should 151 BoundsSpecification content_spec;
133 // be replaced with a default value.
134 gfx::Rect bounds;
135 152
136 gfx::Size minimum_size; 153 // The initial window/outer bounds specification (including window
137 gfx::Size maximum_size; 154 // decorations).
155 BoundsSpecification window_spec;
138 156
139 std::string window_key; 157 std::string window_key;
140 158
141 // The process ID of the process that requested the create. 159 // The process ID of the process that requested the create.
142 int32 creator_process_id; 160 int32 creator_process_id;
143 161
144 // Initial state of the window. 162 // Initial state of the window.
145 ui::WindowShowState state; 163 ui::WindowShowState state;
146 164
147 // If true, don't show the window after creation. 165 // If true, don't show the window after creation.
148 bool hidden; 166 bool hidden;
149 167
150 // If true, the window will be resizable by the user. Defaults to true. 168 // If true, the window will be resizable by the user. Defaults to true.
151 bool resizable; 169 bool resizable;
152 170
153 // If true, the window will be focused on creation. Defaults to true. 171 // If true, the window will be focused on creation. Defaults to true.
154 bool focused; 172 bool focused;
155 173
156 // If true, the window will stay on top of other windows that are not 174 // If true, the window will stay on top of other windows that are not
157 // configured to be always on top. Defaults to false. 175 // configured to be always on top. Defaults to false.
158 bool always_on_top; 176 bool always_on_top;
177
178 // The API enables developers to specify content or window bounds. This
179 // function combines them into a single, constrained window size. Note that
180 // until the frame insets are known, the returned value is just an estimate.
benwells 2014/03/05 02:33:30 I don't understand the comment about frame insets.
tmdiep 2014/03/05 03:06:47 We need the window created first to get the real f
181 gfx::Rect GetInitialWindowBounds(const gfx::Insets& frame_insets) const;
182
183 // The API enables developers to specify content or window size constraints.
184 // These functions combine them so that we can work with one set of
185 // constraints.
186 gfx::Size GetContentMinimumSize(const gfx::Insets& frame_insets) const;
187 gfx::Size GetContentMaximumSize(const gfx::Insets& frame_insets) const;
188 gfx::Size GetWindowMinimumSize(const gfx::Insets& frame_insets) const;
189 gfx::Size GetWindowMaximumSize(const gfx::Insets& frame_insets) const;
159 }; 190 };
160 191
161 class Delegate { 192 class Delegate {
162 public: 193 public:
163 virtual ~Delegate(); 194 virtual ~Delegate();
164 195
165 // General initialization. 196 // General initialization.
166 virtual void InitWebContents(content::WebContents* web_contents) = 0; 197 virtual void InitWebContents(content::WebContents* web_contents) = 0;
167 virtual NativeAppWindow* CreateNativeAppWindow( 198 virtual NativeAppWindow* CreateNativeAppWindow(
168 AppWindow* window, 199 AppWindow* window,
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 void Minimize(); 313 void Minimize();
283 void Restore(); 314 void Restore();
284 315
285 // Transitions to OS fullscreen. See FULLSCREEN_TYPE_OS for more details. 316 // Transitions to OS fullscreen. See FULLSCREEN_TYPE_OS for more details.
286 void OSFullscreen(); 317 void OSFullscreen();
287 318
288 // Transitions to forced fullscreen. See FULLSCREEN_TYPE_FORCED for more 319 // Transitions to forced fullscreen. See FULLSCREEN_TYPE_FORCED for more
289 // details. 320 // details.
290 void ForcedFullscreen(); 321 void ForcedFullscreen();
291 322
292 // Set the minimum and maximum size that this window is allowed to be. 323 // Set the minimum and maximum size of the content bounds.
293 void SetMinimumSize(const gfx::Size& min_size); 324 void SetContentMinimumSize(const gfx::Size& min_size);
294 void SetMaximumSize(const gfx::Size& max_size); 325 void SetContentMaximumSize(const gfx::Size& max_size);
295 326
296 enum ShowType { SHOW_ACTIVE, SHOW_INACTIVE }; 327 enum ShowType { SHOW_ACTIVE, SHOW_INACTIVE };
297 328
298 // Shows the window if its contents have been painted; otherwise flags the 329 // Shows the window if its contents have been painted; otherwise flags the
299 // window to be shown as soon as its contents are painted for the first time. 330 // window to be shown as soon as its contents are painted for the first time.
300 void Show(ShowType show_type); 331 void Show(ShowType show_type);
301 332
302 // Hides the window. If the window was previously flagged to be shown on 333 // Hides the window. If the window was previously flagged to be shown on
303 // first paint, it will be unflagged. 334 // first paint, it will be unflagged.
304 void Hide(); 335 void Hide();
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 OVERRIDE; 420 OVERRIDE;
390 421
391 // Helper method to add a message to the renderer's DevTools console. 422 // Helper method to add a message to the renderer's DevTools console.
392 void AddMessageToDevToolsConsole(content::ConsoleMessageLevel level, 423 void AddMessageToDevToolsConsole(content::ConsoleMessageLevel level,
393 const std::string& message); 424 const std::string& message);
394 425
395 // Saves the window geometry/position/screen bounds. 426 // Saves the window geometry/position/screen bounds.
396 void SaveWindowPosition(); 427 void SaveWindowPosition();
397 428
398 // Helper method to adjust the cached bounds so that we can make sure it can 429 // Helper method to adjust the cached bounds so that we can make sure it can
399 // be visible on the screen. See http://crbug.com/145752 . 430 // be visible on the screen. See http://crbug.com/145752.
400 void AdjustBoundsToBeVisibleOnScreen(const gfx::Rect& cached_bounds, 431 void AdjustBoundsToBeVisibleOnScreen(const gfx::Rect& cached_bounds,
401 const gfx::Rect& cached_screen_bounds, 432 const gfx::Rect& cached_screen_bounds,
402 const gfx::Rect& current_screen_bounds, 433 const gfx::Rect& current_screen_bounds,
403 const gfx::Size& minimum_size, 434 const gfx::Size& minimum_size,
404 gfx::Rect* bounds) const; 435 gfx::Rect* bounds) const;
405 436
406 // Loads the appropriate default or cached window bounds and constrains them 437 // Loads the appropriate default or cached window bounds. Returns a new
407 // based on screen size and minimum/maximum size. Returns a new CreateParams 438 // CreateParams that should be used to create the window.
408 // that should be used to create the window. 439 CreateParams LoadDefaults(CreateParams params) const;
409 CreateParams LoadDefaultsAndConstrain(CreateParams params) const;
410 440
411 // Load the app's image, firing a load state change when loaded. 441 // Load the app's image, firing a load state change when loaded.
412 void UpdateExtensionAppIcon(); 442 void UpdateExtensionAppIcon();
413 443
414 // Called when size_constraints is changed. 444 // Called when size_constraints is changed.
415 void OnSizeConstraintsChanged(); 445 void OnSizeConstraintsChanged();
416 446
417 // Set the fullscreen state in the native app window. 447 // Set the fullscreen state in the native app window.
418 void SetNativeWindowFullscreen(); 448 void SetNativeWindowFullscreen();
419 449
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 // reinstated when the window exits fullscreen and moves away from the 537 // reinstated when the window exits fullscreen and moves away from the
508 // taskbar. 538 // taskbar.
509 bool cached_always_on_top_; 539 bool cached_always_on_top_;
510 540
511 DISALLOW_COPY_AND_ASSIGN(AppWindow); 541 DISALLOW_COPY_AND_ASSIGN(AppWindow);
512 }; 542 };
513 543
514 } // namespace apps 544 } // namespace apps
515 545
516 #endif // APPS_APP_WINDOW_H_ 546 #endif // APPS_APP_WINDOW_H_
OLDNEW
« no previous file with comments | « no previous file | apps/app_window.cc » ('j') | apps/app_window.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698