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

Side by Side Diff: chrome/browser/ui/panels/panel.cc

Issue 9517010: Change panels to be able to turn off autoresize. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix assert at the end of RenderWidget::Resize which fixes the tests on OSX. Created 8 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/panels/panel.h ('k') | chrome/browser/ui/panels/panel_browsertest.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 (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/panels/panel.h" 5 #include "chrome/browser/ui/panels/panel.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/browser/extensions/extension_prefs.h" 8 #include "chrome/browser/extensions/extension_prefs.h"
9 #include "chrome/browser/extensions/extension_service.h" 9 #include "chrome/browser/extensions/extension_service.h"
10 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/browser/profiles/profile.h"
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 chrome::NOTIFICATION_PANEL_CHANGED_BOUNDS, 112 chrome::NOTIFICATION_PANEL_CHANGED_BOUNDS,
113 content::Source<Panel>(this), 113 content::Source<Panel>(this),
114 content::NotificationService::NoDetails()); 114 content::NotificationService::NoDetails());
115 } 115 }
116 116
117 void Panel::SetAutoResizable(bool resizable) { 117 void Panel::SetAutoResizable(bool resizable) {
118 if (auto_resizable_ == resizable) 118 if (auto_resizable_ == resizable)
119 return; 119 return;
120 120
121 auto_resizable_ = resizable; 121 auto_resizable_ = resizable;
122 WebContents* web_contents = browser()->GetSelectedWebContents();
122 if (auto_resizable_) { 123 if (auto_resizable_) {
123 browser()->tabstrip_model()->AddObserver(this); 124 browser()->tabstrip_model()->AddObserver(this);
124 WebContents* web_contents = browser()->GetSelectedWebContents();
125 if (web_contents) 125 if (web_contents)
126 EnableWebContentsAutoResize(web_contents); 126 EnableWebContentsAutoResize(web_contents);
127 } else { 127 } else {
128 browser()->tabstrip_model()->RemoveObserver(this); 128 browser()->tabstrip_model()->RemoveObserver(this);
129 registrar_.RemoveAll(); 129 registrar_.RemoveAll();
130
131 if (web_contents) {
132 // NULL might be returned if the tab has not been added.
133 RenderViewHost* render_view_host = web_contents->GetRenderViewHost();
134 if (render_view_host)
135 render_view_host->DisableAutoResize(restored_size_);
136 }
130 } 137 }
131 } 138 }
132 139
133 void Panel::SetSizeRange(const gfx::Size& min_size, const gfx::Size& max_size) { 140 void Panel::SetSizeRange(const gfx::Size& min_size, const gfx::Size& max_size) {
134 if (min_size == min_size_ && max_size == max_size_) 141 if (min_size == min_size_ && max_size == max_size_)
135 return; 142 return;
136 143
137 DCHECK(min_size.width() <= max_size.width()); 144 DCHECK(min_size.width() <= max_size.width());
138 DCHECK(min_size.height() <= max_size.height()); 145 DCHECK(min_size.height() <= max_size.height());
139 min_size_ = min_size; 146 min_size_ = min_size;
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 #if defined(OS_CHROMEOS) 620 #if defined(OS_CHROMEOS)
614 void Panel::ShowMobileSetup() { 621 void Panel::ShowMobileSetup() {
615 NOTIMPLEMENTED(); 622 NOTIMPLEMENTED();
616 } 623 }
617 624
618 void Panel::ShowKeyboardOverlay(gfx::NativeWindow owning_window) { 625 void Panel::ShowKeyboardOverlay(gfx::NativeWindow owning_window) {
619 NOTIMPLEMENTED(); 626 NOTIMPLEMENTED();
620 } 627 }
621 #endif 628 #endif
622 629
623 void Panel::UpdatePreferredSize(WebContents* web_contents, 630 void Panel::ResizeDueToAutoResize(WebContents* web_contents,
624 const gfx::Size& pref_size) { 631 const gfx::Size& pref_size) {
625 if (auto_resizable_) { 632 DCHECK(auto_resizable_);
626 return manager()->OnPreferredWindowSizeChanged(this, 633 return manager()->OnWindowAutoResized(
627 native_panel_->WindowSizeFromContentSize(pref_size)); 634 this,
628 } 635 native_panel_->WindowSizeFromContentSize(pref_size));
629 } 636 }
630 637
631 void Panel::ShowAvatarBubble(WebContents* web_contents, const gfx::Rect& rect) { 638 void Panel::ShowAvatarBubble(WebContents* web_contents, const gfx::Rect& rect) {
632 // Panels will never show a new tab page so this should never be called. 639 // Panels will never show a new tab page so this should never be called.
633 NOTREACHED(); 640 NOTREACHED();
634 } 641 }
635 642
636 void Panel::ShowAvatarBubbleFromAvatarButton() { 643 void Panel::ShowAvatarBubbleFromAvatarButton() {
637 // Panels will never show an avatar button so this should never be called. 644 // Panels will never show an avatar button so this should never be called.
638 NOTREACHED(); 645 NOTREACHED();
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
681 native_panel_->ContentSizeFromWindowSize(max_size_)); 688 native_panel_->ContentSizeFromWindowSize(max_size_));
682 } 689 }
683 690
684 void Panel::OnWindowSizeAvailable() { 691 void Panel::OnWindowSizeAvailable() {
685 ConfigureAutoResize(browser()->GetSelectedWebContents()); 692 ConfigureAutoResize(browser()->GetSelectedWebContents());
686 } 693 }
687 694
688 void Panel::DestroyBrowser() { 695 void Panel::DestroyBrowser() {
689 native_panel_->DestroyPanelBrowser(); 696 native_panel_->DestroyPanelBrowser();
690 } 697 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/panels/panel.h ('k') | chrome/browser/ui/panels/panel_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698