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

Unified Diff: chrome/renderer/extensions/request_sender.cc

Issue 234413005: Move most of ChromeV8Context to a base ScriptContext (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: factor feature_channel out of module_system Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/extensions/request_sender.h ('k') | chrome/renderer/extensions/safe_builtins.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/extensions/request_sender.cc
diff --git a/chrome/renderer/extensions/request_sender.cc b/chrome/renderer/extensions/request_sender.cc
deleted file mode 100644
index 597f3fbccbadaa06a4e94dc37603410ea5cbc2a5..0000000000000000000000000000000000000000
--- a/chrome/renderer/extensions/request_sender.cc
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/renderer/extensions/request_sender.h"
-
-#include "base/values.h"
-#include "chrome/renderer/extensions/chrome_v8_context.h"
-#include "chrome/renderer/extensions/dispatcher.h"
-#include "content/public/renderer/render_view.h"
-#include "extensions/common/extension_messages.h"
-#include "third_party/WebKit/public/web/WebDocument.h"
-#include "third_party/WebKit/public/web/WebFrame.h"
-#include "third_party/WebKit/public/web/WebUserGestureIndicator.h"
-
-namespace extensions {
-
-// Contains info relevant to a pending API request.
-struct PendingRequest {
- public :
- PendingRequest(const std::string& name, RequestSender::Source* source)
- : name(name), source(source) {
- }
-
- std::string name;
- RequestSender::Source* source;
-};
-
-RequestSender::ScopedTabID::ScopedTabID(RequestSender* request_sender,
- int tab_id)
- : request_sender_(request_sender),
- tab_id_(tab_id),
- previous_tab_id_(request_sender->source_tab_id_) {
- request_sender_->source_tab_id_ = tab_id;
-}
-
-RequestSender::ScopedTabID::~ScopedTabID() {
- DCHECK_EQ(tab_id_, request_sender_->source_tab_id_);
- request_sender_->source_tab_id_ = previous_tab_id_;
-}
-
-RequestSender::RequestSender(Dispatcher* dispatcher)
- : dispatcher_(dispatcher),
- source_tab_id_(-1) {
-}
-
-RequestSender::~RequestSender() {
-}
-
-void RequestSender::InsertRequest(int request_id,
- PendingRequest* pending_request) {
- DCHECK_EQ(0u, pending_requests_.count(request_id));
- pending_requests_[request_id].reset(pending_request);
-}
-
-linked_ptr<PendingRequest> RequestSender::RemoveRequest(int request_id) {
- PendingRequestMap::iterator i = pending_requests_.find(request_id);
- if (i == pending_requests_.end())
- return linked_ptr<PendingRequest>();
- linked_ptr<PendingRequest> result = i->second;
- pending_requests_.erase(i);
- return result;
-}
-
-int RequestSender::GetNextRequestId() const {
- static int next_request_id = 0;
- return next_request_id++;
-}
-
-void RequestSender::StartRequest(Source* source,
- const std::string& name,
- int request_id,
- bool has_callback,
- bool for_io_thread,
- base::ListValue* value_args) {
- ChromeV8Context* context = source->GetContext();
- if (!context)
- return;
-
- // Get the current RenderView so that we can send a routed IPC message from
- // the correct source.
- content::RenderView* renderview = context->GetRenderView();
- if (!renderview)
- return;
-
- const std::set<std::string>& function_names = dispatcher_->function_names();
- if (function_names.find(name) == function_names.end()) {
- NOTREACHED() << "Unexpected function " << name <<
- ". Did you remember to register it with ExtensionFunctionRegistry?";
- return;
- }
-
- // TODO(koz): See if we can make this a CHECK.
- if (!dispatcher_->CheckContextAccessToExtensionAPI(name, context))
- return;
-
- GURL source_url;
- if (blink::WebFrame* webframe = context->web_frame())
- source_url = webframe->document().url();
-
- InsertRequest(request_id, new PendingRequest(name, source));
-
- ExtensionHostMsg_Request_Params params;
- params.name = name;
- params.arguments.Swap(value_args);
- params.extension_id = context->GetExtensionID();
- params.source_url = source_url;
- params.source_tab_id = source_tab_id_;
- params.request_id = request_id;
- params.has_callback = has_callback;
- params.user_gesture =
- blink::WebUserGestureIndicator::isProcessingUserGesture();
- if (for_io_thread) {
- renderview->Send(new ExtensionHostMsg_RequestForIOThread(
- renderview->GetRoutingID(), params));
- } else {
- renderview->Send(new ExtensionHostMsg_Request(
- renderview->GetRoutingID(), params));
- }
-}
-
-void RequestSender::HandleResponse(int request_id,
- bool success,
- const base::ListValue& response,
- const std::string& error) {
- linked_ptr<PendingRequest> request = RemoveRequest(request_id);
-
- if (!request.get()) {
- // This can happen if a context is destroyed while a request is in flight.
- return;
- }
-
- request->source->OnResponseReceived(request->name, request_id, success,
- response, error);
-}
-
-void RequestSender::InvalidateSource(Source* source) {
- for (PendingRequestMap::iterator it = pending_requests_.begin();
- it != pending_requests_.end();) {
- if (it->second->source == source)
- pending_requests_.erase(it++);
- else
- ++it;
- }
-}
-
-} // namespace extensions
« no previous file with comments | « chrome/renderer/extensions/request_sender.h ('k') | chrome/renderer/extensions/safe_builtins.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698