start_page_service.h revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
175a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org// Copyright 2013 The Chromium Authors. All rights reserved. 275a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org// Use of this source code is governed by a BSD-style license that can be 375a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org// found in the LICENSE file. 475a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org 575a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org#ifndef CHROME_BROWSER_UI_APP_LIST_START_PAGE_SERVICE_H_ 675a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org#define CHROME_BROWSER_UI_APP_LIST_START_PAGE_SERVICE_H_ 775a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org 875a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org#include <vector> 975a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org 1075a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org#include "base/basictypes.h" 1175a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org#include "base/memory/ref_counted.h" 1275a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org#include "base/memory/scoped_ptr.h" 1375a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org#include "components/browser_context_keyed_service/browser_context_keyed_service.h" 1475a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org#include "content/public/browser/web_contents.h" 1575a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org 1675a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.orgnamespace extensions { 176c42355ce8c105bbadf57deb999c777b5c49df59roubert@google.comclass Extension; 186c42355ce8c105bbadf57deb999c777b5c49df59roubert@google.com} 1975a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org 2075a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.orgclass Profile; 2175a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org 2275a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.orgnamespace app_list { 2375a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org 2475a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.orgclass RecommendedApps; 2575a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org 2675a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org// StartPageService collects data to be displayed in app list's start page 2775a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org// and hosts the start page contents. 2875a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.orgclass StartPageService : public BrowserContextKeyedService { 2975a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org public: 3090e624a56973856b6b81112fc1cd815a4224aa96roubert@google.com typedef std::vector<scoped_refptr<const extensions::Extension> > 3190e624a56973856b6b81112fc1cd815a4224aa96roubert@google.com ExtensionList; 3290e624a56973856b6b81112fc1cd815a4224aa96roubert@google.com // Gets the instance for the given profile. 3390e624a56973856b6b81112fc1cd815a4224aa96roubert@google.com static StartPageService* Get(Profile* profile); 3490e624a56973856b6b81112fc1cd815a4224aa96roubert@google.com 3590e624a56973856b6b81112fc1cd815a4224aa96roubert@google.com content::WebContents* contents() { return contents_.get(); } 3675a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org RecommendedApps* recommended_apps() { return recommended_apps_.get(); } 3775a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org 3875a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org private: 3975a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org // A BrowserContextKeyedServiceFactory for this service. 4075a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org class Factory; 4175a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org 4290e624a56973856b6b81112fc1cd815a4224aa96roubert@google.com // ExitObserver to shutdown the service on exiting. WebContents depends 4375a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org // on the profile and needs to be closed before the profile and its 4475a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org // keyed service shutdown. 4575a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org class ExitObserver; 4675a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org 476c42355ce8c105bbadf57deb999c777b5c49df59roubert@google.com explicit StartPageService(Profile* profile); 4875a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org virtual ~StartPageService(); 496c42355ce8c105bbadf57deb999c777b5c49df59roubert@google.com 506c42355ce8c105bbadf57deb999c777b5c49df59roubert@google.com // BrowserContextKeyedService overrides: 516c42355ce8c105bbadf57deb999c777b5c49df59roubert@google.com virtual void Shutdown() OVERRIDE; 5275a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org 5375a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org Profile* profile_; 5475a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org scoped_ptr<content::WebContents> contents_; 5575a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org scoped_ptr<ExitObserver> exit_observer_; 5675a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org scoped_ptr<RecommendedApps> recommended_apps_; 5775a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org 5875a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org DISALLOW_COPY_AND_ASSIGN(StartPageService); 5975a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org}; 6075a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org 6175a0cfdaa6edd47c9917172fa57701b5d22e83efrouslan@chromium.org} // namespace app_list 6290e624a56973856b6b81112fc1cd815a4224aa96roubert@google.com 6390e624a56973856b6b81112fc1cd815a4224aa96roubert@google.com#endif // CHROME_BROWSER_UI_APP_LIST_START_PAGE_SERVICE_H_ 6490e624a56973856b6b81112fc1cd815a4224aa96roubert@google.com