| 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/renderer/chrome_render_process_observer.h" | 5 #include "chrome/renderer/chrome_render_process_observer.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <utility> | 10 #include <utility> |
| 11 #include <vector> | 11 #include <vector> |
| 12 | 12 |
| 13 #include "base/base_switches.h" | 13 #include "base/base_switches.h" |
| 14 #include "base/bind.h" | 14 #include "base/bind.h" |
| 15 #include "base/command_line.h" | 15 #include "base/command_line.h" |
| 16 #include "base/feature_list.h" | |
| 17 #include "base/files/file_util.h" | 16 #include "base/files/file_util.h" |
| 18 #include "base/location.h" | 17 #include "base/location.h" |
| 19 #include "base/macros.h" | 18 #include "base/macros.h" |
| 20 #include "base/memory/weak_ptr.h" | 19 #include "base/memory/weak_ptr.h" |
| 21 #include "base/metrics/field_trial.h" | 20 #include "base/metrics/field_trial.h" |
| 22 #include "base/metrics/histogram.h" | 21 #include "base/metrics/histogram.h" |
| 23 #include "base/metrics/statistics_recorder.h" | 22 #include "base/metrics/statistics_recorder.h" |
| 24 #include "base/path_service.h" | 23 #include "base/path_service.h" |
| 25 #include "base/single_thread_task_runner.h" | 24 #include "base/single_thread_task_runner.h" |
| 26 #include "base/strings/utf_string_conversions.h" | 25 #include "base/strings/utf_string_conversions.h" |
| 27 #include "base/thread_task_runner_handle.h" | 26 #include "base/thread_task_runner_handle.h" |
| 28 #include "base/threading/platform_thread.h" | 27 #include "base/threading/platform_thread.h" |
| 29 #include "build/build_config.h" | 28 #include "build/build_config.h" |
| 30 #include "chrome/common/child_process_logging.h" | 29 #include "chrome/common/child_process_logging.h" |
| 31 #include "chrome/common/chrome_paths.h" | 30 #include "chrome/common/chrome_paths.h" |
| 32 #include "chrome/common/chrome_switches.h" | |
| 33 #include "chrome/common/media/media_resource_provider.h" | 31 #include "chrome/common/media/media_resource_provider.h" |
| 34 #include "chrome/common/net/net_resource_provider.h" | 32 #include "chrome/common/net/net_resource_provider.h" |
| 35 #include "chrome/common/render_messages.h" | 33 #include "chrome/common/render_messages.h" |
| 36 #include "chrome/common/resource_usage_reporter.mojom.h" | 34 #include "chrome/common/resource_usage_reporter.mojom.h" |
| 37 #include "chrome/common/resource_usage_reporter_type_converters.h" | 35 #include "chrome/common/resource_usage_reporter_type_converters.h" |
| 38 #include "chrome/common/url_constants.h" | 36 #include "chrome/common/url_constants.h" |
| 39 #include "chrome/renderer/content_settings_observer.h" | 37 #include "chrome/renderer/content_settings_observer.h" |
| 40 #include "chrome/renderer/security_filter_peer.h" | 38 #include "chrome/renderer/security_filter_peer.h" |
| 41 #include "components/variations/variations_util.h" | 39 #include "components/variations/variations_util.h" |
| 42 #include "content/public/child/resource_dispatcher_delegate.h" | 40 #include "content/public/child/resource_dispatcher_delegate.h" |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 228 | 226 |
| 229 DISALLOW_COPY_AND_ASSIGN(ResourceUsageReporterImpl); | 227 DISALLOW_COPY_AND_ASSIGN(ResourceUsageReporterImpl); |
| 230 }; | 228 }; |
| 231 | 229 |
| 232 void CreateResourceUsageReporter( | 230 void CreateResourceUsageReporter( |
| 233 base::WeakPtr<ChromeRenderProcessObserver> observer, | 231 base::WeakPtr<ChromeRenderProcessObserver> observer, |
| 234 mojo::InterfaceRequest<mojom::ResourceUsageReporter> request) { | 232 mojo::InterfaceRequest<mojom::ResourceUsageReporter> request) { |
| 235 new ResourceUsageReporterImpl(observer, std::move(request)); | 233 new ResourceUsageReporterImpl(observer, std::move(request)); |
| 236 } | 234 } |
| 237 | 235 |
| 238 const base::Feature kV8_ES2015_TailCalls_Feature { | |
| 239 "V8_ES2015_TailCalls", base::FEATURE_DISABLED_BY_DEFAULT | |
| 240 }; | |
| 241 | |
| 242 const base::Feature kV8SerializeEagerFeature{"V8_Serialize_Eager", | |
| 243 base::FEATURE_DISABLED_BY_DEFAULT}; | |
| 244 | |
| 245 const base::Feature kV8SerializeAgeCodeFeature{ | |
| 246 "V8_Serialize_Age_Code", base::FEATURE_DISABLED_BY_DEFAULT}; | |
| 247 | |
| 248 void SetV8FlagIfFeature(const base::Feature& feature, const char* v8_flag) { | |
| 249 if (base::FeatureList::IsEnabled(feature)) { | |
| 250 v8::V8::SetFlagsFromString(v8_flag, strlen(v8_flag)); | |
| 251 } | |
| 252 } | |
| 253 | |
| 254 void SetV8FlagIfHasSwitch(const char* switch_name, const char* v8_flag) { | |
| 255 if (base::CommandLine::ForCurrentProcess()->HasSwitch(switch_name)) { | |
| 256 v8::V8::SetFlagsFromString(v8_flag, strlen(v8_flag)); | |
| 257 } | |
| 258 } | |
| 259 | |
| 260 } // namespace | 236 } // namespace |
| 261 | 237 |
| 262 bool ChromeRenderProcessObserver::is_incognito_process_ = false; | 238 bool ChromeRenderProcessObserver::is_incognito_process_ = false; |
| 263 | 239 |
| 264 ChromeRenderProcessObserver::ChromeRenderProcessObserver() | 240 ChromeRenderProcessObserver::ChromeRenderProcessObserver() |
| 265 : weak_factory_(this) { | 241 : weak_factory_(this) { |
| 266 const base::CommandLine& command_line = | 242 const base::CommandLine& command_line = |
| 267 *base::CommandLine::ForCurrentProcess(); | 243 *base::CommandLine::ForCurrentProcess(); |
| 268 | 244 |
| 269 #if defined(ENABLE_AUTOFILL_DIALOG) | 245 #if defined(ENABLE_AUTOFILL_DIALOG) |
| 270 WebRuntimeFeatures::enableRequestAutocomplete(true); | 246 WebRuntimeFeatures::enableRequestAutocomplete(true); |
| 271 #endif | 247 #endif |
| 272 | 248 |
| 273 SetV8FlagIfFeature(kV8_ES2015_TailCalls_Feature, "--harmony-tailcalls"); | |
| 274 SetV8FlagIfFeature(kV8SerializeEagerFeature, "--serialize_eager"); | |
| 275 SetV8FlagIfFeature(kV8SerializeAgeCodeFeature, "--serialize_age_code"); | |
| 276 SetV8FlagIfHasSwitch(switches::kDisableJavaScriptHarmonyShipping, | |
| 277 "--noharmony-shipping"); | |
| 278 SetV8FlagIfHasSwitch(switches::kJavaScriptHarmony, "--harmony"); | |
| 279 SetV8FlagIfHasSwitch(switches::kEnableWasm, "--expose-wasm"); | |
| 280 | |
| 281 RenderThread* thread = RenderThread::Get(); | 249 RenderThread* thread = RenderThread::Get(); |
| 282 resource_delegate_.reset(new RendererResourceDelegate()); | 250 resource_delegate_.reset(new RendererResourceDelegate()); |
| 283 thread->SetResourceDispatcherDelegate(resource_delegate_.get()); | 251 thread->SetResourceDispatcherDelegate(resource_delegate_.get()); |
| 284 | 252 |
| 285 thread->GetServiceRegistry()->AddService( | 253 thread->GetServiceRegistry()->AddService( |
| 286 base::Bind(CreateResourceUsageReporter, weak_factory_.GetWeakPtr())); | 254 base::Bind(CreateResourceUsageReporter, weak_factory_.GetWeakPtr())); |
| 287 | 255 |
| 288 // Configure modules that need access to resources. | 256 // Configure modules that need access to resources. |
| 289 net::NetModule::SetResourceProvider(chrome_common_net::NetResourceProvider); | 257 net::NetModule::SetResourceProvider(chrome_common_net::NetResourceProvider); |
| 290 media::SetLocalizedStringProvider( | 258 media::SetLocalizedStringProvider( |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 400 ChromeRenderProcessObserver::content_setting_rules() const { | 368 ChromeRenderProcessObserver::content_setting_rules() const { |
| 401 return &content_setting_rules_; | 369 return &content_setting_rules_; |
| 402 } | 370 } |
| 403 | 371 |
| 404 void ChromeRenderProcessObserver::OnFieldTrialGroupFinalized( | 372 void ChromeRenderProcessObserver::OnFieldTrialGroupFinalized( |
| 405 const std::string& trial_name, | 373 const std::string& trial_name, |
| 406 const std::string& group_name) { | 374 const std::string& group_name) { |
| 407 content::RenderThread::Get()->Send( | 375 content::RenderThread::Get()->Send( |
| 408 new ChromeViewHostMsg_FieldTrialActivated(trial_name)); | 376 new ChromeViewHostMsg_FieldTrialActivated(trial_name)); |
| 409 } | 377 } |
| OLD | NEW |