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

Unified Diff: components/rlz/rlz_tracker.h

Issue 1212163011: Componentize chrome/browser/rlz (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/rlz/OWNERS ('k') | components/rlz/rlz_tracker.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/rlz/rlz_tracker.h
diff --git a/chrome/browser/rlz/rlz.h b/components/rlz/rlz_tracker.h
similarity index 86%
rename from chrome/browser/rlz/rlz.h
rename to components/rlz/rlz_tracker.h
index 4fd9b9c79a5421c2afedfef42ddcaa435ab16fb4..1236aa29d8da80e8f842997e13d792e1199f35ba 100644
--- a/chrome/browser/rlz/rlz.h
+++ b/components/rlz/rlz_tracker.h
@@ -2,30 +2,28 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_RLZ_RLZ_H_
-#define CHROME_BROWSER_RLZ_RLZ_H_
-
-#include "build/build_config.h"
-
-#if defined(ENABLE_RLZ)
+#ifndef COMPONENTS_RLZ_RLZ_TRACKER_H_
+#define COMPONENTS_RLZ_RLZ_TRACKER_H_
#include <map>
#include <string>
#include "base/basictypes.h"
+#include "base/memory/scoped_ptr.h"
#include "base/memory/singleton.h"
#include "base/strings/string16.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/time/time.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_registrar.h"
#include "rlz/lib/rlz_lib.h"
-class Profile;
namespace net {
class URLRequestContextGetter;
}
+namespace rlz {
+
+class RLZTrackerDelegate;
+
// RLZ is a library which is used to measure distribution scenarios.
// Its job is to record certain lifetime events in the registry and to send
// them encoded as a compact string at most twice. The sent data does
@@ -36,8 +34,12 @@ class URLRequestContextGetter;
// For partner or bundled installs, the RLZ might send more information
// according to the terms disclosed in the EULA.
-class RLZTracker : public content::NotificationObserver {
+class RLZTracker {
public:
+ // Sets the RLZTrackerDelegate that should be used by the global RLZTracker
+ // instance. Must be called before calling any other method of RLZTracker.
+ static void SetRlzDelegate(scoped_ptr<RLZTrackerDelegate> delegate);
+
// Initializes the RLZ library services for use in chrome. Schedules a delayed
// task that performs the ping and registers some events when 'first-run' is
// true.
@@ -47,10 +49,12 @@ class RLZTracker : public content::NotificationObserver {
// However, we only want this behaviour on first run.
//
// If the chrome brand is organic (no partners) then the pings don't occur.
- static bool InitRlzFromProfileDelayed(Profile* profile,
- bool first_run,
- bool send_ping_immediately,
- base::TimeDelta delay);
+ static bool InitRlzDelayed(bool first_run,
+ bool send_ping_immediately,
+ base::TimeDelta delay,
+ bool is_google_default_search,
+ bool is_google_homepage,
+ bool is_google_in_startpages);
// Records an RLZ event. Some events can be access point independent.
// Returns false it the event could not be recorded. Requires write access
@@ -91,7 +95,7 @@ class RLZTracker : public content::NotificationObserver {
// This method is public for use by the Singleton class.
static RLZTracker* GetInstance();
- // Enables zero delay for InitRlzFromProfileDelayed. For testing only.
+ // Enables zero delay for InitRlzDelayed. For testing only.
static void EnableZeroDelayForTesting();
#if !defined(OS_IOS)
@@ -103,30 +107,15 @@ class RLZTracker : public content::NotificationObserver {
// testing purposes. Production code should never need to call these.
protected:
RLZTracker();
- ~RLZTracker() override;
-
- // Called by InitRlzFromProfileDelayed with values taken from |profile|.
- static bool InitRlzDelayed(bool first_run,
- bool send_ping_immediately,
- base::TimeDelta delay,
- bool is_google_default_search,
- bool is_google_homepage,
- bool is_google_in_startpages);
+ virtual ~RLZTracker();
// Performs initialization of RLZ tracker that is purposefully delayed so
// that it does not interfere with chrome startup time.
virtual void DelayedInit();
- // content::NotificationObserver implementation:
- void Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) override;
-
// Used by test code to override the default RLZTracker instance returned
// by GetInstance().
- void set_tracker(RLZTracker* tracker) {
- tracker_ = tracker;
- }
+ void set_tracker(RLZTracker* tracker) { tracker_ = tracker; }
// Sends the financial ping to the RLZ servers and invalidates the RLZ string
// cache since the response from the RLZ server may have changed then.
@@ -137,20 +126,26 @@ class RLZTracker : public content::NotificationObserver {
friend struct DefaultSingletonTraits<RLZTracker>;
friend class base::RefCountedThreadSafe<RLZTracker>;
+ // Implementation called from SetRlzDelegate() static method.
+ void SetDelegate(scoped_ptr<RLZTrackerDelegate> delegate);
+
// Implementation called from InitRlzDelayed() static method.
bool Init(bool first_run,
bool send_ping_immediately,
base::TimeDelta delay,
- bool google_default_search,
- bool google_default_homepage,
+ bool is_google_default_search,
+ bool is_google_homepage,
bool is_google_in_startpages);
+ // Implementation called from CleanupRlz static method.
+ void Cleanup();
+
// Implementation called from RecordProductEvent() static method.
bool RecordProductEventImpl(rlz_lib::Product product,
rlz_lib::AccessPoint point,
rlz_lib::Event event_id);
- // Records FIRST_SEARCH event. Called from Observe() on blocking task runner.
+ // Records FIRST_SEARCH event. Passed as bound callback to RLZTrackerDelegate.
void RecordFirstSearch(rlz_lib::AccessPoint point);
// Implementation called from GetAccessPointRlz() static method.
@@ -203,6 +198,9 @@ class RLZTracker : public content::NotificationObserver {
// will be returned from GetInstance() instead of the regular singleton.
static RLZTracker* tracker_;
+ // Delegate abstracting embedder specific knowledge. Must not be null.
+ scoped_ptr<RLZTrackerDelegate> delegate_;
+
// Configuation data for RLZ tracker. Set by call to Init().
bool first_run_;
bool send_ping_immediately_;
@@ -233,14 +231,12 @@ class RLZTracker : public content::NotificationObserver {
std::string brand_;
std::string reactivation_brand_;
- content::NotificationRegistrar registrar_;
-
// Minimum delay before sending financial ping after initialization.
base::TimeDelta min_init_delay_;
DISALLOW_COPY_AND_ASSIGN(RLZTracker);
};
-#endif // defined(ENABLE_RLZ)
+} // namespace rlz
-#endif // CHROME_BROWSER_RLZ_RLZ_H_
+#endif // COMPONENTS_RLZ_RLZ_TRACKER_H_
« no previous file with comments | « components/rlz/OWNERS ('k') | components/rlz/rlz_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698