| Index: chrome/browser/storage/durable_storage_browsertest.cc
|
| diff --git a/chrome/browser/storage/durable_storage_browsertest.cc b/chrome/browser/storage/durable_storage_browsertest.cc
|
| index a34eb2ac87b49d4259ca553b3698f4b6c9160a00..a02a785cee02d473c96060367be57b88a419cc1e 100644
|
| --- a/chrome/browser/storage/durable_storage_browsertest.cc
|
| +++ b/chrome/browser/storage/durable_storage_browsertest.cc
|
| @@ -5,14 +5,18 @@
|
| #include <string>
|
|
|
| #include "base/command_line.h"
|
| +#include "base/strings/utf_string_conversions.h"
|
| +#include "chrome/browser/bookmarks/bookmark_model_factory.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/browser/ui/browser_commands.h"
|
| #include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| -#include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
|
| #include "chrome/common/chrome_switches.h"
|
| #include "chrome/test/base/in_process_browser_test.h"
|
| #include "chrome/test/base/ui_test_utils.h"
|
| +#include "components/bookmarks/browser/bookmark_model.h"
|
| +#include "components/bookmarks/browser/bookmark_utils.h"
|
| +#include "components/bookmarks/test/bookmark_test_helpers.h"
|
| #include "content/public/browser/render_frame_host.h"
|
| #include "content/public/browser/web_contents.h"
|
| #include "content/public/test/browser_test_utils.h"
|
| @@ -30,6 +34,14 @@ class DurableStorageBrowserTest : public InProcessBrowserTest {
|
| content::RenderFrameHost* GetRenderFrameHost() {
|
| return browser()->tab_strip_model()->GetActiveWebContents()->GetMainFrame();
|
| }
|
| +
|
| + void Bookmark() {
|
| + bookmarks::BookmarkModel* bookmark_model =
|
| + BookmarkModelFactory::GetForProfile(browser()->profile());
|
| + bookmarks::test::WaitForBookmarkModelToLoad(bookmark_model);
|
| + bookmarks::AddIfNotBookmarked(bookmark_model, url_, base::ASCIIToUTF16(""));
|
| + }
|
| +
|
| GURL url_;
|
|
|
| private:
|
| @@ -49,19 +61,71 @@ void DurableStorageBrowserTest::SetUpOnMainThread() {
|
| url_ = embedded_test_server()->GetURL("/durable/durability-permissions.html");
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(DurableStorageBrowserTest, DenyString) {
|
| +IN_PROC_BROWSER_TEST_F(DurableStorageBrowserTest, QueryNonBookmarkedPage) {
|
| + ui_test_utils::NavigateToURL(browser(), url_);
|
| + std::string permission_string;
|
| + EXPECT_TRUE(content::ExecuteScriptAndExtractString(
|
| + GetRenderFrameHost(), "checkPermission()", &permission_string));
|
| + EXPECT_EQ("default", permission_string);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(DurableStorageBrowserTest, RequestNonBookmarkedPage) {
|
| + ui_test_utils::NavigateToURL(browser(), url_);
|
| + bool default_box_is_persistent = false;
|
| + EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
|
| + GetRenderFrameHost(), "requestPermission()", &default_box_is_persistent));
|
| + EXPECT_EQ(false, default_box_is_persistent);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(DurableStorageBrowserTest, QueryBookmarkedPage) {
|
| + // Documents that the current behavior is to return "default" if script
|
| + // hasn't requested the durable permission, even if it would be autogranted.
|
| + Bookmark();
|
| + ui_test_utils::NavigateToURL(browser(), url_);
|
| + std::string permission_string;
|
| + EXPECT_TRUE(content::ExecuteScriptAndExtractString(
|
| + GetRenderFrameHost(), "checkPermission()", &permission_string));
|
| + EXPECT_EQ("default", permission_string);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(DurableStorageBrowserTest, RequestBookmarkedPage) {
|
| + Bookmark();
|
| ui_test_utils::NavigateToURL(browser(), url_);
|
| - PermissionBubbleManager::FromWebContents(
|
| - browser()->tab_strip_model()->GetActiveWebContents())
|
| - ->set_auto_response_for_test(PermissionBubbleManager::DENY_ALL);
|
| - bool default_box_is_persistent;
|
| + bool default_box_is_persistent = false;
|
| EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
|
| GetRenderFrameHost(), "requestPermission()", &default_box_is_persistent));
|
| - EXPECT_FALSE(default_box_is_persistent);
|
| + EXPECT_EQ(true, default_box_is_persistent);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(DurableStorageBrowserTest, BookmarkThenUnbookmark) {
|
| + Bookmark();
|
| + ui_test_utils::NavigateToURL(browser(), url_);
|
| + bool default_box_is_persistent = false;
|
| std::string permission_string;
|
| +
|
| + EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
|
| + GetRenderFrameHost(), "requestPermission()", &default_box_is_persistent));
|
| + EXPECT_EQ(true, default_box_is_persistent);
|
| EXPECT_TRUE(content::ExecuteScriptAndExtractString(
|
| GetRenderFrameHost(), "checkPermission()", &permission_string));
|
| - EXPECT_EQ("denied", permission_string);
|
| + EXPECT_EQ("granted", permission_string);
|
| +
|
| + bookmarks::BookmarkModel* bookmark_model =
|
| + BookmarkModelFactory::GetForProfile(browser()->profile());
|
| + bookmarks::RemoveAllBookmarks(bookmark_model, url_);
|
| +
|
| + // Unbookmarking doesn't change the permission.
|
| + EXPECT_TRUE(content::ExecuteScriptAndExtractString(
|
| + GetRenderFrameHost(), "checkPermission()", &permission_string));
|
| + EXPECT_EQ("granted", permission_string);
|
| + // Requesting after unbookmarking doesn't change the default box.
|
| + EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
|
| + GetRenderFrameHost(), "requestPermission()", &default_box_is_persistent));
|
| + EXPECT_EQ(true, default_box_is_persistent);
|
| + // Querying after requesting after unbookmarking still reports "granted".
|
| + EXPECT_TRUE(content::ExecuteScriptAndExtractString(
|
| + GetRenderFrameHost(), "checkPermission()", &permission_string));
|
| + EXPECT_EQ("granted", permission_string);
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(DurableStorageBrowserTest, FirstTabSeesResult) {
|
| @@ -73,9 +137,7 @@ IN_PROC_BROWSER_TEST_F(DurableStorageBrowserTest, FirstTabSeesResult) {
|
|
|
| chrome::NewTab(browser());
|
| ui_test_utils::NavigateToURL(browser(), url_);
|
| - PermissionBubbleManager::FromWebContents(
|
| - browser()->tab_strip_model()->GetActiveWebContents())
|
| - ->set_auto_response_for_test(PermissionBubbleManager::ACCEPT_ALL);
|
| + Bookmark();
|
| bool default_box_is_persistent = false;
|
| EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
|
| GetRenderFrameHost(), "requestPermission()", &default_box_is_persistent));
|
|
|