Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 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() { | 542 void BrowserView::InitPermissionBubbleView() { |
| 543 std::string languages = | |
| 544 browser_->profile()->GetPrefs()->GetString(prefs::kAcceptLanguages); | |
| 545 permission_bubble_view_.reset(new PermissionBubbleViewViews( | 543 permission_bubble_view_.reset(new PermissionBubbleViewViews( |
| 546 GetLocationBarView()->location_icon_view(), languages)); | 544 browser_->profile()->GetPrefs()->GetString(prefs::kAcceptLanguages))); |
| 545 UpdatePermissionBubbleViewAnchor(); | |
| 546 } | |
| 547 | |
| 548 void BrowserView::UpdatePermissionBubbleViewAnchor() { | |
|
msw
2015/03/12 20:44:05
For a one-off like this without imminent plans to
hcarmona
2015/03/17 01:29:27
Done.
| |
| 549 if (browser_->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)) { | |
| 550 permission_bubble_view_->SetAnchor( | |
| 551 GetLocationBarView()->location_icon_view(), | |
| 552 views::BubbleBorder::TOP_LEFT); | |
| 553 } else { | |
| 554 views::View* view = top_container_; | |
| 555 | |
| 556 if (IsFullscreenBubbleVisible()) | |
| 557 view = exclusive_access_bubble_->GetView(); | |
| 558 | |
| 559 permission_bubble_view_->SetAnchor(view, views::BubbleBorder::NONE); | |
| 560 } | |
| 547 } | 561 } |
| 548 | 562 |
| 549 gfx::Rect BrowserView::GetToolbarBounds() const { | 563 gfx::Rect BrowserView::GetToolbarBounds() const { |
| 550 gfx::Rect toolbar_bounds(toolbar_->bounds()); | 564 gfx::Rect toolbar_bounds(toolbar_->bounds()); |
| 551 if (toolbar_bounds.IsEmpty()) | 565 if (toolbar_bounds.IsEmpty()) |
| 552 return toolbar_bounds; | 566 return toolbar_bounds; |
| 553 // The apparent toolbar edges are outside the "real" toolbar edges. | 567 // The apparent toolbar edges are outside the "real" toolbar edges. |
| 554 toolbar_bounds.Inset(-views::NonClientFrameView::kClientEdgeThickness, 0); | 568 toolbar_bounds.Inset(-views::NonClientFrameView::kClientEdgeThickness, 0); |
| 555 return toolbar_bounds; | 569 return toolbar_bounds; |
| 556 } | 570 } |
| (...skipping 1727 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2284 } | 2298 } |
| 2285 | 2299 |
| 2286 // Undo our anti-jankiness hacks and force a re-layout. We also need to | 2300 // 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 | 2301 // recompute the height of the infobar top arrow because toggling in and out |
| 2288 // of fullscreen changes it. Calling ToolbarSizeChanged() will do both these | 2302 // of fullscreen changes it. Calling ToolbarSizeChanged() will do both these |
| 2289 // things since it computes the arrow height directly and forces a layout | 2303 // things since it computes the arrow height directly and forces a layout |
| 2290 // indirectly via UpdateUIForContents(). Reset |in_process_fullscreen_| in | 2304 // indirectly via UpdateUIForContents(). Reset |in_process_fullscreen_| in |
| 2291 // order to let the layout occur. | 2305 // order to let the layout occur. |
| 2292 in_process_fullscreen_ = false; | 2306 in_process_fullscreen_ = false; |
| 2293 ToolbarSizeChanged(false); | 2307 ToolbarSizeChanged(false); |
| 2308 | |
| 2309 UpdatePermissionBubbleViewAnchor(); | |
| 2294 } | 2310 } |
| 2295 | 2311 |
| 2296 bool BrowserView::ShouldUseImmersiveFullscreenForUrl(const GURL& url) const { | 2312 bool BrowserView::ShouldUseImmersiveFullscreenForUrl(const GURL& url) const { |
| 2297 // Kiosk mode needs the whole screen, and if we're not in an Ash desktop | 2313 // Kiosk mode needs the whole screen, and if we're not in an Ash desktop |
| 2298 // immersive fullscreen doesn't exist. | 2314 // immersive fullscreen doesn't exist. |
| 2299 if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode) || | 2315 if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode) || |
| 2300 browser()->host_desktop_type() != chrome::HOST_DESKTOP_TYPE_ASH) { | 2316 browser()->host_desktop_type() != chrome::HOST_DESKTOP_TYPE_ASH) { |
| 2301 return false; | 2317 return false; |
| 2302 } | 2318 } |
| 2303 | 2319 |
| (...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2604 return immersive_mode_controller()->IsEnabled(); | 2620 return immersive_mode_controller()->IsEnabled(); |
| 2605 } | 2621 } |
| 2606 | 2622 |
| 2607 views::Widget* BrowserView::GetBubbleAssociatedWidget() { | 2623 views::Widget* BrowserView::GetBubbleAssociatedWidget() { |
| 2608 return GetWidget(); | 2624 return GetWidget(); |
| 2609 } | 2625 } |
| 2610 | 2626 |
| 2611 gfx::Rect BrowserView::GetTopContainerBoundsInScreen() { | 2627 gfx::Rect BrowserView::GetTopContainerBoundsInScreen() { |
| 2612 return top_container_->GetBoundsInScreen(); | 2628 return top_container_->GetBoundsInScreen(); |
| 2613 } | 2629 } |
| OLD | NEW |