Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / extension_test_message_listener_unittest.cc
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 "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"
10
11 namespace extensions {
12
13 namespace {
14
15 const char kFormat[] = "[\"%s\"]";
16 const char kTestMessage[] = "test message";
17 const char kTestMessage2[] = "test message 2";
18 const char kFailureMessage[] = "failure";
19
20 }  // namespace
21
22 class ExtensionTestMessageListenerUnittest : public ExtensionApiUnittest {};
23
24 TEST_F(ExtensionTestMessageListenerUnittest, BasicTestExtensionMessageTest) {
25   // A basic test of sending a message and ensuring the listener is satisfied.
26   {
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());
33   }
34
35   // Test that we can receive an arbitrary message.
36   {
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());
43   }
44
45   // Test that we can set the listener to be reused, and send/receive multiple
46   // messages.
47   {
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());
54     listener.Reset();
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());
61   }
62
63   // Test that we can listen for two explicit messages: a success, and a
64   // failure.
65   {
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());
72     listener.Reset();
73     RunFunction(new TestSendMessageFunction,
74                 base::StringPrintf(kFormat, kFailureMessage));
75     EXPECT_FALSE(listener.WaitUntilSatisfied());  // fails
76     EXPECT_EQ(kFailureMessage, listener.message());
77   }
78 }
79
80 }  // namespace extensions