| 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/browser.h" | 5 #include "chrome/browser/ui/browser.h" |
| 6 | 6 |
| 7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
| 8 #include <windows.h> | 8 #include <windows.h> |
| 9 #include <shellapi.h> | 9 #include <shellapi.h> |
| 10 #endif // defined(OS_WIN) | 10 #endif // defined(OS_WIN) |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 #include "chrome/common/custom_handlers/protocol_handler.h" | 147 #include "chrome/common/custom_handlers/protocol_handler.h" |
| 148 #include "chrome/common/pref_names.h" | 148 #include "chrome/common/pref_names.h" |
| 149 #include "chrome/common/profiling.h" | 149 #include "chrome/common/profiling.h" |
| 150 #include "chrome/common/search_types.h" | 150 #include "chrome/common/search_types.h" |
| 151 #include "chrome/common/url_constants.h" | 151 #include "chrome/common/url_constants.h" |
| 152 #include "components/bookmarks/browser/bookmark_model.h" | 152 #include "components/bookmarks/browser/bookmark_model.h" |
| 153 #include "components/bookmarks/browser/bookmark_utils.h" | 153 #include "components/bookmarks/browser/bookmark_utils.h" |
| 154 #include "components/google/core/browser/google_url_tracker.h" | 154 #include "components/google/core/browser/google_url_tracker.h" |
| 155 #include "components/search/search.h" | 155 #include "components/search/search.h" |
| 156 #include "components/startup_metric_utils/startup_metric_utils.h" | 156 #include "components/startup_metric_utils/startup_metric_utils.h" |
| 157 #include "components/web_modal/popup_manager.h" | |
| 158 #include "components/web_modal/web_contents_modal_dialog_manager.h" | 157 #include "components/web_modal/web_contents_modal_dialog_manager.h" |
| 159 #include "content/public/browser/devtools_manager.h" | 158 #include "content/public/browser/devtools_manager.h" |
| 160 #include "content/public/browser/download_item.h" | 159 #include "content/public/browser/download_item.h" |
| 161 #include "content/public/browser/download_manager.h" | 160 #include "content/public/browser/download_manager.h" |
| 162 #include "content/public/browser/interstitial_page.h" | 161 #include "content/public/browser/interstitial_page.h" |
| 163 #include "content/public/browser/invalidate_type.h" | 162 #include "content/public/browser/invalidate_type.h" |
| 164 #include "content/public/browser/navigation_controller.h" | 163 #include "content/public/browser/navigation_controller.h" |
| 165 #include "content/public/browser/navigation_entry.h" | 164 #include "content/public/browser/navigation_entry.h" |
| 166 #include "content/public/browser/notification_details.h" | 165 #include "content/public/browser/notification_details.h" |
| 167 #include "content/public/browser/notification_service.h" | 166 #include "content/public/browser/notification_service.h" |
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 442 // TODO(beng): move to ChromeBrowserMain: | 441 // TODO(beng): move to ChromeBrowserMain: |
| 443 if (first_run::ShouldDoPersonalDataManagerFirstRun()) { | 442 if (first_run::ShouldDoPersonalDataManagerFirstRun()) { |
| 444 #if defined(OS_WIN) | 443 #if defined(OS_WIN) |
| 445 // Notify PDM that this is a first run. | 444 // Notify PDM that this is a first run. |
| 446 ImportAutofillDataWin( | 445 ImportAutofillDataWin( |
| 447 autofill::PersonalDataManagerFactory::GetForProfile(profile_)); | 446 autofill::PersonalDataManagerFactory::GetForProfile(profile_)); |
| 448 #endif // defined(OS_WIN) | 447 #endif // defined(OS_WIN) |
| 449 } | 448 } |
| 450 | 449 |
| 451 fullscreen_controller_.reset(new FullscreenController(this)); | 450 fullscreen_controller_.reset(new FullscreenController(this)); |
| 452 | |
| 453 // Must be initialized after window_. | |
| 454 // Also: surprise! a modal dialog host is not necessary to host modal dialogs | |
| 455 // without a modal dialog host, so that value may be null. | |
| 456 popup_manager_.reset(new web_modal::PopupManager( | |
| 457 GetWebContentsModalDialogHost())); | |
| 458 } | 451 } |
| 459 | 452 |
| 460 Browser::~Browser() { | 453 Browser::~Browser() { |
| 461 // Stop observing notifications before continuing with destruction. Profile | 454 // Stop observing notifications before continuing with destruction. Profile |
| 462 // destruction will unload extensions and reentrant calls to Browser:: should | 455 // destruction will unload extensions and reentrant calls to Browser:: should |
| 463 // be avoided while it is being torn down. | 456 // be avoided while it is being torn down. |
| 464 registrar_.RemoveAll(); | 457 registrar_.RemoveAll(); |
| 465 | 458 |
| 466 // The tab strip should not have any tabs at this point. | 459 // The tab strip should not have any tabs at this point. |
| 467 DCHECK(tab_strip_model_->empty()); | 460 DCHECK(tab_strip_model_->empty()); |
| (...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 896 return OpenURLFromTab(NULL, params); | 889 return OpenURLFromTab(NULL, params); |
| 897 } | 890 } |
| 898 | 891 |
| 899 /////////////////////////////////////////////////////////////////////////////// | 892 /////////////////////////////////////////////////////////////////////////////// |
| 900 // Browser, TabStripModelObserver implementation: | 893 // Browser, TabStripModelObserver implementation: |
| 901 | 894 |
| 902 void Browser::TabInsertedAt(WebContents* contents, | 895 void Browser::TabInsertedAt(WebContents* contents, |
| 903 int index, | 896 int index, |
| 904 bool foreground) { | 897 bool foreground) { |
| 905 SetAsDelegate(contents, true); | 898 SetAsDelegate(contents, true); |
| 906 | |
| 907 if (popup_manager_) | |
| 908 popup_manager_->RegisterWith(contents); | |
| 909 | |
| 910 SessionTabHelper* session_tab_helper = | 899 SessionTabHelper* session_tab_helper = |
| 911 SessionTabHelper::FromWebContents(contents); | 900 SessionTabHelper::FromWebContents(contents); |
| 912 session_tab_helper->SetWindowID(session_id()); | 901 session_tab_helper->SetWindowID(session_id()); |
| 913 | 902 |
| 914 content::NotificationService::current()->Notify( | 903 content::NotificationService::current()->Notify( |
| 915 chrome::NOTIFICATION_TAB_PARENTED, | 904 chrome::NOTIFICATION_TAB_PARENTED, |
| 916 content::Source<content::WebContents>(contents), | 905 content::Source<content::WebContents>(contents), |
| 917 content::NotificationService::NoDetails()); | 906 content::NotificationService::NoDetails()); |
| 918 | 907 |
| 919 SyncHistoryWithTabs(index); | 908 SyncHistoryWithTabs(index); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 941 fullscreen_controller_->OnTabClosing(contents); | 930 fullscreen_controller_->OnTabClosing(contents); |
| 942 SessionService* session_service = | 931 SessionService* session_service = |
| 943 SessionServiceFactory::GetForProfile(profile_); | 932 SessionServiceFactory::GetForProfile(profile_); |
| 944 if (session_service) | 933 if (session_service) |
| 945 session_service->TabClosing(contents); | 934 session_service->TabClosing(contents); |
| 946 content::NotificationService::current()->Notify( | 935 content::NotificationService::current()->Notify( |
| 947 chrome::NOTIFICATION_TAB_CLOSING, | 936 chrome::NOTIFICATION_TAB_CLOSING, |
| 948 content::Source<NavigationController>(&contents->GetController()), | 937 content::Source<NavigationController>(&contents->GetController()), |
| 949 content::NotificationService::NoDetails()); | 938 content::NotificationService::NoDetails()); |
| 950 | 939 |
| 951 if (popup_manager_) | |
| 952 popup_manager_->UnregisterWith(contents); | |
| 953 | |
| 954 // Sever the WebContents' connection back to us. | 940 // Sever the WebContents' connection back to us. |
| 955 SetAsDelegate(contents, false); | 941 SetAsDelegate(contents, false); |
| 956 } | 942 } |
| 957 | 943 |
| 958 void Browser::TabDetachedAt(WebContents* contents, int index) { | 944 void Browser::TabDetachedAt(WebContents* contents, int index) { |
| 959 // TabDetachedAt is called before TabStripModel has updated the | 945 // TabDetachedAt is called before TabStripModel has updated the |
| 960 // active index. | 946 // active index. |
| 961 int old_active_index = tab_strip_model_->active_index(); | 947 int old_active_index = tab_strip_model_->active_index(); |
| 962 if (index < old_active_index && !tab_strip_model_->closing_all()) { | 948 if (index < old_active_index && !tab_strip_model_->closing_all()) { |
| 963 SessionService* session_service = | 949 SessionService* session_service = |
| 964 SessionServiceFactory::GetForProfileIfExisting(profile_); | 950 SessionServiceFactory::GetForProfileIfExisting(profile_); |
| 965 if (session_service) | 951 if (session_service) |
| 966 session_service->SetSelectedTabInWindow(session_id(), | 952 session_service->SetSelectedTabInWindow(session_id(), |
| 967 old_active_index - 1); | 953 old_active_index - 1); |
| 968 } | 954 } |
| 969 | |
| 970 if (popup_manager_) | |
| 971 popup_manager_->UnregisterWith(contents); | |
| 972 | |
| 973 TabDetachedAtImpl(contents, index, DETACH_TYPE_DETACH); | 955 TabDetachedAtImpl(contents, index, DETACH_TYPE_DETACH); |
| 974 } | 956 } |
| 975 | 957 |
| 976 void Browser::TabDeactivated(WebContents* contents) { | 958 void Browser::TabDeactivated(WebContents* contents) { |
| 977 fullscreen_controller_->OnTabDeactivated(contents); | 959 fullscreen_controller_->OnTabDeactivated(contents); |
| 978 search_delegate_->OnTabDeactivated(contents); | 960 search_delegate_->OnTabDeactivated(contents); |
| 979 SearchTabHelper::FromWebContents(contents)->OnTabDeactivated(); | 961 SearchTabHelper::FromWebContents(contents)->OnTabDeactivated(); |
| 980 | 962 |
| 981 // Save what the user's currently typing, so it can be restored when we | 963 // Save what the user's currently typing, so it can be restored when we |
| 982 // switch back to this tab. | 964 // switch back to this tab. |
| (...skipping 1491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2474 if (contents && !allow_js_access) { | 2456 if (contents && !allow_js_access) { |
| 2475 contents->web_contents()->GetController().LoadURL( | 2457 contents->web_contents()->GetController().LoadURL( |
| 2476 target_url, | 2458 target_url, |
| 2477 content::Referrer(), | 2459 content::Referrer(), |
| 2478 content::PAGE_TRANSITION_LINK, | 2460 content::PAGE_TRANSITION_LINK, |
| 2479 std::string()); // No extra headers. | 2461 std::string()); // No extra headers. |
| 2480 } | 2462 } |
| 2481 | 2463 |
| 2482 return contents != NULL; | 2464 return contents != NULL; |
| 2483 } | 2465 } |
| OLD | NEW |