| 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 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2999 registry->AddInterface( | 2994 registry->AddInterface( |
| 3000 base::Bind(&password_manager::ContentPasswordManagerDriverFactory:: | 2995 base::Bind(&password_manager::ContentPasswordManagerDriverFactory:: |
| 3001 BindPasswordManagerDriver, | 2996 BindPasswordManagerDriver, |
| 3002 render_frame_host)); | 2997 render_frame_host)); |
| 3003 | 2998 |
| 3004 registry->AddInterface( | 2999 registry->AddInterface( |
| 3005 base::Bind(&password_manager::ContentPasswordManagerDriverFactory:: | 3000 base::Bind(&password_manager::ContentPasswordManagerDriverFactory:: |
| 3006 BindSensitiveInputVisibilityService, | 3001 BindSensitiveInputVisibilityService, |
| 3007 render_frame_host)); | 3002 render_frame_host)); |
| 3008 | 3003 |
| 3009 #if BUILDFLAG(ANDROID_JAVA_UI) | 3004 #if defined(OS_ANDROID) |
| 3005 if (AreExperimentalWebPlatformFeaturesEnabled()) { |
| 3006 content::WebContents* web_contents = |
| 3007 content::WebContents::FromRenderFrameHost(render_frame_host); |
| 3008 if (web_contents) { |
| 3009 registry->AddInterface( |
| 3010 web_contents->GetJavaInterfaces() |
| 3011 ->CreateInterfaceFactory<blink::mojom::BarcodeDetection>()); |
| 3012 } |
| 3013 } |
| 3014 |
| 3010 content::WebContents* web_contents = | 3015 content::WebContents* web_contents = |
| 3011 content::WebContents::FromRenderFrameHost(render_frame_host); | 3016 content::WebContents::FromRenderFrameHost(render_frame_host); |
| 3012 if (web_contents) { | 3017 if (web_contents) { |
| 3013 registry->AddInterface( | 3018 registry->AddInterface( |
| 3014 web_contents->GetJavaInterfaces() | 3019 web_contents->GetJavaInterfaces() |
| 3015 ->CreateInterfaceFactory<payments::mojom::PaymentRequest>()); | 3020 ->CreateInterfaceFactory<payments::mojom::PaymentRequest>()); |
| 3016 registry->AddInterface( | 3021 registry->AddInterface( |
| 3017 base::Bind(&ForwardShareServiceRequest, | 3022 base::Bind(&ForwardShareServiceRequest, |
| 3018 web_contents->GetJavaInterfaces()->GetWeakPtr())); | 3023 web_contents->GetJavaInterfaces()->GetWeakPtr())); |
| 3019 } | 3024 } |
| 3020 #elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) | 3025 #elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) |
| 3021 // TODO(crbug.com/679127): Enable for MacViews implementation. | 3026 // TODO(crbug.com/679127): Enable for MacViews implementation. |
| 3022 if (AreExperimentalWebPlatformFeaturesEnabled()) { | 3027 if (AreExperimentalWebPlatformFeaturesEnabled()) { |
| 3023 content::WebContents* web_contents = | 3028 content::WebContents* web_contents = |
| 3024 content::WebContents::FromRenderFrameHost(render_frame_host); | 3029 content::WebContents::FromRenderFrameHost(render_frame_host); |
| 3025 if (web_contents) { | 3030 if (web_contents) { |
| 3026 registry->AddInterface(base::Bind( | |
| 3027 payments::CreatePaymentRequestForWebContents, web_contents)); | |
| 3028 } | |
| 3029 } | |
| 3030 #endif | |
| 3031 | |
| 3032 #if defined(OS_ANDROID) | |
| 3033 if (AreExperimentalWebPlatformFeaturesEnabled()) { | |
| 3034 content::WebContents* web_contents = | |
| 3035 content::WebContents::FromRenderFrameHost(render_frame_host); | |
| 3036 if (web_contents) { | |
| 3037 registry->AddInterface( | 3031 registry->AddInterface( |
| 3038 web_contents->GetJavaInterfaces() | 3032 base::Bind(CreatePaymentRequestHandler, web_contents)); |
| 3039 ->CreateInterfaceFactory<blink::mojom::BarcodeDetection>()); | |
| 3040 registry->AddInterface( | |
| 3041 web_contents->GetJavaInterfaces() | |
| 3042 ->CreateInterfaceFactory<blink::mojom::TextDetection>()); | |
| 3043 } | 3033 } |
| 3044 } | 3034 } |
| 3045 #endif | 3035 #endif |
| 3046 | 3036 |
| 3047 #if defined(OS_LINUX) || defined(OS_WIN) | 3037 #if defined(OS_LINUX) || defined(OS_WIN) |
| 3048 if (!ChromeOriginTrialPolicy().IsFeatureDisabled("WebShare")) { | 3038 if (!ChromeOriginTrialPolicy().IsFeatureDisabled("WebShare")) { |
| 3049 registry->AddInterface(base::Bind(&ShareServiceImpl::Create)); | 3039 registry->AddInterface(base::Bind(&ShareServiceImpl::Create)); |
| 3050 } | 3040 } |
| 3051 #endif | 3041 #endif |
| 3052 } | 3042 } |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3123 #endif // !defined(DISABLE_NACL) | 3113 #endif // !defined(DISABLE_NACL) |
| 3124 }); | 3114 }); |
| 3125 } | 3115 } |
| 3126 | 3116 |
| 3127 void ChromeContentBrowserClient::OpenURL( | 3117 void ChromeContentBrowserClient::OpenURL( |
| 3128 content::BrowserContext* browser_context, | 3118 content::BrowserContext* browser_context, |
| 3129 const content::OpenURLParams& params, | 3119 const content::OpenURLParams& params, |
| 3130 const base::Callback<void(content::WebContents*)>& callback) { | 3120 const base::Callback<void(content::WebContents*)>& callback) { |
| 3131 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 3121 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 3132 | 3122 |
| 3133 #if BUILDFLAG(ANDROID_JAVA_UI) | 3123 #if defined(OS_ANDROID) |
| 3134 ServiceTabLauncher::GetInstance()->LaunchTab(browser_context, params, | 3124 ServiceTabLauncher::GetInstance()->LaunchTab(browser_context, params, |
| 3135 callback); | 3125 callback); |
| 3136 #else | 3126 #else |
| 3137 chrome::NavigateParams nav_params( | 3127 chrome::NavigateParams nav_params( |
| 3138 Profile::FromBrowserContext(browser_context), | 3128 Profile::FromBrowserContext(browser_context), |
| 3139 params.url, | 3129 params.url, |
| 3140 params.transition); | 3130 params.transition); |
| 3141 FillNavigateParamsFromOpenURLParams(&nav_params, params); | 3131 FillNavigateParamsFromOpenURLParams(&nav_params, params); |
| 3142 nav_params.user_gesture = params.user_gesture; | 3132 nav_params.user_gesture = params.user_gesture; |
| 3143 | 3133 |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3371 bool ChromeContentBrowserClient::ShouldRedirectDOMStorageTaskRunner() { | 3361 bool ChromeContentBrowserClient::ShouldRedirectDOMStorageTaskRunner() { |
| 3372 return variations::GetVariationParamValue( | 3362 return variations::GetVariationParamValue( |
| 3373 "BrowserScheduler", "RedirectDOMStorageTaskRunner") == "true"; | 3363 "BrowserScheduler", "RedirectDOMStorageTaskRunner") == "true"; |
| 3374 } | 3364 } |
| 3375 | 3365 |
| 3376 bool ChromeContentBrowserClient:: | 3366 bool ChromeContentBrowserClient:: |
| 3377 RedirectNonUINonIOBrowserThreadsToTaskScheduler() { | 3367 RedirectNonUINonIOBrowserThreadsToTaskScheduler() { |
| 3378 return variations::GetVariationParamValue( | 3368 return variations::GetVariationParamValue( |
| 3379 "BrowserScheduler", "RedirectNonUINonIOBrowserThreads") == "true"; | 3369 "BrowserScheduler", "RedirectNonUINonIOBrowserThreads") == "true"; |
| 3380 } | 3370 } |
| OLD | NEW |