OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <string> | 5 #include <string> |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "chrome/browser/bookmarks/bookmark_model_factory.h" |
8 #include "chrome/browser/profiles/profile.h" | 10 #include "chrome/browser/profiles/profile.h" |
9 #include "chrome/browser/ui/browser.h" | 11 #include "chrome/browser/ui/browser.h" |
10 #include "chrome/browser/ui/browser_commands.h" | 12 #include "chrome/browser/ui/browser_commands.h" |
11 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 13 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
12 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h" | |
13 #include "chrome/common/chrome_switches.h" | 14 #include "chrome/common/chrome_switches.h" |
14 #include "chrome/test/base/in_process_browser_test.h" | 15 #include "chrome/test/base/in_process_browser_test.h" |
15 #include "chrome/test/base/ui_test_utils.h" | 16 #include "chrome/test/base/ui_test_utils.h" |
| 17 #include "components/bookmarks/browser/bookmark_model.h" |
| 18 #include "components/bookmarks/browser/bookmark_utils.h" |
| 19 #include "components/bookmarks/test/bookmark_test_helpers.h" |
16 #include "content/public/browser/render_frame_host.h" | 20 #include "content/public/browser/render_frame_host.h" |
17 #include "content/public/browser/web_contents.h" | 21 #include "content/public/browser/web_contents.h" |
18 #include "content/public/test/browser_test_utils.h" | 22 #include "content/public/test/browser_test_utils.h" |
19 #include "net/test/embedded_test_server/embedded_test_server.h" | 23 #include "net/test/embedded_test_server/embedded_test_server.h" |
20 | 24 |
21 class DurableStorageBrowserTest : public InProcessBrowserTest { | 25 class DurableStorageBrowserTest : public InProcessBrowserTest { |
22 public: | 26 public: |
23 DurableStorageBrowserTest() = default; | 27 DurableStorageBrowserTest() = default; |
24 ~DurableStorageBrowserTest() override = default; | 28 ~DurableStorageBrowserTest() override = default; |
25 | 29 |
26 void SetUpCommandLine(base::CommandLine*) override; | 30 void SetUpCommandLine(base::CommandLine*) override; |
27 void SetUpOnMainThread() override; | 31 void SetUpOnMainThread() override; |
28 | 32 |
29 protected: | 33 protected: |
30 content::RenderFrameHost* GetRenderFrameHost() { | 34 content::RenderFrameHost* GetRenderFrameHost() { |
31 return browser()->tab_strip_model()->GetActiveWebContents()->GetMainFrame(); | 35 return browser()->tab_strip_model()->GetActiveWebContents()->GetMainFrame(); |
32 } | 36 } |
| 37 |
| 38 void Bookmark() { |
| 39 bookmarks::BookmarkModel* bookmark_model = |
| 40 BookmarkModelFactory::GetForProfile(browser()->profile()); |
| 41 bookmarks::test::WaitForBookmarkModelToLoad(bookmark_model); |
| 42 bookmarks::AddIfNotBookmarked(bookmark_model, url_, base::ASCIIToUTF16("")); |
| 43 } |
| 44 |
33 GURL url_; | 45 GURL url_; |
34 | 46 |
35 private: | 47 private: |
36 DISALLOW_COPY_AND_ASSIGN(DurableStorageBrowserTest); | 48 DISALLOW_COPY_AND_ASSIGN(DurableStorageBrowserTest); |
37 }; | 49 }; |
38 | 50 |
39 void DurableStorageBrowserTest::SetUpCommandLine( | 51 void DurableStorageBrowserTest::SetUpCommandLine( |
40 base::CommandLine* command_line) { | 52 base::CommandLine* command_line) { |
41 command_line->AppendSwitch( | 53 command_line->AppendSwitch( |
42 switches::kEnableExperimentalWebPlatformFeatures); | 54 switches::kEnableExperimentalWebPlatformFeatures); |
43 } | 55 } |
44 | 56 |
45 void DurableStorageBrowserTest::SetUpOnMainThread() { | 57 void DurableStorageBrowserTest::SetUpOnMainThread() { |
46 if (embedded_test_server()->Started()) | 58 if (embedded_test_server()->Started()) |
47 return; | 59 return; |
48 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 60 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
49 url_ = embedded_test_server()->GetURL("/durable/durability-permissions.html"); | 61 url_ = embedded_test_server()->GetURL("/durable/durability-permissions.html"); |
50 } | 62 } |
51 | 63 |
52 IN_PROC_BROWSER_TEST_F(DurableStorageBrowserTest, DenyString) { | 64 IN_PROC_BROWSER_TEST_F(DurableStorageBrowserTest, QueryNonBookmarkedPage) { |
53 ui_test_utils::NavigateToURL(browser(), url_); | 65 ui_test_utils::NavigateToURL(browser(), url_); |
54 PermissionBubbleManager::FromWebContents( | 66 std::string permission_string; |
55 browser()->tab_strip_model()->GetActiveWebContents()) | 67 EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
56 ->set_auto_response_for_test(PermissionBubbleManager::DENY_ALL); | 68 GetRenderFrameHost(), "checkPermission()", &permission_string)); |
57 bool default_box_is_persistent; | 69 EXPECT_EQ("default", permission_string); |
| 70 } |
| 71 |
| 72 IN_PROC_BROWSER_TEST_F(DurableStorageBrowserTest, RequestNonBookmarkedPage) { |
| 73 ui_test_utils::NavigateToURL(browser(), url_); |
| 74 bool default_box_is_persistent = false; |
58 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( | 75 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( |
59 GetRenderFrameHost(), "requestPermission()", &default_box_is_persistent)); | 76 GetRenderFrameHost(), "requestPermission()", &default_box_is_persistent)); |
60 EXPECT_FALSE(default_box_is_persistent); | 77 EXPECT_FALSE(default_box_is_persistent); |
| 78 } |
| 79 |
| 80 IN_PROC_BROWSER_TEST_F(DurableStorageBrowserTest, QueryBookmarkedPage) { |
| 81 // Documents that the current behavior is to return "default" if script |
| 82 // hasn't requested the durable permission, even if it would be autogranted. |
| 83 Bookmark(); |
| 84 ui_test_utils::NavigateToURL(browser(), url_); |
61 std::string permission_string; | 85 std::string permission_string; |
62 EXPECT_TRUE(content::ExecuteScriptAndExtractString( | 86 EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
63 GetRenderFrameHost(), "checkPermission()", &permission_string)); | 87 GetRenderFrameHost(), "checkPermission()", &permission_string)); |
64 EXPECT_EQ("denied", permission_string); | 88 EXPECT_EQ("default", permission_string); |
| 89 } |
| 90 |
| 91 IN_PROC_BROWSER_TEST_F(DurableStorageBrowserTest, RequestBookmarkedPage) { |
| 92 Bookmark(); |
| 93 ui_test_utils::NavigateToURL(browser(), url_); |
| 94 bool default_box_is_persistent = false; |
| 95 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( |
| 96 GetRenderFrameHost(), "requestPermission()", &default_box_is_persistent)); |
| 97 EXPECT_TRUE(default_box_is_persistent); |
| 98 } |
| 99 |
| 100 IN_PROC_BROWSER_TEST_F(DurableStorageBrowserTest, BookmarkThenUnbookmark) { |
| 101 Bookmark(); |
| 102 ui_test_utils::NavigateToURL(browser(), url_); |
| 103 bool default_box_is_persistent = false; |
| 104 std::string permission_string; |
| 105 |
| 106 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( |
| 107 GetRenderFrameHost(), "requestPermission()", &default_box_is_persistent)); |
| 108 EXPECT_TRUE(default_box_is_persistent); |
| 109 EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
| 110 GetRenderFrameHost(), "checkPermission()", &permission_string)); |
| 111 EXPECT_EQ("granted", permission_string); |
| 112 |
| 113 bookmarks::BookmarkModel* bookmark_model = |
| 114 BookmarkModelFactory::GetForProfile(browser()->profile()); |
| 115 bookmarks::RemoveAllBookmarks(bookmark_model, url_); |
| 116 |
| 117 // Unbookmarking doesn't change the permission. |
| 118 EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
| 119 GetRenderFrameHost(), "checkPermission()", &permission_string)); |
| 120 EXPECT_EQ("granted", permission_string); |
| 121 // Requesting after unbookmarking doesn't change the default box. |
| 122 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( |
| 123 GetRenderFrameHost(), "requestPermission()", &default_box_is_persistent)); |
| 124 EXPECT_TRUE(default_box_is_persistent); |
| 125 // Querying after requesting after unbookmarking still reports "granted". |
| 126 EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
| 127 GetRenderFrameHost(), "checkPermission()", &permission_string)); |
| 128 EXPECT_EQ("granted", permission_string); |
65 } | 129 } |
66 | 130 |
67 IN_PROC_BROWSER_TEST_F(DurableStorageBrowserTest, FirstTabSeesResult) { | 131 IN_PROC_BROWSER_TEST_F(DurableStorageBrowserTest, FirstTabSeesResult) { |
68 ui_test_utils::NavigateToURL(browser(), url_); | 132 ui_test_utils::NavigateToURL(browser(), url_); |
69 std::string permission_string; | 133 std::string permission_string; |
70 EXPECT_TRUE(content::ExecuteScriptAndExtractString( | 134 EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
71 GetRenderFrameHost(), "checkPermission()", &permission_string)); | 135 GetRenderFrameHost(), "checkPermission()", &permission_string)); |
72 EXPECT_EQ("default", permission_string); | 136 EXPECT_EQ("default", permission_string); |
73 | 137 |
74 chrome::NewTab(browser()); | 138 chrome::NewTab(browser()); |
75 ui_test_utils::NavigateToURL(browser(), url_); | 139 ui_test_utils::NavigateToURL(browser(), url_); |
76 PermissionBubbleManager::FromWebContents( | 140 Bookmark(); |
77 browser()->tab_strip_model()->GetActiveWebContents()) | |
78 ->set_auto_response_for_test(PermissionBubbleManager::ACCEPT_ALL); | |
79 bool default_box_is_persistent = false; | 141 bool default_box_is_persistent = false; |
80 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( | 142 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( |
81 GetRenderFrameHost(), "requestPermission()", &default_box_is_persistent)); | 143 GetRenderFrameHost(), "requestPermission()", &default_box_is_persistent)); |
82 EXPECT_TRUE(default_box_is_persistent); | 144 EXPECT_TRUE(default_box_is_persistent); |
83 | 145 |
84 browser()->tab_strip_model()->ActivateTabAt(0, false); | 146 browser()->tab_strip_model()->ActivateTabAt(0, false); |
85 EXPECT_TRUE(content::ExecuteScriptAndExtractString( | 147 EXPECT_TRUE(content::ExecuteScriptAndExtractString( |
86 GetRenderFrameHost(), "checkPermission()", &permission_string)); | 148 GetRenderFrameHost(), "checkPermission()", &permission_string)); |
87 EXPECT_EQ("granted", permission_string); | 149 EXPECT_EQ("granted", permission_string); |
88 } | 150 } |
OLD | NEW |