summaryrefslogtreecommitdiffstats
path: root/chrome/browser/rlz
diff options
context:
space:
mode:
authorivankr@chromium.org <ivankr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-24 13:19:27 +0000
committerivankr@chromium.org <ivankr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-24 13:19:27 +0000
commita9a064bff8415c30fb4f25ceac2cd6d61e44da54 (patch)
treed8517e4a9d250098bc010dde2484d06c974d2893 /chrome/browser/rlz
parent00566949c27fbf8df8085c9826404f6446b3cb80 (diff)
downloadchromium_src-a9a064bff8415c30fb4f25ceac2cd6d61e44da54.zip
chromium_src-a9a064bff8415c30fb4f25ceac2cd6d61e44da54.tar.gz
chromium_src-a9a064bff8415c30fb4f25ceac2cd6d61e44da54.tar.bz2
[cros] Clear RLZ data when switching RLZ enabled/disabled state.
BUG=167425 Review URL: https://chromiumcodereview.appspot.com/11649038 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@174575 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/rlz')
-rw-r--r--chrome/browser/rlz/rlz.cc34
-rw-r--r--chrome/browser/rlz/rlz.h15
-rw-r--r--chrome/browser/rlz/rlz_unittest.cc17
3 files changed, 62 insertions, 4 deletions
diff --git a/chrome/browser/rlz/rlz.cc b/chrome/browser/rlz/rlz.cc
index 31a8316..4ed0f05 100644
--- a/chrome/browser/rlz/rlz.cc
+++ b/chrome/browser/rlz/rlz.cc
@@ -331,10 +331,6 @@ void RLZTracker::DelayedInit() {
ScheduleFinancialPing();
}
-void RLZTracker::EnableZeroDelayForTesting() {
- GetInstance()->min_delay_ = 0;
-}
-
void RLZTracker::ScheduleFinancialPing() {
BrowserThread::GetBlockingPool()->PostSequencedWorkerTask(
worker_pool_token_,
@@ -544,8 +540,38 @@ bool RLZTracker::ScheduleGetAccessPointRlz(rlz_lib::AccessPoint point) {
return true;
}
+#if defined(OS_CHROMEOS)
+// static
+void RLZTracker::ClearRlzState() {
+ GetInstance()->ClearRlzStateImpl();
+}
+
+void RLZTracker::ClearRlzStateImpl() {
+ if (ScheduleClearRlzState())
+ return;
+ rlz_lib::ClearAllProductEvents(rlz_lib::CHROME);
+}
+
+bool RLZTracker::ScheduleClearRlzState() {
+ if (!BrowserThread::CurrentlyOn(BrowserThread::UI))
+ return false;
+
+ BrowserThread::GetBlockingPool()->PostSequencedWorkerTask(
+ worker_pool_token_,
+ FROM_HERE,
+ base::Bind(&RLZTracker::ClearRlzStateImpl,
+ base::Unretained(this)));
+ return true;
+}
+#endif
+
// static
void RLZTracker::CleanupRlz() {
GetInstance()->rlz_cache_.clear();
GetInstance()->registrar_.RemoveAll();
}
+
+// static
+void RLZTracker::EnableZeroDelayForTesting() {
+ GetInstance()->min_delay_ = 0;
+}
diff --git a/chrome/browser/rlz/rlz.h b/chrome/browser/rlz/rlz.h
index 3c1733e..6d719c3 100644
--- a/chrome/browser/rlz/rlz.h
+++ b/chrome/browser/rlz/rlz.h
@@ -72,6 +72,12 @@ class RLZTracker : public content::NotificationObserver {
// Invoked during shutdown to clean up any state created by RLZTracker.
static void CleanupRlz();
+#if defined(OS_CHROMEOS)
+ // Clears all product state. Should be called when turning RLZ off. On other
+ // platforms, this is done by product uninstaller.
+ static void ClearRlzState();
+#endif
+
// This method is public for use by the Singleton class.
static RLZTracker* GetInstance();
@@ -163,6 +169,15 @@ class RLZTracker : public content::NotificationObserver {
const string16& lang,
const string16& referral);
+#if defined(OS_CHROMEOS)
+ // Implementation called from ClearRlzState static method.
+ void ClearRlzStateImpl();
+
+ // Schedules a call to ClearRlzStateImpl(). This method is virtual
+ // to allow tests to override how the scheduling is done.
+ virtual bool ScheduleClearRlzState();
+#endif
+
// Tracker used for testing purposes only. If this value is non-NULL, it
// will be returned from GetInstance() instead of the regular singleton.
static RLZTracker* tracker_;
diff --git a/chrome/browser/rlz/rlz_unittest.cc b/chrome/browser/rlz/rlz_unittest.cc
index 8693091..f844a8c 100644
--- a/chrome/browser/rlz/rlz_unittest.cc
+++ b/chrome/browser/rlz/rlz_unittest.cc
@@ -142,6 +142,10 @@ class TestRLZTracker : public RLZTracker {
return !assume_not_ui_thread_;
}
+ virtual bool ScheduleClearRlzState() OVERRIDE {
+ return !assume_not_ui_thread_;
+ }
+
virtual bool SendFinancialPing(const std::string& brand,
const string16& lang,
const string16& referral) OVERRIDE {
@@ -772,3 +776,16 @@ TEST_F(RlzLibTest, ReactivationOrganicOrganic) {
ExpectReactivationRlzPingSent(false);
}
#endif // defined(OS_WIN)
+
+#if defined(OS_CHROMEOS)
+TEST_F(RlzLibTest, ClearRlzState) {
+ RLZTracker::RecordProductEvent(rlz_lib::CHROME, RLZTracker::CHROME_OMNIBOX,
+ rlz_lib::FIRST_SEARCH);
+
+ ExpectEventRecorded(kOmniboxFirstSearch, true);
+
+ RLZTracker::ClearRlzState();
+
+ ExpectEventRecorded(kOmniboxFirstSearch, false);
+}
+#endif // defined(OS_CHROMEOS)