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

Side by Side Diff: extensions/common/features/simple_feature_unittest.cc

Issue 2241203003: Pass user session type to extension feature checks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: split out some stuff Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "extensions/common/features/simple_feature.h" 5 #include "extensions/common/features/simple_feature.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 10
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 manifest.SetString("app.launch.local_path", "foo.html"); 327 manifest.SetString("app.launch.local_path", "foo.html");
328 328
329 std::string error; 329 std::string error;
330 scoped_refptr<const Extension> extension(Extension::Create( 330 scoped_refptr<const Extension> extension(Extension::Create(
331 base::FilePath(), Manifest::INTERNAL, manifest, Extension::NO_FLAGS, 331 base::FilePath(), Manifest::INTERNAL, manifest, Extension::NO_FLAGS,
332 &error)); 332 &error));
333 EXPECT_EQ("", error); 333 EXPECT_EQ("", error);
334 ASSERT_TRUE(extension.get()); 334 ASSERT_TRUE(extension.get());
335 335
336 feature.whitelist_.push_back("monkey"); 336 feature.whitelist_.push_back("monkey");
337 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToContext( 337 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST,
338 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, 338 feature
339 Feature::CHROMEOS_PLATFORM).result()); 339 .IsAvailableToContext(extension.get(),
340 Feature::BLESSED_EXTENSION_CONTEXT,
341 Feature::SESSION_TYPE_UNSPECIFIED,
342 Feature::CHROMEOS_PLATFORM)
343 .result());
340 feature.whitelist_.clear(); 344 feature.whitelist_.clear();
341 345
342 feature.extension_types_.clear(); 346 feature.extension_types_.clear();
343 feature.extension_types_.push_back(Manifest::TYPE_THEME); 347 feature.extension_types_.push_back(Manifest::TYPE_THEME);
344 { 348 {
345 Feature::Availability availability = feature.IsAvailableToContext( 349 Feature::Availability availability = feature.IsAvailableToContext(
346 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, 350 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
347 Feature::CHROMEOS_PLATFORM); 351 Feature::SESSION_TYPE_UNSPECIFIED, Feature::CHROMEOS_PLATFORM);
348 EXPECT_EQ(Feature::INVALID_TYPE, availability.result()); 352 EXPECT_EQ(Feature::INVALID_TYPE, availability.result());
349 EXPECT_EQ("'somefeature' is only allowed for themes, " 353 EXPECT_EQ("'somefeature' is only allowed for themes, "
350 "but this is a legacy packaged app.", 354 "but this is a legacy packaged app.",
351 availability.message()); 355 availability.message());
352 } 356 }
353 357
354 feature.extension_types_.clear(); 358 feature.extension_types_.clear();
355 feature.extension_types_.push_back(Manifest::TYPE_LEGACY_PACKAGED_APP); 359 feature.extension_types_.push_back(Manifest::TYPE_LEGACY_PACKAGED_APP);
356 feature.contexts_.clear(); 360 feature.contexts_.clear();
357 feature.contexts_.push_back(Feature::UNBLESSED_EXTENSION_CONTEXT); 361 feature.contexts_.push_back(Feature::UNBLESSED_EXTENSION_CONTEXT);
358 feature.contexts_.push_back(Feature::CONTENT_SCRIPT_CONTEXT); 362 feature.contexts_.push_back(Feature::CONTENT_SCRIPT_CONTEXT);
359 { 363 {
360 Feature::Availability availability = feature.IsAvailableToContext( 364 Feature::Availability availability = feature.IsAvailableToContext(
361 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, 365 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
362 Feature::CHROMEOS_PLATFORM); 366 Feature::SESSION_TYPE_UNSPECIFIED, Feature::CHROMEOS_PLATFORM);
363 EXPECT_EQ(Feature::INVALID_CONTEXT, availability.result()); 367 EXPECT_EQ(Feature::INVALID_CONTEXT, availability.result());
364 EXPECT_EQ("'somefeature' is only allowed to run in extension iframes and " 368 EXPECT_EQ("'somefeature' is only allowed to run in extension iframes and "
365 "content scripts, but this is a privileged page", 369 "content scripts, but this is a privileged page",
366 availability.message()); 370 availability.message());
367 } 371 }
368 372
369 feature.contexts_.push_back(Feature::WEB_PAGE_CONTEXT); 373 feature.contexts_.push_back(Feature::WEB_PAGE_CONTEXT);
370 { 374 {
371 Feature::Availability availability = feature.IsAvailableToContext( 375 Feature::Availability availability = feature.IsAvailableToContext(
372 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, 376 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
373 Feature::CHROMEOS_PLATFORM); 377 Feature::SESSION_TYPE_UNSPECIFIED, Feature::CHROMEOS_PLATFORM);
374 EXPECT_EQ(Feature::INVALID_CONTEXT, availability.result()); 378 EXPECT_EQ(Feature::INVALID_CONTEXT, availability.result());
375 EXPECT_EQ("'somefeature' is only allowed to run in extension iframes, " 379 EXPECT_EQ("'somefeature' is only allowed to run in extension iframes, "
376 "content scripts, and web pages, but this is a privileged page", 380 "content scripts, and web pages, but this is a privileged page",
377 availability.message()); 381 availability.message());
378 } 382 }
379 383
380 feature.contexts_.clear(); 384 feature.contexts_.clear();
381 feature.contexts_.push_back(Feature::BLESSED_EXTENSION_CONTEXT); 385 feature.contexts_.push_back(Feature::BLESSED_EXTENSION_CONTEXT);
382 feature.set_location(SimpleFeature::COMPONENT_LOCATION); 386 feature.set_location(SimpleFeature::COMPONENT_LOCATION);
383 EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToContext( 387 EXPECT_EQ(Feature::INVALID_LOCATION,
384 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, 388 feature
385 Feature::CHROMEOS_PLATFORM).result()); 389 .IsAvailableToContext(extension.get(),
390 Feature::BLESSED_EXTENSION_CONTEXT,
391 Feature::SESSION_TYPE_UNSPECIFIED,
392 Feature::CHROMEOS_PLATFORM)
393 .result());
386 feature.set_location(SimpleFeature::UNSPECIFIED_LOCATION); 394 feature.set_location(SimpleFeature::UNSPECIFIED_LOCATION);
387 395
388 EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToContext( 396 EXPECT_EQ(Feature::INVALID_PLATFORM,
389 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, 397 feature
390 Feature::UNSPECIFIED_PLATFORM).result()); 398 .IsAvailableToContext(extension.get(),
399 Feature::BLESSED_EXTENSION_CONTEXT,
400 Feature::SESSION_TYPE_UNSPECIFIED,
401 Feature::UNSPECIFIED_PLATFORM)
402 .result());
391 403
392 feature.set_min_manifest_version(22); 404 feature.set_min_manifest_version(22);
393 EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION, feature.IsAvailableToContext( 405 EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION,
394 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, 406 feature
395 Feature::CHROMEOS_PLATFORM).result()); 407 .IsAvailableToContext(extension.get(),
408 Feature::BLESSED_EXTENSION_CONTEXT,
409 Feature::SESSION_TYPE_UNSPECIFIED,
410 Feature::CHROMEOS_PLATFORM)
411 .result());
396 feature.set_min_manifest_version(21); 412 feature.set_min_manifest_version(21);
397 413
398 feature.set_max_manifest_version(18); 414 feature.set_max_manifest_version(18);
399 EXPECT_EQ(Feature::INVALID_MAX_MANIFEST_VERSION, feature.IsAvailableToContext( 415 EXPECT_EQ(Feature::INVALID_MAX_MANIFEST_VERSION,
400 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, 416 feature
401 Feature::CHROMEOS_PLATFORM).result()); 417 .IsAvailableToContext(extension.get(),
418 Feature::BLESSED_EXTENSION_CONTEXT,
419 Feature::SESSION_TYPE_UNSPECIFIED,
420 Feature::CHROMEOS_PLATFORM)
421 .result());
402 feature.set_max_manifest_version(25); 422 feature.set_max_manifest_version(25);
403 } 423 }
404 424
405 TEST_F(SimpleFeatureTest, Location) { 425 TEST_F(SimpleFeatureTest, Location) {
406 // Component extensions can access any location. 426 // Component extensions can access any location.
407 EXPECT_TRUE(LocationIsAvailable(SimpleFeature::COMPONENT_LOCATION, 427 EXPECT_TRUE(LocationIsAvailable(SimpleFeature::COMPONENT_LOCATION,
408 Manifest::COMPONENT)); 428 Manifest::COMPONENT));
409 EXPECT_TRUE(LocationIsAvailable(SimpleFeature::EXTERNAL_COMPONENT_LOCATION, 429 EXPECT_TRUE(LocationIsAvailable(SimpleFeature::EXTERNAL_COMPONENT_LOCATION,
410 Manifest::COMPONENT)); 430 Manifest::COMPONENT));
411 EXPECT_TRUE( 431 EXPECT_TRUE(
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after
970 EXPECT_NE(Feature::IS_AVAILABLE, 990 EXPECT_NE(Feature::IS_AVAILABLE,
971 feature 991 feature
972 ->IsAvailableToManifest("1", Manifest::TYPE_EXTENSION, 992 ->IsAvailableToManifest("1", Manifest::TYPE_EXTENSION,
973 Manifest::INVALID_LOCATION, 993 Manifest::INVALID_LOCATION,
974 Feature::UNSPECIFIED_PLATFORM) 994 Feature::UNSPECIFIED_PLATFORM)
975 .result()); 995 .result());
976 } 996 }
977 } 997 }
978 998
979 } // namespace extensions 999 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698