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 @@
#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/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/web_task.h"
#include "content/shell/renderer/test_runner/web_test_interfaces.h"
......@@ -188,6 +189,31 @@ class UseSynchronousResizeModeVisitor : public RenderViewVisitor {
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
BlinkTestRunner::BlinkTestRunner(RenderView* render_view)
......@@ -215,7 +241,8 @@ void BlinkTestRunner::SetEditCommand(const std::string& name,
}
void BlinkTestRunner::SetGamepadProvider(
scoped_ptr<RendererGamepadProvider> provider) {
GamepadController* controller) {
scoped_ptr<MockGamepadProvider> provider(new MockGamepadProvider(controller));
SetMockGamepadProvider(provider.Pass());
}
......
......@@ -55,7 +55,7 @@ class BlinkTestRunner : public RenderViewObserver,
void ClearEditCommand() override;
void SetEditCommand(const std::string& name,
const std::string& value) override;
void SetGamepadProvider(scoped_ptr<RendererGamepadProvider>) override;
void SetGamepadProvider(GamepadController* controller) override;
void SetDeviceLightData(const double data) override;
void SetDeviceMotionData(const blink::WebDeviceMotionData& data) override;
void SetDeviceOrientationData(
......
......@@ -137,22 +137,21 @@ void GamepadControllerBindings::SetAxisData(int index, int axis, double data) {
}
// static
base::WeakPtr<GamepadController> GamepadController::Create(WebTestDelegate* delegate) {
base::WeakPtr<GamepadController> GamepadController::Create(
WebTestDelegate* delegate) {
CHECK(delegate);
GamepadController* controller = new GamepadController();
delegate->SetGamepadProvider(scoped_ptr<RendererGamepadProvider>(controller));
delegate->SetGamepadProvider(controller);
return controller->weak_factory_.GetWeakPtr();
}
GamepadController::GamepadController()
: RendererGamepadProvider(0),
weak_factory_(this) {
: listener_(nullptr), weak_factory_(this) {
Reset();
}
GamepadController::~GamepadController() {
StopIfObserving();
}
void GamepadController::Reset() {
......@@ -163,19 +162,12 @@ void GamepadController::Install(WebFrame* frame) {
GamepadControllerBindings::Install(weak_factory_.GetWeakPtr(), frame);
}
void GamepadController::SampleGamepads(blink::WebGamepads& gamepads) {
memcpy(&gamepads, &gamepads_, sizeof(blink::WebGamepads));
}
bool GamepadController::OnControlMessageReceived(const IPC::Message& msg) {
return false;
}
void GamepadController::SendStartMessage() {
}
void GamepadController::SendStopMessage() {
void GamepadController::SetListener(blink::WebGamepadListener* listener) {
listener_ = listener;
}
void GamepadController::Connect(int index) {
......@@ -194,8 +186,8 @@ void GamepadController::DispatchConnected(int index) {
|| !gamepads_.items[index].connected)
return;
const WebGamepad& pad = gamepads_.items[index];
if (listener())
listener()->didConnectGamepad(index, pad);
if (listener_)
listener_->didConnectGamepad(index, pad);
}
void GamepadController::Disconnect(int index) {
......@@ -208,8 +200,8 @@ void GamepadController::Disconnect(int index) {
if (gamepads_.items[i].connected)
gamepads_.length = i + 1;
}
if (listener())
listener()->didDisconnectGamepad(index, pad);
if (listener_)
listener_->didDisconnectGamepad(index, pad);
}
void GamepadController::SetId(int index, const std::string& src) {
......
......@@ -8,7 +8,6 @@
#include <map>
#include "base/memory/weak_ptr.h"
#include "content/public/renderer/renderer_gamepad_provider.h"
#include "third_party/WebKit/public/platform/WebGamepads.h"
namespace blink {
......@@ -20,21 +19,16 @@ namespace content {
class WebTestDelegate;
class GamepadController
: public base::SupportsWeakPtr<GamepadController>,
public RendererGamepadProvider {
class GamepadController : public base::SupportsWeakPtr<GamepadController> {
public:
static base::WeakPtr<GamepadController> Create(WebTestDelegate* delegate);
~GamepadController() override;
~GamepadController();
void Reset();
void Install(blink::WebFrame* frame);
// RendererGamepadProvider implementation.
void SampleGamepads(blink::WebGamepads& gamepads) override;
bool OnControlMessageReceived(const IPC::Message& msg) override;
void SendStartMessage() override;
void SendStopMessage() override;
void SampleGamepads(blink::WebGamepads& gamepads);
void SetListener(blink::WebGamepadListener* listener);
private:
friend class GamepadControllerBindings;
......@@ -56,6 +50,8 @@ class GamepadController
void SetAxisCount(int index, int axes);
void SetAxisData(int index, int axis, double data);
blink::WebGamepadListener* listener_;
blink::WebGamepads gamepads_;
// Mapping from gamepad index to connection state.
......
......@@ -11,6 +11,7 @@
#include "base/json/string_escape.h"
#include "base/logging.h"
#include "base/strings/stringprintf.h"
#include "base/values.h"
#include "content/shell/common/shell_switches.h"
#include "content/shell/renderer/test_runner/accessibility_controller.h"
#include "content/shell/renderer/test_runner/event_sender.h"
......
......@@ -30,7 +30,7 @@ struct WebURLError;
namespace content {
class DeviceLightData;
class RendererGamepadProvider;
class GamepadController;
class WebTask;
class WebTestProxyBase;
struct TestPreferences;
......@@ -44,8 +44,7 @@ class WebTestDelegate {
const std::string& value) = 0;
// Sets gamepad provider to be used for tests.
virtual void SetGamepadProvider(
scoped_ptr<RendererGamepadProvider> provider) = 0;
virtual void SetGamepadProvider(GamepadController* controller) = 0;
// Set data to return when registering via
// 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