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 "extensions/browser/api/test/test_api.h"
9 #include "extensions/test/extension_test_message_listener.h"
11 namespace extensions {
15 const char kFormat[] = "[\"%s\"]";
16 const char kTestMessage[] = "test message";
17 const char kTestMessage2[] = "test message 2";
18 const char kFailureMessage[] = "failure";
22 class ExtensionTestMessageListenerUnittest : public ExtensionApiUnittest {};
24 TEST_F(ExtensionTestMessageListenerUnittest, BasicTestExtensionMessageTest) {
25 // A basic test of sending a message and ensuring the listener is satisfied.
27 ExtensionTestMessageListener listener(kTestMessage, false); // won't reply
28 EXPECT_FALSE(listener.was_satisfied());
29 RunFunction(new TestSendMessageFunction,
30 base::StringPrintf(kFormat, kTestMessage));
31 EXPECT_TRUE(listener.was_satisfied());
32 EXPECT_EQ(kTestMessage, listener.message());
35 // Test that we can receive an arbitrary message.
37 ExtensionTestMessageListener listener(false); // won't reply
38 EXPECT_FALSE(listener.was_satisfied());
39 RunFunction(new TestSendMessageFunction,
40 base::StringPrintf(kFormat, kTestMessage2));
41 EXPECT_TRUE(listener.was_satisfied());
42 EXPECT_EQ(kTestMessage2, listener.message());
45 // Test that we can set the listener to be reused, and send/receive multiple
48 ExtensionTestMessageListener listener(false); // won't reply
49 EXPECT_FALSE(listener.was_satisfied());
50 RunFunction(new TestSendMessageFunction,
51 base::StringPrintf(kFormat, kTestMessage));
52 EXPECT_EQ(kTestMessage, listener.message());
53 EXPECT_TRUE(listener.was_satisfied());
55 EXPECT_FALSE(listener.was_satisfied());
56 EXPECT_TRUE(listener.message().empty());
57 RunFunction(new TestSendMessageFunction,
58 base::StringPrintf(kFormat, kTestMessage2));
59 EXPECT_TRUE(listener.was_satisfied());
60 EXPECT_EQ(kTestMessage2, listener.message());
63 // Test that we can listen for two explicit messages: a success, and a
66 ExtensionTestMessageListener listener(kTestMessage, false); // won't reply
67 listener.set_failure_message(kFailureMessage);
68 RunFunction(new TestSendMessageFunction,
69 base::StringPrintf(kFormat, kTestMessage));
70 EXPECT_TRUE(listener.WaitUntilSatisfied()); // succeeds
71 EXPECT_EQ(kTestMessage, listener.message());
73 RunFunction(new TestSendMessageFunction,
74 base::StringPrintf(kFormat, kFailureMessage));
75 EXPECT_FALSE(listener.WaitUntilSatisfied()); // fails
76 EXPECT_EQ(kFailureMessage, listener.message());
80 } // namespace extensions