blob: ad9d9977cd19c492d5f4790c6f8088ec523c1eff [file] [log] [blame]
// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/permissions/permissions_browsertest.h"
#include <memory>
#include "base/command_line.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/test/base/ui_test_utils.h"
#include "components/permissions/permission_request_manager.h"
#include "components/permissions/test/mock_permission_prompt_factory.h"
#include "content/public/browser/web_contents.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/test_utils.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
PermissionsBrowserTest::PermissionsBrowserTest(const std::string& test_url)
: test_url_(test_url) {}
PermissionsBrowserTest::~PermissionsBrowserTest() = default;
void PermissionsBrowserTest::SetUpOnMainThread() {
permissions::PermissionRequestManager* manager =
permissions::PermissionRequestManager::FromWebContents(
browser()->tab_strip_model()->GetActiveWebContents());
prompt_factory_ =
std::make_unique<permissions::MockPermissionPromptFactory>(manager);
ASSERT_TRUE(embedded_test_server()->Start());
ASSERT_TRUE(ui_test_utils::NavigateToURL(
browser(), embedded_test_server()->GetURL(test_url())));
}
void PermissionsBrowserTest::TearDownOnMainThread() {
prompt_factory_.reset();
}
bool PermissionsBrowserTest::RunScriptReturnBool(const std::string& script) {
bool result;
EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
GetWebContents()->GetPrimaryMainFrame(), script, &result));
return result;
}
content::WebContents* PermissionsBrowserTest::GetWebContents() {
return browser()->tab_strip_model()->GetActiveWebContents();
}
void PermissionsBrowserTest::CommonFailsBeforeRequesting() {
EXPECT_EQ(0, prompt_factory()->TotalRequestCount());
// Dismiss any prompts if they are shown when using the feature.
prompt_factory()->set_response_type(
permissions::PermissionRequestManager::DISMISS);
EXPECT_FALSE(FeatureUsageSucceeds());
}
void PermissionsBrowserTest::CommonFailsIfDismissed() {
EXPECT_EQ(0, prompt_factory()->TotalRequestCount());
prompt_factory()->set_response_type(
permissions::PermissionRequestManager::DISMISS);
TriggerPrompt();
EXPECT_FALSE(FeatureUsageSucceeds());
EXPECT_EQ(1, prompt_factory()->TotalRequestCount());
}
void PermissionsBrowserTest::CommonFailsIfBlocked() {
EXPECT_EQ(0, prompt_factory()->TotalRequestCount());
prompt_factory()->set_response_type(
permissions::PermissionRequestManager::DENY_ALL);
TriggerPrompt();
EXPECT_FALSE(FeatureUsageSucceeds());
EXPECT_EQ(1, prompt_factory()->TotalRequestCount());
}
void PermissionsBrowserTest::CommonSucceedsIfAllowed() {
EXPECT_EQ(0, prompt_factory()->TotalRequestCount());
prompt_factory()->set_response_type(
permissions::PermissionRequestManager::ACCEPT_ALL);
TriggerPrompt();
EXPECT_TRUE(FeatureUsageSucceeds());
EXPECT_EQ(1, prompt_factory()->TotalRequestCount());
}