Chromium Code Reviews| 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_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/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 48 // Desktop may have to restore a lot of tabs so give it more time before doing | 48 // Desktop may have to restore a lot of tabs so give it more time before doing |
| 49 // non-essential work. The spare file is still a performance boost but not as | 49 // non-essential work. The spare file is still a performance boost but not as |
| 50 // significant of one so it's not required. | 50 // significant of one so it's not required. |
| 51 constexpr bool kSpareFileRequired = false; | 51 constexpr bool kSpareFileRequired = false; |
| 52 constexpr int kSpareFileCreateDelaySeconds = 90; | 52 constexpr int kSpareFileCreateDelaySeconds = 90; |
| 53 #endif | 53 #endif |
| 54 | 54 |
| 55 // Check for feature enabling the use of persistent histogram storage and | 55 // Check for feature enabling the use of persistent histogram storage and |
| 56 // enable the global allocator if so. | 56 // enable the global allocator if so. |
| 57 // TODO(bcwhite): Move this and CreateInstallerFileMetricsProvider into a new | 57 // TODO(bcwhite): Move this and CreateInstallerFileMetricsProvider into a new |
| 58 // file and make kBrowserMetricsName local to that file. | 58 // file and make kBrowserMetricsName local to that file. |
|
Alexei Svitkine (slow)
2017/06/28 17:30:35
Friendly ping on this! (Separate CL, but please le
bcwhite
2017/06/28 18:52:08
Acknowledged.
| |
| 59 void InstantiatePersistentHistograms() { | 59 void InstantiatePersistentHistograms() { |
| 60 base::FilePath metrics_dir; | 60 base::FilePath metrics_dir; |
| 61 if (!base::PathService::Get(chrome::DIR_USER_DATA, &metrics_dir)) | 61 if (!base::PathService::Get(chrome::DIR_USER_DATA, &metrics_dir)) |
| 62 return; | 62 return; |
| 63 | 63 |
| 64 base::FilePath metrics_file; | 64 // Remove any existing file from its legacy location. |
| 65 // TODO(bcwhite): Remove this block of code in M62 or later. | |
| 66 base::FilePath legacy_file; | |
| 67 base::GlobalHistogramAllocator::ConstructFilePaths( | |
| 68 metrics_dir, ChromeMetricsServiceClient::kBrowserMetricsName, | |
| 69 &legacy_file, nullptr, nullptr); | |
| 70 base::PostTaskWithTraits( | |
| 71 FROM_HERE, | |
| 72 {base::MayBlock(), base::TaskPriority::BACKGROUND, | |
| 73 base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}, | |
| 74 base::BindOnce(base::IgnoreResult(&base::DeleteFile), | |
| 75 base::Passed(&legacy_file), /*recursive=*/false)); | |
| 76 | |
| 77 // Create a directory for storing completed metrics files. Files in this | |
| 78 // directory must have embedded system profiles. If the directory can't be | |
| 79 // created, the file will just be deleted below. | |
| 80 base::FilePath upload_dir = | |
| 81 metrics_dir.AppendASCII(ChromeMetricsServiceClient::kBrowserMetricsName); | |
| 82 base::CreateDirectory(upload_dir); | |
| 83 | |
| 84 base::FilePath upload_file; | |
| 65 base::FilePath active_file; | 85 base::FilePath active_file; |
| 66 base::FilePath spare_file; | 86 base::FilePath spare_file; |
| 67 base::GlobalHistogramAllocator::ConstructFilePaths( | 87 base::GlobalHistogramAllocator::ConstructFilePathsForUploadDir( |
| 68 metrics_dir, ChromeMetricsServiceClient::kBrowserMetricsName, | 88 metrics_dir, upload_dir, ChromeMetricsServiceClient::kBrowserMetricsName, |
|
Alexei Svitkine (slow)
2017/06/28 17:30:35
Can you add a comment about expected file location
bcwhite
2017/06/28 18:52:08
Done.
| |
| 69 &metrics_file, &active_file, &spare_file); | 89 &upload_file, &active_file, &spare_file); |
| 70 | 90 |
| 71 // Move any existing "active" file to the final name from which it will be | 91 // Move any existing "active" file to the final name from which it will be |
| 72 // read when reporting initial stability metrics. If there is no file to | 92 // read when reporting initial stability metrics. If there is no file to |
| 73 // move, remove any old, existing file from before the previous session. | 93 // move, remove any old, existing file from before the previous session. |
| 74 if (!base::ReplaceFile(active_file, metrics_file, nullptr)) | 94 if (!base::ReplaceFile(active_file, upload_file, nullptr)) |
| 75 base::DeleteFile(metrics_file, /*recursive=*/false); | 95 base::DeleteFile(active_file, /*recursive=*/false); |
| 76 | 96 |
| 77 // This is used to report results to an UMA histogram. | 97 // This is used to report results to an UMA histogram. |
| 78 enum InitResult { | 98 enum InitResult { |
| 79 LOCAL_MEMORY_SUCCESS, | 99 LOCAL_MEMORY_SUCCESS, |
| 80 LOCAL_MEMORY_FAILED, | 100 LOCAL_MEMORY_FAILED, |
| 81 MAPPED_FILE_SUCCESS, | 101 MAPPED_FILE_SUCCESS, |
| 82 MAPPED_FILE_FAILED, | 102 MAPPED_FILE_FAILED, |
| 83 MAPPED_FILE_EXISTS, | 103 MAPPED_FILE_EXISTS, |
| 84 NO_SPARE_FILE, | 104 NO_SPARE_FILE, |
| 85 INIT_RESULT_MAX | 105 INIT_RESULT_MAX |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 206 bool has_seed, | 226 bool has_seed, |
| 207 base::FeatureList* feature_list) { | 227 base::FeatureList* feature_list) { |
| 208 CreateFallbackSamplingTrialIfNeeded(has_seed, feature_list); | 228 CreateFallbackSamplingTrialIfNeeded(has_seed, feature_list); |
| 209 } | 229 } |
| 210 | 230 |
| 211 void ChromeBrowserFieldTrials::InstantiateDynamicTrials() { | 231 void ChromeBrowserFieldTrials::InstantiateDynamicTrials() { |
| 212 // Persistent histograms must be enabled as soon as possible. | 232 // Persistent histograms must be enabled as soon as possible. |
| 213 InstantiatePersistentHistograms(); | 233 InstantiatePersistentHistograms(); |
| 214 tracing::SetupBackgroundTracingFieldTrial(); | 234 tracing::SetupBackgroundTracingFieldTrial(); |
| 215 } | 235 } |
| OLD | NEW |