Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(485)

Side by Side Diff: chrome/browser/chrome_browser_field_trials.cc

Issue 1425533011: Support "shared" histograms between processes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@shmem-alloc
Patch Set: moved Create-Result histogram to private space and added to histograms.xml Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « base/metrics/statistics_recorder_unittest.cc ('k') | chrome/service/service_ipc_server.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_browser_field_trials.h" 5 #include "chrome/browser/chrome_browser_field_trials.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/feature_list.h"
10 #include "base/metrics/field_trial.h" 11 #include "base/metrics/field_trial.h"
12 #include "base/metrics/histogram_base.h"
13 #include "base/metrics/histogram_persistence.h"
11 #include "base/strings/string_util.h" 14 #include "base/strings/string_util.h"
12 #include "base/time/time.h" 15 #include "base/time/time.h"
13 #include "build/build_config.h" 16 #include "build/build_config.h"
14 #include "chrome/common/chrome_switches.h" 17 #include "chrome/common/chrome_switches.h"
15 #include "components/metrics/metrics_pref_names.h" 18 #include "components/metrics/metrics_pref_names.h"
16 19
17 #if defined(OS_ANDROID) || defined(OS_IOS) 20 #if defined(OS_ANDROID) || defined(OS_IOS)
18 #include "chrome/browser/chrome_browser_field_trials_mobile.h" 21 #include "chrome/browser/chrome_browser_field_trials_mobile.h"
19 #else 22 #else
20 #include "chrome/browser/chrome_browser_field_trials_desktop.h" 23 #include "chrome/browser/chrome_browser_field_trials_desktop.h"
21 #endif 24 #endif
22 25
26 namespace {
27
28 // Check for feature enabling the use of persistent histogram storage and
29 // create an appropriate allocator for such if so.
30 void InstantiatePersistentHistograms() {
31 if (base::FeatureList::IsEnabled(base::kPersistentHistogramsFeature)) {
32 const std::string allocator_name("BrowserMetricsAllocator");
33 // Create persistent/shared memory and allow histograms to be stored in it.
34 // TODO(bcwhite): Update this with correct allocator and memory size.
35 base::SetPersistentHistogramMemoryAllocator(
36 new base::LocalPersistentMemoryAllocator(1 << 20, // 1 MiB
37 0x4D5B9953, // SHA1(B..M..A..)
38 allocator_name));
39 base::GetPersistentHistogramMemoryAllocator()->CreateTrackingHistograms(
40 allocator_name);
41 }
42 }
43
44 } // namespace
45
23 ChromeBrowserFieldTrials::ChromeBrowserFieldTrials( 46 ChromeBrowserFieldTrials::ChromeBrowserFieldTrials(
24 const base::CommandLine& parsed_command_line) 47 const base::CommandLine& parsed_command_line)
25 : parsed_command_line_(parsed_command_line) { 48 : parsed_command_line_(parsed_command_line) {
26 } 49 }
27 50
28 ChromeBrowserFieldTrials::~ChromeBrowserFieldTrials() { 51 ChromeBrowserFieldTrials::~ChromeBrowserFieldTrials() {
29 } 52 }
30 53
31 void ChromeBrowserFieldTrials::SetupFieldTrials() { 54 void ChromeBrowserFieldTrials::SetupFieldTrials() {
32 // Field trials that are shared by all platforms. 55 // Field trials that are shared by all platforms.
33 InstantiateDynamicTrials(); 56 InstantiateDynamicTrials();
34 57
35 #if defined(OS_ANDROID) || defined(OS_IOS) 58 #if defined(OS_ANDROID) || defined(OS_IOS)
36 chrome::SetupMobileFieldTrials(parsed_command_line_); 59 chrome::SetupMobileFieldTrials(parsed_command_line_);
37 #else 60 #else
38 chrome::SetupDesktopFieldTrials(parsed_command_line_); 61 chrome::SetupDesktopFieldTrials(parsed_command_line_);
39 #endif 62 #endif
40 } 63 }
41 64
42 void ChromeBrowserFieldTrials::InstantiateDynamicTrials() { 65 void ChromeBrowserFieldTrials::InstantiateDynamicTrials() {
66 // Persistent histograms must be enabled as soon as possible.
67 InstantiatePersistentHistograms();
43 // The following trials are used from renderer process. 68 // The following trials are used from renderer process.
44 // Mark here so they will be sync-ed. 69 // Mark here so they will be sync-ed.
45 base::FieldTrialList::FindValue("DisplayList2dCanvas"); 70 base::FieldTrialList::FindValue("DisplayList2dCanvas");
46 } 71 }
OLDNEW
« no previous file with comments | « base/metrics/statistics_recorder_unittest.cc ('k') | chrome/service/service_ipc_server.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698