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/extensions/permissions_updater.h" | 5 #include "chrome/browser/extensions/permissions_updater.h" |
6 | 6 |
7 #include "base/json/json_writer.h" | 7 #include "base/json/json_writer.h" |
8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
9 #include "base/values.h" | 9 #include "base/values.h" |
10 #include "chrome/browser/chrome_notification_types.h" | 10 #include "chrome/browser/chrome_notification_types.h" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
60 PermissionsParser::GetOptionalPermissions(extension)); | 60 PermissionsParser::GetOptionalPermissions(extension)); |
61 | 61 |
62 // Make sure the active permissions contain no more than optional + default. | 62 // Make sure the active permissions contain no more than optional + default. |
63 scoped_refptr<PermissionSet> adjusted_active = | 63 scoped_refptr<PermissionSet> adjusted_active = |
64 PermissionSet::CreateIntersection(total_permissions, active_permissions); | 64 PermissionSet::CreateIntersection(total_permissions, active_permissions); |
65 | 65 |
66 // Make sure the active permissions contain the default permissions. | 66 // Make sure the active permissions contain the default permissions. |
67 adjusted_active = | 67 adjusted_active = |
68 PermissionSet::CreateUnion(required_permissions, adjusted_active); | 68 PermissionSet::CreateUnion(required_permissions, adjusted_active); |
69 | 69 |
70 // Re-add any active permissions that only match a single origin in order | |
71 // to persist "always run" script injection hosts. | |
not at google - send to devlin
2014/08/11 22:59:30
Mention why they were filtered out in the first pl
gpdavis
2014/08/12 00:52:05
Done.
not at google - send to devlin
2014/08/12 19:49:26
The comment still doesn't work for me, but I think
| |
72 URLPatternSet single_origin_explicit; | |
73 URLPatternSet single_origin_scriptable; | |
74 for (URLPatternSet::const_iterator iter = | |
75 active_permissions->explicit_hosts().begin(); | |
76 iter != active_permissions->explicit_hosts().end(); | |
77 ++iter) { | |
78 if (iter->MatchesSingleOrigin()) | |
79 single_origin_explicit.AddPattern(*iter); | |
80 } | |
81 for (URLPatternSet::const_iterator iter = | |
82 active_permissions->scriptable_hosts().begin(); | |
83 iter != active_permissions->scriptable_hosts().end(); | |
84 ++iter) { | |
85 if (iter->MatchesSingleOrigin()) | |
86 single_origin_scriptable.AddPattern(*iter); | |
87 } | |
88 | |
not at google - send to devlin
2014/08/11 22:59:30
you could write this much more concisely if you ha
gpdavis
2014/08/12 00:52:05
Done.
| |
89 adjusted_active = PermissionSet::CreateUnion( | |
90 adjusted_active, | |
91 new PermissionSet(APIPermissionSet(), | |
92 ManifestPermissionSet(), | |
93 single_origin_explicit, | |
94 single_origin_scriptable)); | |
95 | |
70 return adjusted_active; | 96 return adjusted_active; |
71 } | 97 } |
72 | 98 |
73 // Divvy up the |url patterns| between those we grant and those we do not. If | 99 // Divvy up the |url patterns| between those we grant and those we do not. If |
74 // |withhold_permissions| is false (because the requisite feature is not | 100 // |withhold_permissions| is false (because the requisite feature is not |
75 // enabled), no permissions are withheld. | 101 // enabled), no permissions are withheld. |
76 void SegregateUrlPermissions(const URLPatternSet& url_patterns, | 102 void SegregateUrlPermissions(const URLPatternSet& url_patterns, |
77 bool withhold_permissions, | 103 bool withhold_permissions, |
78 URLPatternSet* granted, | 104 URLPatternSet* granted, |
79 URLPatternSet* withheld) { | 105 URLPatternSet* withheld) { |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
321 Profile::FromBrowserContext(host->GetBrowserContext()))) { | 347 Profile::FromBrowserContext(host->GetBrowserContext()))) { |
322 host->Send(new ExtensionMsg_UpdatePermissions(params)); | 348 host->Send(new ExtensionMsg_UpdatePermissions(params)); |
323 } | 349 } |
324 } | 350 } |
325 | 351 |
326 // Trigger the onAdded and onRemoved events in the extension. | 352 // Trigger the onAdded and onRemoved events in the extension. |
327 DispatchEvent(extension->id(), event_name, changed); | 353 DispatchEvent(extension->id(), event_name, changed); |
328 } | 354 } |
329 | 355 |
330 } // namespace extensions | 356 } // namespace extensions |
OLD | NEW |