| 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/chrome_content_browser_client.h" | 5 #include "chrome/browser/chrome_content_browser_client.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 #include "ui/base/ui_base_paths.h" | 184 #include "ui/base/ui_base_paths.h" |
| 185 #include "ui/gfx/android/device_display_info.h" | 185 #include "ui/gfx/android/device_display_info.h" |
| 186 #endif | 186 #endif |
| 187 | 187 |
| 188 #if defined(OS_ANDROID) | 188 #if defined(OS_ANDROID) |
| 189 #include "chrome/browser/android/dev_tools_manager_delegate_android.h" | 189 #include "chrome/browser/android/dev_tools_manager_delegate_android.h" |
| 190 #else | 190 #else |
| 191 #include "chrome/browser/devtools/chrome_devtools_manager_delegate.h" | 191 #include "chrome/browser/devtools/chrome_devtools_manager_delegate.h" |
| 192 #endif | 192 #endif |
| 193 | 193 |
| 194 #if !defined(OS_CHROMEOS) | |
| 195 #include "chrome/browser/signin/chrome_signin_client.h" | |
| 196 #include "chrome/browser/signin/chrome_signin_client_factory.h" | |
| 197 #include "chrome/browser/signin/signin_manager_factory.h" | |
| 198 #include "components/signin/core/browser/signin_manager.h" | |
| 199 #endif | |
| 200 | |
| 201 #if defined(TOOLKIT_VIEWS) | 194 #if defined(TOOLKIT_VIEWS) |
| 202 #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h" | 195 #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h" |
| 203 #endif | 196 #endif |
| 204 | 197 |
| 205 #if defined(USE_ASH) | 198 #if defined(USE_ASH) |
| 206 #include "chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.h" | 199 #include "chrome/browser/ui/views/ash/chrome_browser_main_extra_parts_ash.h" |
| 207 #endif | 200 #endif |
| 208 | 201 |
| 209 #if defined(USE_AURA) | 202 #if defined(USE_AURA) |
| 210 #include "chrome/browser/ui/aura/chrome_browser_main_extra_parts_aura.h" | 203 #include "chrome/browser/ui/aura/chrome_browser_main_extra_parts_aura.h" |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 static breakpad::CrashHandlerHostLinux* crash_handler = NULL; | 494 static breakpad::CrashHandlerHostLinux* crash_handler = NULL; |
| 502 if (!crash_handler) | 495 if (!crash_handler) |
| 503 crash_handler = CreateCrashHandlerHost(process_type); | 496 crash_handler = CreateCrashHandlerHost(process_type); |
| 504 return crash_handler->GetDeathSignalSocket(); | 497 return crash_handler->GetDeathSignalSocket(); |
| 505 } | 498 } |
| 506 | 499 |
| 507 return -1; | 500 return -1; |
| 508 } | 501 } |
| 509 #endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) | 502 #endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) |
| 510 | 503 |
| 511 #if !defined(OS_CHROMEOS) | |
| 512 GURL GetEffectiveURLForSignin(const GURL& url) { | |
| 513 CHECK(SigninManager::IsWebBasedSigninFlowURL(url)); | |
| 514 | |
| 515 GURL effective_url(SigninManager::kChromeSigninEffectiveSite); | |
| 516 // Copy the path because the argument to SetPathStr must outlive | |
| 517 // the Replacements object. | |
| 518 const std::string path_copy(url.path()); | |
| 519 GURL::Replacements replacements; | |
| 520 replacements.SetPathStr(path_copy); | |
| 521 effective_url = effective_url.ReplaceComponents(replacements); | |
| 522 return effective_url; | |
| 523 } | |
| 524 #endif | |
| 525 | |
| 526 void SetApplicationLocaleOnIOThread(const std::string& locale) { | 504 void SetApplicationLocaleOnIOThread(const std::string& locale) { |
| 527 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 505 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 528 g_io_thread_application_locale.Get() = locale; | 506 g_io_thread_application_locale.Get() = locale; |
| 529 } | 507 } |
| 530 | 508 |
| 531 void HandleBlockedPopupOnUIThread(const BlockedWindowParams& params) { | 509 void HandleBlockedPopupOnUIThread(const BlockedWindowParams& params) { |
| 532 // TODO(jochen): This code path should use RenderFrameHosts. See | 510 // TODO(jochen): This code path should use RenderFrameHosts. See |
| 533 // http://crbug.com/431769 for details. | 511 // http://crbug.com/431769 for details. |
| 534 RenderViewHost* render_view_host = | 512 RenderViewHost* render_view_host = |
| 535 RenderViewHost::FromID(params.render_process_id(), params.opener_id()); | 513 RenderViewHost::FromID(params.render_process_id(), params.opener_id()); |
| (...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 971 content::BrowserContext* browser_context, const GURL& url) { | 949 content::BrowserContext* browser_context, const GURL& url) { |
| 972 Profile* profile = Profile::FromBrowserContext(browser_context); | 950 Profile* profile = Profile::FromBrowserContext(browser_context); |
| 973 if (!profile) | 951 if (!profile) |
| 974 return url; | 952 return url; |
| 975 | 953 |
| 976 // If the input |url| should be assigned to the Instant renderer, make its | 954 // If the input |url| should be assigned to the Instant renderer, make its |
| 977 // effective URL distinct from other URLs on the search provider's domain. | 955 // effective URL distinct from other URLs on the search provider's domain. |
| 978 if (chrome::ShouldAssignURLToInstantRenderer(url, profile)) | 956 if (chrome::ShouldAssignURLToInstantRenderer(url, profile)) |
| 979 return chrome::GetEffectiveURLForInstant(url, profile); | 957 return chrome::GetEffectiveURLForInstant(url, profile); |
| 980 | 958 |
| 981 #if !defined(OS_CHROMEOS) | |
| 982 // If the input |url| should be assigned to the Signin renderer, make its | |
| 983 // effective URL distinct from other URLs on the signin service's domain. | |
| 984 // Note that the signin renderer will be allowed to sign the user in to | |
| 985 // Chrome. | |
| 986 if (SigninManager::IsWebBasedSigninFlowURL(url)) | |
| 987 return GetEffectiveURLForSignin(url); | |
| 988 #endif | |
| 989 | |
| 990 #if defined(ENABLE_EXTENSIONS) | 959 #if defined(ENABLE_EXTENSIONS) |
| 991 return ChromeContentBrowserClientExtensionsPart::GetEffectiveURL( | 960 return ChromeContentBrowserClientExtensionsPart::GetEffectiveURL( |
| 992 profile, url); | 961 profile, url); |
| 993 #else | 962 #else |
| 994 return url; | 963 return url; |
| 995 #endif | 964 #endif |
| 996 } | 965 } |
| 997 | 966 |
| 998 bool ChromeContentBrowserClient::ShouldUseProcessPerSite( | 967 bool ChromeContentBrowserClient::ShouldUseProcessPerSite( |
| 999 content::BrowserContext* browser_context, const GURL& effective_url) { | 968 content::BrowserContext* browser_context, const GURL& effective_url) { |
| 1000 // Non-extension, non-Instant URLs should generally use | 969 // Non-extension, non-Instant URLs should generally use |
| 1001 // process-per-site-instance. Because we expect to use the effective URL, | 970 // process-per-site-instance. Because we expect to use the effective URL, |
| 1002 // URLs for hosted apps (apart from bookmark apps) should have an extension | 971 // URLs for hosted apps (apart from bookmark apps) should have an extension |
| 1003 // scheme by now. | 972 // scheme by now. |
| 1004 | 973 |
| 1005 Profile* profile = Profile::FromBrowserContext(browser_context); | 974 Profile* profile = Profile::FromBrowserContext(browser_context); |
| 1006 if (!profile) | 975 if (!profile) |
| 1007 return false; | 976 return false; |
| 1008 | 977 |
| 1009 if (chrome::ShouldUseProcessPerSiteForInstantURL(effective_url, profile)) | 978 if (chrome::ShouldUseProcessPerSiteForInstantURL(effective_url, profile)) |
| 1010 return true; | 979 return true; |
| 1011 | 980 |
| 1012 #if !defined(OS_CHROMEOS) | |
| 1013 if (SigninManager::IsWebBasedSigninFlowURL(effective_url)) | |
| 1014 return true; | |
| 1015 #endif | |
| 1016 | |
| 1017 #if defined(ENABLE_EXTENSIONS) | 981 #if defined(ENABLE_EXTENSIONS) |
| 1018 return ChromeContentBrowserClientExtensionsPart::ShouldUseProcessPerSite( | 982 return ChromeContentBrowserClientExtensionsPart::ShouldUseProcessPerSite( |
| 1019 profile, effective_url); | 983 profile, effective_url); |
| 1020 #else | 984 #else |
| 1021 return false; | 985 return false; |
| 1022 #endif | 986 #endif |
| 1023 } | 987 } |
| 1024 | 988 |
| 1025 // These are treated as WebUI schemes but do not get WebUI bindings. Also, | 989 // These are treated as WebUI schemes but do not get WebUI bindings. Also, |
| 1026 // view-source is allowed for these schemes. | 990 // view-source is allowed for these schemes. |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1120 InstantServiceFactory::GetForProfile(profile); | 1084 InstantServiceFactory::GetForProfile(profile); |
| 1121 if (instant_service) { | 1085 if (instant_service) { |
| 1122 bool is_instant_process = instant_service->IsInstantProcess( | 1086 bool is_instant_process = instant_service->IsInstantProcess( |
| 1123 process_host->GetID()); | 1087 process_host->GetID()); |
| 1124 bool should_be_in_instant_process = | 1088 bool should_be_in_instant_process = |
| 1125 chrome::ShouldAssignURLToInstantRenderer(site_url, profile); | 1089 chrome::ShouldAssignURLToInstantRenderer(site_url, profile); |
| 1126 if (is_instant_process || should_be_in_instant_process) | 1090 if (is_instant_process || should_be_in_instant_process) |
| 1127 return is_instant_process && should_be_in_instant_process; | 1091 return is_instant_process && should_be_in_instant_process; |
| 1128 } | 1092 } |
| 1129 | 1093 |
| 1130 #if !defined(OS_CHROMEOS) | |
| 1131 SigninClient* signin_client = | |
| 1132 ChromeSigninClientFactory::GetForProfile(profile); | |
| 1133 if (signin_client && signin_client->IsSigninProcess(process_host->GetID())) | |
| 1134 return SigninManager::IsWebBasedSigninFlowURL(site_url); | |
| 1135 #endif | |
| 1136 | |
| 1137 #if defined(ENABLE_EXTENSIONS) | 1094 #if defined(ENABLE_EXTENSIONS) |
| 1138 return ChromeContentBrowserClientExtensionsPart::IsSuitableHost( | 1095 return ChromeContentBrowserClientExtensionsPart::IsSuitableHost( |
| 1139 profile, process_host, site_url); | 1096 profile, process_host, site_url); |
| 1140 #else | 1097 #else |
| 1141 return true; | 1098 return true; |
| 1142 #endif | 1099 #endif |
| 1143 } | 1100 } |
| 1144 | 1101 |
| 1145 bool ChromeContentBrowserClient::MayReuseHost( | 1102 bool ChromeContentBrowserClient::MayReuseHost( |
| 1146 content::RenderProcessHost* process_host) { | 1103 content::RenderProcessHost* process_host) { |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1187 // Remember the ID of the Instant process to signal the renderer process | 1144 // Remember the ID of the Instant process to signal the renderer process |
| 1188 // on startup in |AppendExtraCommandLineSwitches| below. | 1145 // on startup in |AppendExtraCommandLineSwitches| below. |
| 1189 if (chrome::ShouldAssignURLToInstantRenderer( | 1146 if (chrome::ShouldAssignURLToInstantRenderer( |
| 1190 site_instance->GetSiteURL(), profile)) { | 1147 site_instance->GetSiteURL(), profile)) { |
| 1191 InstantService* instant_service = | 1148 InstantService* instant_service = |
| 1192 InstantServiceFactory::GetForProfile(profile); | 1149 InstantServiceFactory::GetForProfile(profile); |
| 1193 if (instant_service) | 1150 if (instant_service) |
| 1194 instant_service->AddInstantProcess(site_instance->GetProcess()->GetID()); | 1151 instant_service->AddInstantProcess(site_instance->GetProcess()->GetID()); |
| 1195 } | 1152 } |
| 1196 | 1153 |
| 1197 #if !defined(OS_CHROMEOS) | |
| 1198 // We only expect there to be one signin process as we use process-per-site | |
| 1199 // for signin URLs. The signin process will be cleared from SigninManager | |
| 1200 // when the renderer is destroyed. | |
| 1201 if (SigninManager::IsWebBasedSigninFlowURL(site_instance->GetSiteURL())) { | |
| 1202 SigninClient* signin_client = | |
| 1203 ChromeSigninClientFactory::GetForProfile(profile); | |
| 1204 if (signin_client) | |
| 1205 signin_client->SetSigninProcess(site_instance->GetProcess()->GetID()); | |
| 1206 #if defined(ENABLE_EXTENSIONS) | |
| 1207 ChromeContentBrowserClientExtensionsPart::SetSigninProcess(site_instance); | |
| 1208 #endif | |
| 1209 } | |
| 1210 #endif | |
| 1211 | |
| 1212 for (size_t i = 0; i < extra_parts_.size(); ++i) | 1154 for (size_t i = 0; i < extra_parts_.size(); ++i) |
| 1213 extra_parts_[i]->SiteInstanceGotProcess(site_instance); | 1155 extra_parts_[i]->SiteInstanceGotProcess(site_instance); |
| 1214 } | 1156 } |
| 1215 | 1157 |
| 1216 void ChromeContentBrowserClient::SiteInstanceDeleting( | 1158 void ChromeContentBrowserClient::SiteInstanceDeleting( |
| 1217 SiteInstance* site_instance) { | 1159 SiteInstance* site_instance) { |
| 1218 if (!site_instance->HasProcess()) | 1160 if (!site_instance->HasProcess()) |
| 1219 return; | 1161 return; |
| 1220 | 1162 |
| 1221 for (size_t i = 0; i < extra_parts_.size(); ++i) | 1163 for (size_t i = 0; i < extra_parts_.size(); ++i) |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1394 } | 1336 } |
| 1395 | 1337 |
| 1396 if (prefs->GetBoolean(prefs::kPrintPreviewDisabled)) | 1338 if (prefs->GetBoolean(prefs::kPrintPreviewDisabled)) |
| 1397 command_line->AppendSwitch(switches::kDisablePrintPreview); | 1339 command_line->AppendSwitch(switches::kDisablePrintPreview); |
| 1398 | 1340 |
| 1399 InstantService* instant_service = | 1341 InstantService* instant_service = |
| 1400 InstantServiceFactory::GetForProfile(profile); | 1342 InstantServiceFactory::GetForProfile(profile); |
| 1401 if (instant_service && | 1343 if (instant_service && |
| 1402 instant_service->IsInstantProcess(process->GetID())) | 1344 instant_service->IsInstantProcess(process->GetID())) |
| 1403 command_line->AppendSwitch(switches::kInstantProcess); | 1345 command_line->AppendSwitch(switches::kInstantProcess); |
| 1404 | |
| 1405 #if !defined(OS_CHROMEOS) | |
| 1406 SigninClient* signin_client = | |
| 1407 ChromeSigninClientFactory::GetForProfile(profile); | |
| 1408 if (signin_client && signin_client->IsSigninProcess(process->GetID())) | |
| 1409 command_line->AppendSwitch(switches::kSigninProcess); | |
| 1410 #endif | |
| 1411 } | 1346 } |
| 1412 | 1347 |
| 1413 if (IsAutoReloadEnabled()) | 1348 if (IsAutoReloadEnabled()) |
| 1414 command_line->AppendSwitch(switches::kEnableOfflineAutoReload); | 1349 command_line->AppendSwitch(switches::kEnableOfflineAutoReload); |
| 1415 if (IsAutoReloadVisibleOnlyEnabled()) { | 1350 if (IsAutoReloadVisibleOnlyEnabled()) { |
| 1416 command_line->AppendSwitch( | 1351 command_line->AppendSwitch( |
| 1417 switches::kEnableOfflineAutoReloadVisibleOnly); | 1352 switches::kEnableOfflineAutoReloadVisibleOnly); |
| 1418 } | 1353 } |
| 1419 | 1354 |
| 1420 { | 1355 { |
| (...skipping 1219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2640 switches::kDisableWebRtcEncryption, | 2575 switches::kDisableWebRtcEncryption, |
| 2641 }; | 2576 }; |
| 2642 to_command_line->CopySwitchesFrom(from_command_line, | 2577 to_command_line->CopySwitchesFrom(from_command_line, |
| 2643 kWebRtcDevSwitchNames, | 2578 kWebRtcDevSwitchNames, |
| 2644 arraysize(kWebRtcDevSwitchNames)); | 2579 arraysize(kWebRtcDevSwitchNames)); |
| 2645 } | 2580 } |
| 2646 } | 2581 } |
| 2647 #endif // defined(ENABLE_WEBRTC) | 2582 #endif // defined(ENABLE_WEBRTC) |
| 2648 | 2583 |
| 2649 } // namespace chrome | 2584 } // namespace chrome |
| OLD | NEW |