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) 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/memory/weak_ptr.h" 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/scoped_observer.h" 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/profiles/profile_info_cache_observer.h" 11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/core/keyed_service.h" 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "extensions/browser/extension_registry_observer.h" 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/extension.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass PrefService; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Profile; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace extensions { 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class ExtensionRegistry; 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace user_prefs { 234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class PrefRegistrySyncable; 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// This class manages the installation of shortcuts for platform apps. 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class AppShortcutManager : public KeyedService, 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public extensions::ExtensionRegistryObserver, 29558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch public ProfileInfoCacheObserver { 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); 324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 33558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch explicit AppShortcutManager(Profile* profile); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 35558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch virtual ~AppShortcutManager(); 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // Updates all shortcuts if kAppShortcutsVersion in prefs is less than 3846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // kCurrentAppShortcutsVersion. 3946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) void UpdateShortcutsForAllAppsIfNeeded(); 400f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // extensions::ExtensionRegistryObserver. 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void OnExtensionWillBeInstalled( 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::BrowserContext* browser_context, 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const extensions::Extension* extension, 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool is_update, 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool from_ephemeral, 47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const std::string& old_name) OVERRIDE; 48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void OnExtensionUninstalled( 49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::BrowserContext* browser_context, 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const extensions::Extension* extension, 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) extensions::UninstallReason reason) OVERRIDE; 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // ProfileInfoCacheObserver. 54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnProfileWillBeRemoved( 55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::FilePath& profile_path) OVERRIDE; 56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void DeleteApplicationShortcuts(const extensions::Extension* extension); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Profile* profile_; 61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool is_profile_info_cache_observer_; 62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PrefService* prefs_; 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ScopedObserver<extensions::ExtensionRegistry, 65cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) extensions::ExtensionRegistryObserver> 66cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) extension_registry_observer_; 67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::WeakPtrFactory<AppShortcutManager> weak_ptr_factory_; 69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 70558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch DISALLOW_COPY_AND_ASSIGN(AppShortcutManager); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 73558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#endif // CHROME_BROWSER_APPS_SHORTCUT_MANAGER_H_ 74