| Index: ppapi/native_client/tests/nacl_browser/manifest_file/pm_pre_init_manifest_file_test.cc
|
| diff --git a/ppapi/native_client/tests/nacl_browser/manifest_file/pm_pre_init_manifest_file_test.cc b/ppapi/native_client/tests/nacl_browser/manifest_file/pm_pre_init_manifest_file_test.cc
|
| deleted file mode 100644
|
| index 1339ebc8b3ddb91cadb600ebec0d1e497a1911cc..0000000000000000000000000000000000000000
|
| --- a/ppapi/native_client/tests/nacl_browser/manifest_file/pm_pre_init_manifest_file_test.cc
|
| +++ /dev/null
|
| @@ -1,267 +0,0 @@
|
| -/*
|
| - * Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| - * Use of this source code is governed by a BSD-style license that can be
|
| - * found in the LICENSE file.
|
| - */
|
| -
|
| -//
|
| -// Post-message based test for simple rpc based access to name services.
|
| -//
|
| -
|
| -#include <string>
|
| -
|
| -#include <assert.h>
|
| -#include <stdio.h>
|
| -#include <stdlib.h>
|
| -#include <inttypes.h>
|
| -#include <sys/fcntl.h>
|
| -#include <string.h>
|
| -#include <unistd.h>
|
| -#include <pthread.h>
|
| -
|
| -#include "native_client/src/include/nacl_base.h"
|
| -#include "native_client/src/public/imc_syscalls.h"
|
| -#include "native_client/src/public/name_service.h"
|
| -#include "native_client/src/shared/platform/nacl_sync.h"
|
| -#include "native_client/src/shared/platform/nacl_sync_checked.h"
|
| -#include "native_client/src/shared/platform/nacl_sync_raii.h"
|
| -#include "native_client/src/shared/srpc/nacl_srpc.h"
|
| -
|
| -// TODO(bsy): move weak_ref module to the shared directory
|
| -#include "native_client/src/trusted/weak_ref/weak_ref.h"
|
| -
|
| -#include "ppapi/cpp/instance.h"
|
| -#include "ppapi/cpp/module.h"
|
| -#include "ppapi/cpp/var.h"
|
| -
|
| -#include "ppapi/native_client/src/shared/ppapi_proxy/ppruntime.h"
|
| -#include "ppapi/native_client/src/trusted/weak_ref/call_on_main_thread.h"
|
| -#include "ppapi/native_client/src/untrusted/nacl_ppapi_util/nacl_ppapi_util.h"
|
| -#include "ppapi/native_client/src/untrusted/nacl_ppapi_util/string_buffer.h"
|
| -
|
| -std::string *manifest_contents = NULL;
|
| -
|
| -void TestManifestContents() {
|
| - nacl::StringBuffer sb;
|
| - int status = -1;
|
| - int manifest;
|
| - struct NaClSrpcChannel manifest_channel;
|
| - struct NaClSrpcChannel ns_channel;
|
| -
|
| - int ns = -1;
|
| - nacl_nameservice(&ns);
|
| - printf("ns = %d\n", ns);
|
| - assert(-1 != ns);
|
| - int connected_socket = imc_connect(ns);
|
| - assert(-1 != connected_socket);
|
| - if (!NaClSrpcClientCtor(&ns_channel, connected_socket)) {
|
| - close(ns);
|
| - sb.Printf("Srpc client channel ctor failed\n");
|
| - manifest_contents = new std::string(sb.ToString());
|
| - return;
|
| - }
|
| - sb.Printf("NaClSrpcClientCtor succeeded\n");
|
| - close(ns);
|
| - // name service lookup for the manifest service descriptor
|
| - if (NACL_SRPC_RESULT_OK !=
|
| - NaClSrpcInvokeBySignature(&ns_channel, NACL_NAME_SERVICE_LOOKUP,
|
| - "ManifestNameService", O_RDWR,
|
| - &status, &manifest) ||
|
| - NACL_NAME_SERVICE_SUCCESS != status) {
|
| - sb.Printf("nameservice lookup failed, status %d\n", status);
|
| - manifest_contents = new std::string(sb.ToString());
|
| - return;
|
| - }
|
| - sb.Printf("Got manifest descriptor %d\n", manifest);
|
| - if (-1 == manifest) {
|
| - manifest_contents = new std::string(sb.ToString());
|
| - return;
|
| - }
|
| -
|
| - // connect to manifest name server
|
| - int manifest_conn = imc_connect(manifest);
|
| - close(manifest);
|
| - sb.Printf("got manifest connection %d\n", manifest_conn);
|
| - if (-1 == manifest_conn) {
|
| - sb.Printf("could not connect\n");
|
| - manifest_contents = new std::string(sb.ToString());
|
| - return;
|
| - }
|
| -
|
| - // build the SRPC connection (do service discovery)
|
| - if (!NaClSrpcClientCtor(&manifest_channel, manifest_conn)) {
|
| - sb.Printf("could not build srpc client\n");
|
| - manifest_contents = new std::string(sb.ToString());
|
| - return;
|
| - }
|
| -
|
| - int desc;
|
| -
|
| - sb.Printf("Invoking name service lookup\n");
|
| - if (NACL_SRPC_RESULT_OK !=
|
| - NaClSrpcInvokeBySignature(&manifest_channel,
|
| - NACL_NAME_SERVICE_LOOKUP,
|
| - "files/test_file", O_RDONLY,
|
| - &status, &desc)) {
|
| - sb.Printf("manifest lookup RPC failed\n");
|
| - NaClSrpcDtor(&manifest_channel);
|
| - manifest_contents = new std::string(sb.ToString());
|
| - return;
|
| - }
|
| -
|
| - sb.DiscardOutput();
|
| - sb.Printf("File Contents:\n");
|
| -
|
| - FILE *iob = fdopen(desc, "r");
|
| - char buffer[4096];
|
| - while (fgets(buffer, sizeof buffer, iob) != NULL) {
|
| - // NB: fgets does not discard the newline nor any carriage return
|
| - // character before that.
|
| - //
|
| - // Note that CR LF is the default end-of-line style for Windows.
|
| - // Furthermore, when the test_file (input data, which happens to
|
| - // be the nmf file) is initially created in a change list, the
|
| - // patch is sent to our try bots as text. This means that when
|
| - // the file arrives, it has CR LF endings instead of the original
|
| - // LF line endings. Since the expected or golden data is
|
| - // (manually) encoded in the HTML file's JavaScript, there will be
|
| - // a mismatch. After submission, the svn property svn:eol-style
|
| - // will be set to LF, so a clean check out should have LF and not
|
| - // CR LF endings, and the tests will pass without CR removal.
|
| - // However -- and there's always a however in long discourses --
|
| - // if the nmf file is edited, say, because the test is being
|
| - // modified, and the modification is being done on a Windows
|
| - // machine, then it is likely that the editor used by the
|
| - // programmer will convert the file to CR LF endings. Which,
|
| - // unfortunatly, implies that the test will mysteriously fail
|
| - // again.
|
| - //
|
| - // To defend against such nonsense, we weaken the test slighty,
|
| - // and just strip the CR if it is present.
|
| - int len = strlen(buffer);
|
| - if (len >= 2 && buffer[len-1] == '\n' && buffer[len-2] == '\r') {
|
| - buffer[len-2] = '\n';
|
| - buffer[len-1] = '\0';
|
| - }
|
| - sb.Printf("%s", buffer);
|
| - }
|
| - fclose(iob); // closed desc
|
| -
|
| - sb.Printf("\n");
|
| - sb.Printf("Opening non-existent file:\n");
|
| - if (NACL_SRPC_RESULT_OK !=
|
| - NaClSrpcInvokeBySignature(&manifest_channel,
|
| - NACL_NAME_SERVICE_LOOKUP,
|
| - "foobar/baz", O_RDONLY,
|
| - &status, &desc)) {
|
| - sb.Printf("bogus manifest lookup RPC failed\n");
|
| - NaClSrpcDtor(&manifest_channel);
|
| - manifest_contents = new std::string(sb.ToString());
|
| - return;
|
| - }
|
| - sb.Printf("Got descriptor %d, status %d\n", desc, status);
|
| - if (-1 != desc) {
|
| - (void) close(desc);
|
| - }
|
| -
|
| - NaClSrpcDtor(&manifest_channel);
|
| - manifest_contents = new std::string(sb.ToString());
|
| -}
|
| -
|
| -class PostStringMessageWrapper
|
| - : public nacl_ppapi::EventThreadWorkStateWrapper<nacl_ppapi::VoidResult> {
|
| - public:
|
| - PostStringMessageWrapper(nacl_ppapi::EventThreadWorkState<
|
| - nacl_ppapi::VoidResult>
|
| - *state,
|
| - const std::string &msg)
|
| - : nacl_ppapi::EventThreadWorkStateWrapper<nacl_ppapi::VoidResult>(
|
| - state),
|
| - msg_(msg) {}
|
| - ~PostStringMessageWrapper();
|
| - const std::string &msg() const { return msg_; }
|
| - private:
|
| - std::string msg_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(PostStringMessageWrapper);
|
| -};
|
| -
|
| -// ---------------------------------------------------------------------------
|
| -
|
| -class MyInstance;
|
| -
|
| -// This object represents one time the page says <embed>.
|
| -class MyInstance : public nacl_ppapi::NaClPpapiPluginInstance {
|
| - public:
|
| - explicit MyInstance(PP_Instance instance);
|
| - virtual ~MyInstance();
|
| - virtual void HandleMessage(const pp::Var& message_data);
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(MyInstance);
|
| -};
|
| -
|
| -// ---------------------------------------------------------------------------
|
| -
|
| -MyInstance::MyInstance(PP_Instance instance)
|
| - : nacl_ppapi::NaClPpapiPluginInstance(instance) {
|
| -}
|
| -
|
| -MyInstance::~MyInstance() {}
|
| -
|
| -// ---------------------------------------------------------------------------
|
| -
|
| -// HandleMessage gets invoked when postMessage is called on the DOM
|
| -// element associated with this plugin instance. In this case, if we
|
| -// are given a string, we'll post a message back to JavaScript with a
|
| -// reply -- essentially treating this as a string-based RPC.
|
| -void MyInstance::HandleMessage(const pp::Var& message) {
|
| - if (message.is_string()) {
|
| - if (message.AsString() == "manifest_data") {
|
| - PostMessage(*manifest_contents);
|
| - } else {
|
| - fprintf(stderr, "HandleMessage: Unrecognized request \"%s\".\n",
|
| - message.AsString().c_str());
|
| - }
|
| - } else {
|
| - fprintf(stderr, "HandleMessage: message is not a string\n");
|
| - fflush(NULL);
|
| - }
|
| -}
|
| -
|
| -// This object is the global object representing this plugin library as long
|
| -// as it is loaded.
|
| -class MyModule : public pp::Module {
|
| - public:
|
| - MyModule() : pp::Module() {}
|
| - virtual ~MyModule() {}
|
| -
|
| - // Override CreateInstance to create your customized Instance object.
|
| - virtual pp::Instance *CreateInstance(PP_Instance instance);
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(MyModule);
|
| -};
|
| -
|
| -pp::Instance *MyModule::CreateInstance(PP_Instance pp_instance) {
|
| - MyInstance *instance = new MyInstance(pp_instance);
|
| - fprintf(stderr, "CreateInstance: returning instance %p\n",
|
| - reinterpret_cast<void *>(instance));
|
| -
|
| - return instance;
|
| -}
|
| -
|
| -namespace pp {
|
| -
|
| -// Factory function for your specialization of the Module object.
|
| -Module* CreateModule() {
|
| - fprintf(stderr, "CreateModule invoked\n"); fflush(NULL);
|
| - return new MyModule();
|
| -}
|
| -
|
| -} // namespace pp
|
| -
|
| -int main() {
|
| - NaClSrpcModuleInit();
|
| - TestManifestContents();
|
| - return PpapiPluginMain();
|
| -}
|
|
|