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

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

Issue 8704005: Add autoresize capability to chromium. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: latest update Created 9 years 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
OLDNEW
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 570 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 } 581 }
582 } 582 }
583 583
584 void Panel::EnableTabContentsAutoResize(TabContents* tab_contents) { 584 void Panel::EnableTabContentsAutoResize(TabContents* tab_contents) {
585 DCHECK(tab_contents); 585 DCHECK(tab_contents);
586 RenderViewHost* render_view_host = tab_contents->render_view_host(); 586 RenderViewHost* render_view_host = tab_contents->render_view_host();
587 if (render_view_host) 587 if (render_view_host)
588 EnableRendererAutoResize(render_view_host); 588 EnableRendererAutoResize(render_view_host);
589 589
590 // We also need to know when the render view host changes in order 590 // We also need to know when the render view host changes in order
591 // to turn on preferred size changed notifications in the new 591 // to turn on autosize notifications in the new render view host.
592 // render view host.
593 registrar_.RemoveAll(); // Stop notifications for previous contents, if any. 592 registrar_.RemoveAll(); // Stop notifications for previous contents, if any.
594 registrar_.Add( 593 registrar_.Add(
595 this, 594 this,
596 content::NOTIFICATION_TAB_CONTENTS_SWAPPED, 595 content::NOTIFICATION_TAB_CONTENTS_SWAPPED,
597 content::Source<TabContents>(tab_contents)); 596 content::Source<TabContents>(tab_contents));
598 } 597 }
599 598
600 void Panel::Observe(int type, 599 void Panel::Observe(int type,
601 const content::NotificationSource& source, 600 const content::NotificationSource& source,
602 const content::NotificationDetails& details) { 601 const content::NotificationDetails& details) {
603 if (auto_resizable_) { 602 if (auto_resizable_) {
604 DCHECK_EQ(type, content::NOTIFICATION_TAB_CONTENTS_SWAPPED); 603 DCHECK_EQ(type, content::NOTIFICATION_TAB_CONTENTS_SWAPPED);
605 RenderViewHost* render_view_host = 604 RenderViewHost* render_view_host =
606 content::Source<TabContents>(source).ptr()->render_view_host(); 605 content::Source<TabContents>(source).ptr()->render_view_host();
607 if (render_view_host) 606 if (render_view_host)
608 EnableRendererAutoResize(render_view_host); 607 EnableRendererAutoResize(render_view_host);
609 } 608 }
610 } 609 }
611 610
612 RenderViewHost* Panel::GetRenderViewHost() const { 611 RenderViewHost* Panel::GetRenderViewHost() const {
613 TabContents* tab_contents = browser()->GetSelectedTabContents(); 612 TabContents* tab_contents = browser()->GetSelectedTabContents();
614 if (!tab_contents) 613 if (!tab_contents)
615 return NULL; 614 return NULL;
616 return tab_contents->render_view_host(); 615 return tab_contents->render_view_host();
617 } 616 }
618 617
619 void Panel::EnableRendererAutoResize(RenderViewHost* render_view_host) { 618 void Panel::EnableRendererAutoResize(RenderViewHost* render_view_host) {
620 DCHECK(auto_resizable_); 619 DCHECK(auto_resizable_);
621 DCHECK(render_view_host); 620 DCHECK(render_view_host);
622 render_view_host->EnablePreferredSizeMode(); 621 render_view_host->EnableAutoResize(
623 RequestRenderViewHostToDisableScrollbars(render_view_host); 622 min_size_,
624 }
625
626 void Panel::RequestRenderViewHostToDisableScrollbars(
627 RenderViewHost* render_view_host) {
628 DCHECK(auto_resizable_);
629 DCHECK(render_view_host);
630 render_view_host->DisableScrollbarsForThreshold(
631 native_panel_->ContentSizeFromWindowSize(max_size_)); 623 native_panel_->ContentSizeFromWindowSize(max_size_));
632 } 624 }
633 625
634 void Panel::OnWindowSizeAvailable() { 626 void Panel::OnWindowSizeAvailable() {
635 if (auto_resizable_) { 627 if (auto_resizable_) {
636 RenderViewHost* render_view_host = GetRenderViewHost(); 628 RenderViewHost* render_view_host = GetRenderViewHost();
637 if (render_view_host) 629 if (render_view_host)
638 RequestRenderViewHostToDisableScrollbars(render_view_host); 630 EnableRendererAutoResize(render_view_host);
639 } 631 }
640 } 632 }
641 633
642 void Panel::DestroyBrowser() { 634 void Panel::DestroyBrowser() {
643 native_panel_->DestroyPanelBrowser(); 635 native_panel_->DestroyPanelBrowser();
644 } 636 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698