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

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

Issue 344883002: Collect UMA statistics on which chrome://flags lead to chrome restart on ChromeOS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix bug in about_flags.cc. Sdded comments. s/restarting/custom/ Created 6 years, 6 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/about_flags.h" 5 #include "chrome/browser/about_flags.h"
6 6
7 #include <iterator> 7 #include <iterator>
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 1915 matching lines...) Expand 10 before | Expand all | Expand 10 after
1926 { 1926 {
1927 "enable-data-reduction-proxy-dev", 1927 "enable-data-reduction-proxy-dev",
1928 IDS_FLAGS_ENABLE_DATA_REDUCTION_PROXY_DEV_NAME, 1928 IDS_FLAGS_ENABLE_DATA_REDUCTION_PROXY_DEV_NAME,
1929 IDS_FLAGS_ENABLE_DATA_REDUCTION_PROXY_DEV_DESCRIPTION, 1929 IDS_FLAGS_ENABLE_DATA_REDUCTION_PROXY_DEV_DESCRIPTION,
1930 kOsAndroid, 1930 kOsAndroid,
1931 ENABLE_DISABLE_VALUE_TYPE( 1931 ENABLE_DISABLE_VALUE_TYPE(
1932 data_reduction_proxy::switches::kEnableDataReductionProxyDev, 1932 data_reduction_proxy::switches::kEnableDataReductionProxyDev,
1933 data_reduction_proxy::switches::kDisableDataReductionProxyDev) 1933 data_reduction_proxy::switches::kDisableDataReductionProxyDev)
1934 }, 1934 },
1935 #endif 1935 #endif
1936
1937 // Add new choice before this line.
1938 //
1939 // If it can be used on ChromeOS, please also add it to
1940 // chrome/browser/chromeos/login/report_custom_flags.cc
sky 2014/06/19 20:23:28 This is not maintainable. You need to come up with
Alexander Alekseev 2014/06/20 18:42:45 We need histogram here to know which flags lead to
1936 }; 1941 };
1937 1942
1938 const Experiment* experiments = kExperiments; 1943 const Experiment* experiments = kExperiments;
1939 size_t num_experiments = arraysize(kExperiments); 1944 size_t num_experiments = arraysize(kExperiments);
1940 1945
1941 // Stores and encapsulates the little state that about:flags has. 1946 // Stores and encapsulates the little state that about:flags has.
1942 class FlagsState { 1947 class FlagsState {
1943 public: 1948 public:
1944 FlagsState() : needs_restart_(false) {} 1949 FlagsState() : needs_restart_(false) {}
1945 void ConvertFlagsToSwitches(FlagsStorage* flags_storage, 1950 void ConvertFlagsToSwitches(FlagsStorage* flags_storage,
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
2137 2142
2138 void ConvertFlagsToSwitches(FlagsStorage* flags_storage, 2143 void ConvertFlagsToSwitches(FlagsStorage* flags_storage,
2139 CommandLine* command_line, 2144 CommandLine* command_line,
2140 SentinelsMode sentinels) { 2145 SentinelsMode sentinels) {
2141 FlagsState::GetInstance()->ConvertFlagsToSwitches(flags_storage, 2146 FlagsState::GetInstance()->ConvertFlagsToSwitches(flags_storage,
2142 command_line, 2147 command_line,
2143 sentinels); 2148 sentinels);
2144 } 2149 }
2145 2150
2146 bool AreSwitchesIdenticalToCurrentCommandLine( 2151 bool AreSwitchesIdenticalToCurrentCommandLine(
2147 const CommandLine& new_cmdline, const CommandLine& active_cmdline) { 2152 const CommandLine& new_cmdline,
2153 const CommandLine& active_cmdline,
2154 std::set<CommandLine::StringType>* out_difference) {
2148 std::set<CommandLine::StringType> new_flags = 2155 std::set<CommandLine::StringType> new_flags =
2149 ExtractFlagsFromCommandLine(new_cmdline); 2156 ExtractFlagsFromCommandLine(new_cmdline);
2150 std::set<CommandLine::StringType> active_flags = 2157 std::set<CommandLine::StringType> active_flags =
2151 ExtractFlagsFromCommandLine(active_cmdline); 2158 ExtractFlagsFromCommandLine(active_cmdline);
2152 2159
2160 bool result = true;
2153 // Needed because std::equal doesn't check if the 2nd set is empty. 2161 // Needed because std::equal doesn't check if the 2nd set is empty.
2154 if (new_flags.size() != active_flags.size()) 2162 if (new_flags.size() != active_flags.size()) {
2155 return false; 2163 result = false;
2164 } else {
2165 result =
2166 std::equal(new_flags.begin(), new_flags.end(), active_flags.begin());
2167 }
2156 2168
2157 return std::equal(new_flags.begin(), new_flags.end(), active_flags.begin()); 2169 if (out_difference && !result) {
2170 std::set_symmetric_difference(
2171 new_flags.begin(),
2172 new_flags.end(),
2173 active_flags.begin(),
2174 active_flags.end(),
2175 std::inserter(*out_difference, out_difference->begin()));
2176 }
2177
2178 return result;
2158 } 2179 }
2159 2180
2160 void GetFlagsExperimentsData(FlagsStorage* flags_storage, 2181 void GetFlagsExperimentsData(FlagsStorage* flags_storage,
2161 FlagAccess access, 2182 FlagAccess access,
2162 base::ListValue* supported_experiments, 2183 base::ListValue* supported_experiments,
2163 base::ListValue* unsupported_experiments) { 2184 base::ListValue* unsupported_experiments) {
2164 std::set<std::string> enabled_experiments; 2185 std::set<std::string> enabled_experiments;
2165 GetSanitizedEnabledFlags(flags_storage, &enabled_experiments); 2186 GetSanitizedEnabledFlags(flags_storage, &enabled_experiments);
2166 2187
2167 int current_platform = GetCurrentPlatform(); 2188 int current_platform = GetCurrentPlatform();
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
2454 } 2475 }
2455 2476
2456 const Experiment* GetExperiments(size_t* count) { 2477 const Experiment* GetExperiments(size_t* count) {
2457 *count = num_experiments; 2478 *count = num_experiments;
2458 return experiments; 2479 return experiments;
2459 } 2480 }
2460 2481
2461 } // namespace testing 2482 } // namespace testing
2462 2483
2463 } // namespace about_flags 2484 } // namespace about_flags
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698