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

Side by Side Diff: extensions/renderer/bindings/api_bindings_system.cc

Issue 2961103002: [Extensions Bindings] Add an ExceptionHandler class (Closed)
Patch Set: rebase Created 3 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/bindings/api_bindings_system.h" 5 #include "extensions/renderer/bindings/api_bindings_system.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "extensions/renderer/bindings/api_binding_hooks.h" 10 #include "extensions/renderer/bindings/api_binding_hooks.h"
11 11
12 namespace extensions { 12 namespace extensions {
13 13
14 APIBindingsSystem::APIBindingsSystem( 14 APIBindingsSystem::APIBindingsSystem(
15 const binding::RunJSFunction& call_js, 15 const binding::RunJSFunction& call_js,
16 const binding::RunJSFunctionSync& call_js_sync, 16 const binding::RunJSFunctionSync& call_js_sync,
17 const GetAPISchemaMethod& get_api_schema, 17 const GetAPISchemaMethod& get_api_schema,
18 const BindingAccessChecker::AvailabilityCallback& is_available, 18 const BindingAccessChecker::AvailabilityCallback& is_available,
19 const APIRequestHandler::SendRequestMethod& send_request, 19 const APIRequestHandler::SendRequestMethod& send_request,
20 const APIEventHandler::EventListenersChangedMethod& event_listeners_changed, 20 const APIEventHandler::EventListenersChangedMethod& event_listeners_changed,
21 const binding::AddConsoleError& add_console_error,
21 APILastError last_error) 22 APILastError last_error)
22 : type_reference_map_(base::Bind(&APIBindingsSystem::InitializeType, 23 : type_reference_map_(base::Bind(&APIBindingsSystem::InitializeType,
23 base::Unretained(this))), 24 base::Unretained(this))),
24 request_handler_(send_request, call_js, std::move(last_error)), 25 exception_handler_(add_console_error, call_js),
26 request_handler_(send_request,
27 call_js,
28 std::move(last_error),
29 &exception_handler_),
25 event_handler_(call_js, call_js_sync, event_listeners_changed), 30 event_handler_(call_js, call_js_sync, event_listeners_changed),
26 access_checker_(is_available), 31 access_checker_(is_available),
27 call_js_(call_js), 32 call_js_(call_js),
28 call_js_sync_(call_js_sync), 33 call_js_sync_(call_js_sync),
29 get_api_schema_(get_api_schema) {} 34 get_api_schema_(get_api_schema) {}
30 35
31 APIBindingsSystem::~APIBindingsSystem() {} 36 APIBindingsSystem::~APIBindingsSystem() {}
32 37
33 v8::Local<v8::Object> APIBindingsSystem::CreateAPIInstance( 38 v8::Local<v8::Object> APIBindingsSystem::CreateAPIInstance(
34 const std::string& api_name, 39 const std::string& api_name,
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 void APIBindingsSystem::RegisterCustomType(const std::string& type_name, 126 void APIBindingsSystem::RegisterCustomType(const std::string& type_name,
122 const CustomTypeHandler& function) { 127 const CustomTypeHandler& function) {
123 DCHECK(custom_types_.find(type_name) == custom_types_.end()) 128 DCHECK(custom_types_.find(type_name) == custom_types_.end())
124 << "Custom type already registered: " << type_name; 129 << "Custom type already registered: " << type_name;
125 custom_types_[type_name] = function; 130 custom_types_[type_name] = function;
126 } 131 }
127 132
128 void APIBindingsSystem::WillReleaseContext(v8::Local<v8::Context> context) { 133 void APIBindingsSystem::WillReleaseContext(v8::Local<v8::Context> context) {
129 request_handler_.InvalidateContext(context); 134 request_handler_.InvalidateContext(context);
130 event_handler_.InvalidateContext(context); 135 event_handler_.InvalidateContext(context);
136 exception_handler_.InvalidateContext(context);
131 } 137 }
132 138
133 v8::Local<v8::Object> APIBindingsSystem::CreateCustomType( 139 v8::Local<v8::Object> APIBindingsSystem::CreateCustomType(
134 v8::Isolate* isolate, 140 v8::Isolate* isolate,
135 const std::string& type_name, 141 const std::string& type_name,
136 const std::string& property_name, 142 const std::string& property_name,
137 const base::ListValue* property_values) { 143 const base::ListValue* property_values) {
138 auto iter = custom_types_.find(type_name); 144 auto iter = custom_types_.find(type_name);
139 DCHECK(iter != custom_types_.end()) << "Custom type not found: " << type_name; 145 DCHECK(iter != custom_types_.end()) << "Custom type not found: " << type_name;
140 return iter->second.Run(isolate, property_name, property_values, 146 return iter->second.Run(isolate, property_name, property_values,
141 &request_handler_, &event_handler_, 147 &request_handler_, &event_handler_,
142 &type_reference_map_, &access_checker_); 148 &type_reference_map_, &access_checker_);
143 } 149 }
144 150
145 } // namespace extensions 151 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698