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 #ifndef CONTENT_TEST_PPAPI_PPAPI_TEST_H_ 6 #define CONTENT_TEST_PPAPI_PPAPI_TEST_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/compiler_specific.h" 12 #include "content/public/test/content_browser_test.h" 13 #include "content/public/test/javascript_test_observer.h" 14 #include "net/test/spawned_test_server/spawned_test_server.h" 15 #include "url/gurl.h" 16 17 // This file provides test classes for writing Pepper tests for 18 // content_browsertests. The interfaces provided here should look similar to 19 // what's available in chrome/test/ppapi. 20 21 namespace base { 22 class CommandLine; 23 } 24 25 namespace content { 26 27 class PPAPITestMessageHandler : public content::TestMessageHandler { 28 public: 29 PPAPITestMessageHandler(); 30 31 virtual MessageResponse HandleMessage(const std::string& json) OVERRIDE; 32 virtual void Reset() OVERRIDE; 33 34 const std::string& message() const { 35 return message_; 36 } 37 38 private: 39 std::string message_; 40 41 DISALLOW_COPY_AND_ASSIGN(PPAPITestMessageHandler); 42 }; 43 44 class PPAPITestBase : public ContentBrowserTest { 45 public: 46 PPAPITestBase(); 47 48 // ContentBrowserTest overrides. 49 virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE; 50 51 virtual std::string BuildQuery(const std::string& base, 52 const std::string& test_case) = 0; 53 54 // Returns the URL to load for file: tests. 55 GURL GetTestFileUrl(const std::string& test_case); 56 virtual void RunTest(const std::string& test_case); 57 58 // Run the test and reload. This can test for clean shutdown, including 59 // leaked instance object vars. 60 virtual void RunTestAndReload(const std::string& test_case); 61 62 protected: 63 // Runs the test for a tab given the tab that's already navigated to the 64 // given URL. 65 void RunTestURL(const GURL& test_url); 66 }; 67 68 // In-process plugin test runner. See OutOfProcessPPAPITest below for the 69 // out-of-process version. 70 class PPAPITest : public PPAPITestBase { 71 public: 72 PPAPITest(); 73 74 virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE; 75 76 virtual std::string BuildQuery(const std::string& base, 77 const std::string& test_case) OVERRIDE; 78 protected: 79 bool in_process_; // Controls the --ppapi-in-process switch. 80 }; 81 82 // Variant of PPAPITest that runs plugins out-of-process to test proxy 83 // codepaths. 84 class OutOfProcessPPAPITest : public PPAPITest { 85 public: 86 OutOfProcessPPAPITest(); 87 88 virtual void SetUp() OVERRIDE; 89 virtual void TearDown() OVERRIDE; 90 }; 91 92 } // namespace 93 94 #endif // CONTENT_TEST_PPAPI_PPAPI_TEST_H_ 95