1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "content/shell/renderer/test_runner/mock_color_chooser.h"
6
7#include "content/shell/renderer/test_runner/web_test_delegate.h"
8#include "content/shell/renderer/test_runner/web_test_proxy.h"
9
10namespace content {
11
12namespace {
13class HostMethodTask : public WebMethodTask<MockColorChooser> {
14 public:
15  typedef void (MockColorChooser::*CallbackMethodType)();
16  HostMethodTask(MockColorChooser* object, CallbackMethodType callback)
17      : WebMethodTask<MockColorChooser>(object),
18        callback_(callback) {}
19
20  virtual void RunIfValid() OVERRIDE { (object_->*callback_)(); }
21
22 private:
23  CallbackMethodType callback_;
24};
25
26} // namespace
27
28MockColorChooser::MockColorChooser(blink::WebColorChooserClient* client,
29                                   WebTestDelegate* delegate,
30                                   WebTestProxyBase* proxy)
31    : client_(client),
32      delegate_(delegate),
33      proxy_(proxy) {
34  proxy_->DidOpenChooser();
35}
36
37MockColorChooser::~MockColorChooser() {
38  proxy_->DidCloseChooser();
39}
40
41void MockColorChooser::setSelectedColor(const blink::WebColor color) {}
42
43void MockColorChooser::endChooser() {
44  delegate_->PostDelayedTask(
45      new HostMethodTask(this, &MockColorChooser::InvokeDidEndChooser), 0);
46}
47
48void MockColorChooser::InvokeDidEndChooser() {
49  client_->didEndChooser();
50}
51
52}  // namespace content
53