OLD | NEW |
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/debug/alias.h" | 10 #include "base/debug/alias.h" |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
228 return is_active; | 228 return is_active; |
229 } | 229 } |
230 | 230 |
231 const Extension* Dispatcher::GetExtensionFromFrameAndWorld( | 231 const Extension* Dispatcher::GetExtensionFromFrameAndWorld( |
232 const WebFrame* frame, | 232 const WebFrame* frame, |
233 int world_id, | 233 int world_id, |
234 bool use_effective_url) { | 234 bool use_effective_url) { |
235 std::string extension_id; | 235 std::string extension_id; |
236 if (world_id != 0) { | 236 if (world_id != 0) { |
237 // Isolated worlds (content script). | 237 // Isolated worlds (content script). |
238 extension_id = ScriptInjection::GetExtensionIdForIsolatedWorld(world_id); | 238 extension_id = |
| 239 ScriptInjection::GetHostIdForIsolatedWorld(world_id).id(); |
239 } else if (!frame->document().securityOrigin().isUnique()) { | 240 } else if (!frame->document().securityOrigin().isUnique()) { |
240 // TODO(kalman): Delete the above check. | 241 // TODO(kalman): Delete the above check. |
241 | 242 |
242 // Extension pages (chrome-extension:// URLs). | 243 // Extension pages (chrome-extension:// URLs). |
243 GURL frame_url = ScriptContext::GetDataSourceURLForFrame(frame); | 244 GURL frame_url = ScriptContext::GetDataSourceURLForFrame(frame); |
244 frame_url = ScriptContext::GetEffectiveDocumentURL( | 245 frame_url = ScriptContext::GetEffectiveDocumentURL( |
245 frame, frame_url, use_effective_url); | 246 frame, frame_url, use_effective_url); |
246 extension_id = extensions_.GetExtensionOrAppIDByURL(frame_url); | 247 extension_id = extensions_.GetExtensionOrAppIDByURL(frame_url); |
247 } | 248 } |
248 | 249 |
(...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1024 RenderThread::Get()->Send(new ExtensionHostMsg_TransferBlobsAck(blob_uuids)); | 1025 RenderThread::Get()->Send(new ExtensionHostMsg_TransferBlobsAck(blob_uuids)); |
1025 } | 1026 } |
1026 | 1027 |
1027 void Dispatcher::OnUnloaded(const std::string& id) { | 1028 void Dispatcher::OnUnloaded(const std::string& id) { |
1028 extensions_.Remove(id); | 1029 extensions_.Remove(id); |
1029 active_extension_ids_.erase(id); | 1030 active_extension_ids_.erase(id); |
1030 | 1031 |
1031 // If the extension is later reloaded with a different set of permissions, | 1032 // If the extension is later reloaded with a different set of permissions, |
1032 // we'd like it to get a new isolated world ID, so that it can pick up the | 1033 // we'd like it to get a new isolated world ID, so that it can pick up the |
1033 // changed origin whitelist. | 1034 // changed origin whitelist. |
1034 ScriptInjection::RemoveIsolatedWorld(id); | 1035 ScriptInjection::RemoveIsolatedWorld(HostID(HostID::EXTENSIONS, id)); |
1035 | 1036 |
1036 // Invalidate all of the contexts that were removed. | 1037 // Invalidate all of the contexts that were removed. |
1037 // TODO(kalman): add an invalidation observer interface to ScriptContext. | 1038 // TODO(kalman): add an invalidation observer interface to ScriptContext. |
1038 ScriptContextSet::ContextSet removed_contexts = | 1039 ScriptContextSet::ContextSet removed_contexts = |
1039 script_context_set_.OnExtensionUnloaded(id); | 1040 script_context_set_.OnExtensionUnloaded(id); |
1040 for (ScriptContextSet::ContextSet::iterator it = removed_contexts.begin(); | 1041 for (ScriptContextSet::ContextSet::iterator it = removed_contexts.begin(); |
1041 it != removed_contexts.end(); | 1042 it != removed_contexts.end(); |
1042 ++it) { | 1043 ++it) { |
1043 request_sender_->InvalidateSource(*it); | 1044 request_sender_->InvalidateSource(*it); |
1044 } | 1045 } |
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1538 return v8::Handle<v8::Object>(); | 1539 return v8::Handle<v8::Object>(); |
1539 | 1540 |
1540 if (bind_name) | 1541 if (bind_name) |
1541 *bind_name = split.back(); | 1542 *bind_name = split.back(); |
1542 | 1543 |
1543 return bind_object.IsEmpty() ? AsObjectOrEmpty(GetOrCreateChrome(context)) | 1544 return bind_object.IsEmpty() ? AsObjectOrEmpty(GetOrCreateChrome(context)) |
1544 : bind_object; | 1545 : bind_object; |
1545 } | 1546 } |
1546 | 1547 |
1547 } // namespace extensions | 1548 } // namespace extensions |
OLD | NEW |