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

Side by Side Diff: chrome/browser/extensions/activity_log/activity_log_policy.h

Issue 15573003: New architecture of the activity logging: Policies for summarization (and compression) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed compiler errors on different platforms (at least I hope so). Created 7 years, 7 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
(Empty)
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
felt 2013/05/22 21:17:59 The style guide was updated very recently -- can y
dbabic 2013/05/23 01:35:04 Done.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_EXTENSIONS_ACTIVITY_LOG_ACTIVITY_LOG_POLICY_H_
6 #define CHROME_BROWSER_EXTENSIONS_ACTIVITY_LOG_ACTIVITY_LOG_POLICY_H_
7
8 #include <string>
9 #include <vector>
10
11 #include "base/callback.h"
12 #include "base/files/file_path.h"
13 #include "base/memory/scoped_ptr.h"
14 #include "base/time.h"
15 #include "base/values.h"
16 #include "chrome/browser/extensions/activity_log/activity_actions.h"
17 #include "googleurl/src/gurl.h"
18
19 class Profile;
20 class GURL;
21
22 namespace extensions {
23
24 class Extension;
25
26 // Abstract class for summarizing data and storing it into the database. Any
27 // subclass should implement the following functionality:
28 //
29 // (1) Summarization (and possibly) compression of data
30 // (2) Periodical syncing of the in-memory state with the database
31 // (3) Periodical database cleanup
32 //
33 // Since every policy implementation might summarize data differently, the
34 // database implementation is policy-specific and therefore completely
35 // encapsulated in the policy class.
36 class ActivityLogPolicy {
37 public:
38 enum ActionType {
39 ACTION_API,
40 ACTION_EVENT,
41 ACTION_BLOCKED,
42 ACTION_DOM,
43 ACTION_WEB_REQUEST,
44 ACTION_ON_SCRIPTS,
felt 2013/05/22 21:17:59 Is there a reason why you separate this out into m
dbabic 2013/05/23 01:35:04 Done. You are probably referring to the ON_SCRIPT
45 };
46
47 // For all subclasses, add all the key types they might support here.
48 // The actual key is returned by calling GetKey(KeyType). The subclasses
49 // are free to return an empty string for keys they don't support.
50 // For every key added here, you should update the GetKey member function
51 // for at least one policy.
52 enum KeyType {
53 PARAM_KEY_REASON, // Why an action was blocked
54 PARAM_KEY_DOM_ACTION, // Getter, Setter, Method,...
55 PARAM_KEY_URL_TITLE,
56 PARAM_KEY_DETAILS_STRING,
57 /*
58 More PARAM_KEY_...
59 UI_KEY_...
felt 2013/05/22 21:17:59 Please delete the /* ... */
dbabic 2013/05/23 01:35:04 Done.
60 */
61 };
62
63 explicit ActivityLogPolicy(Profile*);
64 virtual ~ActivityLogPolicy() {}
65
66 // Updates the internal state of the model summarizing actions and possibly
67 // writes to the database. Implements the default policy storing internal
68 // state to memory every 5 min.
69 virtual void ProcessAction(
70 ActionType,
71 const Extension&,
felt 2013/05/22 21:17:59 All parameters should be named. This goes for all
dbabic 2013/05/23 01:35:04 Done.
72 const std::string& /* action name */,
73 const GURL* /* target URL */,
74 const base::ListValue* /* arguments */,
felt 2013/05/22 21:17:59 For consistency, switch to the // style of comment
dbabic 2013/05/23 01:35:04 Done.
75 const base::DictionaryValue* /* details */
76 );
77
78 // Saves the internal state in the memory into the database
79 virtual void SaveState() = 0;
80
81 // Pass the parameters as a set of key-value pairs and return data back via
82 // a callback passing results as a set of key-value pairs. The keys are
83 // policy-specific.
84 virtual void ReadData(
85 const base::DictionaryValue&,
86 const base::Callback<void(scoped_ptr<base::DictionaryValue>)>&) const {}
87
88 // TODO(felt,dbabic) This is overly specific to the current implementation
89 // of the FullStreamUIPolicy. We should refractor it to use the above
90 // more general member function.
91 virtual void ReadData(const std::string& extension_id, const int day,
92 const
93 base::Callback<void(scoped_ptr<std::vector<scoped_refptr<Action> > >)>&)
94 const {}
95
96 // For testing purposes --- disables periodic sync, making the behavior
97 // reproducible.
felt 2013/05/22 21:17:59 Can you rename to not use "Sync", since that is us
dbabic 2013/05/23 01:35:04 Done. I feel that calling it "batching" is a bit
98 void SetSyncOnRequestOnly() {
99 sync_on_request_only_ = true;
100 }
101
102 virtual void GetKey(KeyType, std::string& key) const;
103
104 protected:
felt 2013/05/22 21:17:59 Why are these protected instead of private? (Is it
dbabic 2013/05/23 01:35:04 Done. Good question for DoProcessAction, I remove
105 // Processes the action and (only) updates the internal state.
106 virtual void DoProcessAction(ActionType, const Extension&,
felt 2013/05/22 21:17:59 Please take a look at https://google-styleguide.go
dbabic 2013/05/23 01:35:04 Done.
107 const std::string&, const GURL*, const base::ListValue*,
108 const base::DictionaryValue*) = 0;
109
110 base::Time last_sync_timestamp_;
felt 2013/05/22 21:17:59 What is this for? Why not implement this with the
dbabic 2013/05/23 01:35:04 That's the periodic state saving feature Ulfar sug
felt 2013/05/23 04:20:01 I think there is some confusion -- Ulfar wasn't su
dbabic 2013/05/24 00:35:07 Ok. Done.
111 base::FilePath profile_base_path_;
112 bool sync_on_request_only_;
felt 2013/05/22 21:17:59 What does this variable name mean? Is it equivalen
dbabic 2013/05/23 01:35:04 Yes. I've renamed it now: _sync_ -> _save_state_
113 };
114
115 } // End of the extensions namespace
116
117 #endif // CHROME_BROWSER_EXTENSIONS_ACTIVITY_LOG_ACTIVITY_LOG_POLICY_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698