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

Side by Side Diff: chrome/browser/ui/views/extensions/native_app_window_views.cc

Issue 12212207: Support panel titles and Icons for v1 apps (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comment. Created 7 years, 10 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 | « chrome/browser/ui/views/extensions/native_app_window_views.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "chrome/browser/ui/views/extensions/native_app_window_views.h" 5 #include "chrome/browser/ui/views/extensions/native_app_window_views.h"
6 6
7 #include "chrome/browser/extensions/extension_host.h" 7 #include "chrome/browser/extensions/extension_host.h"
8 #include "chrome/browser/favicon/favicon_tab_helper.h" 8 #include "chrome/browser/favicon/favicon_tab_helper.h"
9 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/ui/views/extensions/extension_keybinding_registry_views .h" 10 #include "chrome/browser/ui/views/extensions/extension_keybinding_registry_views .h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 web_view_(NULL), 50 web_view_(NULL),
51 window_(NULL), 51 window_(NULL),
52 is_fullscreen_(false), 52 is_fullscreen_(false),
53 frameless_(create_params.frame == ShellWindow::FRAME_NONE), 53 frameless_(create_params.frame == ShellWindow::FRAME_NONE),
54 transparent_background_(create_params.transparent_background) { 54 transparent_background_(create_params.transparent_background) {
55 Observe(shell_window_->web_contents()); 55 Observe(shell_window_->web_contents());
56 minimum_size_ = create_params.minimum_size; 56 minimum_size_ = create_params.minimum_size;
57 maximum_size_ = create_params.maximum_size; 57 maximum_size_ = create_params.maximum_size;
58 58
59 window_ = new views::Widget; 59 window_ = new views::Widget;
60 if (create_params.window_type == ShellWindow::WINDOW_TYPE_PANEL) 60 if (create_params.window_type == ShellWindow::WINDOW_TYPE_PANEL ||
61 create_params.window_type == ShellWindow::WINDOW_TYPE_V1_PANEL) {
61 InitializePanelWindow(create_params); 62 InitializePanelWindow(create_params);
62 else 63 } else {
63 InitializeDefaultWindow(create_params); 64 InitializeDefaultWindow(create_params);
64 65 }
65 extension_keybinding_registry_.reset( 66 extension_keybinding_registry_.reset(
66 new ExtensionKeybindingRegistryViews( 67 new ExtensionKeybindingRegistryViews(
67 profile(), 68 profile(),
68 window_->GetFocusManager(), 69 window_->GetFocusManager(),
69 extensions::ExtensionKeybindingRegistry::PLATFORM_APPS_ONLY, 70 extensions::ExtensionKeybindingRegistry::PLATFORM_APPS_ONLY,
70 shell_window_)); 71 shell_window_));
71 72
72 OnViewWasResized(); 73 OnViewWasResized();
73 window_->AddObserver(this); 74 window_->AddObserver(this);
74 } 75 }
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 229
229 void NativeAppWindowViews::SetBounds(const gfx::Rect& bounds) { 230 void NativeAppWindowViews::SetBounds(const gfx::Rect& bounds) {
230 GetWidget()->SetBounds(bounds); 231 GetWidget()->SetBounds(bounds);
231 } 232 }
232 233
233 void NativeAppWindowViews::FlashFrame(bool flash) { 234 void NativeAppWindowViews::FlashFrame(bool flash) {
234 window_->FlashFrame(flash); 235 window_->FlashFrame(flash);
235 } 236 }
236 237
237 bool NativeAppWindowViews::IsAlwaysOnTop() const { 238 bool NativeAppWindowViews::IsAlwaysOnTop() const {
238 return shell_window_->window_type() == ShellWindow::WINDOW_TYPE_PANEL; 239 return shell_window_->window_type_is_panel();
239 } 240 }
240 241
241 gfx::Insets NativeAppWindowViews::GetFrameInsets() const { 242 gfx::Insets NativeAppWindowViews::GetFrameInsets() const {
242 if (frameless()) 243 if (frameless())
243 return gfx::Insets(); 244 return gfx::Insets();
244 245
245 // The pretend client_bounds passed in need to be large enough to ensure that 246 // The pretend client_bounds passed in need to be large enough to ensure that
246 // GetWindowBoundsForClientBounds() doesn't decide that it needs more than 247 // GetWindowBoundsForClientBounds() doesn't decide that it needs more than
247 // the specified amount of space to fit the window controls in, and return a 248 // the specified amount of space to fit the window controls in, and return a
248 // number larger than the real frame insets. Most window controls are smaller 249 // number larger than the real frame insets. Most window controls are smaller
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 325
325 bool NativeAppWindowViews::CanMaximize() const { 326 bool NativeAppWindowViews::CanMaximize() const {
326 return maximum_size_.IsEmpty(); 327 return maximum_size_.IsEmpty();
327 } 328 }
328 329
329 string16 NativeAppWindowViews::GetWindowTitle() const { 330 string16 NativeAppWindowViews::GetWindowTitle() const {
330 return shell_window_->GetTitle(); 331 return shell_window_->GetTitle();
331 } 332 }
332 333
333 bool NativeAppWindowViews::ShouldShowWindowTitle() const { 334 bool NativeAppWindowViews::ShouldShowWindowTitle() const {
334 return false; 335 return shell_window_->window_type() == ShellWindow::WINDOW_TYPE_V1_PANEL;
335 } 336 }
336 337
337 gfx::ImageSkia NativeAppWindowViews::GetWindowAppIcon() { 338 gfx::ImageSkia NativeAppWindowViews::GetWindowAppIcon() {
338 gfx::Image app_icon = shell_window_->app_icon(); 339 gfx::Image app_icon = shell_window_->app_icon();
339 if (app_icon.IsEmpty()) 340 if (app_icon.IsEmpty())
340 return GetWindowIcon(); 341 return GetWindowIcon();
341 else 342 else
342 return *app_icon.ToImageSkia(); 343 return *app_icon.ToImageSkia();
343 } 344 }
344 345
345 gfx::ImageSkia NativeAppWindowViews::GetWindowIcon() { 346 gfx::ImageSkia NativeAppWindowViews::GetWindowIcon() {
346 content::WebContents* web_contents = shell_window_->web_contents(); 347 content::WebContents* web_contents = shell_window_->web_contents();
347 if (web_contents) { 348 if (web_contents) {
348 FaviconTabHelper* favicon_tab_helper = 349 FaviconTabHelper* favicon_tab_helper =
349 FaviconTabHelper::FromWebContents(web_contents); 350 FaviconTabHelper::FromWebContents(web_contents);
350 gfx::Image app_icon = favicon_tab_helper->GetFavicon(); 351 gfx::Image app_icon = favicon_tab_helper->GetFavicon();
351 if (!app_icon.IsEmpty()) 352 if (!app_icon.IsEmpty())
352 return *app_icon.ToImageSkia(); 353 return *app_icon.ToImageSkia();
353 } 354 }
354 return gfx::ImageSkia(); 355 return gfx::ImageSkia();
355 } 356 }
356 357
358 bool NativeAppWindowViews::ShouldShowWindowIcon() const {
359 return shell_window_->window_type() == ShellWindow::WINDOW_TYPE_V1_PANEL;
360 }
361
357 void NativeAppWindowViews::SaveWindowPlacement(const gfx::Rect& bounds, 362 void NativeAppWindowViews::SaveWindowPlacement(const gfx::Rect& bounds,
358 ui::WindowShowState show_state) { 363 ui::WindowShowState show_state) {
359 views::WidgetDelegate::SaveWindowPlacement(bounds, show_state); 364 views::WidgetDelegate::SaveWindowPlacement(bounds, show_state);
360 shell_window_->OnNativeWindowChanged(); 365 shell_window_->OnNativeWindowChanged();
361 } 366 }
362 367
363 void NativeAppWindowViews::DeleteDelegate() { 368 void NativeAppWindowViews::DeleteDelegate() {
364 window_->RemoveObserver(this); 369 window_->RemoveObserver(this);
365 shell_window_->OnNativeClose(); 370 shell_window_->OnNativeClose();
366 } 371 }
367 372
368 views::Widget* NativeAppWindowViews::GetWidget() { 373 views::Widget* NativeAppWindowViews::GetWidget() {
369 return window_; 374 return window_;
370 } 375 }
371 376
372 const views::Widget* NativeAppWindowViews::GetWidget() const { 377 const views::Widget* NativeAppWindowViews::GetWidget() const {
373 return window_; 378 return window_;
374 } 379 }
375 380
376 views::NonClientFrameView* NativeAppWindowViews::CreateNonClientFrameView( 381 views::NonClientFrameView* NativeAppWindowViews::CreateNonClientFrameView(
377 views::Widget* widget) { 382 views::Widget* widget) {
378 #if defined(USE_ASH) 383 #if defined(USE_ASH)
379 if (chrome::IsNativeViewInAsh(widget->GetNativeView())) { 384 if (chrome::IsNativeViewInAsh(widget->GetNativeView())) {
380 if (shell_window_->window_type() == ShellWindow::WINDOW_TYPE_PANEL) { 385 if (shell_window_->window_type_is_panel()) {
381 ash::PanelFrameView::FrameType frame_type = frameless_ ? 386 ash::PanelFrameView::FrameType frame_type = frameless_ ?
382 ash::PanelFrameView::FRAME_NONE : ash::PanelFrameView::FRAME_ASH; 387 ash::PanelFrameView::FRAME_NONE : ash::PanelFrameView::FRAME_ASH;
383 return new ash::PanelFrameView(widget, frame_type); 388 return new ash::PanelFrameView(widget, frame_type);
384 } 389 }
385 if (!frameless_) { 390 if (!frameless_) {
386 ash::CustomFrameViewAsh* frame = new ash::CustomFrameViewAsh(); 391 ash::CustomFrameViewAsh* frame = new ash::CustomFrameViewAsh();
387 frame->Init(widget); 392 frame->Init(widget);
388 return frame; 393 return frame;
389 } 394 }
390 } 395 }
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 } 475 }
471 476
472 void NativeAppWindowViews::OnFocus() { 477 void NativeAppWindowViews::OnFocus() {
473 web_view_->RequestFocus(); 478 web_view_->RequestFocus();
474 } 479 }
475 480
476 // NativeAppWindow implementation. 481 // NativeAppWindow implementation.
477 482
478 void NativeAppWindowViews::SetFullscreen(bool fullscreen) { 483 void NativeAppWindowViews::SetFullscreen(bool fullscreen) {
479 // Fullscreen not supported by panels. 484 // Fullscreen not supported by panels.
480 if (shell_window_->window_type() == ShellWindow::WINDOW_TYPE_PANEL) 485 if (shell_window_->window_type_is_panel())
481 return; 486 return;
482 is_fullscreen_ = fullscreen; 487 is_fullscreen_ = fullscreen;
483 window_->SetFullscreen(fullscreen); 488 window_->SetFullscreen(fullscreen);
484 // TODO(jeremya) we need to call RenderViewHost::ExitFullscreen() if we 489 // TODO(jeremya) we need to call RenderViewHost::ExitFullscreen() if we
485 // ever drop the window out of fullscreen in response to something that 490 // ever drop the window out of fullscreen in response to something that
486 // wasn't the app calling webkitCancelFullScreen(). 491 // wasn't the app calling webkitCancelFullScreen().
487 } 492 }
488 493
489 bool NativeAppWindowViews::IsFullscreenOrPending() const { 494 bool NativeAppWindowViews::IsFullscreenOrPending() const {
490 return is_fullscreen_; 495 return is_fullscreen_;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 } 528 }
524 529
525 //------------------------------------------------------------------------------ 530 //------------------------------------------------------------------------------
526 // NativeAppWindow::Create 531 // NativeAppWindow::Create
527 532
528 // static 533 // static
529 NativeAppWindow* NativeAppWindow::Create( 534 NativeAppWindow* NativeAppWindow::Create(
530 ShellWindow* shell_window, const ShellWindow::CreateParams& params) { 535 ShellWindow* shell_window, const ShellWindow::CreateParams& params) {
531 return new NativeAppWindowViews(shell_window, params); 536 return new NativeAppWindowViews(shell_window, params);
532 } 537 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/extensions/native_app_window_views.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698