Index: content/renderer/pepper/pepper_plugin_instance_throttler_unittest.cc |
diff --git a/content/renderer/pepper/pepper_plugin_instance_throttler_unittest.cc b/content/renderer/pepper/pepper_plugin_instance_throttler_unittest.cc |
deleted file mode 100644 |
index 1ada9add6985b6dd3426f201a064ccf6154cef73..0000000000000000000000000000000000000000 |
--- a/content/renderer/pepper/pepper_plugin_instance_throttler_unittest.cc |
+++ /dev/null |
@@ -1,216 +0,0 @@ |
-// Copyright 2014 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 "base/bind.h" |
-#include "base/command_line.h" |
-#include "base/logging.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/message_loop/message_loop.h" |
-#include "content/public/common/content_switches.h" |
-#include "content/public/renderer/render_frame.h" |
-#include "content/renderer/pepper/pepper_plugin_instance_throttler.h" |
-#include "testing/gmock/include/gmock/gmock.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "third_party/WebKit/public/web/WebInputEvent.h" |
-#include "third_party/WebKit/public/web/WebPluginParams.h" |
-#include "ui/gfx/canvas.h" |
- |
-using testing::_; |
-using testing::Return; |
- |
-class GURL; |
- |
-namespace content { |
- |
-class PepperPluginInstanceThrottlerTest : public testing::Test { |
- protected: |
- PepperPluginInstanceThrottlerTest() : change_callback_calls_(0) {} |
- |
- void SetUp() override { |
- blink::WebRect rect; |
- rect.width = 100; |
- rect.height = 100; |
- throttler_.reset(new PepperPluginInstanceThrottler( |
- nullptr, rect, true /* is_flash_plugin */, GURL("http://example.com"), |
- content::RenderFrame::POWER_SAVER_MODE_PERIPHERAL_THROTTLED, |
- base::Bind(&PepperPluginInstanceThrottlerTest::ChangeCallback, |
- base::Unretained(this)))); |
- } |
- |
- PepperPluginInstanceThrottler* throttler() { |
- DCHECK(throttler_.get()); |
- return throttler_.get(); |
- } |
- |
- void DisablePowerSaverByRetroactiveWhitelist() { |
- throttler()->DisablePowerSaver( |
- PepperPluginInstanceThrottler::UNTHROTTLE_METHOD_BY_WHITELIST); |
- } |
- |
- int change_callback_calls() { return change_callback_calls_; } |
- |
- void EngageThrottle() { |
- throttler_->SetPluginThrottled(true); |
- } |
- |
- void SendEventAndTest(blink::WebInputEvent::Type event_type, |
- bool expect_consumed, |
- bool expect_throttled, |
- int expect_change_callback_count) { |
- blink::WebMouseEvent event; |
- event.type = event_type; |
- event.modifiers = blink::WebInputEvent::Modifiers::LeftButtonDown; |
- EXPECT_EQ(expect_consumed, throttler()->ConsumeInputEvent(event)); |
- EXPECT_EQ(expect_throttled, throttler()->is_throttled()); |
- EXPECT_EQ(expect_change_callback_count, change_callback_calls()); |
- } |
- |
- private: |
- void ChangeCallback() { ++change_callback_calls_; } |
- |
- scoped_ptr<PepperPluginInstanceThrottler> throttler_; |
- |
- int change_callback_calls_; |
- |
- base::MessageLoop loop_; |
-}; |
- |
-TEST_F(PepperPluginInstanceThrottlerTest, ThrottleAndUnthrottleByClick) { |
- EXPECT_FALSE(throttler()->is_throttled()); |
- EXPECT_EQ(0, change_callback_calls()); |
- |
- EngageThrottle(); |
- EXPECT_TRUE(throttler()->is_throttled()); |
- EXPECT_EQ(1, change_callback_calls()); |
- |
- // MouseUp while throttled should be consumed and disengage throttling. |
- SendEventAndTest(blink::WebInputEvent::Type::MouseUp, true, false, 2); |
-} |
- |
-TEST_F(PepperPluginInstanceThrottlerTest, ThrottleByKeyframe) { |
- EXPECT_FALSE(throttler()->is_throttled()); |
- EXPECT_EQ(0, change_callback_calls()); |
- |
- SkBitmap boring_bitmap; |
- gfx::Canvas canvas(gfx::Size(20, 10), 1.0f, true); |
- canvas.FillRect(gfx::Rect(20, 10), SK_ColorBLACK); |
- canvas.FillRect(gfx::Rect(10, 10), SK_ColorWHITE); |
- SkBitmap interesting_bitmap = |
- skia::GetTopDevice(*canvas.sk_canvas())->accessBitmap(false); |
- |
- // Don't throttle for a boring frame. |
- throttler()->OnImageFlush(&boring_bitmap); |
- EXPECT_FALSE(throttler()->is_throttled()); |
- EXPECT_EQ(0, change_callback_calls()); |
- |
- // Don't throttle for non-consecutive interesting frames. |
- throttler()->OnImageFlush(&interesting_bitmap); |
- throttler()->OnImageFlush(&boring_bitmap); |
- throttler()->OnImageFlush(&interesting_bitmap); |
- throttler()->OnImageFlush(&boring_bitmap); |
- throttler()->OnImageFlush(&interesting_bitmap); |
- throttler()->OnImageFlush(&boring_bitmap); |
- EXPECT_FALSE(throttler()->is_throttled()); |
- EXPECT_EQ(0, change_callback_calls()); |
- |
- // Throttle after consecutive interesting frames. |
- throttler()->OnImageFlush(&interesting_bitmap); |
- throttler()->OnImageFlush(&interesting_bitmap); |
- throttler()->OnImageFlush(&interesting_bitmap); |
- throttler()->OnImageFlush(&interesting_bitmap); |
- EXPECT_TRUE(throttler()->is_throttled()); |
- EXPECT_EQ(1, change_callback_calls()); |
-} |
- |
-TEST_F(PepperPluginInstanceThrottlerTest, IgnoreThrottlingAfterMouseUp) { |
- EXPECT_FALSE(throttler()->is_throttled()); |
- EXPECT_EQ(0, change_callback_calls()); |
- |
- // MouseUp before throttling engaged should not be consumed, but should |
- // prevent subsequent throttling from engaging. |
- SendEventAndTest(blink::WebInputEvent::Type::MouseUp, false, false, 0); |
- |
- EngageThrottle(); |
- EXPECT_FALSE(throttler()->is_throttled()); |
- EXPECT_EQ(0, change_callback_calls()); |
-} |
- |
-TEST_F(PepperPluginInstanceThrottlerTest, FastWhitelisting) { |
- EXPECT_FALSE(throttler()->is_throttled()); |
- EXPECT_EQ(0, change_callback_calls()); |
- |
- DisablePowerSaverByRetroactiveWhitelist(); |
- |
- EngageThrottle(); |
- EXPECT_FALSE(throttler()->is_throttled()); |
- EXPECT_EQ(1, change_callback_calls()); |
-} |
- |
-TEST_F(PepperPluginInstanceThrottlerTest, SlowWhitelisting) { |
- EXPECT_FALSE(throttler()->is_throttled()); |
- EXPECT_EQ(0, change_callback_calls()); |
- |
- EngageThrottle(); |
- EXPECT_TRUE(throttler()->is_throttled()); |
- EXPECT_EQ(1, change_callback_calls()); |
- |
- DisablePowerSaverByRetroactiveWhitelist(); |
- EXPECT_FALSE(throttler()->is_throttled()); |
- EXPECT_EQ(2, change_callback_calls()); |
-} |
- |
-TEST_F(PepperPluginInstanceThrottlerTest, EventConsumption) { |
- EXPECT_FALSE(throttler()->is_throttled()); |
- EXPECT_EQ(0, change_callback_calls()); |
- |
- EngageThrottle(); |
- EXPECT_TRUE(throttler()->is_throttled()); |
- EXPECT_EQ(1, change_callback_calls()); |
- |
- // Consume but don't unthrottle on a variety of other events. |
- SendEventAndTest(blink::WebInputEvent::Type::MouseDown, true, true, 1); |
- SendEventAndTest(blink::WebInputEvent::Type::MouseWheel, true, true, 1); |
- SendEventAndTest(blink::WebInputEvent::Type::MouseMove, true, true, 1); |
- SendEventAndTest(blink::WebInputEvent::Type::KeyDown, true, true, 1); |
- SendEventAndTest(blink::WebInputEvent::Type::KeyUp, true, true, 1); |
- |
- // Consume and unthrottle on MouseUp |
- SendEventAndTest(blink::WebInputEvent::Type::MouseUp, true, false, 2); |
- |
- // Don't consume events after unthrottle. |
- SendEventAndTest(blink::WebInputEvent::Type::MouseDown, false, false, 2); |
- SendEventAndTest(blink::WebInputEvent::Type::MouseWheel, false, false, 2); |
- SendEventAndTest(blink::WebInputEvent::Type::MouseMove, false, false, 2); |
- SendEventAndTest(blink::WebInputEvent::Type::KeyDown, false, false, 2); |
- SendEventAndTest(blink::WebInputEvent::Type::KeyUp, false, false, 2); |
- |
- // Subsequent MouseUps should also not be consumed. |
- SendEventAndTest(blink::WebInputEvent::Type::MouseUp, false, false, 2); |
-} |
- |
-TEST_F(PepperPluginInstanceThrottlerTest, ThrottleOnLeftClickOnly) { |
- EXPECT_FALSE(throttler()->is_throttled()); |
- EXPECT_EQ(0, change_callback_calls()); |
- |
- EngageThrottle(); |
- EXPECT_TRUE(throttler()->is_throttled()); |
- EXPECT_EQ(1, change_callback_calls()); |
- |
- blink::WebMouseEvent event; |
- event.type = blink::WebInputEvent::Type::MouseUp; |
- |
- event.modifiers = blink::WebInputEvent::Modifiers::RightButtonDown; |
- EXPECT_FALSE(throttler()->ConsumeInputEvent(event)); |
- EXPECT_TRUE(throttler()->is_throttled()); |
- |
- event.modifiers = blink::WebInputEvent::Modifiers::MiddleButtonDown; |
- EXPECT_TRUE(throttler()->ConsumeInputEvent(event)); |
- EXPECT_TRUE(throttler()->is_throttled()); |
- |
- event.modifiers = blink::WebInputEvent::Modifiers::LeftButtonDown; |
- EXPECT_TRUE(throttler()->ConsumeInputEvent(event)); |
- EXPECT_FALSE(throttler()->is_throttled()); |
-} |
- |
-} // namespace content |