| Index: tests/fake_browser_ppapi/main.cc
|
| ===================================================================
|
| --- tests/fake_browser_ppapi/main.cc (revision 6005)
|
| +++ tests/fake_browser_ppapi/main.cc (working copy)
|
| @@ -1,261 +0,0 @@
|
| -/*
|
| - * Copyright (c) 2011 The Native Client Authors. All rights reserved.
|
| - * Use of this source code is governed by a BSD-style license that can be
|
| - * found in the LICENSE file.
|
| - */
|
| -
|
| -#include <stdio.h>
|
| -
|
| -#include <cstring>
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "native_client/src/include/nacl_macros.h"
|
| -#include "native_client/src/include/portability.h"
|
| -#include "native_client/src/shared/platform/nacl_check.h"
|
| -#include "native_client/src/shared/ppapi_proxy/plugin_ppb_var_deprecated.h"
|
| -#include "native_client/tests/fake_browser_ppapi/fake_core.h"
|
| -#include "native_client/tests/fake_browser_ppapi/fake_file_io.h"
|
| -#include "native_client/tests/fake_browser_ppapi/fake_file_io_trusted.h"
|
| -#include "native_client/tests/fake_browser_ppapi/fake_host.h"
|
| -#include "native_client/tests/fake_browser_ppapi/fake_instance.h"
|
| -#include "native_client/tests/fake_browser_ppapi/fake_nacl_private.h"
|
| -#include "native_client/tests/fake_browser_ppapi/fake_resource.h"
|
| -#include "native_client/tests/fake_browser_ppapi/fake_url_loader.h"
|
| -#include "native_client/tests/fake_browser_ppapi/fake_url_request_info.h"
|
| -#include "native_client/tests/fake_browser_ppapi/fake_url_response_info.h"
|
| -#include "native_client/tests/fake_browser_ppapi/fake_url_util.h"
|
| -#include "native_client/tests/fake_browser_ppapi/fake_window.h"
|
| -#include "native_client/tests/fake_browser_ppapi/test_scriptable.h"
|
| -#include "native_client/tests/fake_browser_ppapi/utility.h"
|
| -
|
| -#include "ppapi/c/dev/ppb_var_deprecated.h"
|
| -#include "ppapi/c/ppb_core.h"
|
| -#include "ppapi/c/ppb_instance.h"
|
| -#include "ppapi/c/ppp_instance.h"
|
| -#include "ppapi/c/pp_errors.h"
|
| -#include "ppapi/c/private/ppb_instance_private.h"
|
| -#include "ppapi/c/private/ppb_uma_private.h"
|
| -
|
| -using fake_browser_ppapi::DebugPrintf;
|
| -using fake_browser_ppapi::Host;
|
| -using fake_browser_ppapi::FakeWindow;
|
| -
|
| -namespace {
|
| -
|
| -Host* host = NULL;
|
| -
|
| -const void* FakeGetBrowserInterface(const char* interface_name) {
|
| - DebugPrintf("PPB_GetInterface: name='%s'\n", interface_name);
|
| - const void* ppb = NULL;
|
| - if (std::strcmp(interface_name, PPB_CORE_INTERFACE) == 0) {
|
| - ppb = fake_browser_ppapi::Core::GetInterface();
|
| - } else if (std::strcmp(interface_name, PPB_INSTANCE_INTERFACE) == 0) {
|
| - ppb = fake_browser_ppapi::Instance::GetInterface();
|
| - } else if (std::strcmp(interface_name, PPB_INSTANCE_PRIVATE_INTERFACE) == 0) {
|
| - ppb = fake_browser_ppapi::Instance::GetPrivateInterface();
|
| - } else if (std::strcmp(interface_name, PPB_VAR_DEPRECATED_INTERFACE) == 0) {
|
| - ppb = host->var_deprecated_interface();
|
| - } else if (std::strcmp(interface_name, PPB_URLLOADER_INTERFACE) == 0) {
|
| - ppb = fake_browser_ppapi::URLLoader::GetInterface();
|
| - } else if (std::strcmp(interface_name,
|
| - PPB_URLREQUESTINFO_INTERFACE) == 0) {
|
| - ppb = fake_browser_ppapi::URLRequestInfo::GetInterface();
|
| - } else if (std::strcmp(interface_name,
|
| - PPB_URLRESPONSEINFO_INTERFACE) == 0) {
|
| - ppb = fake_browser_ppapi::URLResponseInfo::GetInterface();
|
| - } else if (std::strcmp(interface_name, PPB_FILEIO_DEV_INTERFACE) == 0) {
|
| - ppb = fake_browser_ppapi::FileIO::GetInterface();
|
| - } else if (std::strcmp(interface_name,
|
| - PPB_FILEIOTRUSTED_DEV_INTERFACE) == 0) {
|
| - ppb = fake_browser_ppapi::FileIOTrusted::GetInterface();
|
| - } else if (std::strcmp(interface_name,
|
| - PPB_URLUTIL_DEV_INTERFACE_0_6) == 0) {
|
| - ppb = fake_browser_ppapi::URLUtil_Dev::GetInterface();
|
| - } else if (std::strcmp(interface_name,
|
| - PPB_NACL_PRIVATE_INTERFACE) == 0) {
|
| - ppb = fake_browser_ppapi::NaClPrivate::GetInterface();
|
| - } else if (std::strcmp(interface_name,
|
| - PPB_UMA_PRIVATE_INTERFACE) == 0) {
|
| - ppb = NULL;
|
| - } else {
|
| - NACL_UNIMPLEMENTED();
|
| - }
|
| - DebugPrintf("PPB_GetInterface: value=%p\n", ppb);
|
| - return ppb;
|
| -}
|
| -
|
| -// Module ids are needed for some call APIs, but the fake browser does
|
| -// not implement the storage tracking APIs that would use a real value.
|
| -// Since we have just two modules (browser and plugin), we'll statically
|
| -// assign id of 1 to one, 100 to other.
|
| -// TODO(sehr): implement storage tracking.
|
| -
|
| -// The storage allocated by the browser for the window object, etc., are
|
| -// attributed to the browser's module id.
|
| -PP_Module BrowserModuleId() {
|
| - static PP_Module id = 100;
|
| - return id;
|
| -}
|
| -
|
| -// The storage allocated by the plugin for its scriptable objects are
|
| -// attributed to the its module id.
|
| -PP_Module PluginModuleId() {
|
| - static PP_Module id = 1;
|
| - return id;
|
| -}
|
| -
|
| -bool ParseArgs(const char* str,
|
| - uint32_t* argc,
|
| - const char*** argn,
|
| - const char*** argv) {
|
| - std::vector<std::string> argn_vector;
|
| - std::vector<std::string> argv_vector;
|
| - *argc = 0;
|
| - char* embed_arg = std::strtok(strdup(str), ";");
|
| - while (embed_arg != NULL) {
|
| - char* equal_loc = std::strchr(embed_arg, '=');
|
| - if (equal_loc == NULL) {
|
| - return false;
|
| - }
|
| - size_t name_length = static_cast<size_t>(equal_loc - embed_arg);
|
| - argn_vector.push_back(std::string(embed_arg, name_length));
|
| - argv_vector.push_back(equal_loc + 1);
|
| - ++*argc;
|
| - embed_arg = std::strtok(NULL, ";");
|
| - }
|
| -
|
| - *argn = reinterpret_cast<const char**>(malloc(*argc * sizeof(*argn)));
|
| - *argv = reinterpret_cast<const char**>(malloc(*argc * sizeof(*argv)));
|
| - for (uint32_t i = 0; i < *argc; ++i) {
|
| - (*argn)[i] = strdup(argn_vector[i].c_str());
|
| - (*argv)[i] = strdup(argv_vector[i].c_str());
|
| - DebugPrintf("ParseArgs(): arg[%u]: '%s' = '%s'\n",
|
| - i, (*argn)[i], (*argv)[i]);
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -namespace fake_browser_ppapi {
|
| -
|
| -PP_Resource TrackResource(Resource* resource) {
|
| - PP_Resource resource_id = host->TrackResource(resource);
|
| - DebugPrintf("TrackResource: resource_id=%"NACL_PRId32"\n", resource_id);
|
| - return resource_id;
|
| -}
|
| -
|
| -Resource* GetResource(PP_Resource resource_id) {
|
| - return host->GetResource(resource_id);
|
| -}
|
| -
|
| -PP_Instance TrackInstance(Instance* instance) {
|
| - PP_Instance instance_id = host->TrackInstance(instance);
|
| - DebugPrintf("TrackInstance: instance_id=%"NACL_PRId32"\n", instance_id);
|
| - return instance_id;
|
| -}
|
| -
|
| -Instance* GetInstance(PP_Instance instance_id) {
|
| - return host->GetInstance(instance_id);
|
| -}
|
| -
|
| -} // namespace fake_browser_ppapi
|
| -
|
| -namespace {
|
| -
|
| -// Test instance execution.
|
| -void TestInstance(PP_Module browser_module_id,
|
| - const PPP_Instance* instance_interface,
|
| - const char* page_url,
|
| - uint32_t argc,
|
| - const char** argn,
|
| - const char** argv) {
|
| - DebugPrintf("TestInstance(): page url %s\n", page_url);
|
| - // Create an instance and the corresponding id.
|
| - fake_browser_ppapi::Instance* instance = new fake_browser_ppapi::Instance;
|
| - PP_Instance instance_id = TrackInstance(instance);
|
| - // Create a fake window object.
|
| - FakeWindow window(browser_module_id, instance_id, host, page_url);
|
| - instance->set_window(&window);
|
| - // Create and initialize plugin instance.
|
| - CHECK(instance_interface->DidCreate(instance_id, argc, argn, argv));
|
| -#ifndef PPAPI_INSTANCE_REMOVE_SCRIPTING
|
| - // Test the scriptable object for the instance.
|
| - PP_Var instance_object = instance_interface->GetInstanceObject(instance_id);
|
| - const PPB_Var_Deprecated* var_deprecated_interface =
|
| - reinterpret_cast<const PPB_Var_Deprecated*>(
|
| - FakeGetBrowserInterface(PPB_VAR_DEPRECATED_INTERFACE));
|
| - TestScriptableObject(instance_object,
|
| - fake_browser_ppapi::Instance::GetInterface(),
|
| - var_deprecated_interface,
|
| - instance_id,
|
| - browser_module_id);
|
| -#endif
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -int main(int argc, char** argv) {
|
| - // Turn off stdout buffering to aid debugging in case of a crash.
|
| - setvbuf(stdout, NULL, _IONBF, 0);
|
| -
|
| - NaClLogModuleInit();
|
| -
|
| - if (argc < 5) {
|
| - fprintf(stderr,
|
| - "Usage: fake_browser_ppapi plugin page_url \"embed args\""
|
| - " root_path\n");
|
| - return 1;
|
| - }
|
| -
|
| - const char* plugin_name = argv[1];
|
| - host = new fake_browser_ppapi::Host(plugin_name);
|
| - // TODO(polina): Change FakeWindow functions to not rely on host for
|
| - // the var interface.
|
| - host->set_var_deprecated_interface(
|
| - ppapi_proxy::PluginVarDeprecated::GetInterface());
|
| -
|
| - // Test startup.
|
| - CHECK(host->InitializeModule(PluginModuleId(), FakeGetBrowserInterface) ==
|
| - PP_OK);
|
| -
|
| - // Get an instance of the plugin.
|
| - const PPP_Instance* instance_interface =
|
| - reinterpret_cast<const PPP_Instance*>(
|
| - host->GetInterface(PPP_INSTANCE_INTERFACE));
|
| - CHECK(instance_interface != NULL);
|
| - const char* page_url = argv[2];
|
| -
|
| - // Get the embed argc/argn/argv.
|
| - const char* embed_args = argv[3];
|
| - uint32_t embed_argc = 0;
|
| - const char** embed_argn = NULL;
|
| - const char** embed_argv = NULL;
|
| - CHECK(ParseArgs(embed_args, &embed_argc, &embed_argn, &embed_argv));
|
| -
|
| - // Set url path and local path for nexe - required by fake url loader.
|
| - std::string url_path = page_url;
|
| - size_t last_slash = url_path.rfind("/");
|
| - CHECK(last_slash != std::string::npos);
|
| - url_path.erase(last_slash, url_path.size());
|
| - fake_browser_ppapi::g_nacl_ppapi_url_path = url_path;
|
| - fake_browser_ppapi::g_nacl_ppapi_local_path = argv[4];
|
| -
|
| - // Test an instance.
|
| - TestInstance(BrowserModuleId(),
|
| - instance_interface,
|
| - page_url,
|
| - embed_argc,
|
| - embed_argn,
|
| - embed_argv);
|
| -
|
| - // Shutdown.
|
| - host->ShutdownModule();
|
| -
|
| - // Close the plugin .so.
|
| - delete host;
|
| -
|
| - printf("PASS\n");
|
| - return 0;
|
| -}
|
|
|