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 #include "chrome/browser/background/background_application_list_model.h" | 5 #include "chrome/browser/background/background_application_list_model.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
11 #include "base/utf_string_conversions.h" | 11 #include "base/utf_string_conversions.h" |
12 #include "chrome/app/chrome_command_ids.h" | 12 #include "chrome/app/chrome_command_ids.h" |
13 #include "chrome/browser/background/background_contents_service.h" | 13 #include "chrome/browser/background/background_contents_service.h" |
14 #include "chrome/browser/background/background_contents_service_factory.h" | 14 #include "chrome/browser/background/background_contents_service_factory.h" |
15 #include "chrome/browser/background/background_mode_manager.h" | 15 #include "chrome/browser/background/background_mode_manager.h" |
16 #include "chrome/browser/browser_process.h" | 16 #include "chrome/browser/browser_process.h" |
17 #include "chrome/browser/extensions/extension_prefs.h" | 17 #include "chrome/browser/extensions/extension_prefs.h" |
18 #include "chrome/browser/extensions/extension_service.h" | 18 #include "chrome/browser/extensions/extension_service.h" |
| 19 #include "chrome/browser/extensions/extension_system.h" |
19 #include "chrome/browser/extensions/image_loader.h" | 20 #include "chrome/browser/extensions/image_loader.h" |
20 #include "chrome/browser/profiles/profile.h" | 21 #include "chrome/browser/profiles/profile.h" |
21 #include "chrome/common/chrome_notification_types.h" | 22 #include "chrome/common/chrome_notification_types.h" |
22 #include "chrome/common/extensions/extension.h" | 23 #include "chrome/common/extensions/extension.h" |
23 #include "chrome/common/extensions/extension_constants.h" | 24 #include "chrome/common/extensions/extension_constants.h" |
24 #include "chrome/common/extensions/extension_icon_set.h" | 25 #include "chrome/common/extensions/extension_icon_set.h" |
25 #include "chrome/common/extensions/extension_resource.h" | 26 #include "chrome/common/extensions/extension_resource.h" |
26 #include "chrome/common/extensions/permissions/permission_set.h" | 27 #include "chrome/common/extensions/permissions/permission_set.h" |
27 #include "content/public/browser/notification_details.h" | 28 #include "content/public/browser/notification_details.h" |
28 #include "content/public/browser/notification_source.h" | 29 #include "content/public/browser/notification_source.h" |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 content::Source<Profile>(profile)); | 175 content::Source<Profile>(profile)); |
175 registrar_.Add(this, | 176 registrar_.Add(this, |
176 chrome::NOTIFICATION_EXTENSIONS_READY, | 177 chrome::NOTIFICATION_EXTENSIONS_READY, |
177 content::Source<Profile>(profile)); | 178 content::Source<Profile>(profile)); |
178 registrar_.Add(this, | 179 registrar_.Add(this, |
179 chrome::NOTIFICATION_EXTENSION_PERMISSIONS_UPDATED, | 180 chrome::NOTIFICATION_EXTENSION_PERMISSIONS_UPDATED, |
180 content::Source<Profile>(profile)); | 181 content::Source<Profile>(profile)); |
181 registrar_.Add(this, | 182 registrar_.Add(this, |
182 chrome::NOTIFICATION_BACKGROUND_CONTENTS_SERVICE_CHANGED, | 183 chrome::NOTIFICATION_BACKGROUND_CONTENTS_SERVICE_CHANGED, |
183 content::Source<Profile>(profile)); | 184 content::Source<Profile>(profile)); |
184 ExtensionService* service = profile->GetExtensionService(); | 185 ExtensionService* service = extensions::ExtensionSystem::Get(profile)-> |
| 186 extension_service(); |
185 if (service && service->is_ready()) | 187 if (service && service->is_ready()) |
186 Update(); | 188 Update(); |
187 } | 189 } |
188 | 190 |
189 void BackgroundApplicationListModel::AddObserver(Observer* observer) { | 191 void BackgroundApplicationListModel::AddObserver(Observer* observer) { |
190 observers_.AddObserver(observer); | 192 observers_.AddObserver(observer); |
191 } | 193 } |
192 | 194 |
193 void BackgroundApplicationListModel::AssociateApplicationData( | 195 void BackgroundApplicationListModel::AssociateApplicationData( |
194 const Extension* extension) { | 196 const Extension* extension) { |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 } | 307 } |
306 | 308 |
307 void BackgroundApplicationListModel::Observe( | 309 void BackgroundApplicationListModel::Observe( |
308 int type, | 310 int type, |
309 const content::NotificationSource& source, | 311 const content::NotificationSource& source, |
310 const content::NotificationDetails& details) { | 312 const content::NotificationDetails& details) { |
311 if (type == chrome::NOTIFICATION_EXTENSIONS_READY) { | 313 if (type == chrome::NOTIFICATION_EXTENSIONS_READY) { |
312 Update(); | 314 Update(); |
313 return; | 315 return; |
314 } | 316 } |
315 ExtensionService* service = profile_->GetExtensionService(); | 317 ExtensionService* service = extensions::ExtensionSystem::Get(profile_)-> |
| 318 extension_service(); |
316 if (!service || !service->is_ready()) | 319 if (!service || !service->is_ready()) |
317 return; | 320 return; |
318 | 321 |
319 switch (type) { | 322 switch (type) { |
320 case chrome::NOTIFICATION_EXTENSION_LOADED: | 323 case chrome::NOTIFICATION_EXTENSION_LOADED: |
321 OnExtensionLoaded(content::Details<Extension>(details).ptr()); | 324 OnExtensionLoaded(content::Details<Extension>(details).ptr()); |
322 break; | 325 break; |
323 case chrome::NOTIFICATION_EXTENSION_UNLOADED: | 326 case chrome::NOTIFICATION_EXTENSION_UNLOADED: |
324 OnExtensionUnloaded( | 327 OnExtensionUnloaded( |
325 content::Details<UnloadedExtensionInfo>(details)->extension); | 328 content::Details<UnloadedExtensionInfo>(details)->extension); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 | 387 |
385 void BackgroundApplicationListModel::RemoveObserver(Observer* observer) { | 388 void BackgroundApplicationListModel::RemoveObserver(Observer* observer) { |
386 observers_.RemoveObserver(observer); | 389 observers_.RemoveObserver(observer); |
387 } | 390 } |
388 | 391 |
389 // Update queries the extensions service of the profile with which the model was | 392 // Update queries the extensions service of the profile with which the model was |
390 // initialized to determine the current set of background applications. If that | 393 // initialized to determine the current set of background applications. If that |
391 // differs from the old list, it generates OnApplicationListChanged events for | 394 // differs from the old list, it generates OnApplicationListChanged events for |
392 // each observer. | 395 // each observer. |
393 void BackgroundApplicationListModel::Update() { | 396 void BackgroundApplicationListModel::Update() { |
394 ExtensionService* service = profile_->GetExtensionService(); | 397 ExtensionService* service = extensions::ExtensionSystem::Get(profile_)-> |
| 398 extension_service(); |
395 | 399 |
396 // Discover current background applications, compare with previous list, which | 400 // Discover current background applications, compare with previous list, which |
397 // is consistently sorted, and notify observers if they differ. | 401 // is consistently sorted, and notify observers if they differ. |
398 ExtensionList extensions; | 402 ExtensionList extensions; |
399 GetServiceApplications(service, &extensions); | 403 GetServiceApplications(service, &extensions); |
400 ExtensionList::const_iterator old_cursor = extensions_.begin(); | 404 ExtensionList::const_iterator old_cursor = extensions_.begin(); |
401 ExtensionList::const_iterator new_cursor = extensions.begin(); | 405 ExtensionList::const_iterator new_cursor = extensions.begin(); |
402 while (old_cursor != extensions_.end() && | 406 while (old_cursor != extensions_.end() && |
403 new_cursor != extensions.end() && | 407 new_cursor != extensions.end() && |
404 (*old_cursor)->name() == (*new_cursor)->name() && | 408 (*old_cursor)->name() == (*new_cursor)->name() && |
405 (*old_cursor)->id() == (*new_cursor)->id()) { | 409 (*old_cursor)->id() == (*new_cursor)->id()) { |
406 ++old_cursor; | 410 ++old_cursor; |
407 ++new_cursor; | 411 ++new_cursor; |
408 } | 412 } |
409 if (old_cursor != extensions_.end() || new_cursor != extensions.end()) { | 413 if (old_cursor != extensions_.end() || new_cursor != extensions.end()) { |
410 extensions_ = extensions; | 414 extensions_ = extensions; |
411 FOR_EACH_OBSERVER(Observer, observers_, OnApplicationListChanged(profile_)); | 415 FOR_EACH_OBSERVER(Observer, observers_, OnApplicationListChanged(profile_)); |
412 } | 416 } |
413 } | 417 } |
OLD | NEW |