// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/bind.h" #include "base/memory/ref_counted.h" #include "base/run_loop.h" #include "chrome/browser/extensions/extension_install_prompt.h" #include "content/public/test/test_browser_thread_bundle.h" #include "extensions/common/extension.h" #include "extensions/common/extension_builder.h" #include "extensions/common/permissions/api_permission.h" #include "extensions/common/permissions/api_permission_set.h" #include "extensions/common/permissions/manifest_permission_set.h" #include "extensions/common/permissions/permission_set.h" #include "extensions/common/url_pattern_set.h" #include "extensions/common/value_builder.h" #include "testing/gtest/include/gtest/gtest.h" namespace extensions { void VerifyPromptPermissionsCallback( const base::Closure& quit_closure, const ExtensionInstallPrompt::ShowParams& params, ExtensionInstallPrompt::Delegate* delegate, scoped_refptr install_prompt) { ASSERT_TRUE(install_prompt.get()); EXPECT_EQ(1u, install_prompt->GetPermissionCount()); quit_closure.Run(); } TEST(ExtensionInstallPromptUnittest, PromptShowsPermissionWarnings) { content::TestBrowserThreadBundle thread_bundle; APIPermissionSet api_permissions; api_permissions.insert(APIPermission::kTab); scoped_refptr permission_set = new PermissionSet(api_permissions, ManifestPermissionSet(), URLPatternSet(), URLPatternSet()); scoped_refptr extension = ExtensionBuilder().SetManifest( DictionaryBuilder().Set("name", "foo") .Set("version", "1.0") .Set("manifest_version", 2) .Set("description", "Random Ext")).Build(); ExtensionInstallPrompt prompt(NULL /* no web contents in this test */); base::RunLoop run_loop; prompt.set_callback_for_test(base::Bind(&VerifyPromptPermissionsCallback, run_loop.QuitClosure())); prompt.ConfirmPermissions(NULL, // no delegate extension, permission_set); run_loop.Run(); } } // namespace extensions