OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_BACKGROUND_BACKGROUND_CONTENTS_SERVICE_H_ | 5 #ifndef CHROME_BROWSER_BACKGROUND_BACKGROUND_CONTENTS_SERVICE_H_ |
6 #define CHROME_BROWSER_BACKGROUND_BACKGROUND_CONTENTS_SERVICE_H_ | 6 #define CHROME_BROWSER_BACKGROUND_BACKGROUND_CONTENTS_SERVICE_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 // It is also responsible for tracking the association between | 52 // It is also responsible for tracking the association between |
53 // BackgroundContents and their parent app, and shutting them down when the | 53 // BackgroundContents and their parent app, and shutting them down when the |
54 // parent app is unloaded. | 54 // parent app is unloaded. |
55 class BackgroundContentsService : private content::NotificationObserver, | 55 class BackgroundContentsService : private content::NotificationObserver, |
56 public extensions::ExtensionRegistryObserver, | 56 public extensions::ExtensionRegistryObserver, |
57 public BackgroundContents::Delegate, | 57 public BackgroundContents::Delegate, |
58 public KeyedService { | 58 public KeyedService { |
59 public: | 59 public: |
60 BackgroundContentsService(Profile* profile, | 60 BackgroundContentsService(Profile* profile, |
61 const base::CommandLine* command_line); | 61 const base::CommandLine* command_line); |
62 virtual ~BackgroundContentsService(); | 62 ~BackgroundContentsService() override; |
63 | 63 |
64 // Allows tests to reduce the time between a force-installed app/extension | 64 // Allows tests to reduce the time between a force-installed app/extension |
65 // crashing and when we reload it. | 65 // crashing and when we reload it. |
66 static void SetRestartDelayForForceInstalledAppsAndExtensionsForTesting( | 66 static void SetRestartDelayForForceInstalledAppsAndExtensionsForTesting( |
67 int restart_delay_in_ms); | 67 int restart_delay_in_ms); |
68 | 68 |
69 // Get the crash notification's delegate id for the extension. | 69 // Get the crash notification's delegate id for the extension. |
70 static std::string GetNotificationDelegateIdForExtensionForTesting( | 70 static std::string GetNotificationDelegateIdForExtensionForTesting( |
71 const std::string& extension_id); | 71 const std::string& extension_id); |
72 | 72 |
73 // Show a popup notification balloon with a crash message for a given app/ | 73 // Show a popup notification balloon with a crash message for a given app/ |
74 // extension. | 74 // extension. |
75 static void ShowBalloonForTesting(const extensions::Extension* extension, | 75 static void ShowBalloonForTesting(const extensions::Extension* extension, |
76 Profile* profile); | 76 Profile* profile); |
77 | 77 |
78 // Returns the BackgroundContents associated with the passed application id, | 78 // Returns the BackgroundContents associated with the passed application id, |
79 // or NULL if none. | 79 // or NULL if none. |
80 BackgroundContents* GetAppBackgroundContents(const base::string16& appid); | 80 BackgroundContents* GetAppBackgroundContents(const base::string16& appid); |
81 | 81 |
82 // Returns true if there's a registered BackgroundContents for this app. It | 82 // Returns true if there's a registered BackgroundContents for this app. It |
83 // is possible for this routine to return true when GetAppBackgroundContents() | 83 // is possible for this routine to return true when GetAppBackgroundContents() |
84 // returns false, if the BackgroundContents closed due to the render process | 84 // returns false, if the BackgroundContents closed due to the render process |
85 // crashing. | 85 // crashing. |
86 bool HasRegisteredBackgroundContents(const base::string16& appid); | 86 bool HasRegisteredBackgroundContents(const base::string16& appid); |
87 | 87 |
88 // Returns all currently opened BackgroundContents (used by the task manager). | 88 // Returns all currently opened BackgroundContents (used by the task manager). |
89 std::vector<BackgroundContents*> GetBackgroundContents() const; | 89 std::vector<BackgroundContents*> GetBackgroundContents() const; |
90 | 90 |
91 // BackgroundContents::Delegate implementation. | 91 // BackgroundContents::Delegate implementation. |
92 virtual void AddWebContents(content::WebContents* new_contents, | 92 void AddWebContents(content::WebContents* new_contents, |
93 WindowOpenDisposition disposition, | 93 WindowOpenDisposition disposition, |
94 const gfx::Rect& initial_pos, | 94 const gfx::Rect& initial_pos, |
95 bool user_gesture, | 95 bool user_gesture, |
96 bool* was_blocked) override; | 96 bool* was_blocked) override; |
97 | 97 |
98 // Gets the parent application id for the passed BackgroundContents. Returns | 98 // Gets the parent application id for the passed BackgroundContents. Returns |
99 // an empty string if no parent application found (e.g. passed | 99 // an empty string if no parent application found (e.g. passed |
100 // BackgroundContents has already shut down). | 100 // BackgroundContents has already shut down). |
101 const base::string16& GetParentApplicationId(BackgroundContents* contents) con
st; | 101 const base::string16& GetParentApplicationId(BackgroundContents* contents) con
st; |
102 | 102 |
103 // Creates a new BackgroundContents using the passed |site| and | 103 // Creates a new BackgroundContents using the passed |site| and |
104 // the |route_id| and begins tracking the object internally so it can be | 104 // the |route_id| and begins tracking the object internally so it can be |
105 // shutdown if the parent application is uninstalled. | 105 // shutdown if the parent application is uninstalled. |
106 // A BACKGROUND_CONTENTS_OPENED notification will be generated with the passed | 106 // A BACKGROUND_CONTENTS_OPENED notification will be generated with the passed |
(...skipping 26 matching lines...) Expand all Loading... |
133 TestApplicationIDLinkage); | 133 TestApplicationIDLinkage); |
134 FRIEND_TEST_ALL_PREFIXES(TaskManagerNoShowBrowserTest, | 134 FRIEND_TEST_ALL_PREFIXES(TaskManagerNoShowBrowserTest, |
135 NoticeBGContentsChanges); | 135 NoticeBGContentsChanges); |
136 FRIEND_TEST_ALL_PREFIXES(TaskManagerNoShowBrowserTest, | 136 FRIEND_TEST_ALL_PREFIXES(TaskManagerNoShowBrowserTest, |
137 KillBGContents); | 137 KillBGContents); |
138 | 138 |
139 // Registers for various notifications. | 139 // Registers for various notifications. |
140 void StartObserving(Profile* profile); | 140 void StartObserving(Profile* profile); |
141 | 141 |
142 // content::NotificationObserver implementation. | 142 // content::NotificationObserver implementation. |
143 virtual void Observe(int type, | 143 void Observe(int type, |
144 const content::NotificationSource& source, | 144 const content::NotificationSource& source, |
145 const content::NotificationDetails& details) override; | 145 const content::NotificationDetails& details) override; |
146 | 146 |
147 // extensions::ExtensionRegistryObserver implementation. | 147 // extensions::ExtensionRegistryObserver implementation. |
148 virtual void OnExtensionLoaded( | 148 void OnExtensionLoaded(content::BrowserContext* browser_context, |
149 content::BrowserContext* browser_context, | 149 const extensions::Extension* extension) override; |
150 const extensions::Extension* extension) override; | 150 void OnExtensionUnloaded( |
151 virtual void OnExtensionUnloaded( | |
152 content::BrowserContext* browser_context, | 151 content::BrowserContext* browser_context, |
153 const extensions::Extension* extension, | 152 const extensions::Extension* extension, |
154 extensions::UnloadedExtensionInfo::Reason reason) override; | 153 extensions::UnloadedExtensionInfo::Reason reason) override; |
155 virtual void OnExtensionUninstalled( | 154 void OnExtensionUninstalled(content::BrowserContext* browser_context, |
156 content::BrowserContext* browser_context, | 155 const extensions::Extension* extension, |
157 const extensions::Extension* extension, | 156 extensions::UninstallReason reason) override; |
158 extensions::UninstallReason reason) override; | |
159 | 157 |
160 // Restarts a force-installed app/extension after a crash. | 158 // Restarts a force-installed app/extension after a crash. |
161 void RestartForceInstalledExtensionOnCrash( | 159 void RestartForceInstalledExtensionOnCrash( |
162 const extensions::Extension* extension, | 160 const extensions::Extension* extension, |
163 Profile* profile); | 161 Profile* profile); |
164 | 162 |
165 // Loads all registered BackgroundContents at startup. | 163 // Loads all registered BackgroundContents at startup. |
166 void LoadBackgroundContentsFromPrefs(Profile* profile); | 164 void LoadBackgroundContentsFromPrefs(Profile* profile); |
167 | 165 |
168 // Load a BackgroundContent; the settings are read from the provided | 166 // Load a BackgroundContent; the settings are read from the provided |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 BackgroundContentsMap contents_map_; | 235 BackgroundContentsMap contents_map_; |
238 | 236 |
239 ScopedObserver<extensions::ExtensionRegistry, | 237 ScopedObserver<extensions::ExtensionRegistry, |
240 extensions::ExtensionRegistryObserver> | 238 extensions::ExtensionRegistryObserver> |
241 extension_registry_observer_; | 239 extension_registry_observer_; |
242 | 240 |
243 DISALLOW_COPY_AND_ASSIGN(BackgroundContentsService); | 241 DISALLOW_COPY_AND_ASSIGN(BackgroundContentsService); |
244 }; | 242 }; |
245 | 243 |
246 #endif // CHROME_BROWSER_BACKGROUND_BACKGROUND_CONTENTS_SERVICE_H_ | 244 #endif // CHROME_BROWSER_BACKGROUND_BACKGROUND_CONTENTS_SERVICE_H_ |
OLD | NEW |