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

Side by Side Diff: extensions/renderer/dispatcher.cc

Issue 1349613003: [Extensions] Un-refcount PermissionSet (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "extensions/renderer/dispatcher.h" 5 #include "extensions/renderer/dispatcher.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/containers/scoped_ptr_map.h" 10 #include "base/containers/scoped_ptr_map.h"
(...skipping 1119 matching lines...) Expand 10 before | Expand all | Expand 10 after
1130 // extension's URL just won't match anything anymore. 1130 // extension's URL just won't match anything anymore.
1131 } 1131 }
1132 1132
1133 void Dispatcher::OnUpdatePermissions( 1133 void Dispatcher::OnUpdatePermissions(
1134 const ExtensionMsg_UpdatePermissions_Params& params) { 1134 const ExtensionMsg_UpdatePermissions_Params& params) {
1135 const Extension* extension = 1135 const Extension* extension =
1136 RendererExtensionRegistry::Get()->GetByID(params.extension_id); 1136 RendererExtensionRegistry::Get()->GetByID(params.extension_id);
1137 if (!extension) 1137 if (!extension)
1138 return; 1138 return;
1139 1139
1140 scoped_refptr<const PermissionSet> active = 1140 scoped_ptr<const PermissionSet> active =
1141 params.active_permissions.ToPermissionSet(); 1141 params.active_permissions.ToPermissionSet();
1142 scoped_refptr<const PermissionSet> withheld = 1142 scoped_ptr<const PermissionSet> withheld =
1143 params.withheld_permissions.ToPermissionSet(); 1143 params.withheld_permissions.ToPermissionSet();
1144 1144
1145 if (is_webkit_initialized_) { 1145 if (is_webkit_initialized_) {
1146 UpdateOriginPermissions( 1146 UpdateOriginPermissions(
1147 extension->url(), 1147 extension->url(),
1148 extension->permissions_data()->GetEffectiveHostPermissions(), 1148 extension->permissions_data()->GetEffectiveHostPermissions(),
1149 active->effective_hosts()); 1149 active->effective_hosts());
1150 } 1150 }
1151 1151
1152 extension->permissions_data()->SetPermissions(active, withheld); 1152 extension->permissions_data()->SetPermissions(active.Pass(), withheld.Pass());
1153 UpdateBindings(extension->id()); 1153 UpdateBindings(extension->id());
1154 } 1154 }
1155 1155
1156 void Dispatcher::OnUpdateTabSpecificPermissions(const GURL& visible_url, 1156 void Dispatcher::OnUpdateTabSpecificPermissions(const GURL& visible_url,
1157 const std::string& extension_id, 1157 const std::string& extension_id,
1158 const URLPatternSet& new_hosts, 1158 const URLPatternSet& new_hosts,
1159 bool update_origin_whitelist, 1159 bool update_origin_whitelist,
1160 int tab_id) { 1160 int tab_id) {
1161 const Extension* extension = 1161 const Extension* extension =
1162 RendererExtensionRegistry::Get()->GetByID(extension_id); 1162 RendererExtensionRegistry::Get()->GetByID(extension_id);
1163 if (!extension) 1163 if (!extension)
1164 return; 1164 return;
1165 1165
1166 URLPatternSet old_effective = 1166 URLPatternSet old_effective =
1167 extension->permissions_data()->GetEffectiveHostPermissions(); 1167 extension->permissions_data()->GetEffectiveHostPermissions();
1168 extension->permissions_data()->UpdateTabSpecificPermissions( 1168 extension->permissions_data()->UpdateTabSpecificPermissions(
1169 tab_id, 1169 tab_id,
1170 new extensions::PermissionSet(extensions::APIPermissionSet(), 1170 extensions::PermissionSet(extensions::APIPermissionSet(),
1171 extensions::ManifestPermissionSet(), 1171 extensions::ManifestPermissionSet(), new_hosts,
1172 new_hosts, 1172 extensions::URLPatternSet()));
1173 extensions::URLPatternSet()));
1174 1173
1175 if (is_webkit_initialized_ && update_origin_whitelist) { 1174 if (is_webkit_initialized_ && update_origin_whitelist) {
1176 UpdateOriginPermissions( 1175 UpdateOriginPermissions(
1177 extension->url(), 1176 extension->url(),
1178 old_effective, 1177 old_effective,
1179 extension->permissions_data()->GetEffectiveHostPermissions()); 1178 extension->permissions_data()->GetEffectiveHostPermissions());
1180 } 1179 }
1181 } 1180 }
1182 1181
1183 void Dispatcher::OnClearTabSpecificPermissions( 1182 void Dispatcher::OnClearTabSpecificPermissions(
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
1588 void Dispatcher::AddChannelSpecificFeatures() { 1587 void Dispatcher::AddChannelSpecificFeatures() {
1589 // chrome-extension: resources should be allowed to register a Service Worker. 1588 // chrome-extension: resources should be allowed to register a Service Worker.
1590 if (FeatureProvider::GetBehaviorFeature(BehaviorFeature::kServiceWorker) 1589 if (FeatureProvider::GetBehaviorFeature(BehaviorFeature::kServiceWorker)
1591 ->IsAvailableToEnvironment() 1590 ->IsAvailableToEnvironment()
1592 .is_available()) 1591 .is_available())
1593 WebSecurityPolicy::registerURLSchemeAsAllowingServiceWorkers( 1592 WebSecurityPolicy::registerURLSchemeAsAllowingServiceWorkers(
1594 WebString::fromUTF8(kExtensionScheme)); 1593 WebString::fromUTF8(kExtensionScheme));
1595 } 1594 }
1596 1595
1597 } // namespace extensions 1596 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698