| OLD | NEW |
| 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_binding_js_util.h" | 5 #include "extensions/renderer/bindings/api_binding_js_util.h" |
| 6 | 6 |
| 7 #include "base/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
| 8 #include "base/values.h" | 8 #include "base/values.h" |
| 9 #include "extensions/renderer/bindings/api_event_handler.h" | 9 #include "extensions/renderer/bindings/api_event_handler.h" |
| 10 #include "extensions/renderer/bindings/api_request_handler.h" | 10 #include "extensions/renderer/bindings/api_request_handler.h" |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 v8::Isolate* isolate = arguments->isolate(); | 110 v8::Isolate* isolate = arguments->isolate(); |
| 111 v8::HandleScope handle_scope(isolate); | 111 v8::HandleScope handle_scope(isolate); |
| 112 v8::Local<v8::Context> context = arguments->GetHolderCreationContext(); | 112 v8::Local<v8::Context> context = arguments->GetHolderCreationContext(); |
| 113 | 113 |
| 114 event_handler_->RegisterArgumentMassager(context, event_name, massager); | 114 event_handler_->RegisterArgumentMassager(context, event_name, massager); |
| 115 } | 115 } |
| 116 | 116 |
| 117 void APIBindingJSUtil::CreateCustomEvent(gin::Arguments* arguments, | 117 void APIBindingJSUtil::CreateCustomEvent(gin::Arguments* arguments, |
| 118 v8::Local<v8::Value> v8_event_name, | 118 v8::Local<v8::Value> v8_event_name, |
| 119 v8::Local<v8::Value> unused_schema, | 119 v8::Local<v8::Value> unused_schema, |
| 120 bool supports_filters) { | 120 bool supports_filters, |
| 121 bool supports_lazy_listeners) { |
| 121 v8::Isolate* isolate = arguments->isolate(); | 122 v8::Isolate* isolate = arguments->isolate(); |
| 122 v8::HandleScope handle_scope(isolate); | 123 v8::HandleScope handle_scope(isolate); |
| 123 v8::Local<v8::Context> context = arguments->GetHolderCreationContext(); | 124 v8::Local<v8::Context> context = arguments->GetHolderCreationContext(); |
| 124 | 125 |
| 125 std::string event_name; | 126 std::string event_name; |
| 126 if (!v8_event_name->IsUndefined()) { | 127 if (!v8_event_name->IsUndefined()) { |
| 127 if (!v8_event_name->IsString()) { | 128 if (!v8_event_name->IsString()) { |
| 128 NOTREACHED(); | 129 NOTREACHED(); |
| 129 return; | 130 return; |
| 130 } | 131 } |
| 131 event_name = gin::V8ToString(v8_event_name); | 132 event_name = gin::V8ToString(v8_event_name); |
| 132 } | 133 } |
| 133 | 134 |
| 134 DCHECK(!supports_filters || !event_name.empty()) | 135 DCHECK(!supports_filters || !event_name.empty()) |
| 135 << "Events that support filters cannot be anonymous."; | 136 << "Events that support filters cannot be anonymous."; |
| 137 DCHECK(!supports_lazy_listeners || !event_name.empty()) |
| 138 << "Events that support lazy listeners cannot be anonymous."; |
| 136 | 139 |
| 137 v8::Local<v8::Value> event; | 140 v8::Local<v8::Value> event; |
| 138 if (event_name.empty()) { | 141 if (event_name.empty()) { |
| 139 event = event_handler_->CreateAnonymousEventInstance(context); | 142 event = event_handler_->CreateAnonymousEventInstance(context); |
| 140 } else { | 143 } else { |
| 141 bool notify_on_change = true; | 144 bool notify_on_change = true; |
| 142 event = event_handler_->CreateEventInstance(event_name, supports_filters, | 145 event = event_handler_->CreateEventInstance( |
| 143 binding::kNoListenerMax, | 146 event_name, supports_filters, supports_lazy_listeners, |
| 144 notify_on_change, context); | 147 binding::kNoListenerMax, notify_on_change, context); |
| 145 } | 148 } |
| 146 | 149 |
| 147 arguments->Return(event); | 150 arguments->Return(event); |
| 148 } | 151 } |
| 149 | 152 |
| 150 void APIBindingJSUtil::CreateCustomDeclarativeEvent( | 153 void APIBindingJSUtil::CreateCustomDeclarativeEvent( |
| 151 gin::Arguments* arguments, | 154 gin::Arguments* arguments, |
| 152 const std::string& event_name, | 155 const std::string& event_name, |
| 153 const std::vector<std::string>& actions_list, | 156 const std::vector<std::string>& actions_list, |
| 154 const std::vector<std::string>& conditions_list, | 157 const std::vector<std::string>& conditions_list, |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 exception_handler_->HandleException(context, full_message, exception); | 240 exception_handler_->HandleException(context, full_message, exception); |
| 238 } | 241 } |
| 239 | 242 |
| 240 void APIBindingJSUtil::SetExceptionHandler(gin::Arguments* arguments, | 243 void APIBindingJSUtil::SetExceptionHandler(gin::Arguments* arguments, |
| 241 v8::Local<v8::Function> handler) { | 244 v8::Local<v8::Function> handler) { |
| 242 exception_handler_->SetHandlerForContext( | 245 exception_handler_->SetHandlerForContext( |
| 243 arguments->GetHolderCreationContext(), handler); | 246 arguments->GetHolderCreationContext(), handler); |
| 244 } | 247 } |
| 245 | 248 |
| 246 } // namespace extensions | 249 } // namespace extensions |
| OLD | NEW |