1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
// Copyright 2017 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.
#ifndef EXTENSIONS_RENDERER_SEND_MESSAGE_TESTER_H_
#define EXTENSIONS_RENDERER_SEND_MESSAGE_TESTER_H_
#include <string>
#include "base/macros.h"
namespace extensions {
class ScriptContext;
class TestIPCMessageSender;
struct MessageTarget;
// A helper class for testing the sendMessage, sendRequest, and connect API
// calls, since these are used across three different API namespaces
// (chrome.runtime, chrome.tabs, and chrome.extension).
class SendMessageTester {
public:
SendMessageTester(TestIPCMessageSender* ipc_sender,
ScriptContext* script_context,
int next_port_id,
const std::string& api_namespace);
~SendMessageTester();
// Whether we expect the port to be open or closed at the end of the call.
enum PortStatus {
CLOSED,
OPEN,
};
// Tests the sendMessage API with the specified expectations.
void TestSendMessage(const std::string& args,
const std::string& expected_message,
const MessageTarget& expected_target,
PortStatus expected_port_status);
// Tests the sendRequest API with the specified expectations.
void TestSendRequest(const std::string& args,
const std::string& expected_message,
const MessageTarget& expected_target,
PortStatus expected_port_status);
// Tests the connect API with the specified expectaions.
void TestConnect(const std::string& args,
const std::string& expected_channel,
const MessageTarget& expected_target);
private:
enum Method {
SEND_REQUEST,
SEND_MESSAGE,
};
// Common handler for testing sendMessage and sendRequest.
void TestSendMessageOrRequest(const std::string& args,
const std::string& expected_message,
const MessageTarget& expected_target,
PortStatus expected_port_status,
Method method);
TestIPCMessageSender* ipc_sender_;
ScriptContext* script_context_;
int next_port_id_;
std::string api_namespace_;
DISALLOW_COPY_AND_ASSIGN(SendMessageTester);
};
} // namespace extensions
#endif // EXTENSIONS_RENDERER_SEND_MESSAGE_TESTER_H_
|