blob: 2747182c2df58a4ecaf19d96a025d8c9c53bf671 [file] [log] [blame]
// Copyright 2016 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/permissions/permissions_browsertest.h"
#include "base/command_line.h"
#include "chrome/browser/permissions/permission_request_manager.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/permission_bubble/mock_permission_prompt_factory.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/test/base/ui_test_utils.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() {}
void PermissionsBrowserTest::SetUpOnMainThread() {
PermissionRequestManager* manager = PermissionRequestManager::FromWebContents(
browser()->tab_strip_model()->GetActiveWebContents());
prompt_factory_.reset(new MockPermissionPromptFactory(manager));
ASSERT_TRUE(embedded_test_server()->Start());
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()->GetMainFrame(), 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(PermissionRequestManager::DISMISS);
EXPECT_FALSE(FeatureUsageSucceeds());
}
void PermissionsBrowserTest::CommonFailsIfDismissed() {
EXPECT_EQ(0, prompt_factory()->TotalRequestCount());
prompt_factory()->set_response_type(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(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(PermissionRequestManager::ACCEPT_ALL);
TriggerPrompt();
EXPECT_TRUE(FeatureUsageSucceeds());
EXPECT_EQ(1, prompt_factory()->TotalRequestCount());
}