| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/browser.h" | 5 #include "chrome/browser/browser.h" |
| 6 | 6 |
| 7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
| 8 #include <shellapi.h> | 8 #include <shellapi.h> |
| 9 #include <windows.h> | 9 #include <windows.h> |
| 10 #endif // OS_WIN | 10 #endif // OS_WIN |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 #include "chrome/browser/dock_info.h" | 37 #include "chrome/browser/dock_info.h" |
| 38 #include "chrome/browser/dom_ui/filebrowse_ui.h" | 38 #include "chrome/browser/dom_ui/filebrowse_ui.h" |
| 39 #include "chrome/browser/download/download_item.h" | 39 #include "chrome/browser/download/download_item.h" |
| 40 #include "chrome/browser/download/download_item_model.h" | 40 #include "chrome/browser/download/download_item_model.h" |
| 41 #include "chrome/browser/download/download_manager.h" | 41 #include "chrome/browser/download/download_manager.h" |
| 42 #include "chrome/browser/download/download_shelf.h" | 42 #include "chrome/browser/download/download_shelf.h" |
| 43 #include "chrome/browser/download/download_started_animation.h" | 43 #include "chrome/browser/download/download_started_animation.h" |
| 44 #include "chrome/browser/extensions/crashed_extension_infobar.h" | 44 #include "chrome/browser/extensions/crashed_extension_infobar.h" |
| 45 #include "chrome/browser/extensions/extension_browser_event_router.h" | 45 #include "chrome/browser/extensions/extension_browser_event_router.h" |
| 46 #include "chrome/browser/extensions/extension_disabled_infobar_delegate.h" | 46 #include "chrome/browser/extensions/extension_disabled_infobar_delegate.h" |
| 47 #include "chrome/browser/extensions/extension_shelf_model.h" | 47 #include "chrome/browser/extensions/extension_host.h" |
| 48 #include "chrome/browser/extensions/extension_tabs_module.h" | 48 #include "chrome/browser/extensions/extension_tabs_module.h" |
| 49 #include "chrome/browser/extensions/extensions_service.h" | 49 #include "chrome/browser/extensions/extensions_service.h" |
| 50 #include "chrome/browser/find_bar.h" | 50 #include "chrome/browser/find_bar.h" |
| 51 #include "chrome/browser/find_bar_controller.h" | 51 #include "chrome/browser/find_bar_controller.h" |
| 52 #include "chrome/browser/first_run/first_run.h" | 52 #include "chrome/browser/first_run/first_run.h" |
| 53 #include "chrome/browser/google_url_tracker.h" | 53 #include "chrome/browser/google_url_tracker.h" |
| 54 #include "chrome/browser/google_util.h" | 54 #include "chrome/browser/google_util.h" |
| 55 #include "chrome/browser/host_zoom_map.h" | 55 #include "chrome/browser/host_zoom_map.h" |
| 56 #include "chrome/browser/location_bar.h" | 56 #include "chrome/browser/location_bar.h" |
| 57 #include "chrome/browser/metrics/user_metrics.h" | 57 #include "chrome/browser/metrics/user_metrics.h" |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 Browser* Browser::CreateForDevTools(Profile* profile) { | 348 Browser* Browser::CreateForDevTools(Profile* profile) { |
| 349 Browser* browser = new Browser(TYPE_DEVTOOLS, profile); | 349 Browser* browser = new Browser(TYPE_DEVTOOLS, profile); |
| 350 browser->app_name_ = DevToolsWindow::kDevToolsApp; | 350 browser->app_name_ = DevToolsWindow::kDevToolsApp; |
| 351 browser->CreateBrowserWindow(); | 351 browser->CreateBrowserWindow(); |
| 352 return browser; | 352 return browser; |
| 353 } | 353 } |
| 354 | 354 |
| 355 void Browser::CreateBrowserWindow() { | 355 void Browser::CreateBrowserWindow() { |
| 356 DCHECK(!window_); | 356 DCHECK(!window_); |
| 357 | 357 |
| 358 if (SupportsWindowFeature(FEATURE_EXTENSIONSHELF)) | |
| 359 extension_shelf_model_.reset(new ExtensionShelfModel(this)); | |
| 360 | |
| 361 window_ = BrowserWindow::CreateBrowserWindow(this); | 358 window_ = BrowserWindow::CreateBrowserWindow(this); |
| 362 | 359 |
| 363 #if defined(OS_WIN) | 360 #if defined(OS_WIN) |
| 364 // Set the app user model id for this application to that of the application | 361 // Set the app user model id for this application to that of the application |
| 365 // name. See http://crbug.com/7028. | 362 // name. See http://crbug.com/7028. |
| 366 win_util::SetAppIdForWindow( | 363 win_util::SetAppIdForWindow( |
| 367 type_ & TYPE_APP ? | 364 type_ & TYPE_APP ? |
| 368 ShellIntegration::GetAppId(UTF8ToWide(app_name_), profile_->GetPath()) : | 365 ShellIntegration::GetAppId(UTF8ToWide(app_name_), profile_->GetPath()) : |
| 369 ShellIntegration::GetChromiumAppId(profile_->GetPath()), | 366 ShellIntegration::GetChromiumAppId(profile_->GetPath()), |
| 370 window()->GetNativeHandle()); | 367 window()->GetNativeHandle()); |
| (...skipping 781 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1152 unsigned int features = FEATURE_INFOBAR; | 1149 unsigned int features = FEATURE_INFOBAR; |
| 1153 | 1150 |
| 1154 #if !defined(OS_CHROMEOS) | 1151 #if !defined(OS_CHROMEOS) |
| 1155 // Chrome OS opens a FileBrowse pop up instead of using download shelf. | 1152 // Chrome OS opens a FileBrowse pop up instead of using download shelf. |
| 1156 // So FEATURE_DOWNLOADSHELF is only added for non-chromeos platforms. | 1153 // So FEATURE_DOWNLOADSHELF is only added for non-chromeos platforms. |
| 1157 features |= FEATURE_DOWNLOADSHELF; | 1154 features |= FEATURE_DOWNLOADSHELF; |
| 1158 #endif // !defined(OS_CHROMEOS) | 1155 #endif // !defined(OS_CHROMEOS) |
| 1159 | 1156 |
| 1160 if (type() == TYPE_NORMAL) { | 1157 if (type() == TYPE_NORMAL) { |
| 1161 features |= FEATURE_BOOKMARKBAR; | 1158 features |= FEATURE_BOOKMARKBAR; |
| 1162 features |= FEATURE_EXTENSIONSHELF; | |
| 1163 } | 1159 } |
| 1164 | 1160 |
| 1165 if (!hide_ui_for_fullscreen) { | 1161 if (!hide_ui_for_fullscreen) { |
| 1166 if (type() != TYPE_NORMAL && type() != TYPE_EXTENSION_APP) | 1162 if (type() != TYPE_NORMAL && type() != TYPE_EXTENSION_APP) |
| 1167 features |= FEATURE_TITLEBAR; | 1163 features |= FEATURE_TITLEBAR; |
| 1168 | 1164 |
| 1169 if (type() == TYPE_NORMAL || type() == TYPE_EXTENSION_APP) | 1165 if (type() == TYPE_NORMAL || type() == TYPE_EXTENSION_APP) |
| 1170 features |= FEATURE_TABSTRIP; | 1166 features |= FEATURE_TABSTRIP; |
| 1171 | 1167 |
| 1172 if (type() == TYPE_NORMAL || type() == TYPE_EXTENSION_APP) | 1168 if (type() == TYPE_NORMAL || type() == TYPE_EXTENSION_APP) |
| (...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1724 return; | 1720 return; |
| 1725 ShowBrokenPageTab(contents); | 1721 ShowBrokenPageTab(contents); |
| 1726 #endif | 1722 #endif |
| 1727 } | 1723 } |
| 1728 | 1724 |
| 1729 void Browser::ToggleBookmarkBar() { | 1725 void Browser::ToggleBookmarkBar() { |
| 1730 UserMetrics::RecordAction(UserMetricsAction("ShowBookmarksBar"), profile_); | 1726 UserMetrics::RecordAction(UserMetricsAction("ShowBookmarksBar"), profile_); |
| 1731 window_->ToggleBookmarkBar(); | 1727 window_->ToggleBookmarkBar(); |
| 1732 } | 1728 } |
| 1733 | 1729 |
| 1734 void Browser::ToggleExtensionShelf() { | |
| 1735 UserMetrics::RecordAction(UserMetricsAction("ToggleExtensionShelf"), | |
| 1736 profile_); | |
| 1737 window_->ToggleExtensionShelf(); | |
| 1738 } | |
| 1739 | |
| 1740 void Browser::OpenBookmarkManager() { | 1730 void Browser::OpenBookmarkManager() { |
| 1741 UserMetrics::RecordAction(UserMetricsAction("ShowBookmarkManager"), profile_); | 1731 UserMetrics::RecordAction(UserMetricsAction("ShowBookmarkManager"), profile_); |
| 1742 ShowBookmarkManagerTab(); | 1732 ShowBookmarkManagerTab(); |
| 1743 } | 1733 } |
| 1744 | 1734 |
| 1745 void Browser::ShowAppMenu() { | 1735 void Browser::ShowAppMenu() { |
| 1746 UserMetrics::RecordAction(UserMetricsAction("ShowAppMenu"), profile_); | 1736 UserMetrics::RecordAction(UserMetricsAction("ShowAppMenu"), profile_); |
| 1747 window_->ShowAppMenu(); | 1737 window_->ShowAppMenu(); |
| 1748 } | 1738 } |
| 1749 | 1739 |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1942 prefs->RegisterStringPref(prefs::kRecentlySelectedEncoding, ""); | 1932 prefs->RegisterStringPref(prefs::kRecentlySelectedEncoding, ""); |
| 1943 prefs->RegisterBooleanPref(prefs::kDeleteBrowsingHistory, true); | 1933 prefs->RegisterBooleanPref(prefs::kDeleteBrowsingHistory, true); |
| 1944 prefs->RegisterBooleanPref(prefs::kDeleteDownloadHistory, true); | 1934 prefs->RegisterBooleanPref(prefs::kDeleteDownloadHistory, true); |
| 1945 prefs->RegisterBooleanPref(prefs::kDeleteCache, true); | 1935 prefs->RegisterBooleanPref(prefs::kDeleteCache, true); |
| 1946 prefs->RegisterBooleanPref(prefs::kDeleteCookies, true); | 1936 prefs->RegisterBooleanPref(prefs::kDeleteCookies, true); |
| 1947 prefs->RegisterBooleanPref(prefs::kDeletePasswords, false); | 1937 prefs->RegisterBooleanPref(prefs::kDeletePasswords, false); |
| 1948 prefs->RegisterBooleanPref(prefs::kDeleteFormData, true); | 1938 prefs->RegisterBooleanPref(prefs::kDeleteFormData, true); |
| 1949 prefs->RegisterIntegerPref(prefs::kDeleteTimePeriod, 0); | 1939 prefs->RegisterIntegerPref(prefs::kDeleteTimePeriod, 0); |
| 1950 prefs->RegisterBooleanPref(prefs::kCheckDefaultBrowser, true); | 1940 prefs->RegisterBooleanPref(prefs::kCheckDefaultBrowser, true); |
| 1951 prefs->RegisterBooleanPref(prefs::kShowOmniboxSearchHint, true); | 1941 prefs->RegisterBooleanPref(prefs::kShowOmniboxSearchHint, true); |
| 1952 prefs->RegisterBooleanPref(prefs::kShowExtensionShelf, true); | |
| 1953 prefs->RegisterBooleanPref(prefs::kWebAppCreateOnDesktop, true); | 1942 prefs->RegisterBooleanPref(prefs::kWebAppCreateOnDesktop, true); |
| 1954 prefs->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true); | 1943 prefs->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true); |
| 1955 prefs->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true); | 1944 prefs->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true); |
| 1956 prefs->RegisterBooleanPref(prefs::kUseVerticalTabs, false); | 1945 prefs->RegisterBooleanPref(prefs::kUseVerticalTabs, false); |
| 1957 prefs->RegisterBooleanPref(prefs::kEnableTranslate, true); | 1946 prefs->RegisterBooleanPref(prefs::kEnableTranslate, true); |
| 1958 } | 1947 } |
| 1959 | 1948 |
| 1960 // static | 1949 // static |
| 1961 Browser* Browser::GetBrowserForController( | 1950 Browser* Browser::GetBrowserForController( |
| 1962 const NavigationController* controller, int* index_result) { | 1951 const NavigationController* controller, int* index_result) { |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2121 case IDC_DEV_TOOLS_CONSOLE: ToggleDevToolsWindow( | 2110 case IDC_DEV_TOOLS_CONSOLE: ToggleDevToolsWindow( |
| 2122 DEVTOOLS_TOGGLE_ACTION_SHOW_CONSOLE); | 2111 DEVTOOLS_TOGGLE_ACTION_SHOW_CONSOLE); |
| 2123 break; | 2112 break; |
| 2124 case IDC_DEV_TOOLS_INSPECT: ToggleDevToolsWindow( | 2113 case IDC_DEV_TOOLS_INSPECT: ToggleDevToolsWindow( |
| 2125 DEVTOOLS_TOGGLE_ACTION_INSPECT); | 2114 DEVTOOLS_TOGGLE_ACTION_INSPECT); |
| 2126 break; | 2115 break; |
| 2127 case IDC_TASK_MANAGER: OpenTaskManager(); break; | 2116 case IDC_TASK_MANAGER: OpenTaskManager(); break; |
| 2128 case IDC_REPORT_BUG: OpenBugReportDialog(); break; | 2117 case IDC_REPORT_BUG: OpenBugReportDialog(); break; |
| 2129 | 2118 |
| 2130 case IDC_SHOW_BOOKMARK_BAR: ToggleBookmarkBar(); break; | 2119 case IDC_SHOW_BOOKMARK_BAR: ToggleBookmarkBar(); break; |
| 2131 case IDC_SHOW_EXTENSION_SHELF: ToggleExtensionShelf(); break; | |
| 2132 | 2120 |
| 2133 case IDC_SHOW_BOOKMARK_MANAGER: OpenBookmarkManager(); break; | 2121 case IDC_SHOW_BOOKMARK_MANAGER: OpenBookmarkManager(); break; |
| 2134 case IDC_SHOW_APP_MENU: ShowAppMenu(); break; | 2122 case IDC_SHOW_APP_MENU: ShowAppMenu(); break; |
| 2135 case IDC_SHOW_HISTORY: ShowHistoryTab(); break; | 2123 case IDC_SHOW_HISTORY: ShowHistoryTab(); break; |
| 2136 case IDC_SHOW_DOWNLOADS: ShowDownloadsTab(); break; | 2124 case IDC_SHOW_DOWNLOADS: ShowDownloadsTab(); break; |
| 2137 case IDC_MANAGE_EXTENSIONS: ShowExtensionsTab(); break; | 2125 case IDC_MANAGE_EXTENSIONS: ShowExtensionsTab(); break; |
| 2138 case IDC_SYNC_BOOKMARKS: OpenSyncMyBookmarksDialog(); break; | 2126 case IDC_SYNC_BOOKMARKS: OpenSyncMyBookmarksDialog(); break; |
| 2139 #if defined(ENABLE_REMOTING) | 2127 #if defined(ENABLE_REMOTING) |
| 2140 case IDC_REMOTING_SETUP: OpenRemotingSetupDialog(); break; | 2128 case IDC_REMOTING_SETUP: OpenRemotingSetupDialog(); break; |
| 2141 #endif | 2129 #endif |
| (...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2685 return !!(type() & TYPE_POPUP); | 2673 return !!(type() & TYPE_POPUP); |
| 2686 } | 2674 } |
| 2687 | 2675 |
| 2688 void Browser::ToolbarSizeChanged(TabContents* source, bool is_animating) { | 2676 void Browser::ToolbarSizeChanged(TabContents* source, bool is_animating) { |
| 2689 if (source == GetSelectedTabContents() || source == NULL) { | 2677 if (source == GetSelectedTabContents() || source == NULL) { |
| 2690 // This will refresh the shelf if needed. | 2678 // This will refresh the shelf if needed. |
| 2691 window_->SelectedTabToolbarSizeChanged(is_animating); | 2679 window_->SelectedTabToolbarSizeChanged(is_animating); |
| 2692 } | 2680 } |
| 2693 } | 2681 } |
| 2694 | 2682 |
| 2695 void Browser::ExtensionShelfSizeChanged() { | |
| 2696 window_->SelectedTabExtensionShelfSizeChanged(); | |
| 2697 } | |
| 2698 | |
| 2699 void Browser::URLStarredChanged(TabContents* source, bool starred) { | 2683 void Browser::URLStarredChanged(TabContents* source, bool starred) { |
| 2700 if (source == GetSelectedTabContents()) | 2684 if (source == GetSelectedTabContents()) |
| 2701 window_->SetStarredState(starred); | 2685 window_->SetStarredState(starred); |
| 2702 } | 2686 } |
| 2703 | 2687 |
| 2704 void Browser::ContentsMouseEvent( | 2688 void Browser::ContentsMouseEvent( |
| 2705 TabContents* source, const gfx::Point& location, bool motion) { | 2689 TabContents* source, const gfx::Point& location, bool motion) { |
| 2706 if (!GetStatusBubble()) | 2690 if (!GetStatusBubble()) |
| 2707 return; | 2691 return; |
| 2708 | 2692 |
| (...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3233 | 3217 |
| 3234 // Show various bits of UI | 3218 // Show various bits of UI |
| 3235 command_updater_.UpdateCommandEnabled(IDC_OPEN_FILE, true); | 3219 command_updater_.UpdateCommandEnabled(IDC_OPEN_FILE, true); |
| 3236 command_updater_.UpdateCommandEnabled(IDC_CREATE_SHORTCUTS, false); | 3220 command_updater_.UpdateCommandEnabled(IDC_CREATE_SHORTCUTS, false); |
| 3237 command_updater_.UpdateCommandEnabled(IDC_DEV_TOOLS, true); | 3221 command_updater_.UpdateCommandEnabled(IDC_DEV_TOOLS, true); |
| 3238 command_updater_.UpdateCommandEnabled(IDC_DEV_TOOLS_CONSOLE, true); | 3222 command_updater_.UpdateCommandEnabled(IDC_DEV_TOOLS_CONSOLE, true); |
| 3239 command_updater_.UpdateCommandEnabled(IDC_DEV_TOOLS_INSPECT, true); | 3223 command_updater_.UpdateCommandEnabled(IDC_DEV_TOOLS_INSPECT, true); |
| 3240 command_updater_.UpdateCommandEnabled(IDC_TASK_MANAGER, true); | 3224 command_updater_.UpdateCommandEnabled(IDC_TASK_MANAGER, true); |
| 3241 command_updater_.UpdateCommandEnabled(IDC_SHOW_HISTORY, true); | 3225 command_updater_.UpdateCommandEnabled(IDC_SHOW_HISTORY, true); |
| 3242 command_updater_.UpdateCommandEnabled(IDC_SHOW_BOOKMARK_MANAGER, true); | 3226 command_updater_.UpdateCommandEnabled(IDC_SHOW_BOOKMARK_MANAGER, true); |
| 3243 command_updater_.UpdateCommandEnabled(IDC_SHOW_EXTENSION_SHELF, true); | |
| 3244 command_updater_.UpdateCommandEnabled(IDC_SHOW_DOWNLOADS, true); | 3227 command_updater_.UpdateCommandEnabled(IDC_SHOW_DOWNLOADS, true); |
| 3245 command_updater_.UpdateCommandEnabled(IDC_HELP_PAGE, true); | 3228 command_updater_.UpdateCommandEnabled(IDC_HELP_PAGE, true); |
| 3246 command_updater_.UpdateCommandEnabled(IDC_IMPORT_SETTINGS, true); | 3229 command_updater_.UpdateCommandEnabled(IDC_IMPORT_SETTINGS, true); |
| 3247 | 3230 |
| 3248 #if defined(OS_CHROMEOS) | 3231 #if defined(OS_CHROMEOS) |
| 3249 command_updater_.UpdateCommandEnabled(IDC_SEARCH, true); | 3232 command_updater_.UpdateCommandEnabled(IDC_SEARCH, true); |
| 3250 command_updater_.UpdateCommandEnabled(IDC_SYSTEM_OPTIONS, true); | 3233 command_updater_.UpdateCommandEnabled(IDC_SYSTEM_OPTIONS, true); |
| 3251 command_updater_.UpdateCommandEnabled(IDC_INTERNET_OPTIONS, true); | 3234 command_updater_.UpdateCommandEnabled(IDC_INTERNET_OPTIONS, true); |
| 3252 #endif | 3235 #endif |
| 3253 | 3236 |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3411 if (changed_flags & TabContents::INVALIDATE_TITLE && !source->is_loading()) { | 3394 if (changed_flags & TabContents::INVALIDATE_TITLE && !source->is_loading()) { |
| 3412 // To correctly calculate whether the title changed while not loading | 3395 // To correctly calculate whether the title changed while not loading |
| 3413 // we need to process the update synchronously. This state only matters for | 3396 // we need to process the update synchronously. This state only matters for |
| 3414 // the TabStripModel, so we notify the TabStripModel now and notify others | 3397 // the TabStripModel, so we notify the TabStripModel now and notify others |
| 3415 // asynchronously. | 3398 // asynchronously. |
| 3416 tabstrip_model_.UpdateTabContentsStateAt( | 3399 tabstrip_model_.UpdateTabContentsStateAt( |
| 3417 tabstrip_model_.GetIndexOfController(&source->controller()), | 3400 tabstrip_model_.GetIndexOfController(&source->controller()), |
| 3418 TabStripModelObserver::TITLE_NOT_LOADING); | 3401 TabStripModelObserver::TITLE_NOT_LOADING); |
| 3419 } | 3402 } |
| 3420 | 3403 |
| 3421 if (changed_flags & TabContents::INVALIDATE_BOOKMARK_BAR || | 3404 if (changed_flags & TabContents::INVALIDATE_BOOKMARK_BAR) { |
| 3422 changed_flags & TabContents::INVALIDATE_EXTENSION_SHELF) { | |
| 3423 window()->ShelfVisibilityChanged(); | 3405 window()->ShelfVisibilityChanged(); |
| 3424 changed_flags &= ~(TabContents::INVALIDATE_BOOKMARK_BAR | | 3406 changed_flags &= ~TabContents::INVALIDATE_BOOKMARK_BAR; |
| 3425 TabContents::INVALIDATE_EXTENSION_SHELF); | |
| 3426 } | 3407 } |
| 3427 | 3408 |
| 3428 // If the only updates were synchronously handled above, we're done. | 3409 // If the only updates were synchronously handled above, we're done. |
| 3429 if (changed_flags == 0) | 3410 if (changed_flags == 0) |
| 3430 return; | 3411 return; |
| 3431 | 3412 |
| 3432 // Save the dirty bits. | 3413 // Save the dirty bits. |
| 3433 scheduled_updates_[source] |= changed_flags; | 3414 scheduled_updates_[source] |= changed_flags; |
| 3434 | 3415 |
| 3435 if (chrome_updater_factory_.empty()) { | 3416 if (chrome_updater_factory_.empty()) { |
| (...skipping 685 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4121 } | 4102 } |
| 4122 | 4103 |
| 4123 bool Browser::IsPinned(TabContents* source) { | 4104 bool Browser::IsPinned(TabContents* source) { |
| 4124 int index = tabstrip_model_.GetIndexOfTabContents(source); | 4105 int index = tabstrip_model_.GetIndexOfTabContents(source); |
| 4125 if (index == TabStripModel::kNoTab) { | 4106 if (index == TabStripModel::kNoTab) { |
| 4126 NOTREACHED() << "IsPinned called for tab not in our strip"; | 4107 NOTREACHED() << "IsPinned called for tab not in our strip"; |
| 4127 return false; | 4108 return false; |
| 4128 } | 4109 } |
| 4129 return tabstrip_model_.IsTabPinned(index); | 4110 return tabstrip_model_.IsTabPinned(index); |
| 4130 } | 4111 } |
| OLD | NEW |