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

Side by Side Diff: chrome/browser/ui/views/frame/browser_view.cc

Issue 962453002: Update permission bubble anchor when omnibar is hidden (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add comment Created 5 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
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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/frame/browser_view.h" 5 #include "chrome/browser/ui/views/frame/browser_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 // static 532 // static
533 BrowserView* BrowserView::GetBrowserViewForBrowser(const Browser* browser) { 533 BrowserView* BrowserView::GetBrowserViewForBrowser(const Browser* browser) {
534 return static_cast<BrowserView*>(browser->window()); 534 return static_cast<BrowserView*>(browser->window());
535 } 535 }
536 536
537 void BrowserView::InitStatusBubble() { 537 void BrowserView::InitStatusBubble() {
538 status_bubble_.reset(new StatusBubbleViews(contents_web_view_)); 538 status_bubble_.reset(new StatusBubbleViews(contents_web_view_));
539 contents_web_view_->SetStatusBubble(status_bubble_.get()); 539 contents_web_view_->SetStatusBubble(status_bubble_.get());
540 } 540 }
541 541
542 void BrowserView::InitPermissionBubbleView() {
543 std::string languages =
544 browser_->profile()->GetPrefs()->GetString(prefs::kAcceptLanguages);
545 permission_bubble_view_.reset(new PermissionBubbleViewViews(
546 GetLocationBarView()->location_icon_view(), languages));
547 }
548
549 gfx::Rect BrowserView::GetToolbarBounds() const { 542 gfx::Rect BrowserView::GetToolbarBounds() const {
550 gfx::Rect toolbar_bounds(toolbar_->bounds()); 543 gfx::Rect toolbar_bounds(toolbar_->bounds());
551 if (toolbar_bounds.IsEmpty()) 544 if (toolbar_bounds.IsEmpty())
552 return toolbar_bounds; 545 return toolbar_bounds;
553 // The apparent toolbar edges are outside the "real" toolbar edges. 546 // The apparent toolbar edges are outside the "real" toolbar edges.
554 toolbar_bounds.Inset(-views::NonClientFrameView::kClientEdgeThickness, 0); 547 toolbar_bounds.Inset(-views::NonClientFrameView::kClientEdgeThickness, 0);
555 return toolbar_bounds; 548 return toolbar_bounds;
556 } 549 }
557 550
558 gfx::Rect BrowserView::GetFindBarBoundingBox() const { 551 gfx::Rect BrowserView::GetFindBarBoundingBox() const {
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
847 BookmarkBar::DONT_ANIMATE_STATE_CHANGE); 840 BookmarkBar::DONT_ANIMATE_STATE_CHANGE);
848 } 841 }
849 842
850 infobar_container_->ChangeInfoBarManager( 843 infobar_container_->ChangeInfoBarManager(
851 InfoBarService::FromWebContents(new_contents)); 844 InfoBarService::FromWebContents(new_contents));
852 845
853 if (old_contents && PermissionBubbleManager::FromWebContents(old_contents)) 846 if (old_contents && PermissionBubbleManager::FromWebContents(old_contents))
854 PermissionBubbleManager::FromWebContents(old_contents)->SetView(nullptr); 847 PermissionBubbleManager::FromWebContents(old_contents)->SetView(nullptr);
855 848
856 if (new_contents && PermissionBubbleManager::FromWebContents(new_contents)) { 849 if (new_contents && PermissionBubbleManager::FromWebContents(new_contents)) {
850 if (!permission_bubble_.get())
851 permission_bubble_.reset(new PermissionBubbleViewViews(browser_.get()));
852
857 PermissionBubbleManager::FromWebContents(new_contents)->SetView( 853 PermissionBubbleManager::FromWebContents(new_contents)->SetView(
858 permission_bubble_view_.get()); 854 permission_bubble_.get());
859 } 855 }
860 856
861 UpdateUIForContents(new_contents); 857 UpdateUIForContents(new_contents);
862 858
863 // Layout for DevTools _before_ setting the both main and devtools WebContents 859 // Layout for DevTools _before_ setting the both main and devtools WebContents
864 // to avoid toggling the size of any of them. 860 // to avoid toggling the size of any of them.
865 UpdateDevToolsForContents(new_contents, !change_tab_contents); 861 UpdateDevToolsForContents(new_contents, !change_tab_contents);
866 862
867 if (change_tab_contents) { 863 if (change_tab_contents) {
868 web_contents_close_handler_->ActiveTabChanged(); 864 web_contents_close_handler_->ActiveTabChanged();
(...skipping 1164 matching lines...) Expand 10 before | Expand all | Expand 10 after
2033 browser_->tab_strip_model()); 2029 browser_->tab_strip_model());
2034 tabstrip_ = new TabStrip(tabstrip_controller); 2030 tabstrip_ = new TabStrip(tabstrip_controller);
2035 top_container_->AddChildView(tabstrip_); 2031 top_container_->AddChildView(tabstrip_);
2036 tabstrip_controller->InitFromModel(tabstrip_); 2032 tabstrip_controller->InitFromModel(tabstrip_);
2037 2033
2038 toolbar_ = new ToolbarView(browser_.get()); 2034 toolbar_ = new ToolbarView(browser_.get());
2039 top_container_->AddChildView(toolbar_); 2035 top_container_->AddChildView(toolbar_);
2040 toolbar_->Init(); 2036 toolbar_->Init();
2041 2037
2042 InitStatusBubble(); 2038 InitStatusBubble();
2043 InitPermissionBubbleView();
2044 2039
2045 // Create do-nothing view for the sake of controlling the z-order of the find 2040 // Create do-nothing view for the sake of controlling the z-order of the find
2046 // bar widget. 2041 // bar widget.
2047 find_bar_host_view_ = new View(); 2042 find_bar_host_view_ = new View();
2048 AddChildView(find_bar_host_view_); 2043 AddChildView(find_bar_host_view_);
2049 2044
2050 immersive_mode_controller_->Init(this); 2045 immersive_mode_controller_->Init(this);
2051 2046
2052 BrowserViewLayout* browser_view_layout = new BrowserViewLayout; 2047 BrowserViewLayout* browser_view_layout = new BrowserViewLayout;
2053 browser_view_layout->Init(new BrowserViewLayoutDelegateImpl(this), 2048 browser_view_layout->Init(new BrowserViewLayoutDelegateImpl(this),
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
2284 } 2279 }
2285 2280
2286 // Undo our anti-jankiness hacks and force a re-layout. We also need to 2281 // Undo our anti-jankiness hacks and force a re-layout. We also need to
2287 // recompute the height of the infobar top arrow because toggling in and out 2282 // recompute the height of the infobar top arrow because toggling in and out
2288 // of fullscreen changes it. Calling ToolbarSizeChanged() will do both these 2283 // of fullscreen changes it. Calling ToolbarSizeChanged() will do both these
2289 // things since it computes the arrow height directly and forces a layout 2284 // things since it computes the arrow height directly and forces a layout
2290 // indirectly via UpdateUIForContents(). Reset |in_process_fullscreen_| in 2285 // indirectly via UpdateUIForContents(). Reset |in_process_fullscreen_| in
2291 // order to let the layout occur. 2286 // order to let the layout occur.
2292 in_process_fullscreen_ = false; 2287 in_process_fullscreen_ = false;
2293 ToolbarSizeChanged(false); 2288 ToolbarSizeChanged(false);
2289
2290 if (permission_bubble_.get())
2291 permission_bubble_->UpdateAnchorPosition();
2294 } 2292 }
2295 2293
2296 bool BrowserView::ShouldUseImmersiveFullscreenForUrl(const GURL& url) const { 2294 bool BrowserView::ShouldUseImmersiveFullscreenForUrl(const GURL& url) const {
2297 // Kiosk mode needs the whole screen, and if we're not in an Ash desktop 2295 // Kiosk mode needs the whole screen, and if we're not in an Ash desktop
2298 // immersive fullscreen doesn't exist. 2296 // immersive fullscreen doesn't exist.
2299 if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode) || 2297 if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode) ||
2300 browser()->host_desktop_type() != chrome::HOST_DESKTOP_TYPE_ASH) { 2298 browser()->host_desktop_type() != chrome::HOST_DESKTOP_TYPE_ASH) {
2301 return false; 2299 return false;
2302 } 2300 }
2303 2301
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
2604 return immersive_mode_controller()->IsEnabled(); 2602 return immersive_mode_controller()->IsEnabled();
2605 } 2603 }
2606 2604
2607 views::Widget* BrowserView::GetBubbleAssociatedWidget() { 2605 views::Widget* BrowserView::GetBubbleAssociatedWidget() {
2608 return GetWidget(); 2606 return GetWidget();
2609 } 2607 }
2610 2608
2611 gfx::Rect BrowserView::GetTopContainerBoundsInScreen() { 2609 gfx::Rect BrowserView::GetTopContainerBoundsInScreen() {
2612 return top_container_->GetBoundsInScreen(); 2610 return top_container_->GetBoundsInScreen();
2613 } 2611 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/frame/browser_view.h ('k') | chrome/browser/ui/views/website_settings/permissions_bubble_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698