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

Side by Side Diff: chrome/browser/safe_browsing/srt_fetcher_win.h

Issue 2226133005: Add support for the ExperimentalSwReporterEngine field trial. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comment on usage of TestPartialLaunchCycle. Always save the time of last run. Misc cleanups. Created 4 years, 3 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 #ifndef CHROME_BROWSER_SAFE_BROWSING_SRT_FETCHER_WIN_H_ 5 #ifndef CHROME_BROWSER_SAFE_BROWSING_SRT_FETCHER_WIN_H_
6 #define CHROME_BROWSER_SAFE_BROWSING_SRT_FETCHER_WIN_H_ 6 #define CHROME_BROWSER_SAFE_BROWSING_SRT_FETCHER_WIN_H_
7 7
8 #include <limits.h> 8 #include <limits.h>
9 #include <stdint.h>
9 10
11 #include <queue>
10 #include <string> 12 #include <string>
11 13
12 #include "base/callback_forward.h" 14 #include "base/callback_forward.h"
13 #include "base/command_line.h" 15 #include "base/command_line.h"
14 #include "base/memory/ref_counted.h" 16 #include "base/memory/ref_counted.h"
15 #include "base/version.h" 17 #include "base/version.h"
16 18
17 namespace base { 19 namespace base {
18 class FilePath; 20 class FilePath;
19 class TaskRunner; 21 class TaskRunner;
(...skipping 23 matching lines...) Expand all
43 45
44 // Parameters used to invoke the sw_reporter component. 46 // Parameters used to invoke the sw_reporter component.
45 struct SwReporterInvocation { 47 struct SwReporterInvocation {
46 base::CommandLine command_line; 48 base::CommandLine command_line;
47 49
48 // Experimental versions of the reporter will write metrics to registry keys 50 // Experimental versions of the reporter will write metrics to registry keys
49 // ending in |suffix|. Those metrics should be copied to UMA histograms also 51 // ending in |suffix|. Those metrics should be copied to UMA histograms also
50 // ending in |suffix|. For the canonical version, |suffix| will be empty. 52 // ending in |suffix|. For the canonical version, |suffix| will be empty.
51 std::string suffix; 53 std::string suffix;
52 54
53 // The experimental sw_reporter never triggers the prompt, just reports 55 // Flags to control optional behaviours. By default all are enabled;
csharp 2016/09/13 17:09:03 What about disabling this all by default, to ensur
Joe Mason 2016/09/13 19:24:55 I think it's better to enable them by default beca
Joe Mason 2016/09/13 21:34:42 csharp convinced me offline that we should set the
54 // results through UMA. 56 // experimental versions of the reporter will turn off the behaviours that
55 bool is_experimental = false; 57 // are not yet supported.
58 using Flags = uint32_t;
59 enum : Flags {
60 FLAG_LOG_TO_RAPPOR = 0x1,
61 FLAG_LOG_TO_PREFS = 0x2,
62 FLAG_TRIGGER_PROMPT = 0x4,
63 };
64 Flags flags = FLAG_LOG_TO_RAPPOR | FLAG_LOG_TO_PREFS | FLAG_TRIGGER_PROMPT;
56 65
57 SwReporterInvocation(); 66 SwReporterInvocation();
58 67
59 static SwReporterInvocation FromFilePath(const base::FilePath& exe_path); 68 static SwReporterInvocation FromFilePath(const base::FilePath& exe_path);
60 static SwReporterInvocation FromCommandLine( 69 static SwReporterInvocation FromCommandLine(
61 const base::CommandLine& command_line); 70 const base::CommandLine& command_line);
62 71
63 bool operator==(const SwReporterInvocation& other) const; 72 bool operator==(const SwReporterInvocation& other) const;
64 }; 73 };
65 74
75 using SwReporterQueue = std::queue<SwReporterInvocation>;
76
66 // Tries to run the sw_reporter component, and then schedule the next try. If 77 // Tries to run the sw_reporter component, and then schedule the next try. If
67 // called multiple times, then multiple sequences of trying to run will happen, 78 // called multiple times, then multiple sequences of trying to run will happen,
68 // yet only one reporter will run per specified period (either 79 // yet only one SwReporterQueue will actually run per specified period (either
69 // |kDaysBetweenSuccessfulSwReporterRuns| or 80 // |kDaysBetweenSuccessfulSwReporterRuns| or
70 // |kDaysBetweenSwReporterRunsForPendingPrompt|) will actually happen. 81 // |kDaysBetweenSwReporterRunsForPendingPrompt|).
71 // |invocation| is the details of the SwReporter to execute, and |version| is 82 //
72 // its version. The task runners are provided to allow tests to provide their 83 // Each "run" of the sw_reporter component may aggregate the results of several
73 // own. 84 // executions of the tool with different command lines. |invocations| is the
74 void RunSwReporter(const SwReporterInvocation& invocation, 85 // queue of SwReporters to execute as a single "run". When a new try is
75 const base::Version& version, 86 // scheduled the entire queue is executed.
76 scoped_refptr<base::TaskRunner> main_thread_task_runner, 87 //
77 scoped_refptr<base::TaskRunner> blocking_task_runner); 88 // |version| is the version of the tool that will run. The task runners are
89 // provided to allow tests to provide their own.
90 void RunSwReporters(const SwReporterQueue& invocations,
91 const base::Version& version,
92 scoped_refptr<base::TaskRunner> main_thread_task_runner,
93 scoped_refptr<base::TaskRunner> blocking_task_runner);
78 94
79 // Returns true iff Local State is successfully accessed and indicates the most 95 // Returns true iff Local State is successfully accessed and indicates the most
80 // recent Reporter run terminated with an exit code indicating the presence of 96 // recent Reporter run terminated with an exit code indicating the presence of
81 // UwS. 97 // UwS.
82 bool ReporterFoundUws(); 98 bool ReporterFoundUws();
83 99
84 // Returns true iff a valid registry key for the SRT Cleaner exists, and that 100 // Returns true iff a valid registry key for the SRT Cleaner exists, and that
85 // key is nonempty. 101 // key is nonempty.
86 // TODO(tmartino): Consider changing to check whether the user has recently 102 // TODO(tmartino): Consider changing to check whether the user has recently
87 // run the cleaner, rather than checking if they've run it at all. 103 // run the cleaner, rather than checking if they've run it at all.
(...skipping 20 matching lines...) Expand all
108 124
109 // Set a delegate for testing. The implementation will not take ownership of 125 // Set a delegate for testing. The implementation will not take ownership of
110 // |delegate| - it must remain valid until this function is called again to 126 // |delegate| - it must remain valid until this function is called again to
111 // reset the delegate. If |delegate| is nullptr, any previous delegate is 127 // reset the delegate. If |delegate| is nullptr, any previous delegate is
112 // cleared. 128 // cleared.
113 void SetSwReporterTestingDelegate(SwReporterTestingDelegate* delegate); 129 void SetSwReporterTestingDelegate(SwReporterTestingDelegate* delegate);
114 130
115 } // namespace safe_browsing 131 } // namespace safe_browsing
116 132
117 #endif // CHROME_BROWSER_SAFE_BROWSING_SRT_FETCHER_WIN_H_ 133 #endif // CHROME_BROWSER_SAFE_BROWSING_SRT_FETCHER_WIN_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698