Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: tests/manifest_file/irt_manifest_file_test.cc

Issue 7605029: Extend IRT with nacl_irt_resource_open interface (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: fixed license Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tests/manifest_file/irt_manifest_file.nmf ('k') | tests/manifest_file/irt_manifest_file_test.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/manifest_file/irt_manifest_file_test.cc
===================================================================
--- tests/manifest_file/irt_manifest_file_test.cc (revision 0)
+++ tests/manifest_file/irt_manifest_file_test.cc (revision 0)
@@ -0,0 +1,122 @@
+/*
+ * 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.
+ */
+
+//
+// Test for resource open before PPAPI initialization.
+//
+
+#include <stdio.h>
+#include <string.h>
+
+#include <string>
+#include <sstream>
+
+#include "native_client/src/shared/ppapi_proxy/ppruntime.h"
+#include "native_client/src/untrusted/irt/irt.h"
+#include "native_client/src/untrusted/nacl/nacl_irt.h"
+
+#include "ppapi/cpp/instance.h"
+#include "ppapi/cpp/module.h"
+#include "ppapi/cpp/var.h"
+
+std::string str;
+
+void load_manifest(TYPE_nacl_irt_query *query_func) {
+ struct nacl_irt_resource_open nacl_irt_resource_open;
+ if (sizeof(nacl_irt_resource_open) !=
+ (*query_func)(
+ NACL_IRT_RESOURCE_OPEN_v0_1,
+ &nacl_irt_resource_open,
+ sizeof(nacl_irt_resource_open))) {
+ str = "irt manifest api not found";
+ return;
+ }
+ int desc;
+ int error;
+ error = nacl_irt_resource_open.open_resource("test_file", &desc);
+ if (0 != error) {
+ str = "Can't open file";
+ printf("Can't open file, error=%d", error);
+ return;
+ }
+
+ str = "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';
+ }
+ str += buffer;
+ }
+ printf("file loaded: %s\n", str.c_str());
+ fclose(iob); // closed desc
+ return;
+}
+
+class TestInstance : public pp::Instance {
+ public:
+ explicit TestInstance(PP_Instance instance) : pp::Instance(instance) {}
+ virtual ~TestInstance() {}
+ virtual void HandleMessage(const pp::Var& var_message) {
+ if (!var_message.is_string()) {
+ return;
+ }
+ if (var_message.AsString() != "hello") {
+ return;
+ }
+ pp::Var reply = pp::Var(str);
+ PostMessage(reply);
+ }
+};
+
+class TestModule : public pp::Module {
+ public:
+ TestModule() : pp::Module() {}
+ virtual ~TestModule() {}
+
+ virtual pp::Instance* CreateInstance(PP_Instance instance) {
+ return new TestInstance(instance);
+ }
+};
+
+namespace pp {
+Module* CreateModule() {
+ return new TestModule();
+}
+}
+
+int main() {
+ load_manifest(&__nacl_irt_query);
+ return PpapiPluginMain();
+}
+
Property changes on: tests/manifest_file/irt_manifest_file_test.cc
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « tests/manifest_file/irt_manifest_file.nmf ('k') | tests/manifest_file/irt_manifest_file_test.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698