Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(448)

Side by Side Diff: chrome/browser/background/background_application_list_model.cc

Issue 314113010: Remove deprecated permissions functions from Extension (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/sha1.h" 10 #include "base/sha1.h"
(...skipping 15 matching lines...) Expand all
26 #include "extensions/browser/extension_prefs.h" 26 #include "extensions/browser/extension_prefs.h"
27 #include "extensions/browser/extension_registry.h" 27 #include "extensions/browser/extension_registry.h"
28 #include "extensions/browser/extension_system.h" 28 #include "extensions/browser/extension_system.h"
29 #include "extensions/common/extension.h" 29 #include "extensions/common/extension.h"
30 #include "extensions/common/extension_icon_set.h" 30 #include "extensions/common/extension_icon_set.h"
31 #include "extensions/common/extension_resource.h" 31 #include "extensions/common/extension_resource.h"
32 #include "extensions/common/extension_set.h" 32 #include "extensions/common/extension_set.h"
33 #include "extensions/common/manifest_handlers/background_info.h" 33 #include "extensions/common/manifest_handlers/background_info.h"
34 #include "extensions/common/manifest_handlers/icons_handler.h" 34 #include "extensions/common/manifest_handlers/icons_handler.h"
35 #include "extensions/common/permissions/permission_set.h" 35 #include "extensions/common/permissions/permission_set.h"
36 #include "extensions/common/permissions/permissions_data.h"
36 #include "ui/base/l10n/l10n_util_collator.h" 37 #include "ui/base/l10n/l10n_util_collator.h"
37 #include "ui/gfx/image/image.h" 38 #include "ui/gfx/image/image.h"
38 #include "ui/gfx/image/image_skia.h" 39 #include "ui/gfx/image/image_skia.h"
39 40
40 using extensions::APIPermission; 41 using extensions::APIPermission;
41 using extensions::Extension; 42 using extensions::Extension;
42 using extensions::ExtensionList; 43 using extensions::ExtensionList;
43 using extensions::ExtensionRegistry; 44 using extensions::ExtensionRegistry;
44 using extensions::ExtensionSet; 45 using extensions::ExtensionSet;
45 using extensions::PermissionSet; 46 using extensions::PermissionSet;
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 return position; 271 return position;
271 } 272 }
272 NOTREACHED(); 273 NOTREACHED();
273 return -1; 274 return -1;
274 } 275 }
275 276
276 // static 277 // static
277 bool BackgroundApplicationListModel::RequiresBackgroundModeForPushMessaging( 278 bool BackgroundApplicationListModel::RequiresBackgroundModeForPushMessaging(
278 const Extension& extension) { 279 const Extension& extension) {
279 // No PushMessaging permission - does not require the background mode. 280 // No PushMessaging permission - does not require the background mode.
280 if (!extension.HasAPIPermission(APIPermission::kPushMessaging)) 281 if (!extension.permissions_data()->HasAPIPermission(
282 APIPermission::kPushMessaging)) {
281 return false; 283 return false;
284 }
282 285
283 // If in the whitelist, then does not require background mode even if 286 // If in the whitelist, then does not require background mode even if
284 // uses push messaging. 287 // uses push messaging.
285 // TODO(dimich): remove this whitelist once we have a better way to keep 288 // TODO(dimich): remove this whitelist once we have a better way to keep
286 // listening for GCM. http://crbug.com/311268 289 // listening for GCM. http://crbug.com/311268
287 std::string id_hash = base::SHA1HashString(extension.id()); 290 std::string id_hash = base::SHA1HashString(extension.id());
288 std::string hexencoded_id_hash = base::HexEncode(id_hash.c_str(), 291 std::string hexencoded_id_hash = base::HexEncode(id_hash.c_str(),
289 id_hash.length()); 292 id_hash.length());
290 // The id starting from "9A04..." is a one from unit test. 293 // The id starting from "9A04..." is a one from unit test.
291 if (hexencoded_id_hash == "C41AD9DCD670210295614257EF8C9945AD68D86E" || 294 if (hexencoded_id_hash == "C41AD9DCD670210295614257EF8C9945AD68D86E" ||
292 hexencoded_id_hash == "9A0417016F345C934A1A88F55CA17C05014EEEBA") 295 hexencoded_id_hash == "9A0417016F345C934A1A88F55CA17C05014EEEBA")
293 return false; 296 return false;
294 297
295 return true; 298 return true;
296 } 299 }
297 300
298 // static 301 // static
299 bool BackgroundApplicationListModel::IsBackgroundApp( 302 bool BackgroundApplicationListModel::IsBackgroundApp(
300 const Extension& extension, Profile* profile) { 303 const Extension& extension, Profile* profile) {
301 // An extension is a "background app" if it has the "background API" 304 // An extension is a "background app" if it has the "background API"
302 // permission, and meets one of the following criteria: 305 // permission, and meets one of the following criteria:
303 // 1) It is an extension (not a hosted app). 306 // 1) It is an extension (not a hosted app).
304 // 2) It is a hosted app, and has a background contents registered or in the 307 // 2) It is a hosted app, and has a background contents registered or in the
305 // manifest. 308 // manifest.
306 309
307 // Not a background app if we don't have the background permission or 310 // Not a background app if we don't have the background permission or
308 // the push messaging permission 311 // the push messaging permission
309 if (!extension.HasAPIPermission(APIPermission::kBackground) && 312 if (!extension.permissions_data()->HasAPIPermission(
313 APIPermission::kBackground) &&
310 !RequiresBackgroundModeForPushMessaging(extension)) 314 !RequiresBackgroundModeForPushMessaging(extension))
311 return false; 315 return false;
312 316
313 // Extensions and packaged apps with background permission are always treated 317 // Extensions and packaged apps with background permission are always treated
314 // as background apps. 318 // as background apps.
315 if (!extension.is_hosted_app()) 319 if (!extension.is_hosted_app())
316 return true; 320 return true;
317 321
318 // Hosted apps with manifest-provided background pages are background apps. 322 // Hosted apps with manifest-provided background pages are background apps.
319 if (extensions::BackgroundInfo::HasBackgroundPage(&extension)) 323 if (extensions::BackgroundInfo::HasBackgroundPage(&extension))
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 (*old_cursor)->name() == (*new_cursor)->name() && 442 (*old_cursor)->name() == (*new_cursor)->name() &&
439 (*old_cursor)->id() == (*new_cursor)->id()) { 443 (*old_cursor)->id() == (*new_cursor)->id()) {
440 ++old_cursor; 444 ++old_cursor;
441 ++new_cursor; 445 ++new_cursor;
442 } 446 }
443 if (old_cursor != extensions_.end() || new_cursor != extensions.end()) { 447 if (old_cursor != extensions_.end() || new_cursor != extensions.end()) {
444 extensions_ = extensions; 448 extensions_ = extensions;
445 FOR_EACH_OBSERVER(Observer, observers_, OnApplicationListChanged(profile_)); 449 FOR_EACH_OBSERVER(Observer, observers_, OnApplicationListChanged(profile_));
446 } 450 }
447 } 451 }
OLDNEW
« no previous file with comments | « apps/saved_files_service.cc ('k') | chrome/browser/background/background_application_list_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698