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/ui/find_bar/find_bar_state_factory.h" 6 7 #include "chrome/browser/profiles/incognito_helpers.h" 8 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/ui/find_bar/find_bar_state.h" 10 #include "components/keyed_service/content/browser_context_dependency_manager.h" 11 12 // static 13 FindBarState* FindBarStateFactory::GetForProfile(Profile* profile) { 14 return static_cast<FindBarState*>( 15 GetInstance()->GetServiceForBrowserContext(profile, true)); 16 } 17 18 // static 19 base::string16 FindBarStateFactory::GetLastPrepopulateText(Profile* p) { 20 FindBarState* state = GetForProfile(p); 21 base::string16 text = state->last_prepopulate_text(); 22 23 if (text.empty() && p->IsOffTheRecord()) { 24 // Fall back to the original profile. 25 state = GetForProfile(p->GetOriginalProfile()); 26 text = state->last_prepopulate_text(); 27 } 28 29 return text; 30 } 31 32 // static 33 FindBarStateFactory* FindBarStateFactory::GetInstance() { 34 return Singleton<FindBarStateFactory>::get(); 35 } 36 37 FindBarStateFactory::FindBarStateFactory() 38 : BrowserContextKeyedServiceFactory( 39 "FindBarState", 40 BrowserContextDependencyManager::GetInstance()) { 41 } 42 43 FindBarStateFactory::~FindBarStateFactory() {} 44 45 KeyedService* FindBarStateFactory::BuildServiceInstanceFor( 46 content::BrowserContext* profile) const { 47 return new FindBarState; 48 } 49 50 content::BrowserContext* FindBarStateFactory::GetBrowserContextToUse( 51 content::BrowserContext* context) const { 52 return chrome::GetBrowserContextOwnInstanceInIncognito(context); 53 } 54