Commit c8337810 authored by jochen's avatar jochen Committed by Commit bot

Split gamepad provider from test runner controller

This is to remove dependencies from test runner on content

BUG=478250
R=mkwst@chromium.org

Review URL: https://codereview.chromium.org/1133753003

Cr-Commit-Position: refs/heads/master@{#329769}
parent 2343edb2
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include "content/shell/renderer/layout_test/gc_controller.h" #include "content/shell/renderer/layout_test/gc_controller.h"
#include "content/shell/renderer/layout_test/layout_test_render_process_observer.h" #include "content/shell/renderer/layout_test/layout_test_render_process_observer.h"
#include "content/shell/renderer/layout_test/leak_detector.h" #include "content/shell/renderer/layout_test/leak_detector.h"
#include "content/shell/renderer/test_runner/gamepad_controller.h"
#include "content/shell/renderer/test_runner/mock_screen_orientation_client.h" #include "content/shell/renderer/test_runner/mock_screen_orientation_client.h"
#include "content/shell/renderer/test_runner/web_task.h" #include "content/shell/renderer/test_runner/web_task.h"
#include "content/shell/renderer/test_runner/web_test_interfaces.h" #include "content/shell/renderer/test_runner/web_test_interfaces.h"
...@@ -188,6 +189,31 @@ class UseSynchronousResizeModeVisitor : public RenderViewVisitor { ...@@ -188,6 +189,31 @@ class UseSynchronousResizeModeVisitor : public RenderViewVisitor {
bool enable_; bool enable_;
}; };
class MockGamepadProvider : public RendererGamepadProvider {
public:
explicit MockGamepadProvider(GamepadController* controller)
: RendererGamepadProvider(nullptr), controller_(controller) {}
~MockGamepadProvider() override {
StopIfObserving();
}
// RendererGamepadProvider implementation.
void SampleGamepads(blink::WebGamepads& gamepads) override {
controller_->SampleGamepads(gamepads);
}
void Start(blink::WebPlatformEventListener* listener) override {
controller_->SetListener(static_cast<blink::WebGamepadListener*>(listener));
RendererGamepadProvider::Start(listener);
}
void SendStartMessage() override {}
void SendStopMessage() override {}
private:
scoped_ptr<GamepadController> controller_;
DISALLOW_COPY_AND_ASSIGN(MockGamepadProvider);
};
} // namespace } // namespace
BlinkTestRunner::BlinkTestRunner(RenderView* render_view) BlinkTestRunner::BlinkTestRunner(RenderView* render_view)
...@@ -215,7 +241,8 @@ void BlinkTestRunner::SetEditCommand(const std::string& name, ...@@ -215,7 +241,8 @@ void BlinkTestRunner::SetEditCommand(const std::string& name,
} }
void BlinkTestRunner::SetGamepadProvider( void BlinkTestRunner::SetGamepadProvider(
scoped_ptr<RendererGamepadProvider> provider) { GamepadController* controller) {
scoped_ptr<MockGamepadProvider> provider(new MockGamepadProvider(controller));
SetMockGamepadProvider(provider.Pass()); SetMockGamepadProvider(provider.Pass());
} }
......
...@@ -55,7 +55,7 @@ class BlinkTestRunner : public RenderViewObserver, ...@@ -55,7 +55,7 @@ class BlinkTestRunner : public RenderViewObserver,
void ClearEditCommand() override; void ClearEditCommand() override;
void SetEditCommand(const std::string& name, void SetEditCommand(const std::string& name,
const std::string& value) override; const std::string& value) override;
void SetGamepadProvider(scoped_ptr<RendererGamepadProvider>) override; void SetGamepadProvider(GamepadController* controller) override;
void SetDeviceLightData(const double data) override; void SetDeviceLightData(const double data) override;
void SetDeviceMotionData(const blink::WebDeviceMotionData& data) override; void SetDeviceMotionData(const blink::WebDeviceMotionData& data) override;
void SetDeviceOrientationData( void SetDeviceOrientationData(
......
...@@ -137,22 +137,21 @@ void GamepadControllerBindings::SetAxisData(int index, int axis, double data) { ...@@ -137,22 +137,21 @@ void GamepadControllerBindings::SetAxisData(int index, int axis, double data) {
} }
// static // static
base::WeakPtr<GamepadController> GamepadController::Create(WebTestDelegate* delegate) { base::WeakPtr<GamepadController> GamepadController::Create(
WebTestDelegate* delegate) {
CHECK(delegate); CHECK(delegate);
GamepadController* controller = new GamepadController(); GamepadController* controller = new GamepadController();
delegate->SetGamepadProvider(scoped_ptr<RendererGamepadProvider>(controller)); delegate->SetGamepadProvider(controller);
return controller->weak_factory_.GetWeakPtr(); return controller->weak_factory_.GetWeakPtr();
} }
GamepadController::GamepadController() GamepadController::GamepadController()
: RendererGamepadProvider(0), : listener_(nullptr), weak_factory_(this) {
weak_factory_(this) {
Reset(); Reset();
} }
GamepadController::~GamepadController() { GamepadController::~GamepadController() {
StopIfObserving();
} }
void GamepadController::Reset() { void GamepadController::Reset() {
...@@ -163,19 +162,12 @@ void GamepadController::Install(WebFrame* frame) { ...@@ -163,19 +162,12 @@ void GamepadController::Install(WebFrame* frame) {
GamepadControllerBindings::Install(weak_factory_.GetWeakPtr(), frame); GamepadControllerBindings::Install(weak_factory_.GetWeakPtr(), frame);
} }
void GamepadController::SampleGamepads(blink::WebGamepads& gamepads) { void GamepadController::SampleGamepads(blink::WebGamepads& gamepads) {
memcpy(&gamepads, &gamepads_, sizeof(blink::WebGamepads)); memcpy(&gamepads, &gamepads_, sizeof(blink::WebGamepads));
} }
bool GamepadController::OnControlMessageReceived(const IPC::Message& msg) { void GamepadController::SetListener(blink::WebGamepadListener* listener) {
return false; listener_ = listener;
}
void GamepadController::SendStartMessage() {
}
void GamepadController::SendStopMessage() {
} }
void GamepadController::Connect(int index) { void GamepadController::Connect(int index) {
...@@ -194,8 +186,8 @@ void GamepadController::DispatchConnected(int index) { ...@@ -194,8 +186,8 @@ void GamepadController::DispatchConnected(int index) {
|| !gamepads_.items[index].connected) || !gamepads_.items[index].connected)
return; return;
const WebGamepad& pad = gamepads_.items[index]; const WebGamepad& pad = gamepads_.items[index];
if (listener()) if (listener_)
listener()->didConnectGamepad(index, pad); listener_->didConnectGamepad(index, pad);
} }
void GamepadController::Disconnect(int index) { void GamepadController::Disconnect(int index) {
...@@ -208,8 +200,8 @@ void GamepadController::Disconnect(int index) { ...@@ -208,8 +200,8 @@ void GamepadController::Disconnect(int index) {
if (gamepads_.items[i].connected) if (gamepads_.items[i].connected)
gamepads_.length = i + 1; gamepads_.length = i + 1;
} }
if (listener()) if (listener_)
listener()->didDisconnectGamepad(index, pad); listener_->didDisconnectGamepad(index, pad);
} }
void GamepadController::SetId(int index, const std::string& src) { void GamepadController::SetId(int index, const std::string& src) {
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <map> #include <map>
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "content/public/renderer/renderer_gamepad_provider.h"
#include "third_party/WebKit/public/platform/WebGamepads.h" #include "third_party/WebKit/public/platform/WebGamepads.h"
namespace blink { namespace blink {
...@@ -20,21 +19,16 @@ namespace content { ...@@ -20,21 +19,16 @@ namespace content {
class WebTestDelegate; class WebTestDelegate;
class GamepadController class GamepadController : public base::SupportsWeakPtr<GamepadController> {
: public base::SupportsWeakPtr<GamepadController>,
public RendererGamepadProvider {
public: public:
static base::WeakPtr<GamepadController> Create(WebTestDelegate* delegate); static base::WeakPtr<GamepadController> Create(WebTestDelegate* delegate);
~GamepadController() override; ~GamepadController();
void Reset(); void Reset();
void Install(blink::WebFrame* frame); void Install(blink::WebFrame* frame);
// RendererGamepadProvider implementation. void SampleGamepads(blink::WebGamepads& gamepads);
void SampleGamepads(blink::WebGamepads& gamepads) override; void SetListener(blink::WebGamepadListener* listener);
bool OnControlMessageReceived(const IPC::Message& msg) override;
void SendStartMessage() override;
void SendStopMessage() override;
private: private:
friend class GamepadControllerBindings; friend class GamepadControllerBindings;
...@@ -56,6 +50,8 @@ class GamepadController ...@@ -56,6 +50,8 @@ class GamepadController
void SetAxisCount(int index, int axes); void SetAxisCount(int index, int axes);
void SetAxisData(int index, int axis, double data); void SetAxisData(int index, int axis, double data);
blink::WebGamepadListener* listener_;
blink::WebGamepads gamepads_; blink::WebGamepads gamepads_;
// Mapping from gamepad index to connection state. // Mapping from gamepad index to connection state.
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "base/json/string_escape.h" #include "base/json/string_escape.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
#include "base/values.h"
#include "content/shell/common/shell_switches.h" #include "content/shell/common/shell_switches.h"
#include "content/shell/renderer/test_runner/accessibility_controller.h" #include "content/shell/renderer/test_runner/accessibility_controller.h"
#include "content/shell/renderer/test_runner/event_sender.h" #include "content/shell/renderer/test_runner/event_sender.h"
......
...@@ -30,7 +30,7 @@ struct WebURLError; ...@@ -30,7 +30,7 @@ struct WebURLError;
namespace content { namespace content {
class DeviceLightData; class DeviceLightData;
class RendererGamepadProvider; class GamepadController;
class WebTask; class WebTask;
class WebTestProxyBase; class WebTestProxyBase;
struct TestPreferences; struct TestPreferences;
...@@ -44,8 +44,7 @@ class WebTestDelegate { ...@@ -44,8 +44,7 @@ class WebTestDelegate {
const std::string& value) = 0; const std::string& value) = 0;
// Sets gamepad provider to be used for tests. // Sets gamepad provider to be used for tests.
virtual void SetGamepadProvider( virtual void SetGamepadProvider(GamepadController* controller) = 0;
scoped_ptr<RendererGamepadProvider> provider) = 0;
// Set data to return when registering via // Set data to return when registering via
// Platform::setDeviceLightListener(). // Platform::setDeviceLightListener().
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment