Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 562 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 573 } | 573 } |
| 574 } | 574 } |
| 575 | 575 |
| 576 void Panel::EnableTabContentsAutoResize(TabContents* tab_contents) { | 576 void Panel::EnableTabContentsAutoResize(TabContents* tab_contents) { |
| 577 DCHECK(tab_contents); | 577 DCHECK(tab_contents); |
| 578 RenderViewHost* render_view_host = tab_contents->render_view_host(); | 578 RenderViewHost* render_view_host = tab_contents->render_view_host(); |
| 579 if (render_view_host) | 579 if (render_view_host) |
| 580 EnableRendererAutoResize(render_view_host); | 580 EnableRendererAutoResize(render_view_host); |
| 581 | 581 |
| 582 // We also need to know when the render view host changes in order | 582 // We also need to know when the render view host changes in order |
| 583 // to turn on preferred size changed notifications in the new | 583 // to turn on autosize in the new render view host. |
| 584 // render view host. | |
| 585 registrar_.RemoveAll(); // Stop notifications for previous contents, if any. | 584 registrar_.RemoveAll(); // Stop notifications for previous contents, if any. |
| 586 registrar_.Add( | 585 registrar_.Add( |
| 587 this, | 586 this, |
| 588 content::NOTIFICATION_TAB_CONTENTS_SWAPPED, | 587 content::NOTIFICATION_TAB_CONTENTS_SWAPPED, |
| 589 content::Source<TabContents>(tab_contents)); | 588 content::Source<TabContents>(tab_contents)); |
| 590 } | 589 } |
| 591 | 590 |
| 592 void Panel::Observe(int type, | 591 void Panel::Observe(int type, |
| 593 const content::NotificationSource& source, | 592 const content::NotificationSource& source, |
| 594 const content::NotificationDetails& details) { | 593 const content::NotificationDetails& details) { |
| 595 if (auto_resizable_) { | 594 if (auto_resizable_) { |
| 596 DCHECK_EQ(type, content::NOTIFICATION_TAB_CONTENTS_SWAPPED); | 595 DCHECK_EQ(type, content::NOTIFICATION_TAB_CONTENTS_SWAPPED); |
| 597 RenderViewHost* render_view_host = | 596 RenderViewHost* render_view_host = |
| 598 content::Source<TabContents>(source).ptr()->render_view_host(); | 597 content::Source<TabContents>(source).ptr()->render_view_host(); |
| 599 if (render_view_host) | 598 if (render_view_host) |
| 600 EnableRendererAutoResize(render_view_host); | 599 EnableRendererAutoResize(render_view_host); |
| 601 } | 600 } |
| 602 } | 601 } |
| 603 | 602 |
| 604 RenderViewHost* Panel::GetRenderViewHost() const { | 603 RenderViewHost* Panel::GetRenderViewHost() const { |
| 605 TabContents* tab_contents = browser()->GetSelectedTabContents(); | 604 TabContents* tab_contents = browser()->GetSelectedTabContents(); |
| 606 if (!tab_contents) | 605 if (!tab_contents) |
| 607 return NULL; | 606 return NULL; |
| 608 return tab_contents->render_view_host(); | 607 return tab_contents->render_view_host(); |
| 609 } | 608 } |
| 610 | 609 |
| 611 void Panel::EnableRendererAutoResize(RenderViewHost* render_view_host) { | 610 void Panel::EnableRendererAutoResize(RenderViewHost* render_view_host) { |
| 612 DCHECK(auto_resizable_); | 611 DCHECK(auto_resizable_); |
| 613 DCHECK(render_view_host); | 612 DCHECK(render_view_host); |
| 614 render_view_host->EnablePreferredSizeMode(); | 613 render_view_host->EnableAutoResize( |
| 615 RequestRenderViewHostToDisableScrollbars(render_view_host); | 614 min_size_, |
| 616 } | |
| 617 | |
| 618 void Panel::RequestRenderViewHostToDisableScrollbars( | |
| 619 RenderViewHost* render_view_host) { | |
| 620 DCHECK(auto_resizable_); | |
| 621 DCHECK(render_view_host); | |
| 622 render_view_host->DisableScrollbarsForThreshold( | |
| 623 native_panel_->ContentSizeFromWindowSize(max_size_)); | 615 native_panel_->ContentSizeFromWindowSize(max_size_)); |
| 624 } | 616 } |
| 625 | 617 |
| 626 void Panel::OnWindowSizeAvailable() { | |
|
jennb
2011/11/28 18:02:24
We still need this because on GTK, ContentSizeFrom
| |
| 627 if (auto_resizable_) { | |
| 628 RenderViewHost* render_view_host = GetRenderViewHost(); | |
| 629 if (render_view_host) | |
| 630 RequestRenderViewHostToDisableScrollbars(render_view_host); | |
| 631 } | |
| 632 } | |
| 633 | |
| 634 Browser* Panel::browser() const { | 618 Browser* Panel::browser() const { |
| 635 return native_panel_->GetPanelBrowser(); | 619 return native_panel_->GetPanelBrowser(); |
| 636 } | 620 } |
| 637 | 621 |
| 638 void Panel::DestroyBrowser() { | 622 void Panel::DestroyBrowser() { |
| 639 native_panel_->DestroyPanelBrowser(); | 623 native_panel_->DestroyPanelBrowser(); |
| 640 } | 624 } |
| OLD | NEW |