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

Side by Side Diff: chrome/browser/extensions/active_script_controller_unittest.cc

Issue 597413003: Introduce an "ExtensionWantsToAct" method (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Latest master for CQ 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
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 <map> 5 #include <map>
6 6
7 #include "base/values.h" 7 #include "base/values.h"
8 #include "chrome/browser/extensions/active_script_controller.h" 8 #include "chrome/browser/extensions/active_script_controller.h"
9 #include "chrome/browser/extensions/active_tab_permission_granter.h" 9 #include "chrome/browser/extensions/active_tab_permission_granter.h"
10 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
10 #include "chrome/browser/extensions/extension_util.h" 11 #include "chrome/browser/extensions/extension_util.h"
11 #include "chrome/browser/extensions/permissions_updater.h" 12 #include "chrome/browser/extensions/permissions_updater.h"
12 #include "chrome/browser/extensions/tab_helper.h" 13 #include "chrome/browser/extensions/tab_helper.h"
13 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 14 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
14 #include "chrome/test/base/testing_profile.h" 15 #include "chrome/test/base/testing_profile.h"
15 #include "components/crx_file/id_util.h" 16 #include "components/crx_file/id_util.h"
16 #include "content/public/browser/navigation_controller.h" 17 #include "content/public/browser/navigation_controller.h"
17 #include "content/public/browser/navigation_entry.h" 18 #include "content/public/browser/navigation_entry.h"
18 #include "content/public/browser/web_contents.h" 19 #include "content/public/browser/web_contents.h"
19 #include "extensions/browser/extension_registry.h" 20 #include "extensions/browser/extension_registry.h"
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 TEST_F(ActiveScriptControllerUnitTest, RequestPermissionAndExecute) { 176 TEST_F(ActiveScriptControllerUnitTest, RequestPermissionAndExecute) {
176 const Extension* extension = AddExtension(); 177 const Extension* extension = AddExtension();
177 ASSERT_TRUE(extension); 178 ASSERT_TRUE(extension);
178 179
179 NavigateAndCommit(GURL("https://www.google.com")); 180 NavigateAndCommit(GURL("https://www.google.com"));
180 181
181 // Ensure that there aren't any executions pending. 182 // Ensure that there aren't any executions pending.
182 ASSERT_EQ(0u, GetExecutionCountForExtension(extension->id())); 183 ASSERT_EQ(0u, GetExecutionCountForExtension(extension->id()));
183 ASSERT_FALSE(controller()->WantsToRun(extension)); 184 ASSERT_FALSE(controller()->WantsToRun(extension));
184 185
186 ExtensionActionAPI* extension_action_api =
187 ExtensionActionAPI::Get(profile());
188 ASSERT_FALSE(extension_action_api->ExtensionWantsToRun(extension,
189 web_contents()));
190
185 // Since the extension requests all_hosts, we should require user consent. 191 // Since the extension requests all_hosts, we should require user consent.
186 EXPECT_TRUE(RequiresUserConsent(extension)); 192 EXPECT_TRUE(RequiresUserConsent(extension));
187 193
188 // Request an injection. The extension should want to run, but should not have 194 // Request an injection. The extension should want to run, but should not have
189 // executed. 195 // executed.
190 RequestInjection(extension); 196 RequestInjection(extension);
191 EXPECT_TRUE(controller()->WantsToRun(extension)); 197 EXPECT_TRUE(controller()->WantsToRun(extension));
198 EXPECT_TRUE(extension_action_api->ExtensionWantsToRun(extension,
199 web_contents()));
192 EXPECT_EQ(0u, GetExecutionCountForExtension(extension->id())); 200 EXPECT_EQ(0u, GetExecutionCountForExtension(extension->id()));
193 201
194 // Click to accept the extension executing. 202 // Click to accept the extension executing.
195 controller()->OnClicked(extension); 203 controller()->OnClicked(extension);
196 204
197 // The extension should execute, and the extension shouldn't want to run. 205 // The extension should execute, and the extension shouldn't want to run.
198 EXPECT_EQ(1u, GetExecutionCountForExtension(extension->id())); 206 EXPECT_EQ(1u, GetExecutionCountForExtension(extension->id()));
199 EXPECT_FALSE(controller()->WantsToRun(extension)); 207 EXPECT_FALSE(controller()->WantsToRun(extension));
208 EXPECT_FALSE(extension_action_api->ExtensionWantsToRun(extension,
209 web_contents()));
200 210
201 // Since we already executed on the given page, we shouldn't need permission 211 // Since we already executed on the given page, we shouldn't need permission
202 // for a second time. 212 // for a second time.
203 EXPECT_FALSE(RequiresUserConsent(extension)); 213 EXPECT_FALSE(RequiresUserConsent(extension));
204 214
205 // Reloading and same-origin navigations shouldn't clear those permissions, 215 // Reloading and same-origin navigations shouldn't clear those permissions,
206 // and we shouldn't require user constent again. 216 // and we shouldn't require user constent again.
207 Reload(); 217 Reload();
208 EXPECT_FALSE(RequiresUserConsent(extension)); 218 EXPECT_FALSE(RequiresUserConsent(extension));
209 NavigateAndCommit(GURL("https://www.google.com/foo")); 219 NavigateAndCommit(GURL("https://www.google.com/foo"));
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 EXPECT_TRUE(RequiresUserConsent(extension)); 411 EXPECT_TRUE(RequiresUserConsent(extension));
402 // Different subdomain... 412 // Different subdomain...
403 NavigateAndCommit(GURL("https://en.google.com/foo/bar")); 413 NavigateAndCommit(GURL("https://en.google.com/foo/bar"));
404 EXPECT_TRUE(RequiresUserConsent(extension)); 414 EXPECT_TRUE(RequiresUserConsent(extension));
405 // Only the "always run" origin should be allowed to run without user consent. 415 // Only the "always run" origin should be allowed to run without user consent.
406 NavigateAndCommit(GURL("https://www.google.com/foo/bar")); 416 NavigateAndCommit(GURL("https://www.google.com/foo/bar"));
407 EXPECT_FALSE(RequiresUserConsent(extension)); 417 EXPECT_FALSE(RequiresUserConsent(extension));
408 } 418 }
409 419
410 } // namespace extensions 420 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698