| 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/renderer/extensions/request_sender.h" | 5 #include "chrome/renderer/extensions/request_sender.h" |
| 6 | 6 |
| 7 #include "base/values.h" | 7 #include "base/values.h" |
| 8 #include "chrome/common/extensions/extension_messages.h" | 8 #include "chrome/common/extensions/extension_messages.h" |
| 9 #include "chrome/renderer/extensions/chrome_v8_context.h" | 9 #include "chrome/renderer/extensions/chrome_v8_context.h" |
| 10 #include "chrome/renderer/extensions/dispatcher.h" | 10 #include "chrome/renderer/extensions/dispatcher.h" |
| 11 #include "content/public/renderer/render_view.h" | 11 #include "content/public/renderer/render_view.h" |
| 12 #include "third_party/WebKit/public/web/WebDocument.h" | 12 #include "third_party/WebKit/public/web/WebDocument.h" |
| 13 #include "third_party/WebKit/public/web/WebFrame.h" | 13 #include "third_party/WebKit/public/web/WebFrame.h" |
| 14 #include "third_party/WebKit/public/web/WebSecurityOrigin.h" | |
| 15 #include "third_party/WebKit/public/web/WebUserGestureIndicator.h" | 14 #include "third_party/WebKit/public/web/WebUserGestureIndicator.h" |
| 16 | 15 |
| 17 namespace extensions { | 16 namespace extensions { |
| 18 | 17 |
| 19 // Contains info relevant to a pending API request. | 18 // Contains info relevant to a pending API request. |
| 20 struct PendingRequest { | 19 struct PendingRequest { |
| 21 public : | 20 public : |
| 22 PendingRequest(const std::string& name, RequestSender::Source* source) | 21 PendingRequest(const std::string& name, RequestSender::Source* source) |
| 23 : name(name), source(source) { | 22 : name(name), source(source) { |
| 24 } | 23 } |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 NOTREACHED() << "Unexpected function " << name << | 73 NOTREACHED() << "Unexpected function " << name << |
| 75 ". Did you remember to register it with ExtensionFunctionRegistry?"; | 74 ". Did you remember to register it with ExtensionFunctionRegistry?"; |
| 76 return; | 75 return; |
| 77 } | 76 } |
| 78 | 77 |
| 79 // TODO(koz): See if we can make this a CHECK. | 78 // TODO(koz): See if we can make this a CHECK. |
| 80 if (!dispatcher_->CheckContextAccessToExtensionAPI(name, context)) | 79 if (!dispatcher_->CheckContextAccessToExtensionAPI(name, context)) |
| 81 return; | 80 return; |
| 82 | 81 |
| 83 GURL source_url; | 82 GURL source_url; |
| 84 WebKit::WebSecurityOrigin source_origin; | 83 if (WebKit::WebFrame* webframe = context->web_frame()) |
| 85 WebKit::WebFrame* webframe = context->web_frame(); | |
| 86 if (webframe) { | |
| 87 source_url = webframe->document().url(); | 84 source_url = webframe->document().url(); |
| 88 source_origin = webframe->document().securityOrigin(); | |
| 89 } | |
| 90 | 85 |
| 91 InsertRequest(request_id, new PendingRequest(name, source)); | 86 InsertRequest(request_id, new PendingRequest(name, source)); |
| 92 | 87 |
| 93 ExtensionHostMsg_Request_Params params; | 88 ExtensionHostMsg_Request_Params params; |
| 94 params.name = name; | 89 params.name = name; |
| 95 params.arguments.Swap(value_args); | 90 params.arguments.Swap(value_args); |
| 96 params.extension_id = context->GetExtensionID(); | 91 params.extension_id = context->GetExtensionID(); |
| 97 params.source_url = source_url; | 92 params.source_url = source_url; |
| 98 params.source_origin = source_origin.toString(); | |
| 99 params.request_id = request_id; | 93 params.request_id = request_id; |
| 100 params.has_callback = has_callback; | 94 params.has_callback = has_callback; |
| 101 params.user_gesture = | 95 params.user_gesture = |
| 102 WebKit::WebUserGestureIndicator::isProcessingUserGesture(); | 96 WebKit::WebUserGestureIndicator::isProcessingUserGesture(); |
| 103 if (for_io_thread) { | 97 if (for_io_thread) { |
| 104 renderview->Send(new ExtensionHostMsg_RequestForIOThread( | 98 renderview->Send(new ExtensionHostMsg_RequestForIOThread( |
| 105 renderview->GetRoutingID(), params)); | 99 renderview->GetRoutingID(), params)); |
| 106 } else { | 100 } else { |
| 107 renderview->Send(new ExtensionHostMsg_Request( | 101 renderview->Send(new ExtensionHostMsg_Request( |
| 108 renderview->GetRoutingID(), params)); | 102 renderview->GetRoutingID(), params)); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 128 for (PendingRequestMap::iterator it = pending_requests_.begin(); | 122 for (PendingRequestMap::iterator it = pending_requests_.begin(); |
| 129 it != pending_requests_.end();) { | 123 it != pending_requests_.end();) { |
| 130 if (it->second->source == source) | 124 if (it->second->source == source) |
| 131 pending_requests_.erase(it++); | 125 pending_requests_.erase(it++); |
| 132 else | 126 else |
| 133 ++it; | 127 ++it; |
| 134 } | 128 } |
| 135 } | 129 } |
| 136 | 130 |
| 137 } // namespace extensions | 131 } // namespace extensions |
| OLD | NEW |