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