OLD | NEW |
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 "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/json/json_file_value_serializer.h" | 6 #include "base/json/json_file_value_serializer.h" |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "chrome/browser/extensions/extension_service.h" | 10 #include "chrome/browser/extensions/extension_service.h" |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 FeatureSwitch::scripts_require_action(), true)); | 322 FeatureSwitch::scripts_require_action(), true)); |
323 // Two extensions - one with all urls, one without. | 323 // Two extensions - one with all urls, one without. |
324 scoped_refptr<const Extension> all_urls_extension = CreateExtension( | 324 scoped_refptr<const Extension> all_urls_extension = CreateExtension( |
325 "all_urls", ListBuilder().Append(kAllHostsPermission).Pass()); | 325 "all_urls", ListBuilder().Append(kAllHostsPermission).Pass()); |
326 scoped_refptr<const Extension> no_urls_extension = | 326 scoped_refptr<const Extension> no_urls_extension = |
327 CreateExtension("no urls", ListBuilder().Pass()); | 327 CreateExtension("no urls", ListBuilder().Pass()); |
328 | 328 |
329 scoped_ptr<base::DictionaryValue> value(handler()->CreateExtensionDetailValue( | 329 scoped_ptr<base::DictionaryValue> value(handler()->CreateExtensionDetailValue( |
330 all_urls_extension.get(), std::vector<ExtensionPage>(), NULL)); | 330 all_urls_extension.get(), std::vector<ExtensionPage>(), NULL)); |
331 bool result = false; | 331 bool result = false; |
332 const std::string kWantsAllUrls = "wantsAllUrls"; | 332 const std::string kShowAllUrls = "showAllUrls"; |
333 const std::string kAllowAllUrls = "allowAllUrls"; | 333 const std::string kAllowAllUrls = "allowAllUrls"; |
334 | 334 |
335 // The extension should want all urls, but not currently have it. | 335 // The extension should want all urls, but not currently have it. |
336 EXPECT_TRUE(value->GetBoolean(kWantsAllUrls, &result)); | 336 EXPECT_TRUE(value->GetBoolean(kShowAllUrls, &result)); |
337 EXPECT_TRUE(result); | 337 EXPECT_TRUE(result); |
338 EXPECT_TRUE(value->GetBoolean(kAllowAllUrls, &result)); | 338 EXPECT_TRUE(value->GetBoolean(kAllowAllUrls, &result)); |
339 EXPECT_FALSE(result); | 339 EXPECT_FALSE(result); |
340 | 340 |
341 // Give the extension all urls. | 341 // Give the extension all urls. |
342 util::SetAllowedScriptingOnAllUrls( | 342 util::SetAllowedScriptingOnAllUrls(all_urls_extension->id(), profile(), true); |
343 all_urls_extension->id(), profile(), true); | |
344 | 343 |
345 // Now the extension should both want and have all urls. | 344 // Now the extension should both want and have all urls. |
346 value.reset(handler()->CreateExtensionDetailValue( | 345 value.reset(handler()->CreateExtensionDetailValue( |
347 all_urls_extension.get(), std::vector<ExtensionPage>(), NULL)); | 346 all_urls_extension.get(), std::vector<ExtensionPage>(), NULL)); |
348 EXPECT_TRUE(value->GetBoolean(kWantsAllUrls, &result)); | 347 EXPECT_TRUE(value->GetBoolean(kShowAllUrls, &result)); |
349 EXPECT_TRUE(result); | 348 EXPECT_TRUE(result); |
350 EXPECT_TRUE(value->GetBoolean(kAllowAllUrls, &result)); | 349 EXPECT_TRUE(value->GetBoolean(kAllowAllUrls, &result)); |
351 EXPECT_TRUE(result); | 350 EXPECT_TRUE(result); |
352 | 351 |
353 // The other extension should neither want nor have all urls. | 352 // The other extension should neither want nor have all urls. |
354 value.reset(handler()->CreateExtensionDetailValue( | 353 value.reset(handler()->CreateExtensionDetailValue( |
355 no_urls_extension.get(), std::vector<ExtensionPage>(), NULL)); | 354 no_urls_extension.get(), std::vector<ExtensionPage>(), NULL)); |
356 EXPECT_TRUE(value->GetBoolean(kWantsAllUrls, &result)); | 355 EXPECT_TRUE(value->GetBoolean(kShowAllUrls, &result)); |
357 EXPECT_FALSE(result); | 356 EXPECT_FALSE(result); |
358 EXPECT_TRUE(value->GetBoolean(kAllowAllUrls, &result)); | 357 EXPECT_TRUE(value->GetBoolean(kAllowAllUrls, &result)); |
359 EXPECT_FALSE(result); | 358 EXPECT_FALSE(result); |
360 | 359 |
| 360 // Revoke the first extension's permissions. |
| 361 util::SetAllowedScriptingOnAllUrls( |
| 362 all_urls_extension->id(), profile(), false); |
| 363 |
361 // Turn off the switch and load another extension (so permissions are | 364 // Turn off the switch and load another extension (so permissions are |
362 // re-initialized). | 365 // re-initialized). |
363 enable_scripts_switch.reset(); | 366 enable_scripts_switch.reset(); |
364 | 367 |
365 // Even though the extension has the all urls preference, the checkbox | 368 // Since the extension doesn't have access to all urls (but normally would), |
366 // shouldn't show up with the switch off. | 369 // the extension should have the "want" flag even with the switch off. |
367 value.reset(handler()->CreateExtensionDetailValue( | 370 value.reset(handler()->CreateExtensionDetailValue( |
368 all_urls_extension.get(), std::vector<ExtensionPage>(), NULL)); | 371 all_urls_extension.get(), std::vector<ExtensionPage>(), NULL)); |
369 EXPECT_TRUE(value->GetBoolean(kWantsAllUrls, &result)); | 372 EXPECT_TRUE(value->GetBoolean(kShowAllUrls, &result)); |
| 373 EXPECT_TRUE(result); |
| 374 EXPECT_TRUE(value->GetBoolean(kAllowAllUrls, &result)); |
| 375 EXPECT_FALSE(result); |
| 376 |
| 377 // If we grant the extension all urls, then it should no longer "want" it, |
| 378 // since it is back in its normal state (with the switch off). |
| 379 util::SetAllowedScriptingOnAllUrls(all_urls_extension->id(), profile(), true); |
| 380 value.reset(handler()->CreateExtensionDetailValue( |
| 381 all_urls_extension.get(), std::vector<ExtensionPage>(), NULL)); |
| 382 EXPECT_TRUE(value->GetBoolean(kShowAllUrls, &result)); |
370 EXPECT_FALSE(result); | 383 EXPECT_FALSE(result); |
371 EXPECT_TRUE(value->GetBoolean(kAllowAllUrls, &result)); | 384 EXPECT_TRUE(value->GetBoolean(kAllowAllUrls, &result)); |
372 EXPECT_TRUE(result); | 385 EXPECT_TRUE(result); |
373 | 386 |
374 // Load another extension with all urls (so permissions get re-init'd). | 387 // Load another extension with all urls (so permissions get re-init'd). |
375 all_urls_extension = CreateExtension( | 388 all_urls_extension = CreateExtension( |
376 "all_urls_II", ListBuilder().Append(kAllHostsPermission).Pass()); | 389 "all_urls_II", ListBuilder().Append(kAllHostsPermission).Pass()); |
377 | 390 |
378 // Even though the extension has all_urls permission, the checkbox shouldn't | 391 // Even though the extension has all_urls permission, the checkbox shouldn't |
379 // show up without the switch. | 392 // show up without the switch. |
380 value.reset(handler()->CreateExtensionDetailValue( | 393 value.reset(handler()->CreateExtensionDetailValue( |
381 all_urls_extension.get(), std::vector<ExtensionPage>(), NULL)); | 394 all_urls_extension.get(), std::vector<ExtensionPage>(), NULL)); |
382 EXPECT_TRUE(value->GetBoolean(kWantsAllUrls, &result)); | 395 EXPECT_TRUE(value->GetBoolean(kShowAllUrls, &result)); |
383 EXPECT_FALSE(result); | 396 EXPECT_FALSE(result); |
384 EXPECT_TRUE(value->GetBoolean(kAllowAllUrls, &result)); | 397 EXPECT_TRUE(value->GetBoolean(kAllowAllUrls, &result)); |
385 EXPECT_FALSE(result); | 398 EXPECT_TRUE(result); |
386 } | 399 } |
387 | 400 |
388 } // namespace extensions | 401 } // namespace extensions |
OLD | NEW |