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

Unified Diff: chrome/browser/extensions/extension_loading_browsertest.cc

Issue 2950203002: Add new permission string for extensions that override new tab pages. (Closed)
Patch Set: Devlin's last feedback. Created 3 years, 5 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
Index: chrome/browser/extensions/extension_loading_browsertest.cc
diff --git a/chrome/browser/extensions/extension_loading_browsertest.cc b/chrome/browser/extensions/extension_loading_browsertest.cc
index 095be6cd6e1b2ca56269b23949a78677ea1478d6..12c2c1bb44a4db02d9f79470b64cc56e8c6bb73a 100644
--- a/chrome/browser/extensions/extension_loading_browsertest.cc
+++ b/chrome/browser/extensions/extension_loading_browsertest.cc
@@ -21,6 +21,7 @@
#include "content/public/test/browser_test_utils.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/process_manager.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "extensions/test/extension_test_message_listener.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
#include "testing/gmock/include/gmock/gmock.h"
@@ -43,7 +44,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionLoadingTest,
ASSERT_TRUE(embedded_test_server()->Start());
TestExtensionDir extension_dir;
- const char manifest_template[] =
+ const char kManifestTemplate[] =
"{"
" 'name': 'Overrides New Tab',"
" 'version': '%d',"
@@ -58,7 +59,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionLoadingTest,
" }"
"}";
extension_dir.WriteManifestWithSingleQuotes(
- base::StringPrintf(manifest_template, 1));
+ base::StringPrintf(kManifestTemplate, 1));
extension_dir.WriteFile(FILE_PATH_LITERAL("event.js"), "");
extension_dir.WriteFile(FILE_PATH_LITERAL("newtab.html"),
"<h1>Overridden New Tab Page</h1>");
@@ -81,7 +82,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionLoadingTest,
// Increase the extension's version.
extension_dir.WriteManifestWithSingleQuotes(
- base::StringPrintf(manifest_template, 2));
+ base::StringPrintf(kManifestTemplate, 2));
// Upgrade the extension.
new_tab_extension = UpdateExtension(
@@ -101,6 +102,67 @@ IN_PROC_BROWSER_TEST_F(ExtensionLoadingTest,
EXPECT_TRUE(registry->enabled_extensions().Contains(new_tab_extension->id()));
}
+IN_PROC_BROWSER_TEST_F(ExtensionLoadingTest,
+ UpgradeAddingNewTabPagePermissionNoPrompt) {
+ embedded_test_server()->ServeFilesFromDirectory(
+ base::FilePath(FILE_PATH_LITERAL("chrome/test/data")));
+ ASSERT_TRUE(embedded_test_server()->Start());
+
+ TestExtensionDir extension_dir;
+ const char kManifestTemplate[] =
+ "{"
+ " 'name': 'Overrides New Tab',"
+ " 'version': '%d',"
+ " 'description': 'Will override New Tab soon',"
+ " %s" // Placeholder for future NTP url override block.
+ " 'manifest_version': 2"
+ "}";
+ extension_dir.WriteManifestWithSingleQuotes(
+ base::StringPrintf(kManifestTemplate, 1, ""));
+ extension_dir.WriteFile(FILE_PATH_LITERAL("event.js"), "");
+ extension_dir.WriteFile(FILE_PATH_LITERAL("newtab.html"),
+ "<h1>Overridden New Tab Page</h1>");
+
+ const Extension* new_tab_extension =
+ InstallExtension(extension_dir.Pack(), 1 /*new install*/);
+ ASSERT_TRUE(new_tab_extension);
+
+ EXPECT_FALSE(new_tab_extension->permissions_data()->HasAPIPermission(
+ APIPermission::kNewTabPageOverride));
+
+ // Navigate that tab to a non-extension URL to swap out the extension's
+ // renderer.
+ const GURL test_link_from_ntp =
+ embedded_test_server()->GetURL("/README.chromium");
+ EXPECT_THAT(test_link_from_ntp.spec(), testing::EndsWith("/README.chromium"))
+ << "Check that the test server started.";
+ NavigateInRenderer(browser()->tab_strip_model()->GetActiveWebContents(),
+ test_link_from_ntp);
+
+ // Increase the extension's version and add the NTP url override which will
+ // add the kNewTabPageOverride permission.
+ const char ntp_override_string[] =
+ " 'chrome_url_overrides': {"
+ " 'newtab': 'newtab.html'"
+ " },";
+ extension_dir.WriteManifestWithSingleQuotes(
+ base::StringPrintf(kManifestTemplate, 2, ntp_override_string));
+
+ // Upgrade the extension, ensure that the upgrade 'worked' in the sense that
+ // the extension is still present and not disabled and that it now has the
+ // new API permission.
+ // TODO(robertshield): Update this once most of the population is on M62+
+ // and adding NTP permissions implies a permission upgrade.
+ new_tab_extension = UpdateExtension(
+ new_tab_extension->id(), extension_dir.Pack(), 0 /*expected upgrade*/);
+ ASSERT_NE(nullptr, new_tab_extension);
+
+ EXPECT_TRUE(new_tab_extension->permissions_data()->HasAPIPermission(
+ APIPermission::kNewTabPageOverride));
+ EXPECT_THAT(new_tab_extension->version()->components(),
+ testing::ElementsAre(2));
+}
+
// Tests the behavior described in http://crbug.com/532088.
IN_PROC_BROWSER_TEST_F(ExtensionLoadingTest,
KeepAliveWithDevToolsOpenOnReload) {
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | chrome/browser/extensions/permission_message_combinations_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698