| Index: chrome/browser/rlz/rlz.cc
|
| ===================================================================
|
| --- chrome/browser/rlz/rlz.cc (revision 88522)
|
| +++ chrome/browser/rlz/rlz.cc (working copy)
|
| @@ -23,8 +23,6 @@
|
| #include "base/threading/thread_restrictions.h"
|
| #include "base/utf_string_conversions.h"
|
| #include "chrome/browser/browser_process.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| -#include "chrome/browser/profiles/profile_manager.h"
|
| #include "chrome/browser/search_engines/template_url.h"
|
| #include "chrome/browser/search_engines/template_url_service.h"
|
| #include "chrome/browser/search_engines/template_url_service_factory.h"
|
| @@ -68,9 +66,11 @@
|
| // the user first interacted with the omnibox and set a global accordingly.
|
| class OmniBoxUsageObserver : public NotificationObserver {
|
| public:
|
| - OmniBoxUsageObserver(bool first_run, bool send_ping_immediately)
|
| + OmniBoxUsageObserver(bool first_run, bool send_ping_immediately,
|
| + bool google_default_search)
|
| : first_run_(first_run),
|
| - send_ping_immediately_(send_ping_immediately) {
|
| + send_ping_immediately_(send_ping_immediately),
|
| + google_default_search_(google_default_search) {
|
| registrar_.Add(this, NotificationType::OMNIBOX_OPENED_URL,
|
| NotificationService::AllSources());
|
| // If instant is enabled we'll start searching as soon as the user starts
|
| @@ -112,6 +112,7 @@
|
| NotificationRegistrar registrar_;
|
| bool first_run_;
|
| bool send_ping_immediately_;
|
| + bool google_default_search_;
|
| };
|
|
|
| bool OmniBoxUsageObserver::omnibox_used_ = false;
|
| @@ -160,8 +161,9 @@
|
| // This task needs to run on the UI thread.
|
| class DelayedInitTask : public Task {
|
| public:
|
| - explicit DelayedInitTask(bool first_run)
|
| - : first_run_(first_run) {
|
| + explicit DelayedInitTask(bool first_run, bool google_default_search)
|
| + : first_run_(first_run),
|
| + google_default_search_(google_default_search) {
|
| }
|
| virtual ~DelayedInitTask() {
|
| }
|
| @@ -195,7 +197,7 @@
|
| rlz_lib::CHROME_HOME_PAGE,
|
| rlz_lib::INSTALL);
|
| // Record if google is the initial search provider.
|
| - if (IsGoogleDefaultSearch()) {
|
| + if (google_default_search_) {
|
| RLZTracker::RecordProductEvent(rlz_lib::CHROME,
|
| rlz_lib::CHROME_OMNIBOX,
|
| rlz_lib::SET_TO_GOOGLE);
|
| @@ -213,26 +215,6 @@
|
| }
|
|
|
| private:
|
| - bool IsGoogleDefaultSearch() {
|
| - if (!g_browser_process)
|
| - return false;
|
| - FilePath user_data_dir;
|
| - if (!PathService::Get(chrome::DIR_USER_DATA, &user_data_dir))
|
| - return false;
|
| - ProfileManager* profile_manager = g_browser_process->profile_manager();
|
| - Profile* profile = profile_manager->GetDefaultProfile(user_data_dir);
|
| - if (!profile)
|
| - return false;
|
| - const TemplateURL* url_template = TemplateURLServiceFactory::GetForProfile(
|
| - profile)->GetDefaultSearchProvider();
|
| - if (!url_template)
|
| - return false;
|
| - const TemplateURLRef* urlref = url_template->url();
|
| - if (!urlref)
|
| - return false;
|
| - return urlref->HasGoogleBaseURLs();
|
| - }
|
| -
|
| // Flag that remembers if the delayed task already ran or not. This is
|
| // needed only in the first_run case, since we don't want to record the
|
| // set-to-google event more than once. We need to worry about this event
|
| @@ -240,7 +222,11 @@
|
| static bool already_ran_;
|
|
|
| bool first_run_;
|
| - DISALLOW_IMPLICIT_CONSTRUCTORS(DelayedInitTask);
|
| +
|
| + // True if Google is the default search engine for the first profile starting
|
| + // in a browser during first run.
|
| + bool google_default_search_;
|
| +
|
| };
|
|
|
| bool DelayedInitTask::already_ran_ = false;
|
| @@ -259,7 +245,8 @@
|
| omnibox_used_ = true;
|
| else if (send_ping_immediately_) {
|
| BrowserThread::PostTask(
|
| - BrowserThread::FILE, FROM_HERE, new DelayedInitTask(first_run_));
|
| + BrowserThread::FILE, FROM_HERE, new DelayedInitTask(first_run_,
|
| + google_default_search_));
|
| }
|
|
|
| delete this;
|
| @@ -267,7 +254,8 @@
|
|
|
| } // namespace
|
|
|
| -bool RLZTracker::InitRlzDelayed(bool first_run, int delay) {
|
| +bool RLZTracker::InitRlzDelayed(bool first_run, int delay,
|
| + bool google_default_search) {
|
| // A negative delay means that a financial ping should be sent immediately
|
| // after a first search is recorded, without waiting for the next restart
|
| // of chrome. However, we only want this behaviour on first run.
|
| @@ -287,11 +275,15 @@
|
| delay = (delay > kMaxDelay) ? kMaxDelay : delay;
|
|
|
| if (!OmniBoxUsageObserver::used())
|
| - new OmniBoxUsageObserver(first_run, send_ping_immediately);
|
| + new OmniBoxUsageObserver(first_run, send_ping_immediately,
|
| + google_default_search);
|
|
|
| // Schedule the delayed init items.
|
| BrowserThread::PostDelayedTask(
|
| - BrowserThread::FILE, FROM_HERE, new DelayedInitTask(first_run), delay);
|
| + BrowserThread::FILE,
|
| + FROM_HERE,
|
| + new DelayedInitTask(first_run, google_default_search),
|
| + delay);
|
| return true;
|
| }
|
|
|
|
|