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

Unified Diff: ppapi/native_client/src/trusted/plugin/pnacl_coordinator.cc

Issue 9158005: RFC: Add an interface for having the browser open a pnacl support file (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add a test, do some tweaks. Created 8 years, 10 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 | « ppapi/native_client/src/trusted/plugin/plugin.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ppapi/native_client/src/trusted/plugin/pnacl_coordinator.cc
diff --git a/ppapi/native_client/src/trusted/plugin/pnacl_coordinator.cc b/ppapi/native_client/src/trusted/plugin/pnacl_coordinator.cc
index e94de5f05db245cfa48e92d4eb52a7face5c0628..b25be1107d40db584416bf63961b5a1bf4a73def 100644
--- a/ppapi/native_client/src/trusted/plugin/pnacl_coordinator.cc
+++ b/ppapi/native_client/src/trusted/plugin/pnacl_coordinator.cc
@@ -397,6 +397,8 @@ class PnaclLDManifest : public Manifest {
const Manifest* extension_manifest_;
};
+static int64_t start_download_time = 0;
+
//////////////////////////////////////////////////////////////////////
// The coordinator class.
//////////////////////////////////////////////////////////////////////
@@ -426,6 +428,8 @@ PnaclCoordinator* PnaclCoordinator::BitcodeToNative(
resource_urls,
resources_cb));
CHECK(coordinator->resources_ != NULL);
+
+ start_download_time = NaClGetTimeOfDayMicroseconds();
coordinator->resources_->StartDownloads();
// ResourcesDidLoad will be invoked when all resources have been received.
return coordinator;
@@ -623,9 +627,81 @@ void PnaclCoordinator::TranslateFailed(const nacl::string& error_string) {
core->CallOnMainThread(0, report_translate_finished_, PP_ERROR_FAILED);
}
+
+// DEBUGGING test junk -- to be removed before checkin and replaced
+// with something like a test...
+static void TestPnaclOpenFile(const nacl::string& filename, bool expect_works) {
+ PLUGIN_PRINTF(("JAN calling get_readonly_pnacl_fd: %s\n", filename.c_str()));
+ int fd = get_readonly_pnacl_fd(filename.c_str());
Mark Seaborn 2012/06/20 20:12:55 I don't think get_readonly_pnacl_fd needs to be a
+ const char *expect_success_msg = expect_works ? "YAY!" : "NOO!";
+ const char *expect_fail_msg = expect_works ? "NOO!" : "YAY!";
+
+ if (fd < 0) {
+ PLUGIN_PRINTF(("JAN get %s failed (fd='%d') %s\n",
+ filename.c_str(), fd, expect_fail_msg));
+ } else {
+ PLUGIN_PRINTF(("JAN get %s succeeded (fd='%d') %s\n",
+ filename.c_str(), fd, expect_success_msg));
+ // Try to stat the mofo.
+ struct stat stat_buf;
+ if (0 != fstat(fd, &stat_buf)) {
+ PLUGIN_PRINTF(("JAN stat %s fd failed: %s\n",
+ filename.c_str(), expect_fail_msg));
+ } else {
+ PLUGIN_PRINTF(("JAN stat %s fd (size='%d') succeed: %s\n",
+ filename.c_str(), stat_buf.st_size, expect_success_msg));
+ }
+ close(fd);
+ PLUGIN_PRINTF(("JAN got fd for %s and now closing: %d\n",
+ filename.c_str(), fd));
+ }
+}
+
+static void WINAPI DoTestFileOpens(void* arg) {
+ nacl::string sandbox_isa = GetSandboxISA();
+ // We should probably use FilePath.Append() to join these.
+ TestPnaclOpenFile(sandbox_isa + nacl::string("/llc"), true);
+ TestPnaclOpenFile(sandbox_isa + nacl::string("/ld"), true);
+ TestPnaclOpenFile(sandbox_isa + nacl::string("/crtbegin.o"), true);
+
+ // Stuff that shouldn't work.
+ TestPnaclOpenFile("non-existent-file", false);
+ TestPnaclOpenFile("../../chrome_shutdown_ms.txt", false);
+ TestPnaclOpenFile("/bin/ls", false);
+ TestPnaclOpenFile("$HOME/.bashrc", false);
+}
+// END DEBUGGING test junk.
+
+
void PnaclCoordinator::ResourcesDidLoad(int32_t pp_error) {
PLUGIN_PRINTF(("PnaclCoordinator::ResourcesDidLoad (pp_error=%"
NACL_PRId32")\n", pp_error));
+
+ int64_t end_download_time = NaClGetTimeOfDayMicroseconds();
+ PLUGIN_PRINTF(("PnaclCoordinator:: url load time total=%"NACL_PRId64")\n",
+ end_download_time - start_download_time));
+
+ // BEGIN debugging hack.
+ // On thread accesses work...
+ PLUGIN_PRINTF(("JAN Testing from main thread.\n"));
+ int64_t start_download_time2 = NaClGetTimeOfDayMicroseconds();
+ DoTestFileOpens(NULL);
+ int64_t end_download_time2 = NaClGetTimeOfDayMicroseconds();
+ PLUGIN_PRINTF(("PnaclCoordinator::fd load time total=%"NACL_PRId64")\n",
+ end_download_time2 - start_download_time2));
+
+ // Off thread use doesn't seem to work...
+ // PLUGIN_PRINTF(("JAN Testing from secondary thread.\n"));
+ // static NaClThread *debugging_file_thread = new NaClThread();
+ // if (!NaClThreadCreateJoinable(debugging_file_thread,
+ // DoTestFileOpens,
+ // NULL,
+ // 128 * 1024)) {
+ // PLUGIN_PRINTF(("JAN Failed to creaate test thread\n"));
+ // }
+ PLUGIN_PRINTF(("JAN Testing all done!\n"));
+ // END debugging.
+
if (pp_error != PP_OK) {
ReportPpapiError(pp_error, "resources failed to load.");
return;
@@ -736,6 +812,7 @@ void PnaclCoordinator::RunTranslate(int32_t pp_error) {
if (fd < 0) {
return;
}
+
pexe_wrapper_.reset(plugin_->wrapper_factory()->MakeFileDesc(fd, O_RDONLY));
// Invoke llc followed by ld off the main thread. This allows use of
// blocking RPCs that would otherwise block the JavaScript main thread.
« no previous file with comments | « ppapi/native_client/src/trusted/plugin/plugin.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698