diff options
author | ivankr@chromium.org <ivankr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-24 13:19:27 +0000 |
---|---|---|
committer | ivankr@chromium.org <ivankr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-24 13:19:27 +0000 |
commit | a9a064bff8415c30fb4f25ceac2cd6d61e44da54 (patch) | |
tree | d8517e4a9d250098bc010dde2484d06c974d2893 /chrome/browser/rlz | |
parent | 00566949c27fbf8df8085c9826404f6446b3cb80 (diff) | |
download | chromium_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.cc | 34 | ||||
-rw-r--r-- | chrome/browser/rlz/rlz.h | 15 | ||||
-rw-r--r-- | chrome/browser/rlz/rlz_unittest.cc | 17 |
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) |