1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#ifndef CHROME_BROWSER_EXTENSIONS_API_SPELLCHECK_SPELLCHECK_API_H_ 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define CHROME_BROWSER_EXTENSIONS_API_SPELLCHECK_SPELLCHECK_API_H_ 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/scoped_observer.h" 9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "extensions/browser/browser_context_keyed_api_factory.h" 105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "extensions/browser/extension_registry_observer.h" 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace extensions { 135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuclass ExtensionRegistry; 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class SpellcheckAPI : public BrowserContextKeyedAPI, 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu public ExtensionRegistryObserver { 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) explicit SpellcheckAPI(content::BrowserContext* context); 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual ~SpellcheckAPI(); 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // BrowserContextKeyedAPI implementation. 22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static BrowserContextKeyedAPIFactory<SpellcheckAPI>* GetFactoryInstance(); 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) friend class BrowserContextKeyedAPIFactory<SpellcheckAPI>; 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // ExtensionRegistryObserver implementation. 285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu virtual void OnExtensionLoaded(content::BrowserContext* browser_context, 295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const Extension* extension) OVERRIDE; 305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu virtual void OnExtensionUnloaded( 315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu content::BrowserContext* browser_context, 325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const Extension* extension, 335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu UnloadedExtensionInfo::Reason reason) OVERRIDE; 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // BrowserContextKeyedAPI implementation. 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static const char* service_name() { 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "SpellcheckAPI"; 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // Listen to extension load, unloaded notifications. 415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver> 425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu extension_registry_observer_; 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(SpellcheckAPI); 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)template <> 48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void BrowserContextKeyedAPIFactory<SpellcheckAPI>::DeclareFactoryDependencies(); 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace extensions 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif // CHROME_BROWSER_EXTENSIONS_API_SPELLCHECK_SPELLCHECK_API_H_ 53