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

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

Issue 673663004: Android: Do not build any extensions code except for extensions_constants. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@zoom_controller
Patch Set: fix merge conflict Created 6 years, 2 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 | « chrome/renderer/chrome_content_renderer_client.cc ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <vector> 7 #include <vector>
8 8
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/renderer/searchbox/search_bouncer.h" 10 #include "chrome/renderer/searchbox/search_bouncer.h"
11 #include "content/public/common/webplugininfo.h" 11 #include "content/public/common/webplugininfo.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "url/gurl.h"
14
15 #if defined(ENABLE_EXTENSIONS)
12 #include "extensions/common/extension.h" 16 #include "extensions/common/extension.h"
13 #include "extensions/common/extension_builder.h" 17 #include "extensions/common/extension_builder.h"
14 #include "extensions/common/manifest_constants.h" 18 #include "extensions/common/manifest_constants.h"
15 #include "testing/gtest/include/gtest/gtest.h" 19 #endif
20
21 #if !defined(DISABLE_NACL)
16 #include "third_party/WebKit/public/platform/WebString.h" 22 #include "third_party/WebKit/public/platform/WebString.h"
17 #include "third_party/WebKit/public/platform/WebVector.h" 23 #include "third_party/WebKit/public/platform/WebVector.h"
18 #include "third_party/WebKit/public/web/WebPluginParams.h" 24 #include "third_party/WebKit/public/web/WebPluginParams.h"
19 #include "url/gurl.h" 25 #endif
20 26
27 #if !defined(DISABLE_NACL)
21 using blink::WebPluginParams; 28 using blink::WebPluginParams;
22 using blink::WebString; 29 using blink::WebString;
23 using blink::WebVector; 30 using blink::WebVector;
31 #endif
32
24 using content::WebPluginInfo; 33 using content::WebPluginInfo;
25 using content::WebPluginMimeType; 34 using content::WebPluginMimeType;
26 35
27 namespace { 36 namespace {
37
38 #if !defined(DISABLE_NACL)
28 const bool kNaClRestricted = false; 39 const bool kNaClRestricted = false;
29 const bool kNaClUnrestricted = true; 40 const bool kNaClUnrestricted = true;
30 const bool kExtensionRestricted = false; 41 const bool kExtensionRestricted = false;
31 const bool kExtensionUnrestricted = true; 42 const bool kExtensionUnrestricted = true;
32 const bool kExtensionNotFromWebStore = false; 43 const bool kExtensionNotFromWebStore = false;
33 const bool kExtensionFromWebStore = true; 44 const bool kExtensionFromWebStore = true;
45 #endif
46
47 #if defined(ENABLE_EXTENSIONS)
34 const bool kNotHostedApp = false; 48 const bool kNotHostedApp = false;
35 const bool kHostedApp = true; 49 const bool kHostedApp = true;
50 #endif
36 51
52 #if !defined(DISABLE_NACL)
37 const char kExtensionUrl[] = "chrome-extension://extension_id/background.html"; 53 const char kExtensionUrl[] = "chrome-extension://extension_id/background.html";
38 54
39 const char kPhotosAppURL1[] = "https://foo.plus.google.com"; 55 const char kPhotosAppURL1[] = "https://foo.plus.google.com";
40 const char kPhotosAppURL2[] = "https://foo.plus.sandbox.google.com"; 56 const char kPhotosAppURL2[] = "https://foo.plus.sandbox.google.com";
41 const char kPhotosManifestURL1[] = "https://ssl.gstatic.com/s2/oz/nacl/foo"; 57 const char kPhotosManifestURL1[] = "https://ssl.gstatic.com/s2/oz/nacl/foo";
42 const char kPhotosManifestURL2[] = "https://ssl.gstatic.com/photos/nacl/foo"; 58 const char kPhotosManifestURL2[] = "https://ssl.gstatic.com/photos/nacl/foo";
43
44 const char kChatAppURL1[] = "https://foo.talkgadget.google.com/hangouts/foo";
45 const char kChatAppURL2[] = "https://foo.plus.google.com/hangouts/foo";
46 const char kChatAppURL3[] = "https://foo.plus.sandbox.google.com/hangouts/foo";
47 const char kChatManifestFS1[] = 59 const char kChatManifestFS1[] =
48 "filesystem:https://foo.talkgadget.google.com/foo"; 60 "filesystem:https://foo.talkgadget.google.com/foo";
49 const char kChatManifestFS2[] = "filesystem:https://foo.plus.google.com/foo"; 61 const char kChatManifestFS2[] = "filesystem:https://foo.plus.google.com/foo";
50 const char kChatManifestFS3[] = 62 const char kChatManifestFS3[] =
51 "filesystem:https://foo.plus.sandbox.google.com/foo"; 63 "filesystem:https://foo.plus.sandbox.google.com/foo";
64 #endif
52 65
66 const char kChatAppURL1[] = "https://foo.talkgadget.google.com/hangouts/foo";
67 const char kChatAppURL2[] = "https://foo.plus.google.com/hangouts/foo";
68 const char kChatAppURL3[] = "https://foo.plus.sandbox.google.com/hangouts/foo";
69
70 #if !defined(DISABLE_NACL)
53 bool AllowsDevInterfaces(const WebPluginParams& params) { 71 bool AllowsDevInterfaces(const WebPluginParams& params) {
54 for (size_t i = 0; i < params.attributeNames.size(); ++i) { 72 for (size_t i = 0; i < params.attributeNames.size(); ++i) {
55 if (params.attributeNames[i] == WebString::fromUTF8("@dev")) 73 if (params.attributeNames[i] == WebString::fromUTF8("@dev"))
56 return true; 74 return true;
57 } 75 }
58 return false; 76 return false;
59 } 77 }
60 78
61 void AddFakeDevAttribute(WebPluginParams* params) { 79 void AddFakeDevAttribute(WebPluginParams* params) {
62 WebVector<WebString> names(static_cast<size_t>(1)); 80 WebVector<WebString> names(static_cast<size_t>(1));
63 WebVector<WebString> values(static_cast<size_t>(1)); 81 WebVector<WebString> values(static_cast<size_t>(1));
64 names[0] = WebString::fromUTF8("@dev"); 82 names[0] = WebString::fromUTF8("@dev");
65 values[0] = WebString(); 83 values[0] = WebString();
66 params->attributeNames.swap(names); 84 params->attributeNames.swap(names);
67 params->attributeValues.swap(values); 85 params->attributeValues.swap(values);
68 } 86 }
87 #endif
69 88
70 void AddContentTypeHandler(content::WebPluginInfo* info, 89 void AddContentTypeHandler(content::WebPluginInfo* info,
71 const char* mime_type, 90 const char* mime_type,
72 const char* manifest_url) { 91 const char* manifest_url) {
73 content::WebPluginMimeType mime_type_info; 92 content::WebPluginMimeType mime_type_info;
74 mime_type_info.mime_type = mime_type; 93 mime_type_info.mime_type = mime_type;
75 mime_type_info.additional_param_names.push_back(base::UTF8ToUTF16("nacl")); 94 mime_type_info.additional_param_names.push_back(base::UTF8ToUTF16("nacl"));
76 mime_type_info.additional_param_values.push_back( 95 mime_type_info.additional_param_values.push_back(
77 base::UTF8ToUTF16(manifest_url)); 96 base::UTF8ToUTF16(manifest_url));
78 info->mime_types.push_back(mime_type_info); 97 info->mime_types.push_back(mime_type_info);
79 } 98 }
99
80 } // namespace 100 } // namespace
81 101
82 typedef testing::Test ChromeContentRendererClientTest; 102 typedef testing::Test ChromeContentRendererClientTest;
83 103
84 104
105 #if defined(ENABLE_EXTENSIONS)
85 scoped_refptr<const extensions::Extension> CreateTestExtension( 106 scoped_refptr<const extensions::Extension> CreateTestExtension(
86 bool is_unrestricted, bool is_from_webstore, bool is_hosted_app, 107 bool is_unrestricted, bool is_from_webstore, bool is_hosted_app,
87 const std::string& app_url) { 108 const std::string& app_url) {
88 extensions::Manifest::Location location = is_unrestricted ? 109 extensions::Manifest::Location location = is_unrestricted ?
89 extensions::Manifest::UNPACKED : 110 extensions::Manifest::UNPACKED :
90 extensions::Manifest::INTERNAL; 111 extensions::Manifest::INTERNAL;
91 int flags = is_from_webstore ? 112 int flags = is_from_webstore ?
92 extensions::Extension::FROM_WEBSTORE: 113 extensions::Extension::FROM_WEBSTORE:
93 extensions::Extension::NO_FLAGS; 114 extensions::Extension::NO_FLAGS;
94 115
(...skipping 16 matching lines...) Expand all
111 bool is_unrestricted, bool is_from_webstore) { 132 bool is_unrestricted, bool is_from_webstore) {
112 return CreateTestExtension( 133 return CreateTestExtension(
113 is_unrestricted, is_from_webstore, kNotHostedApp, std::string()); 134 is_unrestricted, is_from_webstore, kNotHostedApp, std::string());
114 } 135 }
115 136
116 scoped_refptr<const extensions::Extension> CreateHostedApp( 137 scoped_refptr<const extensions::Extension> CreateHostedApp(
117 bool is_unrestricted, bool is_from_webstore, const std::string& app_url) { 138 bool is_unrestricted, bool is_from_webstore, const std::string& app_url) {
118 return CreateTestExtension(is_unrestricted, is_from_webstore, kHostedApp, 139 return CreateTestExtension(is_unrestricted, is_from_webstore, kHostedApp,
119 app_url); 140 app_url);
120 } 141 }
142 #endif // defined(ENABLE_EXTENSIONS)
121 143
122 TEST_F(ChromeContentRendererClientTest, NaClRestriction) { 144 TEST_F(ChromeContentRendererClientTest, NaClRestriction) {
123 // Unknown content types have no NaCl module. 145 // Unknown content types have no NaCl module.
124 { 146 {
125 WebPluginInfo info; 147 WebPluginInfo info;
126 EXPECT_EQ(GURL(), 148 EXPECT_EQ(GURL(),
127 ChromeContentRendererClient::GetNaClContentHandlerURL( 149 ChromeContentRendererClient::GetNaClContentHandlerURL(
128 "application/x-foo", info)); 150 "application/x-foo", info));
129 } 151 }
130 // Known content types have a NaCl module. 152 // Known content types have a NaCl module.
131 { 153 {
132 WebPluginInfo info; 154 WebPluginInfo info;
133 AddContentTypeHandler(&info, "application/x-foo", "www.foo.com"); 155 AddContentTypeHandler(&info, "application/x-foo", "www.foo.com");
134 EXPECT_EQ(GURL("www.foo.com"), 156 EXPECT_EQ(GURL("www.foo.com"),
135 ChromeContentRendererClient::GetNaClContentHandlerURL( 157 ChromeContentRendererClient::GetNaClContentHandlerURL(
136 "application/x-foo", info)); 158 "application/x-foo", info));
137 } 159 }
160 #if !defined(DISABLE_NACL)
138 // --enable-nacl allows all NaCl apps, with 'dev' interfaces. 161 // --enable-nacl allows all NaCl apps, with 'dev' interfaces.
139 { 162 {
140 WebPluginParams params; 163 WebPluginParams params;
141 EXPECT_TRUE(ChromeContentRendererClient::IsNaClAllowed( 164 EXPECT_TRUE(ChromeContentRendererClient::IsNaClAllowed(
142 GURL(), 165 GURL(),
143 GURL(), 166 GURL(),
144 kNaClUnrestricted, 167 kNaClUnrestricted,
145 CreateExtension(kExtensionRestricted, kExtensionNotFromWebStore).get(), 168 CreateExtension(kExtensionRestricted, kExtensionNotFromWebStore).get(),
146 &params)); 169 &params));
147 EXPECT_TRUE(AllowsDevInterfaces(params)); 170 EXPECT_TRUE(AllowsDevInterfaces(params));
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 &params)); 388 &params));
366 EXPECT_FALSE(ChromeContentRendererClient::IsNaClAllowed( 389 EXPECT_FALSE(ChromeContentRendererClient::IsNaClAllowed(
367 GURL(), 390 GURL(),
368 GURL("http://example.evil.com/test.html"), 391 GURL("http://example.evil.com/test.html"),
369 kNaClRestricted, 392 kNaClRestricted,
370 CreateHostedApp(kExtensionRestricted, 393 CreateHostedApp(kExtensionRestricted,
371 kExtensionNotFromWebStore, 394 kExtensionNotFromWebStore,
372 "http://example.com/").get(), 395 "http://example.com/").get(),
373 &params)); 396 &params));
374 } 397 }
398 #endif // !defined(DISABLE_NACL)
375 } 399 }
376 400
377 TEST_F(ChromeContentRendererClientTest, AllowPepperMediaStreamAPI) { 401 TEST_F(ChromeContentRendererClientTest, AllowPepperMediaStreamAPI) {
378 ChromeContentRendererClient test; 402 ChromeContentRendererClient test;
379 #if !defined(OS_ANDROID) 403 #if !defined(OS_ANDROID)
380 EXPECT_TRUE(test.AllowPepperMediaStreamAPI(GURL(kChatAppURL1))); 404 EXPECT_TRUE(test.AllowPepperMediaStreamAPI(GURL(kChatAppURL1)));
381 EXPECT_TRUE(test.AllowPepperMediaStreamAPI(GURL(kChatAppURL2))); 405 EXPECT_TRUE(test.AllowPepperMediaStreamAPI(GURL(kChatAppURL2)));
382 EXPECT_TRUE(test.AllowPepperMediaStreamAPI(GURL(kChatAppURL3))); 406 EXPECT_TRUE(test.AllowPepperMediaStreamAPI(GURL(kChatAppURL3)));
383 #else 407 #else
384 EXPECT_FALSE(test.AllowPepperMediaStreamAPI(GURL(kChatAppURL1))); 408 EXPECT_FALSE(test.AllowPepperMediaStreamAPI(GURL(kChatAppURL1)));
385 EXPECT_FALSE(test.AllowPepperMediaStreamAPI(GURL(kChatAppURL2))); 409 EXPECT_FALSE(test.AllowPepperMediaStreamAPI(GURL(kChatAppURL2)));
386 EXPECT_FALSE(test.AllowPepperMediaStreamAPI(GURL(kChatAppURL3))); 410 EXPECT_FALSE(test.AllowPepperMediaStreamAPI(GURL(kChatAppURL3)));
387 #endif 411 #endif
388 EXPECT_FALSE(test.AllowPepperMediaStreamAPI( 412 EXPECT_FALSE(test.AllowPepperMediaStreamAPI(
389 GURL("http://talkgadget.google.com/hangouts/foo"))); 413 GURL("http://talkgadget.google.com/hangouts/foo")));
390 EXPECT_FALSE(test.AllowPepperMediaStreamAPI( 414 EXPECT_FALSE(test.AllowPepperMediaStreamAPI(
391 GURL("https://talkgadget.evil.com/hangouts/foo"))); 415 GURL("https://talkgadget.evil.com/hangouts/foo")));
392 } 416 }
393 417
394 TEST_F(ChromeContentRendererClientTest, ShouldSuppressErrorPage) { 418 TEST_F(ChromeContentRendererClientTest, ShouldSuppressErrorPage) {
395 ChromeContentRendererClient client; 419 ChromeContentRendererClient client;
396 client.search_bouncer_.reset(new SearchBouncer); 420 client.search_bouncer_.reset(new SearchBouncer);
397 client.search_bouncer_->OnSetSearchURLs( 421 client.search_bouncer_->OnSetSearchURLs(
398 std::vector<GURL>(), GURL("http://example.com/n")); 422 std::vector<GURL>(), GURL("http://example.com/n"));
399 EXPECT_FALSE(client.ShouldSuppressErrorPage(NULL, 423 EXPECT_FALSE(client.ShouldSuppressErrorPage(NULL,
400 GURL("http://example.com"))); 424 GURL("http://example.com")));
401 EXPECT_TRUE(client.ShouldSuppressErrorPage(NULL, 425 EXPECT_TRUE(client.ShouldSuppressErrorPage(NULL,
402 GURL("http://example.com/n"))); 426 GURL("http://example.com/n")));
403 } 427 }
OLDNEW
« no previous file with comments | « chrome/renderer/chrome_content_renderer_client.cc ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698