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.
5 #include "base/strings/string_util.h"
6 #include "base/strings/stringprintf.h"
7 #include "chrome/browser/extensions/extension_api_unittest.h"
8 #include "chrome/browser/extensions/extension_test_message_listener.h"
9 #include "extensions/browser/api/test/test_api.h"
11 namespace extensions {
15 const char kTestMessage[] = "test message";
16 const char kTestMessage2[] = "test message 2";
17 const char kFailureMessage[] = "failure";
21 class ExtensionTestMessageListenerUnittest : public ExtensionApiUnittest {};
23 TEST_F(ExtensionTestMessageListenerUnittest, BasicTestExtensionMessageTest) {
24 // A basic test of sending a message and ensuring the listener is satisfied.
26 ExtensionTestMessageListener listener(kTestMessage, false); // won't reply
27 EXPECT_FALSE(listener.was_satisfied());
28 RunFunction(new TestSendMessageFunction,
29 base::StringPrintf("[\"%s\"]", kTestMessage));
30 EXPECT_TRUE(listener.was_satisfied());
31 EXPECT_EQ(kTestMessage, listener.message());
34 // Test that we can receive an arbitrary message.
36 ExtensionTestMessageListener listener(false); // won't reply
37 EXPECT_FALSE(listener.was_satisfied());
38 RunFunction(new TestSendMessageFunction,
39 base::StringPrintf("[\"%s\"]", kTestMessage2));
40 EXPECT_TRUE(listener.was_satisfied());
41 EXPECT_EQ(kTestMessage2, listener.message());
44 // Test that we can set the listener to be reused, and send/receive multiple
47 ExtensionTestMessageListener listener(false); // won't reply
48 EXPECT_FALSE(listener.was_satisfied());
49 RunFunction(new TestSendMessageFunction,
50 base::StringPrintf("[\"%s\"]", kTestMessage));
51 EXPECT_EQ(kTestMessage, listener.message());
52 EXPECT_TRUE(listener.was_satisfied());
54 EXPECT_FALSE(listener.was_satisfied());
55 EXPECT_EQ(base::EmptyString(), listener.message());
56 RunFunction(new TestSendMessageFunction,
57 base::StringPrintf("[\"%s\"]", kTestMessage2));
58 EXPECT_TRUE(listener.was_satisfied());
59 EXPECT_EQ(kTestMessage2, listener.message());
62 // Test that we can listen for two explicit messages: a success, and a
65 ExtensionTestMessageListener listener(kTestMessage, false); // won't reply
66 listener.set_failure_message(kFailureMessage);
67 RunFunction(new TestSendMessageFunction,
68 base::StringPrintf("[\"%s\"]", kTestMessage));
69 EXPECT_TRUE(listener.WaitUntilSatisfied()); // succeeds
70 EXPECT_EQ(kTestMessage, listener.message());
72 RunFunction(new TestSendMessageFunction,
73 base::StringPrintf("[\"%s\"]", kFailureMessage));
74 EXPECT_FALSE(listener.WaitUntilSatisfied()); // fails
75 EXPECT_EQ(kFailureMessage, listener.message());
79 } // namespace extensions