| Index: chrome/browser/rlz/rlz.h
|
| diff --git a/chrome/browser/rlz/rlz.h b/chrome/browser/rlz/rlz.h
|
| deleted file mode 100644
|
| index 4fd9b9c79a5421c2afedfef42ddcaa435ab16fb4..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/rlz/rlz.h
|
| +++ /dev/null
|
| @@ -1,246 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// 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)
|
| -
|
| -#include <map>
|
| -#include <string>
|
| -
|
| -#include "base/basictypes.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;
|
| -}
|
| -
|
| -// 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
|
| -// not contain information that can be used to identify a user or to infer
|
| -// browsing habits. The API in this file is a wrapper around the open source
|
| -// RLZ library which can be found at http://code.google.com/p/rlz.
|
| -//
|
| -// For partner or bundled installs, the RLZ might send more information
|
| -// according to the terms disclosed in the EULA.
|
| -
|
| -class RLZTracker : public content::NotificationObserver {
|
| - public:
|
| - // 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.
|
| - //
|
| - // When |send_ping_immediately| is true, a financial ping should be sent
|
| - // immediately after a first search is recorded, without waiting for |delay|.
|
| - // 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);
|
| -
|
| - // Records an RLZ event. Some events can be access point independent.
|
| - // Returns false it the event could not be recorded. Requires write access
|
| - // to the HKCU registry hive on windows.
|
| - static bool RecordProductEvent(rlz_lib::Product product,
|
| - rlz_lib::AccessPoint point,
|
| - rlz_lib::Event event_id);
|
| -
|
| - // For the point parameter of RecordProductEvent.
|
| - static rlz_lib::AccessPoint ChromeOmnibox();
|
| -#if !defined(OS_IOS)
|
| - static rlz_lib::AccessPoint ChromeHomePage();
|
| - static rlz_lib::AccessPoint ChromeAppList();
|
| -#endif
|
| -
|
| - // Gets the HTTP header value that can be added to requests from the
|
| - // specific access point. The string returned is of the form:
|
| - //
|
| - // "X-Rlz-String: <access-point-rlz>\r\n"
|
| - //
|
| - static std::string GetAccessPointHttpHeader(rlz_lib::AccessPoint point);
|
| -
|
| - // Gets the RLZ value of the access point.
|
| - // Returns false if the rlz string could not be obtained. In some cases
|
| - // an empty string can be returned which is not an error.
|
| - static bool GetAccessPointRlz(rlz_lib::AccessPoint point,
|
| - base::string16* rlz);
|
| -
|
| - // 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();
|
| -
|
| - // Enables zero delay for InitRlzFromProfileDelayed. For testing only.
|
| - static void EnableZeroDelayForTesting();
|
| -
|
| -#if !defined(OS_IOS)
|
| - // Records that the app list search has been used.
|
| - static void RecordAppListSearch();
|
| -#endif
|
| -
|
| - // The following methods are made protected so that they can be used for
|
| - // 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);
|
| -
|
| - // 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;
|
| - }
|
| -
|
| - // 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.
|
| - // Protected so that its accessible from tests.
|
| - void PingNowImpl();
|
| -
|
| - private:
|
| - friend struct DefaultSingletonTraits<RLZTracker>;
|
| - friend class base::RefCountedThreadSafe<RLZTracker>;
|
| -
|
| - // 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_in_startpages);
|
| -
|
| - // 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.
|
| - void RecordFirstSearch(rlz_lib::AccessPoint point);
|
| -
|
| - // Implementation called from GetAccessPointRlz() static method.
|
| - bool GetAccessPointRlzImpl(rlz_lib::AccessPoint point, base::string16* rlz);
|
| -
|
| - // Schedules the delayed initialization. This method is virtual to allow
|
| - // tests to override how the scheduling is done.
|
| - virtual void ScheduleDelayedInit(base::TimeDelta delay);
|
| -
|
| - // Schedules a call to rlz_lib::RecordProductEvent(). This method is virtual
|
| - // to allow tests to override how the scheduling is done.
|
| - virtual bool ScheduleRecordProductEvent(rlz_lib::Product product,
|
| - rlz_lib::AccessPoint point,
|
| - rlz_lib::Event event_id);
|
| -
|
| - // Schedules a call to rlz_lib::RecordFirstSearch(). This method is virtual
|
| - // to allow tests to override how the scheduling is done.
|
| - virtual bool ScheduleRecordFirstSearch(rlz_lib::AccessPoint point);
|
| -
|
| - // Schedules a call to rlz_lib::SendFinancialPing(). This method is virtual
|
| - // to allow tests to override how the scheduling is done.
|
| - virtual void ScheduleFinancialPing();
|
| -
|
| - // Schedules a call to GetAccessPointRlz() on the I/O thread if the current
|
| - // thread is not already the I/O thread, otherwise does nothing. Returns
|
| - // true if the call was scheduled, and false otherwise. This method is
|
| - // virtual to allow tests to override how the scheduling is done.
|
| - virtual bool ScheduleGetAccessPointRlz(rlz_lib::AccessPoint point);
|
| -
|
| - // Sends the financial ping to the RLZ servers. This method is virtual to
|
| - // allow tests to override.
|
| - virtual bool SendFinancialPing(const std::string& brand,
|
| - const base::string16& lang,
|
| - const base::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
|
| -
|
| - // Returns a pointer to the bool corresponding to whether |point| has been
|
| - // used but not reported.
|
| - bool* GetAccessPointRecord(rlz_lib::AccessPoint point);
|
| -
|
| - // 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_;
|
| -
|
| - // Configuation data for RLZ tracker. Set by call to Init().
|
| - bool first_run_;
|
| - bool send_ping_immediately_;
|
| - bool is_google_default_search_;
|
| - bool is_google_homepage_;
|
| - bool is_google_in_startpages_;
|
| -
|
| - // Unique sequence token so that tasks posted by RLZTracker are executed
|
| - // sequentially in the blocking pool.
|
| - base::SequencedWorkerPool::SequenceToken worker_pool_token_;
|
| -
|
| - // Keeps track if the RLZ tracker has already performed its delayed
|
| - // initialization.
|
| - bool already_ran_;
|
| -
|
| - // Keeps a cache of RLZ access point strings, since they rarely change.
|
| - // The cache must be protected by a lock since it may be accessed from
|
| - // the UI thread for reading and the IO thread for reading and/or writing.
|
| - base::Lock cache_lock_;
|
| - std::map<rlz_lib::AccessPoint, base::string16> rlz_cache_;
|
| -
|
| - // Keeps track of whether the omnibox, home page or app list have been used.
|
| - bool omnibox_used_;
|
| - bool homepage_used_;
|
| - bool app_list_used_;
|
| -
|
| - // Main and (optionally) reactivation brand codes, assigned on UI thread.
|
| - 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)
|
| -
|
| -#endif // CHROME_BROWSER_RLZ_RLZ_H_
|
|
|