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

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

Issue 10821133: Move c/r/extensions/* into extensions namespace (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Latest master for cq Created 8 years, 4 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
Index: chrome/renderer/extensions/extension_request_sender.cc
diff --git a/chrome/renderer/extensions/extension_request_sender.cc b/chrome/renderer/extensions/extension_request_sender.cc
deleted file mode 100644
index 99eec2dc2c6493732d91bf8e9937a906b4977586..0000000000000000000000000000000000000000
--- a/chrome/renderer/extensions/extension_request_sender.cc
+++ /dev/null
@@ -1,167 +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/extension_request_sender.h"
-
-#include "base/values.h"
-#include "chrome/common/extensions/extension_messages.h"
-#include "chrome/renderer/extensions/chrome_v8_context.h"
-#include "chrome/renderer/extensions/chrome_v8_context_set.h"
-#include "chrome/renderer/extensions/extension_dispatcher.h"
-#include "content/public/renderer/render_view.h"
-#include "content/public/renderer/v8_value_converter.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h"
-
-using content::V8ValueConverter;
-
-// Contains info relevant to a pending API request.
-struct PendingRequest {
- public :
- PendingRequest(v8::Persistent<v8::Context> context, const std::string& name,
- const std::string& extension_id)
- : context(context), name(name), extension_id(extension_id) {
- }
-
- ~PendingRequest() {
- context.Dispose();
- }
-
- v8::Persistent<v8::Context> context;
- std::string name;
- std::string extension_id;
-};
-
-ExtensionRequestSender::ExtensionRequestSender(
- ExtensionDispatcher* extension_dispatcher,
- ChromeV8ContextSet* context_set)
- : extension_dispatcher_(extension_dispatcher),
- context_set_(context_set) {
-}
-
-ExtensionRequestSender::~ExtensionRequestSender() {
-}
-
-void ExtensionRequestSender::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> ExtensionRequestSender::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;
-}
-
-void ExtensionRequestSender::StartRequest(
- const std::string& name,
- int request_id,
- bool has_callback,
- bool for_io_thread,
- base::ListValue* value_args) {
- ChromeV8Context* current_context = context_set_->GetCurrent();
- if (!current_context)
- return;
-
- // Get the current RenderView so that we can send a routed IPC message from
- // the correct source.
- content::RenderView* renderview = current_context->GetRenderView();
- if (!renderview)
- return;
-
- const std::set<std::string>& function_names =
- extension_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 (!extension_dispatcher_->CheckCurrentContextAccessToExtensionAPI(name))
- return;
-
- GURL source_url;
- WebKit::WebSecurityOrigin source_origin;
- WebKit::WebFrame* webframe = current_context->web_frame();
- if (webframe) {
- source_url = webframe->document().url();
- source_origin = webframe->document().securityOrigin();
- }
-
- v8::Persistent<v8::Context> v8_context =
- v8::Persistent<v8::Context>::New(v8::Context::GetCurrent());
- DCHECK(!v8_context.IsEmpty());
-
- std::string extension_id = current_context->GetExtensionID();
- InsertRequest(request_id, new PendingRequest(
- v8_context, name, extension_id));
-
- ExtensionHostMsg_Request_Params params;
- params.name = name;
- params.arguments.Swap(value_args);
- params.extension_id = extension_id;
- params.source_url = source_url;
- params.source_origin = source_origin.toString();
- params.request_id = request_id;
- params.has_callback = has_callback;
- params.user_gesture =
- webframe ? webframe->isProcessingUserGesture() : false;
- if (for_io_thread) {
- renderview->Send(new ExtensionHostMsg_RequestForIOThread(
- renderview->GetRoutingID(), params));
- } else {
- renderview->Send(new ExtensionHostMsg_Request(
- renderview->GetRoutingID(), params));
- }
-}
-
-void ExtensionRequestSender::HandleResponse(int request_id,
- bool success,
- const base::ListValue& responseList,
- const std::string& error) {
- linked_ptr<PendingRequest> request = RemoveRequest(request_id);
-
- if (!request.get()) {
- // This should not be able to happen since we only remove requests when
- // they are handled.
- LOG(ERROR) << "Could not find specified request id: " << request_id;
- return;
- }
-
- ChromeV8Context* v8_context = context_set_->GetByV8Context(request->context);
- if (!v8_context)
- return; // The frame went away.
-
- v8::HandleScope handle_scope;
-
- scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create());
- v8::Handle<v8::Value> argv[] = {
- v8::Integer::New(request_id),
- v8::String::New(request->name.c_str()),
- v8::Boolean::New(success),
- converter->ToV8Value(&responseList, v8_context->v8_context()),
- v8::String::New(error.c_str())
- };
-
- v8::Handle<v8::Value> retval;
- CHECK(v8_context->CallChromeHiddenMethod("handleResponse",
- arraysize(argv),
- argv,
- &retval));
- // In debug, the js will validate the callback parameters and return a
- // string if a validation error has occured.
-#ifndef NDEBUG
- if (!retval.IsEmpty() && !retval->IsUndefined()) {
- std::string error = *v8::String::AsciiValue(retval);
- DCHECK(false) << error;
- }
-#endif
-}
« no previous file with comments | « chrome/renderer/extensions/extension_request_sender.h ('k') | chrome/renderer/extensions/extension_resource_request_policy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698