| 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 <stdint.h> | 7 #include <stdint.h> |
| 8 |
| 8 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> |
| 9 #include <utility> | 11 #include <utility> |
| 10 | 12 |
| 11 #include "base/auto_reset.h" | 13 #include "base/auto_reset.h" |
| 12 #include "base/command_line.h" | 14 #include "base/command_line.h" |
| 13 #include "base/i18n/rtl.h" | 15 #include "base/i18n/rtl.h" |
| 14 #include "base/location.h" | 16 #include "base/location.h" |
| 15 #include "base/macros.h" | 17 #include "base/macros.h" |
| 16 #include "base/memory/scoped_ptr.h" | |
| 17 #include "base/metrics/histogram.h" | 18 #include "base/metrics/histogram.h" |
| 18 #include "base/profiler/scoped_tracker.h" | 19 #include "base/profiler/scoped_tracker.h" |
| 19 #include "base/single_thread_task_runner.h" | 20 #include "base/single_thread_task_runner.h" |
| 20 #include "base/strings/string_number_conversions.h" | 21 #include "base/strings/string_number_conversions.h" |
| 21 #include "base/thread_task_runner_handle.h" | 22 #include "base/thread_task_runner_handle.h" |
| 22 #include "build/build_config.h" | 23 #include "build/build_config.h" |
| 23 #include "chrome/app/chrome_command_ids.h" | 24 #include "chrome/app/chrome_command_ids.h" |
| 24 #include "chrome/app/chrome_dll_resource.h" | 25 #include "chrome/app/chrome_dll_resource.h" |
| 25 #include "chrome/browser/app_mode/app_mode_utils.h" | 26 #include "chrome/browser/app_mode/app_mode_utils.h" |
| 26 #include "chrome/browser/bookmarks/bookmark_stats.h" | 27 #include "chrome/browser/bookmarks/bookmark_stats.h" |
| (...skipping 1010 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1037 // window isn't active. | 1038 // window isn't active. |
| 1038 #if defined(OS_WIN) || defined(OS_CHROMEOS) | 1039 #if defined(OS_WIN) || defined(OS_CHROMEOS) |
| 1039 if (!force_location_bar_focus_ && !IsActive()) | 1040 if (!force_location_bar_focus_ && !IsActive()) |
| 1040 return; | 1041 return; |
| 1041 #endif | 1042 #endif |
| 1042 | 1043 |
| 1043 // Temporarily reveal the top-of-window views (if not already revealed) so | 1044 // Temporarily reveal the top-of-window views (if not already revealed) so |
| 1044 // that the location bar view is visible and is considered focusable. If the | 1045 // that the location bar view is visible and is considered focusable. If the |
| 1045 // location bar view gains focus, |immersive_mode_controller_| will keep the | 1046 // location bar view gains focus, |immersive_mode_controller_| will keep the |
| 1046 // top-of-window views revealed. | 1047 // top-of-window views revealed. |
| 1047 scoped_ptr<ImmersiveRevealedLock> focus_reveal_lock( | 1048 std::unique_ptr<ImmersiveRevealedLock> focus_reveal_lock( |
| 1048 immersive_mode_controller_->GetRevealedLock( | 1049 immersive_mode_controller_->GetRevealedLock( |
| 1049 ImmersiveModeController::ANIMATE_REVEAL_YES)); | 1050 ImmersiveModeController::ANIMATE_REVEAL_YES)); |
| 1050 | 1051 |
| 1051 LocationBarView* location_bar = GetLocationBarView(); | 1052 LocationBarView* location_bar = GetLocationBarView(); |
| 1052 if (location_bar->omnibox_view()->IsFocusable()) { | 1053 if (location_bar->omnibox_view()->IsFocusable()) { |
| 1053 // Location bar got focus. | 1054 // Location bar got focus. |
| 1054 location_bar->FocusLocation(select_all); | 1055 location_bar->FocusLocation(select_all); |
| 1055 } else { | 1056 } else { |
| 1056 // If none of location bar got focus, then clear focus. | 1057 // If none of location bar got focus, then clear focus. |
| 1057 views::FocusManager* focus_manager = GetFocusManager(); | 1058 views::FocusManager* focus_manager = GetFocusManager(); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1079 // We may end up here during destruction. | 1080 // We may end up here during destruction. |
| 1080 if (toolbar_) | 1081 if (toolbar_) |
| 1081 toolbar_->ResetTabState(contents); | 1082 toolbar_->ResetTabState(contents); |
| 1082 } | 1083 } |
| 1083 | 1084 |
| 1084 void BrowserView::FocusToolbar() { | 1085 void BrowserView::FocusToolbar() { |
| 1085 // Temporarily reveal the top-of-window views (if not already revealed) so | 1086 // Temporarily reveal the top-of-window views (if not already revealed) so |
| 1086 // that the toolbar is visible and is considered focusable. If the | 1087 // that the toolbar is visible and is considered focusable. If the |
| 1087 // toolbar gains focus, |immersive_mode_controller_| will keep the | 1088 // toolbar gains focus, |immersive_mode_controller_| will keep the |
| 1088 // top-of-window views revealed. | 1089 // top-of-window views revealed. |
| 1089 scoped_ptr<ImmersiveRevealedLock> focus_reveal_lock( | 1090 std::unique_ptr<ImmersiveRevealedLock> focus_reveal_lock( |
| 1090 immersive_mode_controller_->GetRevealedLock( | 1091 immersive_mode_controller_->GetRevealedLock( |
| 1091 ImmersiveModeController::ANIMATE_REVEAL_YES)); | 1092 ImmersiveModeController::ANIMATE_REVEAL_YES)); |
| 1092 | 1093 |
| 1093 // Start the traversal within the main toolbar. SetPaneFocus stores | 1094 // Start the traversal within the main toolbar. SetPaneFocus stores |
| 1094 // the current focused view before changing focus. | 1095 // the current focused view before changing focus. |
| 1095 toolbar_->SetPaneFocus(nullptr); | 1096 toolbar_->SetPaneFocus(nullptr); |
| 1096 } | 1097 } |
| 1097 | 1098 |
| 1098 ToolbarActionsBar* BrowserView::GetToolbarActionsBar() { | 1099 ToolbarActionsBar* BrowserView::GetToolbarActionsBar() { |
| 1099 return toolbar_ && toolbar_->browser_actions() ? | 1100 return toolbar_ && toolbar_->browser_actions() ? |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1229 Profile* profile) { | 1230 Profile* profile) { |
| 1230 EditSearchEngineDialog::Show(GetNativeWindow(), template_url, nullptr, | 1231 EditSearchEngineDialog::Show(GetNativeWindow(), template_url, nullptr, |
| 1231 profile); | 1232 profile); |
| 1232 } | 1233 } |
| 1233 | 1234 |
| 1234 void BrowserView::ShowUpdateChromeDialog() { | 1235 void BrowserView::ShowUpdateChromeDialog() { |
| 1235 UpdateRecommendedMessageBox::Show(GetNativeWindow()); | 1236 UpdateRecommendedMessageBox::Show(GetNativeWindow()); |
| 1236 } | 1237 } |
| 1237 | 1238 |
| 1238 void BrowserView::ShowBookmarkBubble(const GURL& url, bool already_bookmarked) { | 1239 void BrowserView::ShowBookmarkBubble(const GURL& url, bool already_bookmarked) { |
| 1239 scoped_ptr<BubbleSyncPromoDelegate> delegate; | 1240 std::unique_ptr<BubbleSyncPromoDelegate> delegate; |
| 1240 delegate.reset(new BookmarkBubbleSignInDelegate(browser_.get())); | 1241 delegate.reset(new BookmarkBubbleSignInDelegate(browser_.get())); |
| 1241 | 1242 |
| 1242 views::View* anchor_view = GetToolbarView()->GetBookmarkBubbleAnchor(); | 1243 views::View* anchor_view = GetToolbarView()->GetBookmarkBubbleAnchor(); |
| 1243 views::Widget* bubble_widget = BookmarkBubbleView::ShowBubble( | 1244 views::Widget* bubble_widget = BookmarkBubbleView::ShowBubble( |
| 1244 anchor_view, gfx::Rect(), nullptr, bookmark_bar_view_.get(), | 1245 anchor_view, gfx::Rect(), nullptr, bookmark_bar_view_.get(), |
| 1245 std::move(delegate), browser_->profile(), url, already_bookmarked); | 1246 std::move(delegate), browser_->profile(), url, already_bookmarked); |
| 1246 GetToolbarView()->OnBubbleCreatedForAnchor(anchor_view, bubble_widget); | 1247 GetToolbarView()->OnBubbleCreatedForAnchor(anchor_view, bubble_widget); |
| 1247 } | 1248 } |
| 1248 | 1249 |
| 1249 void BrowserView::ShowBookmarkAppBubble( | 1250 void BrowserView::ShowBookmarkAppBubble( |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1293 : TranslateBubbleView::AUTOMATIC); | 1294 : TranslateBubbleView::AUTOMATIC); |
| 1294 GetToolbarView()->OnBubbleCreatedForAnchor(anchor_view, bubble_widget); | 1295 GetToolbarView()->OnBubbleCreatedForAnchor(anchor_view, bubble_widget); |
| 1295 } | 1296 } |
| 1296 | 1297 |
| 1297 #if BUILDFLAG(ENABLE_ONE_CLICK_SIGNIN) | 1298 #if BUILDFLAG(ENABLE_ONE_CLICK_SIGNIN) |
| 1298 void BrowserView::ShowOneClickSigninBubble( | 1299 void BrowserView::ShowOneClickSigninBubble( |
| 1299 OneClickSigninBubbleType type, | 1300 OneClickSigninBubbleType type, |
| 1300 const base::string16& email, | 1301 const base::string16& email, |
| 1301 const base::string16& error_message, | 1302 const base::string16& error_message, |
| 1302 const StartSyncCallback& start_sync_callback) { | 1303 const StartSyncCallback& start_sync_callback) { |
| 1303 scoped_ptr<OneClickSigninBubbleDelegate> delegate; | 1304 std::unique_ptr<OneClickSigninBubbleDelegate> delegate; |
| 1304 delegate.reset(new OneClickSigninBubbleLinksDelegate(browser())); | 1305 delegate.reset(new OneClickSigninBubbleLinksDelegate(browser())); |
| 1305 | 1306 |
| 1306 views::View* anchor_view = nullptr; | 1307 views::View* anchor_view = nullptr; |
| 1307 if (type == BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE) | 1308 if (type == BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE) |
| 1308 anchor_view = toolbar_->app_menu_button(); | 1309 anchor_view = toolbar_->app_menu_button(); |
| 1309 if (!anchor_view) | 1310 if (!anchor_view) |
| 1310 anchor_view = toolbar_->location_bar(); | 1311 anchor_view = toolbar_->location_bar(); |
| 1311 DCHECK(anchor_view); | 1312 DCHECK(anchor_view); |
| 1312 | 1313 |
| 1313 OneClickSigninBubbleView::ShowBubble(type, email, error_message, | 1314 OneClickSigninBubbleView::ShowBubble(type, email, error_message, |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1367 | 1368 |
| 1368 WebsiteSettingsPopupView::ShowPopup(popup_anchor, gfx::Rect(), profile, | 1369 WebsiteSettingsPopupView::ShowPopup(popup_anchor, gfx::Rect(), profile, |
| 1369 web_contents, url, security_info); | 1370 web_contents, url, security_info); |
| 1370 } | 1371 } |
| 1371 | 1372 |
| 1372 void BrowserView::ShowAppMenu() { | 1373 void BrowserView::ShowAppMenu() { |
| 1373 if (!toolbar_->app_menu_button()) | 1374 if (!toolbar_->app_menu_button()) |
| 1374 return; | 1375 return; |
| 1375 | 1376 |
| 1376 // Keep the top-of-window views revealed as long as the app menu is visible. | 1377 // Keep the top-of-window views revealed as long as the app menu is visible. |
| 1377 scoped_ptr<ImmersiveRevealedLock> revealed_lock( | 1378 std::unique_ptr<ImmersiveRevealedLock> revealed_lock( |
| 1378 immersive_mode_controller_->GetRevealedLock( | 1379 immersive_mode_controller_->GetRevealedLock( |
| 1379 ImmersiveModeController::ANIMATE_REVEAL_NO)); | 1380 ImmersiveModeController::ANIMATE_REVEAL_NO)); |
| 1380 | 1381 |
| 1381 toolbar_->app_menu_button()->Activate(nullptr); | 1382 toolbar_->app_menu_button()->Activate(nullptr); |
| 1382 } | 1383 } |
| 1383 | 1384 |
| 1384 bool BrowserView::PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event, | 1385 bool BrowserView::PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event, |
| 1385 bool* is_keyboard_shortcut) { | 1386 bool* is_keyboard_shortcut) { |
| 1386 *is_keyboard_shortcut = false; | 1387 *is_keyboard_shortcut = false; |
| 1387 | 1388 |
| (...skipping 1278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2666 } | 2667 } |
| 2667 | 2668 |
| 2668 extensions::ActiveTabPermissionGranter* | 2669 extensions::ActiveTabPermissionGranter* |
| 2669 BrowserView::GetActiveTabPermissionGranter() { | 2670 BrowserView::GetActiveTabPermissionGranter() { |
| 2670 content::WebContents* web_contents = GetActiveWebContents(); | 2671 content::WebContents* web_contents = GetActiveWebContents(); |
| 2671 if (!web_contents) | 2672 if (!web_contents) |
| 2672 return nullptr; | 2673 return nullptr; |
| 2673 return extensions::TabHelper::FromWebContents(web_contents) | 2674 return extensions::TabHelper::FromWebContents(web_contents) |
| 2674 ->active_tab_permission_granter(); | 2675 ->active_tab_permission_granter(); |
| 2675 } | 2676 } |
| OLD | NEW |