| Index: chrome/browser/ui/views/location_bar/zoom_bubble_view.cc
|
| diff --git a/chrome/browser/ui/views/location_bar/zoom_bubble_view.cc b/chrome/browser/ui/views/location_bar/zoom_bubble_view.cc
|
| index def41333f35393d2c6636058b6993c21a3e16eca..ec20b37ecb77020ba24d1dbc6f9a167756ebe507 100644
|
| --- a/chrome/browser/ui/views/location_bar/zoom_bubble_view.cc
|
| +++ b/chrome/browser/ui/views/location_bar/zoom_bubble_view.cc
|
| @@ -8,6 +8,7 @@
|
| #include "base/i18n/rtl.h"
|
| #include "base/strings/stringprintf.h"
|
| #include "chrome/browser/chrome_notification_types.h"
|
| +#include "chrome/browser/platform_util.h"
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/browser/ui/browser_finder.h"
|
| #include "chrome/browser/ui/browser_tabstrip.h"
|
| @@ -26,6 +27,7 @@
|
| #include "ui/base/l10n/l10n_util.h"
|
| #include "ui/base/material_design/material_design_controller.h"
|
| #include "ui/base/resource/resource_bundle.h"
|
| +#include "ui/base/ui_features.h"
|
| #include "ui/gfx/favicon_size.h"
|
| #include "ui/views/controls/button/image_button.h"
|
| #include "ui/views/controls/button/md_text_button.h"
|
| @@ -39,14 +41,17 @@ ZoomBubbleView* ZoomBubbleView::zoom_bubble_ = nullptr;
|
|
|
| // static
|
| void ZoomBubbleView::ShowBubble(content::WebContents* web_contents,
|
| + const gfx::Point& anchor_point,
|
| DisplayReason reason) {
|
| Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
|
| DCHECK(browser && browser->window() &&
|
| browser->exclusive_access_manager()->fullscreen_controller());
|
|
|
| - BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser);
|
| - bool is_fullscreen = browser_view->IsFullscreen();
|
| views::View* anchor_view = nullptr;
|
| + ImmersiveModeController* immersive_mode_controller = nullptr;
|
| + bool is_fullscreen = browser->window()->IsFullscreen();
|
| +#if !defined(OS_MACOSX) || BUILDFLAG(MAC_VIEWS_BROWSER)
|
| + BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser);
|
| if (!is_fullscreen ||
|
| browser_view->immersive_mode_controller()->IsRevealed()) {
|
| if (ui::MaterialDesignController::IsSecondaryUiMaterial())
|
| @@ -54,6 +59,8 @@ void ZoomBubbleView::ShowBubble(content::WebContents* web_contents,
|
| else
|
| anchor_view = browser_view->GetLocationBarView()->zoom_view();
|
| }
|
| + immersive_mode_controller = browser_view->immersive_mode_controller();
|
| +#endif
|
|
|
| // Find the extension that initiated the zoom change, if any.
|
| zoom::ZoomController* zoom_controller =
|
| @@ -73,8 +80,8 @@ void ZoomBubbleView::ShowBubble(content::WebContents* web_contents,
|
| // bubble must be closed and a new one created.
|
| CloseCurrentBubble();
|
|
|
| - zoom_bubble_ = new ZoomBubbleView(anchor_view, web_contents, reason,
|
| - browser_view->immersive_mode_controller());
|
| + zoom_bubble_ = new ZoomBubbleView(anchor_view, anchor_point, web_contents,
|
| + reason, immersive_mode_controller);
|
|
|
| // If the zoom change was initiated by an extension, capture the relevent
|
| // information from it.
|
| @@ -84,6 +91,7 @@ void ZoomBubbleView::ShowBubble(content::WebContents* web_contents,
|
| ->extension());
|
| }
|
|
|
| +#if !defined(OS_MACOSX) || BUILDFLAG(MAC_VIEWS_BROWSER)
|
| // If we do not have an anchor view, parent the bubble to the content area.
|
| if (!anchor_view)
|
| zoom_bubble_->set_parent_window(web_contents->GetNativeView());
|
| @@ -94,10 +102,18 @@ void ZoomBubbleView::ShowBubble(content::WebContents* web_contents,
|
| zoom_bubble_widget->AddObserver(
|
| browser_view->GetLocationBarView()->zoom_view());
|
| }
|
| +#else
|
| + gfx::NativeView parent =
|
| + platform_util::GetViewForWindow(browser->window()->GetNativeWindow());
|
| + DCHECK(parent);
|
| + zoom_bubble_->set_arrow(views::BubbleBorder::TOP_RIGHT);
|
| + zoom_bubble_->set_parent_window(parent);
|
| + views::BubbleDialogDelegateView::CreateBubble(zoom_bubble_);
|
| +#endif
|
|
|
| // Adjust for fullscreen after creation as it relies on the content size.
|
| if (is_fullscreen)
|
| - zoom_bubble_->AdjustForFullscreen(browser_view->GetBoundsInScreen());
|
| + zoom_bubble_->AdjustForFullscreen(browser->window()->GetBounds());
|
|
|
| zoom_bubble_->ShowForReason(reason);
|
| }
|
| @@ -113,19 +129,30 @@ ZoomBubbleView* ZoomBubbleView::GetZoomBubble() {
|
| return zoom_bubble_;
|
| }
|
|
|
| +void ZoomBubbleView::Refresh() {
|
| + zoom::ZoomController* zoom_controller =
|
| + zoom::ZoomController::FromWebContents(web_contents_);
|
| + int zoom_percent = zoom_controller->GetZoomPercent();
|
| + label_->SetText(l10n_util::GetStringFUTF16(
|
| + IDS_TOOLTIP_ZOOM, base::FormatPercent(zoom_percent)));
|
| + StartTimerIfNecessary();
|
| +}
|
| +
|
| ZoomBubbleView::ZoomBubbleView(
|
| views::View* anchor_view,
|
| + const gfx::Point& anchor_point,
|
| content::WebContents* web_contents,
|
| DisplayReason reason,
|
| ImmersiveModeController* immersive_mode_controller)
|
| - : LocationBarBubbleDelegateView(anchor_view, web_contents),
|
| + : LocationBarBubbleDelegateView(anchor_view, anchor_point, web_contents),
|
| image_button_(nullptr),
|
| label_(nullptr),
|
| web_contents_(web_contents),
|
| auto_close_(reason == AUTOMATIC),
|
| immersive_mode_controller_(immersive_mode_controller) {
|
| set_notify_enter_exit_on_child(true);
|
| - immersive_mode_controller_->AddObserver(this);
|
| + if (immersive_mode_controller_)
|
| + immersive_mode_controller_->AddObserver(this);
|
| UseCompactMargins();
|
| }
|
|
|
| @@ -186,8 +213,7 @@ void ZoomBubbleView::Init() {
|
| int zoom_percent = zoom_controller->GetZoomPercent();
|
| label_ = new views::Label(l10n_util::GetStringFUTF16(
|
| IDS_TOOLTIP_ZOOM, base::FormatPercent(zoom_percent)));
|
| - label_->SetFontList(ui::ResourceBundle::GetSharedInstance().GetFontList(
|
| - ui::ResourceBundle::MediumFont));
|
| + label_->SetFontList(GetTitleFontList());
|
| grid_layout->AddView(label_);
|
|
|
| // Second row.
|
| @@ -249,15 +275,6 @@ void ZoomBubbleView::OnExtensionIconImageChanged(
|
| image_button_->SchedulePaint();
|
| }
|
|
|
| -void ZoomBubbleView::Refresh() {
|
| - zoom::ZoomController* zoom_controller =
|
| - zoom::ZoomController::FromWebContents(web_contents_);
|
| - int zoom_percent = zoom_controller->GetZoomPercent();
|
| - label_->SetText(l10n_util::GetStringFUTF16(
|
| - IDS_TOOLTIP_ZOOM, base::FormatPercent(zoom_percent)));
|
| - StartTimerIfNecessary();
|
| -}
|
| -
|
| void ZoomBubbleView::SetExtensionInfo(const extensions::Extension* extension) {
|
| DCHECK(extension);
|
| extension_info_.id = extension->id();
|
|
|