Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / test / ppapi / ppapi_test.h
1 // Copyright (c) 2012 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 #ifndef CHROME_TEST_PPAPI_PPAPI_TEST_H_
6 #define CHROME_TEST_PPAPI_PPAPI_TEST_H_
7
8 #include <string>
9
10 #include "base/basictypes.h"
11 #include "base/compiler_specific.h"
12 #include "chrome/test/base/in_process_browser_test.h"
13 #include "content/public/test/javascript_test_observer.h"
14 #include "net/test/spawned_test_server/spawned_test_server.h"
15
16 namespace content {
17 class RenderViewHost;
18 }
19
20 class PPAPITestMessageHandler : public content::TestMessageHandler {
21  public:
22   PPAPITestMessageHandler();
23
24   virtual MessageResponse HandleMessage(const std::string& json) override;
25   virtual void Reset() override;
26
27   const std::string& message() const {
28     return message_;
29   }
30
31  private:
32   std::string message_;
33
34   DISALLOW_COPY_AND_ASSIGN(PPAPITestMessageHandler);
35 };
36
37 class PPAPITestBase : public InProcessBrowserTest {
38  public:
39   PPAPITestBase();
40
41   // InProcessBrowserTest:
42   virtual void SetUp() override;
43   virtual void SetUpCommandLine(base::CommandLine* command_line) override;
44   virtual void SetUpOnMainThread() override;
45
46   virtual std::string BuildQuery(const std::string& base,
47                                  const std::string& test_case) = 0;
48
49   // Returns the URL to load for file: tests.
50   GURL GetTestFileUrl(const std::string& test_case);
51   virtual void RunTest(const std::string& test_case);
52   virtual void RunTestViaHTTP(const std::string& test_case);
53   virtual void RunTestWithSSLServer(const std::string& test_case);
54   virtual void RunTestWithWebSocketServer(const std::string& test_case);
55   virtual void RunTestIfAudioOutputAvailable(const std::string& test_case);
56   virtual void RunTestViaHTTPIfAudioOutputAvailable(
57       const std::string& test_case);
58
59  protected:
60   class InfoBarObserver : public content::NotificationObserver {
61    public:
62     explicit InfoBarObserver(PPAPITestBase* test_base);
63     ~InfoBarObserver();
64
65     void ExpectInfoBarAndAccept(bool should_accept);
66
67    private:
68     // content::NotificationObserver:
69     virtual void Observe(int type,
70                          const content::NotificationSource& source,
71                          const content::NotificationDetails& details) override;
72
73     void VerifyInfoBarState();
74
75     content::NotificationRegistrar registrar_;
76     PPAPITestBase* test_base_;
77     bool expecting_infobar_;
78     bool should_accept_;
79   };
80
81   // Runs the test for a tab given the tab that's already navigated to the
82   // given URL.
83   void RunTestURL(const GURL& test_url);
84   // Gets the URL of the the given |test_case| for the given HTTP test server.
85   // If |extra_params| is non-empty, it will be appended as URL parameters.
86   GURL GetTestURL(const net::SpawnedTestServer& http_server,
87                   const std::string& test_case,
88                   const std::string& extra_params);
89 };
90
91 // In-process plugin test runner.  See OutOfProcessPPAPITest below for the
92 // out-of-process version.
93 class PPAPITest : public PPAPITestBase {
94  public:
95   PPAPITest();
96
97   virtual void SetUpCommandLine(base::CommandLine* command_line) override;
98
99   virtual std::string BuildQuery(const std::string& base,
100                                  const std::string& test_case) override;
101  protected:
102   bool in_process_;  // Controls the --ppapi-in-process switch.
103 };
104
105 class PPAPIPrivateTest : public PPAPITest {
106  protected:
107   virtual void SetUpCommandLine(base::CommandLine* command_line) override;
108 };
109
110 // Variant of PPAPITest that runs plugins out-of-process to test proxy
111 // codepaths.
112 class OutOfProcessPPAPITest : public PPAPITest {
113  public:
114   OutOfProcessPPAPITest();
115
116   virtual void SetUpCommandLine(base::CommandLine* command_line) override;
117 };
118
119 class OutOfProcessPPAPIPrivateTest : public OutOfProcessPPAPITest {
120  protected:
121   virtual void SetUpCommandLine(base::CommandLine* command_line) override;
122 };
123
124 // NaCl plugin test runner for Newlib runtime.
125 class PPAPINaClTest : public PPAPITestBase {
126  public:
127   virtual void SetUpCommandLine(base::CommandLine* command_line) override;
128   virtual void SetUpOnMainThread() override;
129   // PPAPITestBase overrides.
130   virtual void RunTest(const std::string& test_case) override;
131   virtual void RunTestViaHTTP(const std::string& test_case) override;
132   virtual void RunTestWithSSLServer(const std::string& test_case) override;
133   virtual void RunTestWithWebSocketServer(
134       const std::string& test_case) override;
135   virtual void RunTestIfAudioOutputAvailable(
136       const std::string& test_case) override;
137   virtual void RunTestViaHTTPIfAudioOutputAvailable(
138       const std::string& test_case) override;
139 };
140
141 // NaCl plugin test runner for Newlib runtime.
142 class PPAPINaClNewlibTest : public PPAPINaClTest {
143  public:
144   virtual std::string BuildQuery(const std::string& base,
145                                  const std::string& test_case) override;
146 };
147
148 class PPAPIPrivateNaClNewlibTest : public PPAPINaClNewlibTest {
149  protected:
150   virtual void SetUpCommandLine(base::CommandLine* command_line) override;
151 };
152
153 // NaCl plugin test runner for GNU-libc runtime.
154 class PPAPINaClGLibcTest : public PPAPINaClTest {
155  public:
156   virtual std::string BuildQuery(const std::string& base,
157                                  const std::string& test_case) override;
158 };
159
160 class PPAPIPrivateNaClGLibcTest : public PPAPINaClGLibcTest {
161  protected:
162   virtual void SetUpCommandLine(base::CommandLine* command_line) override;
163 };
164
165 // NaCl plugin test runner for the PNaCl + Newlib runtime.
166 class PPAPINaClPNaClTest : public PPAPINaClTest {
167  public:
168   virtual std::string BuildQuery(const std::string& base,
169                                  const std::string& test_case) override;
170 };
171
172 class PPAPIPrivateNaClPNaClTest : public PPAPINaClPNaClTest {
173  protected:
174   virtual void SetUpCommandLine(base::CommandLine* command_line) override;
175 };
176
177 // Test Non-SFI Mode, using PNaCl toolchain to produce nexes.
178 class PPAPINaClPNaClNonSfiTest : public PPAPINaClTest {
179  public:
180   virtual void SetUpCommandLine(base::CommandLine* command_line);
181
182   virtual std::string BuildQuery(const std::string& base,
183                                  const std::string& test_case) override;
184 };
185
186 class PPAPIPrivateNaClPNaClNonSfiTest : public PPAPINaClPNaClNonSfiTest {
187  protected:
188   virtual void SetUpCommandLine(base::CommandLine* command_line) override;
189 };
190
191 class PPAPINaClTestDisallowedSockets : public PPAPITestBase {
192  public:
193   virtual void SetUpCommandLine(base::CommandLine* command_line) override;
194
195   virtual std::string BuildQuery(const std::string& base,
196                                  const std::string& test_case) override;
197 };
198
199 class PPAPIBrokerInfoBarTest : public OutOfProcessPPAPITest {
200  public:
201   // PPAPITestBase override:
202   virtual void SetUpOnMainThread() override;
203 };
204
205 #endif  // CHROME_TEST_PPAPI_PPAPI_TEST_H_