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 <map> | 7 #include <map> |
8 #include <set> | 8 #include <set> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) | 255 #if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) |
256 #include "chrome/browser/payments/payment_request_factory.h" | 256 #include "chrome/browser/payments/payment_request_factory.h" |
257 #endif | 257 #endif |
258 | 258 |
259 #if defined(OS_POSIX) && !defined(OS_MACOSX) | 259 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
260 #include "base/debug/leak_annotations.h" | 260 #include "base/debug/leak_annotations.h" |
261 #include "components/crash/content/app/breakpad_linux.h" | 261 #include "components/crash/content/app/breakpad_linux.h" |
262 #include "components/crash/content/browser/crash_handler_host_linux.h" | 262 #include "components/crash/content/browser/crash_handler_host_linux.h" |
263 #endif | 263 #endif |
264 | 264 |
265 #if BUILDFLAG(ANDROID_JAVA_UI) | 265 #if defined(OS_ANDROID) |
| 266 #include "chrome/browser/android/devtools_manager_delegate_android.h" |
266 #include "chrome/browser/android/ntp/new_tab_page_url_handler.h" | 267 #include "chrome/browser/android/ntp/new_tab_page_url_handler.h" |
267 #include "chrome/browser/android/service_tab_launcher.h" | 268 #include "chrome/browser/android/service_tab_launcher.h" |
268 #include "chrome/browser/android/webapps/single_tab_mode_tab_helper.h" | 269 #include "chrome/browser/android/webapps/single_tab_mode_tab_helper.h" |
269 #include "components/payments/payment_request.mojom.h" | 270 #include "components/payments/payment_request.mojom.h" |
270 #include "content/public/browser/android/java_interfaces.h" | 271 #include "content/public/browser/android/java_interfaces.h" |
271 #endif | |
272 | |
273 #if defined(OS_ANDROID) | |
274 #include "chrome/browser/android/devtools_manager_delegate_android.h" | |
275 #include "ui/base/ui_base_paths.h" | 272 #include "ui/base/ui_base_paths.h" |
276 #include "ui/gfx/android/device_display_info.h" | 273 #include "ui/gfx/android/device_display_info.h" |
277 #else | 274 #else |
278 #include "chrome/browser/devtools/chrome_devtools_manager_delegate.h" | 275 #include "chrome/browser/devtools/chrome_devtools_manager_delegate.h" |
279 #endif | 276 #endif |
280 | 277 |
281 #if defined(TOOLKIT_VIEWS) | 278 #if defined(TOOLKIT_VIEWS) |
282 #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h" | 279 #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h" |
283 #endif | 280 #endif |
284 | 281 |
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
693 const std::string& serialized_report) override { | 690 const std::string& serialized_report) override { |
694 service_->Send(serialized_report); | 691 service_->Send(serialized_report); |
695 } | 692 } |
696 | 693 |
697 private: | 694 private: |
698 CertificateReportingService* service_; | 695 CertificateReportingService* service_; |
699 | 696 |
700 DISALLOW_COPY_AND_ASSIGN(CertificateReportingServiceCertReporter); | 697 DISALLOW_COPY_AND_ASSIGN(CertificateReportingServiceCertReporter); |
701 }; | 698 }; |
702 | 699 |
703 #if BUILDFLAG(ANDROID_JAVA_UI) | |
704 void HandleSingleTabModeBlockOnUIThread(const BlockedWindowParams& params) { | |
705 WebContents* web_contents = tab_util::GetWebContentsByFrameID( | |
706 params.render_process_id(), params.opener_render_frame_id()); | |
707 if (!web_contents) | |
708 return; | |
709 | |
710 SingleTabModeTabHelper::FromWebContents(web_contents)->HandleOpenUrl(params); | |
711 } | |
712 #endif // BUILDFLAG(ANDROID_JAVA_UI) | |
713 | |
714 #if defined(OS_ANDROID) | 700 #if defined(OS_ANDROID) |
715 float GetDeviceScaleAdjustment() { | 701 float GetDeviceScaleAdjustment() { |
716 static const float kMinFSM = 1.05f; | 702 static const float kMinFSM = 1.05f; |
717 static const int kWidthForMinFSM = 320; | 703 static const int kWidthForMinFSM = 320; |
718 static const float kMaxFSM = 1.3f; | 704 static const float kMaxFSM = 1.3f; |
719 static const int kWidthForMaxFSM = 800; | 705 static const int kWidthForMaxFSM = 800; |
720 | 706 |
721 gfx::DeviceDisplayInfo info; | 707 gfx::DeviceDisplayInfo info; |
722 int minWidth = info.GetSmallestDIPWidth(); | 708 int minWidth = info.GetSmallestDIPWidth(); |
723 | 709 |
724 if (minWidth <= kWidthForMinFSM) | 710 if (minWidth <= kWidthForMinFSM) |
725 return kMinFSM; | 711 return kMinFSM; |
726 if (minWidth >= kWidthForMaxFSM) | 712 if (minWidth >= kWidthForMaxFSM) |
727 return kMaxFSM; | 713 return kMaxFSM; |
728 | 714 |
729 // The font scale multiplier varies linearly between kMinFSM and kMaxFSM. | 715 // The font scale multiplier varies linearly between kMinFSM and kMaxFSM. |
730 float ratio = static_cast<float>(minWidth - kWidthForMinFSM) / | 716 float ratio = static_cast<float>(minWidth - kWidthForMinFSM) / |
731 (kWidthForMaxFSM - kWidthForMinFSM); | 717 (kWidthForMaxFSM - kWidthForMinFSM); |
732 return ratio * (kMaxFSM - kMinFSM) + kMinFSM; | 718 return ratio * (kMaxFSM - kMinFSM) + kMinFSM; |
733 } | 719 } |
| 720 |
| 721 void HandleSingleTabModeBlockOnUIThread(const BlockedWindowParams& params) { |
| 722 WebContents* web_contents = tab_util::GetWebContentsByFrameID( |
| 723 params.render_process_id(), params.opener_render_frame_id()); |
| 724 if (!web_contents) |
| 725 return; |
| 726 |
| 727 SingleTabModeTabHelper::FromWebContents(web_contents)->HandleOpenUrl(params); |
| 728 } |
734 #endif // defined(OS_ANDROID) | 729 #endif // defined(OS_ANDROID) |
735 | 730 |
736 #if BUILDFLAG(ENABLE_EXTENSIONS) | 731 #if BUILDFLAG(ENABLE_EXTENSIONS) |
737 // By default, JavaScript, images and autoplay are enabled in guest content. | 732 // By default, JavaScript, images and autoplay are enabled in guest content. |
738 void GetGuestViewDefaultContentSettingRules( | 733 void GetGuestViewDefaultContentSettingRules( |
739 bool incognito, | 734 bool incognito, |
740 RendererContentSettingRules* rules) { | 735 RendererContentSettingRules* rules) { |
741 rules->image_rules.push_back( | 736 rules->image_rules.push_back( |
742 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), | 737 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), |
743 ContentSettingsPattern::Wildcard(), | 738 ContentSettingsPattern::Wildcard(), |
(...skipping 780 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1524 // this point. | 1519 // this point. |
1525 LOG(WARNING) << "Received field trial params, " | 1520 LOG(WARNING) << "Received field trial params, " |
1526 "but blink-settings switch already specified."; | 1521 "but blink-settings switch already specified."; |
1527 return; | 1522 return; |
1528 } | 1523 } |
1529 | 1524 |
1530 command_line->AppendSwitchASCII(switches::kBlinkSettings, | 1525 command_line->AppendSwitchASCII(switches::kBlinkSettings, |
1531 base::JoinString(blink_settings, ",")); | 1526 base::JoinString(blink_settings, ",")); |
1532 } | 1527 } |
1533 | 1528 |
1534 #if BUILDFLAG(ANDROID_JAVA_UI) | 1529 #if defined(OS_ANDROID) |
1535 void ForwardShareServiceRequest( | 1530 void ForwardShareServiceRequest( |
1536 base::WeakPtr<service_manager::InterfaceProvider> interface_provider, | 1531 base::WeakPtr<service_manager::InterfaceProvider> interface_provider, |
1537 blink::mojom::ShareServiceRequest request) { | 1532 blink::mojom::ShareServiceRequest request) { |
1538 if (!interface_provider || | 1533 if (!interface_provider || |
1539 ChromeOriginTrialPolicy().IsFeatureDisabled("WebShare")) { | 1534 ChromeOriginTrialPolicy().IsFeatureDisabled("WebShare")) { |
1540 return; | 1535 return; |
1541 } | 1536 } |
1542 interface_provider->GetInterface(std::move(request)); | 1537 interface_provider->GetInterface(std::move(request)); |
1543 } | 1538 } |
1544 #endif | 1539 #endif |
(...skipping 835 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2380 std::string()) != | 2375 std::string()) != |
2381 CONTENT_SETTING_ALLOW) { | 2376 CONTENT_SETTING_ALLOW) { |
2382 BrowserThread::PostTask(BrowserThread::UI, | 2377 BrowserThread::PostTask(BrowserThread::UI, |
2383 FROM_HERE, | 2378 FROM_HERE, |
2384 base::Bind(&HandleBlockedPopupOnUIThread, | 2379 base::Bind(&HandleBlockedPopupOnUIThread, |
2385 blocked_params)); | 2380 blocked_params)); |
2386 return false; | 2381 return false; |
2387 } | 2382 } |
2388 } | 2383 } |
2389 | 2384 |
2390 #if BUILDFLAG(ANDROID_JAVA_UI) | 2385 #if defined(OS_ANDROID) |
2391 if (SingleTabModeTabHelper::IsRegistered(opener_render_process_id, | 2386 if (SingleTabModeTabHelper::IsRegistered(opener_render_process_id, |
2392 opener_render_frame_id)) { | 2387 opener_render_frame_id)) { |
2393 BrowserThread::PostTask(BrowserThread::UI, | 2388 BrowserThread::PostTask(BrowserThread::UI, |
2394 FROM_HERE, | 2389 FROM_HERE, |
2395 base::Bind(&HandleSingleTabModeBlockOnUIThread, | 2390 base::Bind(&HandleSingleTabModeBlockOnUIThread, |
2396 blocked_params)); | 2391 blocked_params)); |
2397 return false; | 2392 return false; |
2398 } | 2393 } |
2399 #endif | 2394 #endif |
2400 | 2395 |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2553 for (size_t i = 0; i < extra_parts_.size(); ++i) | 2548 for (size_t i = 0; i < extra_parts_.size(); ++i) |
2554 extra_parts_[i]->BrowserURLHandlerCreated(handler); | 2549 extra_parts_[i]->BrowserURLHandlerCreated(handler); |
2555 | 2550 |
2556 // about: handler. Must come before chrome: handler, since it will | 2551 // about: handler. Must come before chrome: handler, since it will |
2557 // rewrite about: urls to chrome: URLs and then expect chrome: to | 2552 // rewrite about: urls to chrome: URLs and then expect chrome: to |
2558 // actually handle them. Also relies on a preliminary fixup phase. | 2553 // actually handle them. Also relies on a preliminary fixup phase. |
2559 handler->SetFixupHandler(&FixupBrowserAboutURL); | 2554 handler->SetFixupHandler(&FixupBrowserAboutURL); |
2560 handler->AddHandlerPair(&WillHandleBrowserAboutURL, | 2555 handler->AddHandlerPair(&WillHandleBrowserAboutURL, |
2561 BrowserURLHandler::null_handler()); | 2556 BrowserURLHandler::null_handler()); |
2562 | 2557 |
2563 #if BUILDFLAG(ANDROID_JAVA_UI) | 2558 #if defined(OS_ANDROID) |
2564 // Handler to rewrite chrome://newtab on Android. | 2559 // Handler to rewrite chrome://newtab on Android. |
2565 handler->AddHandlerPair(&chrome::android::HandleAndroidNativePageURL, | 2560 handler->AddHandlerPair(&chrome::android::HandleAndroidNativePageURL, |
2566 BrowserURLHandler::null_handler()); | 2561 BrowserURLHandler::null_handler()); |
2567 #else | 2562 #else |
2568 // Handler to rewrite chrome://newtab for InstantExtended. | 2563 // Handler to rewrite chrome://newtab for InstantExtended. |
2569 handler->AddHandlerPair(&search::HandleNewTabURLRewrite, | 2564 handler->AddHandlerPair(&search::HandleNewTabURLRewrite, |
2570 &search::HandleNewTabURLReverseRewrite); | 2565 &search::HandleNewTabURLReverseRewrite); |
2571 #endif | 2566 #endif |
2572 | 2567 |
2573 // chrome: & friends. | 2568 // chrome: & friends. |
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2989 registry->AddInterface( | 2984 registry->AddInterface( |
2990 base::Bind(&password_manager::ContentPasswordManagerDriverFactory:: | 2985 base::Bind(&password_manager::ContentPasswordManagerDriverFactory:: |
2991 BindPasswordManagerDriver, | 2986 BindPasswordManagerDriver, |
2992 render_frame_host)); | 2987 render_frame_host)); |
2993 | 2988 |
2994 registry->AddInterface( | 2989 registry->AddInterface( |
2995 base::Bind(&password_manager::ContentPasswordManagerDriverFactory:: | 2990 base::Bind(&password_manager::ContentPasswordManagerDriverFactory:: |
2996 BindSensitiveInputVisibilityService, | 2991 BindSensitiveInputVisibilityService, |
2997 render_frame_host)); | 2992 render_frame_host)); |
2998 | 2993 |
2999 #if BUILDFLAG(ANDROID_JAVA_UI) | 2994 #if defined(OS_ANDROID) |
3000 content::WebContents* web_contents = | 2995 content::WebContents* web_contents = |
3001 content::WebContents::FromRenderFrameHost(render_frame_host); | 2996 content::WebContents::FromRenderFrameHost(render_frame_host); |
3002 if (web_contents) { | 2997 if (web_contents) { |
3003 registry->AddInterface( | 2998 registry->AddInterface( |
3004 web_contents->GetJavaInterfaces() | 2999 web_contents->GetJavaInterfaces() |
3005 ->CreateInterfaceFactory<payments::mojom::PaymentRequest>()); | 3000 ->CreateInterfaceFactory<payments::mojom::PaymentRequest>()); |
3006 registry->AddInterface( | 3001 registry->AddInterface( |
3007 base::Bind(&ForwardShareServiceRequest, | 3002 base::Bind(&ForwardShareServiceRequest, |
3008 web_contents->GetJavaInterfaces()->GetWeakPtr())); | 3003 web_contents->GetJavaInterfaces()->GetWeakPtr())); |
| 3004 if (AreExperimentalWebPlatformFeaturesEnabled()) { |
| 3005 registry->AddInterface( |
| 3006 web_contents->GetJavaInterfaces() |
| 3007 ->CreateInterfaceFactory<blink::mojom::BarcodeDetection>()); |
| 3008 } |
3009 } | 3009 } |
3010 #elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) | 3010 #elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) |
3011 // TODO(crbug.com/679127): Enable for MacViews implementation. | 3011 // TODO(crbug.com/679127): Enable for MacViews implementation. |
3012 if (AreExperimentalWebPlatformFeaturesEnabled()) { | 3012 if (AreExperimentalWebPlatformFeaturesEnabled()) { |
3013 content::WebContents* web_contents = | 3013 content::WebContents* web_contents = |
3014 content::WebContents::FromRenderFrameHost(render_frame_host); | 3014 content::WebContents::FromRenderFrameHost(render_frame_host); |
3015 if (web_contents) { | 3015 if (web_contents) { |
3016 registry->AddInterface(base::Bind( | 3016 registry->AddInterface(base::Bind( |
3017 payments::CreatePaymentRequestForWebContents, web_contents)); | 3017 payments::CreatePaymentRequestForWebContents, web_contents)); |
3018 } | 3018 } |
3019 } | 3019 } |
3020 #endif | 3020 #endif |
3021 | 3021 |
3022 #if defined(OS_ANDROID) | |
3023 if (AreExperimentalWebPlatformFeaturesEnabled()) { | |
3024 content::WebContents* web_contents = | |
3025 content::WebContents::FromRenderFrameHost(render_frame_host); | |
3026 if (web_contents) { | |
3027 registry->AddInterface( | |
3028 web_contents->GetJavaInterfaces() | |
3029 ->CreateInterfaceFactory<blink::mojom::BarcodeDetection>()); | |
3030 registry->AddInterface( | |
3031 web_contents->GetJavaInterfaces() | |
3032 ->CreateInterfaceFactory<blink::mojom::TextDetection>()); | |
3033 } | |
3034 } | |
3035 #endif | |
3036 | |
3037 #if defined(OS_LINUX) || defined(OS_WIN) | 3022 #if defined(OS_LINUX) || defined(OS_WIN) |
3038 if (!ChromeOriginTrialPolicy().IsFeatureDisabled("WebShare")) { | 3023 if (!ChromeOriginTrialPolicy().IsFeatureDisabled("WebShare")) { |
3039 registry->AddInterface(base::Bind(&ShareServiceImpl::Create)); | 3024 registry->AddInterface(base::Bind(&ShareServiceImpl::Create)); |
3040 } | 3025 } |
3041 #endif | 3026 #endif |
3042 } | 3027 } |
3043 | 3028 |
3044 void ChromeContentBrowserClient::ExposeInterfacesToGpuProcess( | 3029 void ChromeContentBrowserClient::ExposeInterfacesToGpuProcess( |
3045 service_manager::InterfaceRegistry* registry, | 3030 service_manager::InterfaceRegistry* registry, |
3046 content::GpuProcessHost* render_process_host) { | 3031 content::GpuProcessHost* render_process_host) { |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3113 #endif // !defined(DISABLE_NACL) | 3098 #endif // !defined(DISABLE_NACL) |
3114 }); | 3099 }); |
3115 } | 3100 } |
3116 | 3101 |
3117 void ChromeContentBrowserClient::OpenURL( | 3102 void ChromeContentBrowserClient::OpenURL( |
3118 content::BrowserContext* browser_context, | 3103 content::BrowserContext* browser_context, |
3119 const content::OpenURLParams& params, | 3104 const content::OpenURLParams& params, |
3120 const base::Callback<void(content::WebContents*)>& callback) { | 3105 const base::Callback<void(content::WebContents*)>& callback) { |
3121 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 3106 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
3122 | 3107 |
3123 #if BUILDFLAG(ANDROID_JAVA_UI) | 3108 #if defined(OS_ANDROID) |
3124 ServiceTabLauncher::GetInstance()->LaunchTab(browser_context, params, | 3109 ServiceTabLauncher::GetInstance()->LaunchTab(browser_context, params, |
3125 callback); | 3110 callback); |
3126 #else | 3111 #else |
3127 chrome::NavigateParams nav_params( | 3112 chrome::NavigateParams nav_params( |
3128 Profile::FromBrowserContext(browser_context), | 3113 Profile::FromBrowserContext(browser_context), |
3129 params.url, | 3114 params.url, |
3130 params.transition); | 3115 params.transition); |
3131 FillNavigateParamsFromOpenURLParams(&nav_params, params); | 3116 FillNavigateParamsFromOpenURLParams(&nav_params, params); |
3132 nav_params.user_gesture = params.user_gesture; | 3117 nav_params.user_gesture = params.user_gesture; |
3133 | 3118 |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3361 bool ChromeContentBrowserClient::ShouldRedirectDOMStorageTaskRunner() { | 3346 bool ChromeContentBrowserClient::ShouldRedirectDOMStorageTaskRunner() { |
3362 return variations::GetVariationParamValue( | 3347 return variations::GetVariationParamValue( |
3363 "BrowserScheduler", "RedirectDOMStorageTaskRunner") == "true"; | 3348 "BrowserScheduler", "RedirectDOMStorageTaskRunner") == "true"; |
3364 } | 3349 } |
3365 | 3350 |
3366 bool ChromeContentBrowserClient:: | 3351 bool ChromeContentBrowserClient:: |
3367 RedirectNonUINonIOBrowserThreadsToTaskScheduler() { | 3352 RedirectNonUINonIOBrowserThreadsToTaskScheduler() { |
3368 return variations::GetVariationParamValue( | 3353 return variations::GetVariationParamValue( |
3369 "BrowserScheduler", "RedirectNonUINonIOBrowserThreads") == "true"; | 3354 "BrowserScheduler", "RedirectNonUINonIOBrowserThreads") == "true"; |
3370 } | 3355 } |
OLD | NEW |