shortcut_manager.h revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
1558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#ifndef CHROME_BROWSER_APPS_SHORTCUT_MANAGER_H_ 6558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#define CHROME_BROWSER_APPS_SHORTCUT_MANAGER_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/weak_ptr.h" 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/profiles/profile_info_cache_observer.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/extensions/extension.h" 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "components/browser_context_keyed_service/browser_context_keyed_service.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/notification_observer.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/notification_registrar.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass PrefService; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Profile; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace user_prefs { 194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class PrefRegistrySyncable; 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// This class manages the installation of shortcuts for platform apps. 23558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochclass AppShortcutManager : public BrowserContextKeyedService, 24558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch public content::NotificationObserver, 25558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch public ProfileInfoCacheObserver { 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 29558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch explicit AppShortcutManager(Profile* profile); 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 31558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch virtual ~AppShortcutManager(); 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // content::NotificationObserver 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void Observe(int type, 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const content::NotificationSource& source, 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const content::NotificationDetails& details) OVERRIDE; 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // ProfileInfoCacheObserver 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnProfileWillBeRemoved( 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::FilePath& profile_path) OVERRIDE; 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Checks if kShortcutsEnabled is set in prefs. If not, this sets it and 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // creates shortcuts for all apps. 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void OnceOffCreateShortcuts(); 46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void DeleteApplicationShortcuts(const extensions::Extension* extension); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::NotificationRegistrar registrar_; 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Profile* profile_; 51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool is_profile_info_cache_observer_; 52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PrefService* prefs_; 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Fields used when installing application shortcuts. 55558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch base::WeakPtrFactory<AppShortcutManager> weak_factory_; 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 57558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch DISALLOW_COPY_AND_ASSIGN(AppShortcutManager); 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 60558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#endif // CHROME_BROWSER_APPS_SHORTCUT_MANAGER_H_ 61