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

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: fixed compile problems on non-Windows builds Created 4 years, 11 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
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 #include "components/omnibox/browser/omnibox_field_trial.h" 19 #include "components/omnibox/browser/omnibox_field_trial.h"
17 20
18 #if defined(OS_ANDROID) || defined(OS_IOS) 21 #if defined(OS_ANDROID) || defined(OS_IOS)
19 #include "chrome/browser/chrome_browser_field_trials_mobile.h" 22 #include "chrome/browser/chrome_browser_field_trials_mobile.h"
20 #else 23 #else
21 #include "chrome/browser/chrome_browser_field_trials_desktop.h" 24 #include "chrome/browser/chrome_browser_field_trials_desktop.h"
22 #endif 25 #endif
23 26
27 namespace {
28
29 void InstantiatePersistentHistograms() {
Alexei Svitkine (slow) 2016/01/22 16:15:16 Nit: Add a comment.
bcwhite 2016/01/22 17:17:48 Done.
30 if (base::FeatureList::IsEnabled(base::kPersistentHistogramsFeature)) {
31 const std::string allocator_name("BrowserMetricsAllocator");
32 // Create persistent/shared memory and allow histograms to be stored in it.
33 // TODO(bcwhite): Update this with correct allocator and memory size.
34 base::SetPersistentHistogramMemoryAllocator(
35 new base::LocalPersistentMemoryAllocator(1 << 20, // 1 MiB
36 0x4D5B9953, // SHA1(B..M..A..)
37 allocator_name));
38 base::GetPersistentHistogramMemoryAllocator()->CreateTrackingHistograms(
39 allocator_name);
40 }
41 }
42
43 } // namespace
44
24 ChromeBrowserFieldTrials::ChromeBrowserFieldTrials( 45 ChromeBrowserFieldTrials::ChromeBrowserFieldTrials(
25 const base::CommandLine& parsed_command_line) 46 const base::CommandLine& parsed_command_line)
26 : parsed_command_line_(parsed_command_line) { 47 : parsed_command_line_(parsed_command_line) {
27 } 48 }
28 49
29 ChromeBrowserFieldTrials::~ChromeBrowserFieldTrials() { 50 ChromeBrowserFieldTrials::~ChromeBrowserFieldTrials() {
30 } 51 }
31 52
32 void ChromeBrowserFieldTrials::SetupFieldTrials() { 53 void ChromeBrowserFieldTrials::SetupFieldTrials() {
33 // Field trials that are shared by all platforms. 54 // Field trials that are shared by all platforms.
34 InstantiateDynamicTrials(); 55 InstantiateDynamicTrials();
35 56
36 #if defined(OS_ANDROID) || defined(OS_IOS) 57 #if defined(OS_ANDROID) || defined(OS_IOS)
37 chrome::SetupMobileFieldTrials(parsed_command_line_); 58 chrome::SetupMobileFieldTrials(parsed_command_line_);
38 #else 59 #else
39 chrome::SetupDesktopFieldTrials(parsed_command_line_); 60 chrome::SetupDesktopFieldTrials(parsed_command_line_);
40 #endif 61 #endif
41 } 62 }
42 63
43 void ChromeBrowserFieldTrials::InstantiateDynamicTrials() { 64 void ChromeBrowserFieldTrials::InstantiateDynamicTrials() {
65 // Persistent histograms must be enabled as soon as possible.
66 InstantiatePersistentHistograms();
44 // The following trials are used from renderer process. 67 // The following trials are used from renderer process.
45 // Mark here so they will be sync-ed. 68 // Mark here so they will be sync-ed.
46 base::FieldTrialList::FindValue("DisplayList2dCanvas"); 69 base::FieldTrialList::FindValue("DisplayList2dCanvas");
47 // Activate the autocomplete dynamic field trials. 70 // Activate the autocomplete dynamic field trials.
48 OmniboxFieldTrial::ActivateDynamicTrials(); 71 OmniboxFieldTrial::ActivateDynamicTrials();
49 } 72 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698