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

Unified Diff: chrome/browser/chromeos/extensions/public_session_permission_helper_unittest.cc

Issue 2697833004: Revert of Public Sessions - prompt the user for pageCapture requests (Closed)
Patch Set: Created 3 years, 10 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/chromeos/extensions/public_session_permission_helper_unittest.cc
diff --git a/chrome/browser/chromeos/extensions/public_session_permission_helper_unittest.cc b/chrome/browser/chromeos/extensions/public_session_permission_helper_unittest.cc
deleted file mode 100644
index ba370dbd48e76aa0ef7b975fa520deac03f7c23d..0000000000000000000000000000000000000000
--- a/chrome/browser/chromeos/extensions/public_session_permission_helper_unittest.cc
+++ /dev/null
@@ -1,255 +0,0 @@
-// Copyright 2017 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 "chrome/browser/chromeos/extensions/public_session_permission_helper.h"
-
-#include <memory>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "base/bind.h"
-#include "base/memory/ptr_util.h"
-#include "base/memory/weak_ptr.h"
-#include "base/run_loop.h"
-#include "chrome/browser/extensions/extension_install_prompt.h"
-#include "chrome/common/extensions/extension_test_util.h"
-#include "chrome/test/base/chrome_render_view_host_test_harness.h"
-#include "content/public/browser/web_contents.h"
-#include "extensions/browser/extension_dialog_auto_confirm.h"
-#include "extensions/common/extension.h"
-#include "extensions/common/manifest.h"
-#include "extensions/common/permissions/api_permission.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using extension_test_util::LoadManifestUnchecked;
-using content::WebContents;
-using extensions::APIPermission;
-using extensions::Extension;
-using extensions::Manifest;
-using Result = ExtensionInstallPrompt::Result;
-
-namespace {
-
-auto permission_a = APIPermission::kAudio;
-auto permission_b = APIPermission::kBookmark;
-bool did_show_dialog;
-
-scoped_refptr<Extension> LoadManifestHelper(const std::string& id) {
- std::string error;
- scoped_refptr<Extension> extension = LoadManifestUnchecked(
- "common/background_page", "manifest.json", Manifest::INVALID_LOCATION,
- Extension::NO_FLAGS, id, &error);
- EXPECT_TRUE(extension.get()) << error;
- return extension;
-}
-
-bool get_did_show_dialog_and_reset() {
- bool tmp = did_show_dialog;
- did_show_dialog = false;
- return tmp;
-}
-
-class ProgrammableInstallPrompt
- : public ExtensionInstallPrompt,
- public base::SupportsWeakPtr<ProgrammableInstallPrompt> {
- public:
- explicit ProgrammableInstallPrompt(WebContents* contents)
- : ExtensionInstallPrompt(contents) {}
-
- ~ProgrammableInstallPrompt() override {}
-
- void ShowDialog(
- const DoneCallback& done_callback,
- const extensions::Extension* extension,
- const SkBitmap* icon,
- std::unique_ptr<Prompt> prompt,
- std::unique_ptr<const extensions::PermissionSet> custom_permissions,
- const ShowDialogCallback& show_dialog_callback) override {
- done_callback_ = done_callback;
- did_show_dialog = true;
- }
-
- void Resolve(ExtensionInstallPrompt::Result result) {
- done_callback_.Run(result);
- }
-
- private:
- ExtensionInstallPrompt::DoneCallback done_callback_;
-
- DISALLOW_COPY_AND_ASSIGN(ProgrammableInstallPrompt);
-};
-
-} // namespace
-
-namespace extensions {
-namespace permission_helper {
-
-class PublicSessionPermissionHelperTest
- : public ChromeRenderViewHostTestHarness {
- public:
- PublicSessionPermissionHelperTest() {}
- ~PublicSessionPermissionHelperTest() override {}
-
- // testing::Test
- void SetUp() override;
- void TearDown() override;
-
- // Class helpers.
- void RequestResolved(const PermissionIDSet& allowed_permissions);
- std::unique_ptr<ExtensionInstallPrompt> ReturnPrompt(
- std::unique_ptr<ExtensionInstallPrompt> prompt,
- WebContents* web_contents);
- base::WeakPtr<ProgrammableInstallPrompt> CallHandlePermissionRequest(
- const scoped_refptr<Extension>& extension,
- const PermissionIDSet& permissions);
-
- protected:
- scoped_refptr<Extension> extension_a_;
- scoped_refptr<Extension> extension_b_;
-
- std::vector<PermissionIDSet> allowed_permissions_;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(PublicSessionPermissionHelperTest);
-};
-
-void PublicSessionPermissionHelperTest::SetUp() {
- ChromeRenderViewHostTestHarness::SetUp();
- extension_a_ = LoadManifestHelper("extension_a");
- extension_b_ = LoadManifestHelper("extension_b");
-}
-
-void PublicSessionPermissionHelperTest::TearDown() {
- ResetPermissionsForTesting();
- ChromeRenderViewHostTestHarness::TearDown();
-}
-
-void PublicSessionPermissionHelperTest::RequestResolved(
- const PermissionIDSet& allowed_permissions) {
- allowed_permissions_.push_back(allowed_permissions);
-}
-
-std::unique_ptr<ExtensionInstallPrompt>
-PublicSessionPermissionHelperTest::ReturnPrompt(
- std::unique_ptr<ExtensionInstallPrompt> prompt,
- WebContents* web_contents) {
- return prompt;
-}
-
-base::WeakPtr<ProgrammableInstallPrompt>
-PublicSessionPermissionHelperTest::CallHandlePermissionRequest(
- const scoped_refptr<Extension>& extension,
- const PermissionIDSet& permissions) {
- auto prompt = new ProgrammableInstallPrompt(web_contents());
- auto prompt_weak_ptr = prompt->AsWeakPtr();
- auto factory_callback = base::Bind(
- &PublicSessionPermissionHelperTest::ReturnPrompt, base::Unretained(this),
- base::Passed(base::WrapUnique<ExtensionInstallPrompt>(prompt)));
- HandlePermissionRequest(
- *extension.get(), permissions, web_contents(),
- base::Bind(&PublicSessionPermissionHelperTest::RequestResolved,
- base::Unretained(this)),
- factory_callback);
- // In case all permissions were already prompted, ReturnPrompt isn't called
- // because of an early return in HandlePermissionRequest, and in that case the
- // prompt is free'd as soon as HandlePermissionRequest returns (because it's
- // owned by a unique_ptr). Using a weak ptr we can detect when this happens.
- return prompt_weak_ptr;
-}
-
-TEST_F(PublicSessionPermissionHelperTest, TestPermissionAllowed) {
- // Allow permission_a for extension_a.
- auto prompt = CallHandlePermissionRequest(extension_a_, {permission_a});
- EXPECT_TRUE(prompt);
- EXPECT_TRUE(get_did_show_dialog_and_reset());
- prompt->Resolve(Result::ACCEPTED);
- EXPECT_TRUE(allowed_permissions_.at(0).Equals({permission_a}));
-
- // permission_a was already allowed for extension_a hence no prompt is being
- // shown, and the ProgrammableInstallPrompt that is passed in is already
- // free'd after CallHandlePermissionRequest returns so the returned weak
- // pointer should evaluate to false.
- EXPECT_FALSE(CallHandlePermissionRequest(extension_a_, {permission_a}));
- EXPECT_FALSE(get_did_show_dialog_and_reset());
- EXPECT_TRUE(allowed_permissions_.at(1).Equals({permission_a}));
-
- // permission_a was allowed only for extension_a.
- prompt = CallHandlePermissionRequest(extension_b_, {permission_a});
- EXPECT_TRUE(prompt);
- EXPECT_TRUE(get_did_show_dialog_and_reset());
- prompt->Resolve(Result::USER_CANCELED);
- EXPECT_TRUE(allowed_permissions_.at(2).Equals({}));
-}
-
-TEST_F(PublicSessionPermissionHelperTest, TestPermissionDenied) {
- // Deny permission_a for extension_a.
- auto prompt = CallHandlePermissionRequest(extension_a_, {permission_a});
- EXPECT_TRUE(prompt);
- EXPECT_TRUE(get_did_show_dialog_and_reset());
- prompt->Resolve(Result::USER_CANCELED);
- EXPECT_TRUE(allowed_permissions_.at(0).Equals({}));
-
- // Still denied (previous choice is remembered).
- EXPECT_FALSE(CallHandlePermissionRequest(extension_a_, {permission_a}));
- EXPECT_FALSE(get_did_show_dialog_and_reset());
- EXPECT_TRUE(allowed_permissions_.at(1).Equals({}));
-
- // permission_a was denied only for extension_a.
- prompt = CallHandlePermissionRequest(extension_b_, {permission_a});
- EXPECT_TRUE(prompt);
- EXPECT_TRUE(get_did_show_dialog_and_reset());
- prompt->Resolve(Result::ACCEPTED);
- EXPECT_TRUE(allowed_permissions_.at(2).Equals({permission_a}));
-}
-
-TEST_F(PublicSessionPermissionHelperTest, TestTwoPromptsA) {
- // Open two permission prompts.
- auto prompt1 =
- CallHandlePermissionRequest(extension_a_, {permission_a, permission_b});
- EXPECT_TRUE(prompt1);
- EXPECT_TRUE(get_did_show_dialog_and_reset());
- EXPECT_FALSE(CallHandlePermissionRequest(extension_a_, {permission_b}));
- EXPECT_FALSE(get_did_show_dialog_and_reset());
- // prompt1 resolves both permission requests (second permission request
- // doesn't show a prompt as permission_b is already prompted by first
- // permission request).
- prompt1->Resolve(Result::ACCEPTED);
- EXPECT_TRUE(allowed_permissions_.at(0).Equals({permission_a, permission_b}));
- EXPECT_TRUE(allowed_permissions_.at(1).Equals({permission_b}));
-}
-
-TEST_F(PublicSessionPermissionHelperTest, TestTwoPromptsB) {
- auto prompt1 = CallHandlePermissionRequest(extension_a_, {permission_a});
- EXPECT_TRUE(prompt1);
- EXPECT_TRUE(get_did_show_dialog_and_reset());
- auto prompt2 =
- CallHandlePermissionRequest(extension_a_, {permission_a, permission_b});
- EXPECT_TRUE(prompt2);
- EXPECT_TRUE(get_did_show_dialog_and_reset());
- // prompt2 resolves only permission_b because prompt1 already prompted for
- // permission_a.
- prompt2->Resolve(Result::ACCEPTED);
- EXPECT_EQ(allowed_permissions_.size(), 0u);
- prompt1->Resolve(Result::ACCEPTED);
- EXPECT_TRUE(allowed_permissions_.at(0).Equals({permission_a}));
- EXPECT_TRUE(allowed_permissions_.at(1).Equals({permission_a, permission_b}));
-}
-
-TEST_F(PublicSessionPermissionHelperTest, TestTwoPromptsDeny) {
- auto prompt1 = CallHandlePermissionRequest(extension_a_, {permission_a});
- EXPECT_TRUE(prompt1);
- EXPECT_TRUE(get_did_show_dialog_and_reset());
- auto prompt2 =
- CallHandlePermissionRequest(extension_a_, {permission_a, permission_b});
- EXPECT_TRUE(prompt2);
- EXPECT_TRUE(get_did_show_dialog_and_reset());
- prompt1->Resolve(Result::USER_CANCELED);
- EXPECT_TRUE(allowed_permissions_.at(0).Equals({}));
- prompt2->Resolve(Result::ACCEPTED);
- EXPECT_TRUE(allowed_permissions_.at(1).Equals({permission_b}));
-}
-
-} // namespace permission_helper
-} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698