// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_EXTENSIONS_ACTIVITY_LOG_ACTIVITY_LOG_POLICY_H_ #define CHROME_BROWSER_EXTENSIONS_ACTIVITY_LOG_ACTIVITY_LOG_POLICY_H_ #include <stdint.h> #include <map> #include <memory> #include <set> #include <string> #include <vector> #include "base/functional/bind.h" #include "base/functional/callback.h" #include "base/functional/callback_helpers.h" #include "base/memory/raw_ptr.h" #include "base/values.h" #include "chrome/browser/extensions/activity_log/activity_actions.h" #include "chrome/browser/extensions/activity_log/activity_database.h" #include "chrome/browser/extensions/activity_log/activity_log_task_runner.h" #include "chrome/common/extensions/api/activity_log_private.h" #include "content/public/browser/browser_thread.h" #include "url/gurl.h" class Profile; class GURL; namespace base { class Clock; class FilePath; } namespace extensions { // An abstract class for processing and summarizing activity log data. // Subclasses will generally store data in an SQLite database (the // ActivityLogDatabasePolicy subclass includes some helper methods to assist // with this case), but this is not absolutely required. // // Implementations should support: // (1) Receiving Actions to process, and summarizing, compression, and storing // these as appropriate. // (2) Reading Actions back from storage. // (3) Cleaning of URLs // // Implementations based on a database should likely implement // ActivityDatabase::Delegate, which provides hooks on database events and // allows the database to periodically request that actions (which the policy // is responsible for queueing) be flushed to storage. // // Since every policy implementation might summarize data differently, the // database implementation is policy-specific and therefore completely // encapsulated in the policy class. All the member functions can be called // on the UI thread. class ActivityLogPolicy { … }; // A subclass of ActivityLogPolicy which is designed for policies that use // database storage; it contains several useful helper methods. class ActivityLogDatabasePolicy : public ActivityLogPolicy, public ActivityDatabase::Delegate { … }; } // namespace extensions #endif // CHROME_BROWSER_EXTENSIONS_ACTIVITY_LOG_ACTIVITY_LOG_POLICY_H_