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#ifndef CONTENT_SHELL_RENDERER_TEST_RUNNER_MOCK_WEB_PUSH_CLIENT_H_
6#define CONTENT_SHELL_RENDERER_TEST_RUNNER_MOCK_WEB_PUSH_CLIENT_H_
7
8#include <string>
9
10#include "third_party/WebKit/public/platform/WebPushClient.h"
11
12namespace blink {
13class WebServiceWorkerProvider;
14class WebString;
15}  // namespace blink
16
17namespace content {
18
19// MockWebPushClient is a mock implementation of WebPushClient to be able to
20// test the Push Message API in Blink without depending on the content layer.
21// The mock, for legacy reasons, automatically fails if it wasn't set to another
22// state. Consumers can set its success values and error values by calling
23// respectively SetMockSuccessValues and SetMockErrorValues. When
24// SetMockSuccessValues is called, the mock will always succeed until
25// SetMockErrorValues is called at which point it will always fail.
26class MockWebPushClient : public blink::WebPushClient {
27 public:
28  MockWebPushClient();
29  virtual ~MockWebPushClient();
30
31  void SetMockSuccessValues(const std::string& end_point,
32                            const std::string& registration_id);
33
34  void SetMockErrorValues(const std::string& message);
35
36 private:
37  // WebPushClient implementation.
38  virtual void registerPushMessaging(
39      const blink::WebString& sender_id,
40      blink::WebPushRegistrationCallbacks* callbacks);
41  virtual void registerPushMessaging(
42      const blink::WebString& sender_id,
43      blink::WebPushRegistrationCallbacks* callbacks,
44      blink::WebServiceWorkerProvider* service_worker_provider);
45
46  std::string end_point_;
47  std::string registration_id_;
48  std::string error_message_;
49
50  DISALLOW_COPY_AND_ASSIGN(MockWebPushClient);
51};
52
53}  // namespace content
54
55#endif  // CONTENT_SHELL_RENDERER_TEST_RUNNER_MOCK_WEB_PUSH_CLIENT_H_
56