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

Side by Side Diff: src/trusted/plugin/ppapi/plugin_ppapi.cc

Issue 6813070: Add cross-origin loading of NEXEs for MIME type handlers (Closed) Base URL: http://src.chromium.org/native_client/trunk/src/native_client/
Patch Set: '' Created 9 years, 8 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 unified diff | Download patch
« no previous file with comments | « src/trusted/plugin/ppapi/plugin_ppapi.h ('k') | tests/ppapi_bad/ppapi_bad.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2011 The Native Client Authors. All rights reserved. 2 * Copyright (c) 2011 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 #include "native_client/src/trusted/plugin/ppapi/plugin_ppapi.h" 7 #include "native_client/src/trusted/plugin/ppapi/plugin_ppapi.h"
8 8
9 #include <stdio.h> 9 #include <stdio.h>
10 10
(...skipping 20 matching lines...) Expand all
31 #include "ppapi/cpp/module.h" 31 #include "ppapi/cpp/module.h"
32 #include "ppapi/cpp/rect.h" 32 #include "ppapi/cpp/rect.h"
33 33
34 namespace plugin { 34 namespace plugin {
35 35
36 namespace { 36 namespace {
37 37
38 // The "src" attribute of the <embed> tag. The value is expected to be a URL 38 // The "src" attribute of the <embed> tag. The value is expected to be a URL
39 // pointing to the nexe (aka nacl module) file. 39 // pointing to the nexe (aka nacl module) file.
40 const char* const kSrcAttribute = "src"; 40 const char* const kSrcAttribute = "src";
41 const char* const kTypeAttribute = "type";
41 // The "nacl" attribute of the <embed> tag. The value is expected to be either 42 // The "nacl" attribute of the <embed> tag. The value is expected to be either
42 // a URL or URI pointing to the manifest file (which is expected to contain 43 // a URL or URI pointing to the manifest file (which is expected to contain
43 // JSON matching ISAs with .nexe URLs). 44 // JSON matching ISAs with .nexe URLs).
44 const char* const kNaclManifestAttribute = "nacl"; 45 const char* const kNaclManifestAttribute = "nacl";
45 // This is a pretty arbitrary limit on the byte size of the NaCl manfest file. 46 // This is a pretty arbitrary limit on the byte size of the NaCl manfest file.
46 // Note that the resulting string object has to have at least one byte extra 47 // Note that the resulting string object has to have at least one byte extra
47 // for the null termination character. 48 // for the null termination character.
48 const ssize_t kNaclManifestMaxFileBytesPlusNull = 1024; 49 const ssize_t kNaclManifestMaxFileBytesPlusNull = 1024;
49 const ssize_t kNaclManifestMaxFileBytesNoNull = 50 const ssize_t kNaclManifestMaxFileBytesNoNull =
50 kNaclManifestMaxFileBytesPlusNull - 1; 51 kNaclManifestMaxFileBytesPlusNull - 1;
(...skipping 10 matching lines...) Expand all
61 PluginPpapi* plugin = 62 PluginPpapi* plugin =
62 static_cast<PluginPpapi*>(reinterpret_cast<Plugin*>(obj)); 63 static_cast<PluginPpapi*>(reinterpret_cast<Plugin*>(obj));
63 const char* url = ins[0]->arrays.str; 64 const char* url = ins[0]->arrays.str;
64 // TODO(sehr,polina): Ensure that origin checks are performed here. 65 // TODO(sehr,polina): Ensure that origin checks are performed here.
65 return plugin->UrlAsNaClDesc( 66 return plugin->UrlAsNaClDesc(
66 url, *reinterpret_cast<pp::Var*>(ins[1]->arrays.oval)); 67 url, *reinterpret_cast<pp::Var*>(ins[1]->arrays.oval));
67 } 68 }
68 69
69 } // namespace 70 } // namespace
70 71
72 const char* const PluginPpapi::kNaClMIMEType = "application/x-nacl";
73
71 bool PluginPpapi::SetAsyncCallback(void* obj, SrpcParams* params) { 74 bool PluginPpapi::SetAsyncCallback(void* obj, SrpcParams* params) {
72 PluginPpapi* plugin = 75 PluginPpapi* plugin =
73 static_cast<PluginPpapi*>(reinterpret_cast<Plugin*>(obj)); 76 static_cast<PluginPpapi*>(reinterpret_cast<Plugin*>(obj));
74 if (plugin->service_runtime_ == NULL) { 77 if (plugin->service_runtime_ == NULL) {
75 params->set_exception_string("No subprocess running"); 78 params->set_exception_string("No subprocess running");
76 return false; 79 return false;
77 } 80 }
78 if (plugin->receive_thread_running_) { 81 if (plugin->receive_thread_running_) {
79 params->set_exception_string("A callback has already been registered"); 82 params->set_exception_string("A callback has already been registered");
80 return false; 83 return false;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 static_cast<void*>(scriptable_handle()))); 140 static_cast<void*>(scriptable_handle())));
138 bool status = Plugin::Init( 141 bool status = Plugin::Init(
139 browser_interface, 142 browser_interface,
140 PPInstanceToInstanceIdentifier(static_cast<pp::Instance*>(this)), 143 PPInstanceToInstanceIdentifier(static_cast<pp::Instance*>(this)),
141 static_cast<int>(argc), 144 static_cast<int>(argc),
142 // TODO(polina): Can we change the args on our end to be const to 145 // TODO(polina): Can we change the args on our end to be const to
143 // avoid these ugly casts? This will also require changes to npapi code. 146 // avoid these ugly casts? This will also require changes to npapi code.
144 const_cast<char**>(argn), 147 const_cast<char**>(argn),
145 const_cast<char**>(argv)); 148 const_cast<char**>(argv));
146 if (status) { 149 if (status) {
150 const char* type_attr = LookupArgument(kTypeAttribute);
151 if (type_attr != NULL) {
152 mime_type_ = nacl::string(type_attr);
153 std::transform(mime_type_.begin(), mime_type_.end(), mime_type_.begin(),
154 tolower);
155 }
147 // Note: The order of attribute lookup is important. This pattern looks 156 // Note: The order of attribute lookup is important. This pattern looks
148 // for a "nacl" attribute first, then a "src" attribute. 157 // for a "nacl" attribute first, then a "src" attribute.
149 const char* nacl_attr = LookupArgument(kNaclManifestAttribute); 158 const char* nacl_attr = LookupArgument(kNaclManifestAttribute);
150 PLUGIN_PRINTF(("PluginPpapi::Init (nacl_attr=%s)\n", nacl_attr)); 159 PLUGIN_PRINTF(("PluginPpapi::Init (nacl_attr=%s)\n", nacl_attr));
151 if (nacl_attr != NULL) { 160 if (nacl_attr != NULL) {
152 // Issue a GET for the "nacl" attribute. The value of the attribute 161 // Issue a GET for the "nacl" attribute. The value of the attribute
153 // can be a URI or a URL pointing to the manifest file. The manifest 162 // can be a URI or a URL pointing to the manifest file. The manifest
154 // file will be parsed to determine the nexe URL. Then, just like for 163 // file will be parsed to determine the nexe URL. Then, just like for
155 // the "src" attribute below, SetSrcPropertyImpl() will be called. 164 // the "src" attribute below, SetSrcPropertyImpl() will be called.
156 // 165 //
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 588
580 589
581 bool PluginPpapi::Failure(const nacl::string& error) { 590 bool PluginPpapi::Failure(const nacl::string& error) {
582 PLUGIN_PRINTF(("PluginPpapi::Failure (error='%s')\n", error.c_str())); 591 PLUGIN_PRINTF(("PluginPpapi::Failure (error='%s')\n", error.c_str()));
583 browser_interface()->AddToConsole(instance_id(), error); 592 browser_interface()->AddToConsole(instance_id(), error);
584 ShutdownProxy(); 593 ShutdownProxy();
585 return false; 594 return false;
586 } 595 }
587 596
588 } // namespace plugin 597 } // namespace plugin
OLDNEW
« no previous file with comments | « src/trusted/plugin/ppapi/plugin_ppapi.h ('k') | tests/ppapi_bad/ppapi_bad.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698