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