| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/renderer/extensions/dispatcher.h" | 5 #include "chrome/renderer/extensions/dispatcher.h" |
| 6 | 6 |
| 7 #include "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/debug/alias.h" | 9 #include "base/debug/alias.h" |
| 10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 void GetAvailability(const v8::FunctionCallbackInfo<v8::Value>& args) { | 170 void GetAvailability(const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 171 CHECK_EQ(args.Length(), 1); | 171 CHECK_EQ(args.Length(), 1); |
| 172 std::string api_name = *v8::String::AsciiValue(args[0]->ToString()); | 172 std::string api_name = *v8::String::AsciiValue(args[0]->ToString()); |
| 173 Feature::Availability availability = context_->GetAvailability(api_name); | 173 Feature::Availability availability = context_->GetAvailability(api_name); |
| 174 | 174 |
| 175 v8::Handle<v8::Object> ret = v8::Object::New(); | 175 v8::Handle<v8::Object> ret = v8::Object::New(); |
| 176 ret->Set(v8::String::New("is_available"), | 176 ret->Set(v8::String::New("is_available"), |
| 177 v8::Boolean::New(availability.is_available())); | 177 v8::Boolean::New(availability.is_available())); |
| 178 ret->Set(v8::String::New("message"), | 178 ret->Set(v8::String::New("message"), |
| 179 v8::String::New(availability.message().c_str())); | 179 v8::String::New(availability.message().c_str())); |
| 180 ret->Set(v8::String::New("result"), |
| 181 v8::Integer::New(availability.result())); |
| 180 args.GetReturnValue().Set(ret); | 182 args.GetReturnValue().Set(ret); |
| 181 } | 183 } |
| 182 | 184 |
| 183 void GetModuleSystem(const v8::FunctionCallbackInfo<v8::Value>& args) { | 185 void GetModuleSystem(const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 184 CHECK_EQ(args.Length(), 1); | 186 CHECK_EQ(args.Length(), 1); |
| 185 CHECK(args[0]->IsObject()); | 187 CHECK(args[0]->IsObject()); |
| 186 v8::Handle<v8::Context> v8_context = | 188 v8::Handle<v8::Context> v8_context = |
| 187 v8::Handle<v8::Object>::Cast(args[0])->CreationContext(); | 189 v8::Handle<v8::Object>::Cast(args[0])->CreationContext(); |
| 188 ChromeV8Context* context = dispatcher_->v8_context_set().GetByV8Context( | 190 ChromeV8Context* context = dispatcher_->v8_context_set().GetByV8Context( |
| 189 v8_context); | 191 v8_context); |
| (...skipping 1245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1435 static const char kMessage[] = | 1437 static const char kMessage[] = |
| 1436 "%s cannot be used within a sandboxed frame."; | 1438 "%s cannot be used within a sandboxed frame."; |
| 1437 std::string error_msg = base::StringPrintf(kMessage, function_name.c_str()); | 1439 std::string error_msg = base::StringPrintf(kMessage, function_name.c_str()); |
| 1438 v8::ThrowException( | 1440 v8::ThrowException( |
| 1439 v8::Exception::Error(v8::String::New(error_msg.c_str()))); | 1441 v8::Exception::Error(v8::String::New(error_msg.c_str()))); |
| 1440 return false; | 1442 return false; |
| 1441 } | 1443 } |
| 1442 | 1444 |
| 1443 Feature::Availability availability = context->GetAvailability(function_name); | 1445 Feature::Availability availability = context->GetAvailability(function_name); |
| 1444 if (!availability.is_available()) { | 1446 if (!availability.is_available()) { |
| 1447 APIActivityLogger::LogBlockedCall(context->extension()->id(), |
| 1448 function_name, |
| 1449 availability.result()); |
| 1445 v8::ThrowException(v8::Exception::Error( | 1450 v8::ThrowException(v8::Exception::Error( |
| 1446 v8::String::New(availability.message().c_str()))); | 1451 v8::String::New(availability.message().c_str()))); |
| 1447 } | 1452 } |
| 1448 | 1453 |
| 1449 return availability.is_available(); | 1454 return availability.is_available(); |
| 1450 } | 1455 } |
| 1451 | 1456 |
| 1452 void Dispatcher::DispatchEvent(const std::string& extension_id, | 1457 void Dispatcher::DispatchEvent(const std::string& extension_id, |
| 1453 const std::string& event_name) const { | 1458 const std::string& event_name) const { |
| 1454 base::ListValue args; | 1459 base::ListValue args; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1495 RenderView* background_view = | 1500 RenderView* background_view = |
| 1496 ExtensionHelper::GetBackgroundPage(extension_id); | 1501 ExtensionHelper::GetBackgroundPage(extension_id); |
| 1497 if (background_view) { | 1502 if (background_view) { |
| 1498 background_view->Send(new ExtensionHostMsg_EventAck( | 1503 background_view->Send(new ExtensionHostMsg_EventAck( |
| 1499 background_view->GetRoutingID())); | 1504 background_view->GetRoutingID())); |
| 1500 } | 1505 } |
| 1501 } | 1506 } |
| 1502 } | 1507 } |
| 1503 | 1508 |
| 1504 } // namespace extensions | 1509 } // namespace extensions |
| OLD | NEW |