| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 // OS_WIN | 10 #endif // OS_WIN |
| (...skipping 1005 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1016 | 1016 |
| 1017 // Make sure the loading state is updated correctly, otherwise the throbber | 1017 // Make sure the loading state is updated correctly, otherwise the throbber |
| 1018 // won't start if the page is loading. | 1018 // won't start if the page is loading. |
| 1019 LoadingStateChanged(contents->web_contents()); | 1019 LoadingStateChanged(contents->web_contents()); |
| 1020 | 1020 |
| 1021 registrar_.Add(this, content::NOTIFICATION_INTERSTITIAL_ATTACHED, | 1021 registrar_.Add(this, content::NOTIFICATION_INTERSTITIAL_ATTACHED, |
| 1022 content::Source<WebContents>(contents->web_contents())); | 1022 content::Source<WebContents>(contents->web_contents())); |
| 1023 | 1023 |
| 1024 registrar_.Add(this, content::NOTIFICATION_INTERSTITIAL_DETACHED, | 1024 registrar_.Add(this, content::NOTIFICATION_INTERSTITIAL_DETACHED, |
| 1025 content::Source<WebContents>(contents->web_contents())); | 1025 content::Source<WebContents>(contents->web_contents())); |
| 1026 SessionService* session_service = |
| 1027 SessionServiceFactory::GetForProfile(profile_); |
| 1028 if (session_service) |
| 1029 session_service->TabInserted(contents->web_contents()); |
| 1026 } | 1030 } |
| 1027 | 1031 |
| 1028 void Browser::TabClosingAt(TabStripModel* tab_strip_model, | 1032 void Browser::TabClosingAt(TabStripModel* tab_strip_model, |
| 1029 TabContents* contents, | 1033 TabContents* contents, |
| 1030 int index) { | 1034 int index) { |
| 1031 fullscreen_controller_->OnTabClosing(contents->web_contents()); | 1035 fullscreen_controller_->OnTabClosing(contents->web_contents()); |
| 1036 SessionService* session_service = |
| 1037 SessionServiceFactory::GetForProfile(profile_); |
| 1038 if (session_service) |
| 1039 session_service->TabClosing(contents->web_contents()); |
| 1032 content::NotificationService::current()->Notify( | 1040 content::NotificationService::current()->Notify( |
| 1033 chrome::NOTIFICATION_TAB_CLOSING, | 1041 chrome::NOTIFICATION_TAB_CLOSING, |
| 1034 content::Source<NavigationController>( | 1042 content::Source<NavigationController>( |
| 1035 &contents->web_contents()->GetController()), | 1043 &contents->web_contents()->GetController()), |
| 1036 content::NotificationService::NoDetails()); | 1044 content::NotificationService::NoDetails()); |
| 1037 | 1045 |
| 1038 // Sever the WebContents' connection back to us. | 1046 // Sever the WebContents' connection back to us. |
| 1039 SetAsDelegate(contents->web_contents(), NULL); | 1047 SetAsDelegate(contents->web_contents(), NULL); |
| 1040 } | 1048 } |
| 1041 | 1049 |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1131 DCHECK(from_index >= 0 && to_index >= 0); | 1139 DCHECK(from_index >= 0 && to_index >= 0); |
| 1132 // Notify the history service. | 1140 // Notify the history service. |
| 1133 SyncHistoryWithTabs(std::min(from_index, to_index)); | 1141 SyncHistoryWithTabs(std::min(from_index, to_index)); |
| 1134 } | 1142 } |
| 1135 | 1143 |
| 1136 void Browser::TabReplacedAt(TabStripModel* tab_strip_model, | 1144 void Browser::TabReplacedAt(TabStripModel* tab_strip_model, |
| 1137 TabContents* old_contents, | 1145 TabContents* old_contents, |
| 1138 TabContents* new_contents, | 1146 TabContents* new_contents, |
| 1139 int index) { | 1147 int index) { |
| 1140 TabDetachedAtImpl(old_contents, index, DETACH_TYPE_REPLACE); | 1148 TabDetachedAtImpl(old_contents, index, DETACH_TYPE_REPLACE); |
| 1149 SessionService* session_service = |
| 1150 SessionServiceFactory::GetForProfile(profile_); |
| 1151 if (session_service) |
| 1152 session_service->TabClosing(old_contents->web_contents()); |
| 1141 TabInsertedAt(new_contents, index, (index == active_index())); | 1153 TabInsertedAt(new_contents, index, (index == active_index())); |
| 1142 | 1154 |
| 1143 int entry_count = | 1155 int entry_count = |
| 1144 new_contents->web_contents()->GetController().GetEntryCount(); | 1156 new_contents->web_contents()->GetController().GetEntryCount(); |
| 1145 if (entry_count > 0) { | 1157 if (entry_count > 0) { |
| 1146 // Send out notification so that observers are updated appropriately. | 1158 // Send out notification so that observers are updated appropriately. |
| 1147 new_contents->web_contents()->GetController().NotifyEntryChanged( | 1159 new_contents->web_contents()->GetController().NotifyEntryChanged( |
| 1148 new_contents->web_contents()->GetController().GetEntryAtIndex( | 1160 new_contents->web_contents()->GetController().GetEntryAtIndex( |
| 1149 entry_count - 1), | 1161 entry_count - 1), |
| 1150 entry_count - 1); | 1162 entry_count - 1); |
| 1151 } | 1163 } |
| 1152 | 1164 |
| 1153 SessionService* session_service = | |
| 1154 SessionServiceFactory::GetForProfile(profile()); | |
| 1155 if (session_service) { | 1165 if (session_service) { |
| 1156 // The new_contents may end up with a different navigation stack. Force | 1166 // The new_contents may end up with a different navigation stack. Force |
| 1157 // the session service to update itself. | 1167 // the session service to update itself. |
| 1158 session_service->TabRestored(new_contents, | 1168 session_service->TabRestored(new_contents, |
| 1159 tab_strip_model_->IsTabPinned(index)); | 1169 tab_strip_model_->IsTabPinned(index)); |
| 1160 } | 1170 } |
| 1161 | 1171 |
| 1162 content::DevToolsManager::GetInstance()->ContentsReplaced( | 1172 content::DevToolsManager::GetInstance()->ContentsReplaced( |
| 1163 old_contents->web_contents(), new_contents->web_contents()); | 1173 old_contents->web_contents(), new_contents->web_contents()); |
| 1164 } | 1174 } |
| (...skipping 1122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2287 if (contents && !allow_js_access) { | 2297 if (contents && !allow_js_access) { |
| 2288 contents->web_contents()->GetController().LoadURL( | 2298 contents->web_contents()->GetController().LoadURL( |
| 2289 target_url, | 2299 target_url, |
| 2290 content::Referrer(), | 2300 content::Referrer(), |
| 2291 content::PAGE_TRANSITION_LINK, | 2301 content::PAGE_TRANSITION_LINK, |
| 2292 std::string()); // No extra headers. | 2302 std::string()); // No extra headers. |
| 2293 } | 2303 } |
| 2294 | 2304 |
| 2295 return contents != NULL; | 2305 return contents != NULL; |
| 2296 } | 2306 } |
| OLD | NEW |