Home | History | Annotate | Download | only in google
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/google/google_url_tracker_factory.h"
      6 
      7 #include "base/prefs/pref_service.h"
      8 #include "chrome/browser/google/google_url_tracker.h"
      9 #include "chrome/browser/google/google_url_tracker_navigation_helper_impl.h"
     10 #include "chrome/browser/profiles/incognito_helpers.h"
     11 #include "chrome/browser/profiles/profile.h"
     12 #include "chrome/common/pref_names.h"
     13 #include "components/browser_context_keyed_service/browser_context_dependency_manager.h"
     14 #include "components/user_prefs/pref_registry_syncable.h"
     15 
     16 
     17 // static
     18 GoogleURLTracker* GoogleURLTrackerFactory::GetForProfile(Profile* profile) {
     19   return static_cast<GoogleURLTracker*>(
     20       GetInstance()->GetServiceForBrowserContext(profile, true));
     21 }
     22 
     23 // static
     24 GoogleURLTrackerFactory* GoogleURLTrackerFactory::GetInstance() {
     25   return Singleton<GoogleURLTrackerFactory>::get();
     26 }
     27 
     28 GoogleURLTrackerFactory::GoogleURLTrackerFactory()
     29     : BrowserContextKeyedServiceFactory(
     30         "GoogleURLTracker",
     31         BrowserContextDependencyManager::GetInstance()) {
     32 }
     33 
     34 GoogleURLTrackerFactory::~GoogleURLTrackerFactory() {
     35 }
     36 
     37 BrowserContextKeyedService* GoogleURLTrackerFactory::BuildServiceInstanceFor(
     38     content::BrowserContext* profile) const {
     39   scoped_ptr<GoogleURLTrackerNavigationHelper> nav_helper(
     40       new GoogleURLTrackerNavigationHelperImpl());
     41   return new GoogleURLTracker(static_cast<Profile*>(profile), nav_helper.Pass(),
     42                               GoogleURLTracker::NORMAL_MODE);
     43 }
     44 
     45 void GoogleURLTrackerFactory::RegisterProfilePrefs(
     46     user_prefs::PrefRegistrySyncable* user_prefs) {
     47   user_prefs->RegisterStringPref(
     48       prefs::kLastKnownGoogleURL,
     49       GoogleURLTracker::kDefaultGoogleHomepage,
     50       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
     51   user_prefs->RegisterStringPref(
     52       prefs::kLastPromptedGoogleURL,
     53       std::string(),
     54       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
     55 }
     56 
     57 content::BrowserContext* GoogleURLTrackerFactory::GetBrowserContextToUse(
     58     content::BrowserContext* context) const {
     59   return chrome::GetBrowserContextRedirectedInIncognito(context);
     60 }
     61 
     62 bool GoogleURLTrackerFactory::ServiceIsCreatedWithBrowserContext() const {
     63   return true;
     64 }
     65 
     66 bool GoogleURLTrackerFactory::ServiceIsNULLWhileTesting() const {
     67   return true;
     68 }
     69