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

Unified Diff: content/renderer/pepper/message_channel.cc

Issue 1088763002: Plugin Power Saver: Add comprehensive browser tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@0260-plugins-overhaul-prerender-tests
Patch Set: Created 5 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: content/renderer/pepper/message_channel.cc
diff --git a/content/renderer/pepper/message_channel.cc b/content/renderer/pepper/message_channel.cc
index 4e373ac2eabfc3d8c0c3de4fc7da8a428f0cb21d..7e1acb13231981bb20f76f5a4c4697e405fc67a3 100644
--- a/content/renderer/pepper/message_channel.cc
+++ b/content/renderer/pepper/message_channel.cc
@@ -13,6 +13,7 @@
#include "content/renderer/pepper/host_array_buffer_var.h"
#include "content/renderer/pepper/pepper_plugin_instance_impl.h"
#include "content/renderer/pepper/pepper_try_catch.h"
+#include "content/renderer/pepper/plugin_instance_throttler_impl.h"
#include "content/renderer/pepper/plugin_module.h"
#include "content/renderer/pepper/plugin_object.h"
#include "gin/arguments.h"
@@ -20,6 +21,7 @@
#include "gin/function_template.h"
#include "gin/object_template_builder.h"
#include "gin/public/gin_embedders.h"
+#include "ppapi/shared_impl/ppapi_constants.h"
#include "ppapi/shared_impl/ppapi_globals.h"
#include "ppapi/shared_impl/scoped_pp_var.h"
#include "ppapi/shared_impl/var.h"
@@ -49,6 +51,7 @@ namespace content {
namespace {
+const char kIsPeripheral[] = "isPeripheral";
const char kPostMessage[] = "postMessage";
const char kPostMessageAndAwaitResponse[] = "postMessageAndAwaitResponse";
const char kV8ToVarConversionError[] =
@@ -225,6 +228,11 @@ v8::Local<v8::Value> MessageChannel::GetNamedProperty(
return GetFunctionTemplate(isolate, identifier,
&MessageChannel::PostBlockingMessageToNative)
->GetFunction();
+ } else if (instance_->module()->name() == ppapi::kPpapiTestLibraryName &&
+ identifier == kIsPeripheral) {
+ return GetFunctionTemplate(isolate, identifier,
+ &MessageChannel::IsPeripheralToNative)
+ ->GetFunction();
}
std::map<std::string, ScopedPPVar>::const_iterator it =
@@ -248,6 +256,11 @@ bool MessageChannel::SetNamedProperty(v8::Isolate* isolate,
if (!instance_)
return false;
PepperTryCatchV8 try_catch(instance_, &var_converter_, isolate);
+ if (instance_->module()->name() == ppapi::kPpapiTestLibraryName &&
+ identifier == kIsPeripheral) {
+ try_catch.ThrowException("Cannot set property with the name isPeripheral");
+ return true;
+ }
if (identifier == kPostMessage ||
identifier == kPostMessageAndAwaitResponse) {
try_catch.ThrowException("Cannot set properties with the name postMessage"
@@ -270,6 +283,10 @@ std::vector<std::string> MessageChannel::EnumerateNamedProperties(
PluginObject* plugin_object = GetPluginObject(isolate);
if (plugin_object)
result = plugin_object->EnumerateNamedProperties(isolate);
+
+ if (instance_->module()->name() == ppapi::kPpapiTestLibraryName)
+ result.push_back(kIsPeripheral);
+
result.push_back(kPostMessage);
result.push_back(kPostMessageAndAwaitResponse);
return result;
@@ -352,6 +369,23 @@ void MessageChannel::PostBlockingMessageToNative(gin::Arguments* args) {
args->Return(v8_result);
}
+void MessageChannel::IsPeripheralToNative(gin::Arguments* args) {
+ if (!instance_)
+ return;
+ PepperTryCatchV8 try_catch(instance_, &var_converter_, args->isolate());
+ if (args->Length() != 0) {
+ try_catch.ThrowException("isPeripheral takes no arguments");
+ return;
+ }
+
+ bool is_peripheral =
+ instance_->throttler() && instance_->throttler()->power_saver_enabled();
+
+ v8::Handle<v8::Value> v8_result =
+ v8::Boolean::New(args->isolate(), is_peripheral);
+ args->Return(v8_result);
+}
+
void MessageChannel::PostMessageToJavaScriptImpl(
const WebSerializedScriptValue& message_data) {
DCHECK(instance_);

Powered by Google App Engine
This is Rietveld 408576698