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

Side by Side Diff: chrome/renderer/chrome_content_renderer_client.cc

Issue 16296005: Split pnacl and nacl mime types (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove dead code. Created 7 years, 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/renderer/chrome_content_renderer_client.h" 5 #include "chrome/renderer/chrome_content_renderer_client.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 ChromeViewHostMsg_GetPluginInfo_Status::kNPAPINotSupported; 550 ChromeViewHostMsg_GetPluginInfo_Status::kNPAPINotSupported;
551 } 551 }
552 #endif 552 #endif
553 553
554 switch (status_value) { 554 switch (status_value) {
555 case ChromeViewHostMsg_GetPluginInfo_Status::kNotFound: { 555 case ChromeViewHostMsg_GetPluginInfo_Status::kNotFound: {
556 NOTREACHED(); 556 NOTREACHED();
557 break; 557 break;
558 } 558 }
559 case ChromeViewHostMsg_GetPluginInfo_Status::kAllowed: { 559 case ChromeViewHostMsg_GetPluginInfo_Status::kAllowed: {
560 const char* kNaClMimeType = "application/x-nacl"; 560 const char* kPnaclMimeType = "application/x-pnacl";
561 const bool is_nacl_mime_type = actual_mime_type == kNaClMimeType; 561 if (actual_mime_type == kPnaclMimeType) {
562 const bool is_nacl_plugin = 562 // If the params somehow contain '@dev', remove it.
jvoung (off chromium) 2013/06/04 22:27:25 Where do the @dev params come from? Should we add
sehr 2013/06/06 22:03:45 The @dev parameters are added for nacl content han
563 plugin.name == 563 WebString dev_attribute = WebString::fromUTF8("@dev");
564 ASCIIToUTF16(chrome::ChromeContentClient::kNaClPluginName); 564 size_t attribute_count = params.attributeNames.size();
565 bool is_nacl_unrestricted; 565 for (size_t i = 0; i < attribute_count; ++i) {
jvoung (off chromium) 2013/06/07 16:14:46 Also, if you want to allow PNaCl without --enable-
566 if (is_nacl_plugin) { 566 if (params.attributeNames[i].equals(dev_attribute))
567 is_nacl_unrestricted = CommandLine::ForCurrentProcess()->HasSwitch( 567 params.attributeNames[i] = WebString();
568 switches::kEnableNaCl); 568 }
569 } else { 569 } else {
570 // If this is an external plugin that handles the NaCl mime type, we 570 const char* kNaClMimeType = "application/x-nacl";
571 // allow Native Client, so Native Client's integration tests work. 571 const bool is_nacl_mime_type = actual_mime_type == kNaClMimeType;
572 is_nacl_unrestricted = true; 572 const bool is_nacl_plugin =
573 } 573 plugin.name ==
574 if (is_nacl_plugin || is_nacl_mime_type) { 574 ASCIIToUTF16(chrome::ChromeContentClient::kNaClPluginName);
575 GURL manifest_url; 575 bool is_nacl_unrestricted;
576 GURL app_url; 576 if (is_nacl_plugin) {
577 if (is_nacl_mime_type) { 577 is_nacl_unrestricted = CommandLine::ForCurrentProcess()->HasSwitch(
578 // Normal NaCl embed. The app URL is the page URL. 578 switches::kEnableNaCl);
579 manifest_url = url;
580 app_url = frame->top()->document().url();
581 } else { 579 } else {
582 // NaCl is being invoked as a content handler. Look up the NaCl 580 // If this is an external plugin that handles the NaCl mime type, we
583 // module using the MIME type. The app URL is the manifest URL. 581 // allow Native Client, so Native Client's integration tests work.
584 manifest_url = GetNaClContentHandlerURL(actual_mime_type, plugin); 582 is_nacl_unrestricted = true;
585 app_url = manifest_url;
586 } 583 }
587 const Extension* extension = 584 if (is_nacl_plugin || is_nacl_mime_type) {
588 g_current_client->extension_dispatcher_->extensions()-> 585 GURL manifest_url;
589 GetExtensionOrAppByURL(ExtensionURLInfo(manifest_url)); 586 GURL app_url;
590 if (!IsNaClAllowed(manifest_url, 587 if (is_nacl_mime_type) {
591 app_url, 588 // Normal NaCl embed. The app URL is the page URL.
592 is_nacl_unrestricted, 589 manifest_url = url;
593 extension, 590 app_url = frame->top()->document().url();
594 &params)) { 591 } else {
595 frame->addMessageToConsole( 592 // NaCl is being invoked as a content handler. Look up the NaCl
596 WebConsoleMessage( 593 // module using the MIME type. The app URL is the manifest URL.
597 WebConsoleMessage::LevelError, 594 manifest_url = GetNaClContentHandlerURL(actual_mime_type, plugin);
598 "Only unpacked extensions and apps installed from the " 595 app_url = manifest_url;
599 "Chrome Web Store can load NaCl modules without enabling " 596 }
600 "Native Client in about:flags.")); 597 const Extension* extension =
601 placeholder = PluginPlaceholder::CreateBlockedPlugin( 598 g_current_client->extension_dispatcher_->extensions()->
602 render_view, frame, params, plugin, identifier, group_name, 599 GetExtensionOrAppByURL(ExtensionURLInfo(manifest_url));
603 IDR_BLOCKED_PLUGIN_HTML, 600 if (!IsNaClAllowed(manifest_url,
601 app_url,
602 is_nacl_unrestricted,
603 extension,
604 &params)) {
605 frame->addMessageToConsole(
606 WebConsoleMessage(
607 WebConsoleMessage::LevelError,
608 "Only unpacked extensions and apps installed from the "
609 "Chrome Web Store can load NaCl modules without enabling "
610 "Native Client in about:flags."));
611 placeholder = PluginPlaceholder::CreateBlockedPlugin(
612 render_view, frame, params, plugin, identifier, group_name,
613 IDR_BLOCKED_PLUGIN_HTML,
604 #if defined(OS_CHROMEOS) 614 #if defined(OS_CHROMEOS)
605 l10n_util::GetStringUTF16(IDS_NACL_PLUGIN_BLOCKED)); 615 l10n_util::GetStringUTF16(IDS_NACL_PLUGIN_BLOCKED));
606 #else 616 #else
607 l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED, group_name)); 617 l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED, group_name));
608 #endif 618 #endif
609 break; 619 break;
620 }
610 } 621 }
611 } 622 }
612 623
613 // Delay loading plugins if prerendering. 624 // Delay loading plugins if prerendering.
614 // TODO(mmenke): In the case of prerendering, feed into 625 // TODO(mmenke): In the case of prerendering, feed into
615 // ChromeContentRendererClient::CreatePlugin instead, to 626 // ChromeContentRendererClient::CreatePlugin instead, to
616 // reduce the chance of future regressions. 627 // reduce the chance of future regressions.
617 if (prerender::PrerenderHelper::IsPrerendering(render_view)) { 628 if (prerender::PrerenderHelper::IsPrerendering(render_view)) {
618 placeholder = PluginPlaceholder::CreateBlockedPlugin( 629 placeholder = PluginPlaceholder::CreateBlockedPlugin(
619 render_view, frame, params, plugin, identifier, group_name, 630 render_view, frame, params, plugin, identifier, group_name,
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after
1194 1205
1195 if (container->element().shadowHost().isNull()) 1206 if (container->element().shadowHost().isNull())
1196 return false; 1207 return false;
1197 1208
1198 WebString tag_name = container->element().shadowHost().tagName(); 1209 WebString tag_name = container->element().shadowHost().tagName();
1199 return tag_name.equals(WebString::fromUTF8(kWebViewTagName)) || 1210 return tag_name.equals(WebString::fromUTF8(kWebViewTagName)) ||
1200 tag_name.equals(WebString::fromUTF8(kAdViewTagName)); 1211 tag_name.equals(WebString::fromUTF8(kAdViewTagName));
1201 } 1212 }
1202 1213
1203 } // namespace chrome 1214 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698