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