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

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

Issue 234413005: Move most of ChromeV8Context to a base ScriptContext (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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
Index: chrome/renderer/extensions/object_backed_native_handler.cc
diff --git a/chrome/renderer/extensions/object_backed_native_handler.cc b/chrome/renderer/extensions/object_backed_native_handler.cc
deleted file mode 100644
index 5496f48c4492a9b6bd4670b1a0c36830376a97a0..0000000000000000000000000000000000000000
--- a/chrome/renderer/extensions/object_backed_native_handler.cc
+++ /dev/null
@@ -1,100 +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/object_backed_native_handler.h"
-
-#include "base/logging.h"
-#include "base/memory/linked_ptr.h"
-#include "chrome/renderer/extensions/chrome_v8_context.h"
-#include "chrome/renderer/extensions/console.h"
-#include "chrome/renderer/extensions/module_system.h"
-#include "v8/include/v8.h"
-
-namespace extensions {
-
-namespace {
-// Key for the base::Bound routed function.
-const char* kHandlerFunction = "handler_function";
-} // namespace
-
-ObjectBackedNativeHandler::ObjectBackedNativeHandler(ChromeV8Context* context)
- : router_data_(context->v8_context()->GetIsolate()),
- context_(context),
- object_template_(
- v8::ObjectTemplate::New(context->v8_context()->GetIsolate())) {}
-
-ObjectBackedNativeHandler::~ObjectBackedNativeHandler() {
- Invalidate();
-}
-
-v8::Handle<v8::Object> ObjectBackedNativeHandler::NewInstance() {
- return object_template_.NewHandle(v8::Isolate::GetCurrent())->NewInstance();
-}
-
-// static
-void ObjectBackedNativeHandler::Router(
- const v8::FunctionCallbackInfo<v8::Value>& args) {
- v8::HandleScope handle_scope(args.GetIsolate());
- v8::Handle<v8::Object> data = args.Data().As<v8::Object>();
-
- v8::Handle<v8::Value> handler_function_value =
- data->Get(v8::String::NewFromUtf8(args.GetIsolate(), kHandlerFunction));
- // See comment in header file for why we do this.
- if (handler_function_value.IsEmpty() ||
- handler_function_value->IsUndefined()) {
- console::Error(args.GetIsolate()->GetCallingContext(),
- "Extension view no longer exists");
- return;
- }
- DCHECK(handler_function_value->IsExternal());
- static_cast<HandlerFunction*>(
- handler_function_value.As<v8::External>()->Value())->Run(args);
-}
-
-void ObjectBackedNativeHandler::RouteFunction(
- const std::string& name,
- const HandlerFunction& handler_function) {
- v8::Isolate* isolate = v8::Isolate::GetCurrent();
- v8::HandleScope handle_scope(isolate);
- v8::Context::Scope context_scope(context_->v8_context());
-
- v8::Persistent<v8::Object> data(isolate, v8::Object::New(isolate));
- v8::Local<v8::Object> local_data = v8::Local<v8::Object>::New(isolate, data);
- local_data->Set(
- v8::String::NewFromUtf8(isolate, kHandlerFunction),
- v8::External::New(isolate, new HandlerFunction(handler_function)));
- v8::Handle<v8::FunctionTemplate> function_template =
- v8::FunctionTemplate::New(isolate, Router, local_data);
- object_template_.NewHandle(isolate)
- ->Set(isolate, name.c_str(), function_template);
- router_data_.Append(local_data);
-}
-
-v8::Isolate* ObjectBackedNativeHandler::GetIsolate() const {
- return context_->isolate();
-}
-
-void ObjectBackedNativeHandler::Invalidate() {
- if (!is_valid())
- return;
- v8::Isolate* isolate = v8::Isolate::GetCurrent();
- v8::HandleScope handle_scope(isolate);
- v8::Context::Scope context_scope(context_->v8_context());
-
- for (size_t i = 0; i < router_data_.Size(); i++) {
- v8::Handle<v8::Object> data = router_data_.Get(i);
- v8::Handle<v8::Value> handler_function_value =
- data->Get(v8::String::NewFromUtf8(isolate, kHandlerFunction));
- CHECK(!handler_function_value.IsEmpty());
- delete static_cast<HandlerFunction*>(
- handler_function_value.As<v8::External>()->Value());
- data->Delete(v8::String::NewFromUtf8(isolate, kHandlerFunction));
- }
- router_data_.Clear();
- object_template_.reset();
- context_ = NULL;
- NativeHandler::Invalidate();
-}
-
-} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698