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

Unified Diff: chrome/browser/content_settings/content_settings_browsertest.cc

Issue 10875045: Rewrite the cookies pyauto test as browser tests. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 4 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
« no previous file with comments | « no previous file | chrome/browser/fast_shutdown_browsertest.cc » ('j') | chrome/test/functional/cookies.py » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/content_settings/content_settings_browsertest.cc
===================================================================
--- chrome/browser/content_settings/content_settings_browsertest.cc (revision 153070)
+++ chrome/browser/content_settings/content_settings_browsertest.cc (working copy)
@@ -9,21 +9,206 @@
#include "chrome/browser/content_settings/cookie_settings.h"
#include "chrome/browser/content_settings/host_content_settings_map.h"
#include "chrome/browser/content_settings/tab_specific_content_settings.h"
+#include "chrome/browser/net/url_request_mock_util.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_tabstrip.h"
#include "chrome/browser/ui/tab_contents/tab_contents.h"
+#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/render_messages.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
+#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/content_switches.h"
#include "content/public/test/browser_test_utils.h"
+#include "content/public/test/test_utils.h"
+#include "content/test/net/url_request_mock_http_job.h"
#include "net/test/test_server.h"
+using content::BrowserThread;
+
+class ContentSettingsTest : public InProcessBrowserTest {
+ public:
+ ContentSettingsTest()
+ : https_server_(
+ net::TestServer::TYPE_HTTPS,
+ net::TestServer::SSLOptions(net::TestServer::SSLOptions::CERT_OK),
+ FilePath(FILE_PATH_LITERAL("chrome/test/data"))) {
+ }
+
+ virtual void SetUpOnMainThread() OVERRIDE {
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(&chrome_browser_net::SetUrlRequestMocksEnabled, true));
+ }
+
+ // Check the cookie for the given URL in an incognito window.
+ void CookieCheckIncognitoWindow(const GURL& url, bool cookies_enabled) {
+ ASSERT_TRUE(content::GetCookies(browser()->profile(), url).empty());
+
+ Browser* incognito = CreateIncognitoBrowser();
+ ASSERT_TRUE(content::GetCookies(incognito->profile(), url).empty());
+ ui_test_utils::NavigateToURL(incognito, url);
+ ASSERT_EQ(cookies_enabled,
+ !content::GetCookies(incognito->profile(), url).empty());
+
+ content::WindowedNotificationObserver signal(
+ chrome::NOTIFICATION_BROWSER_CLOSED,
+ content::Source<Browser>(incognito));
+
+ chrome::CloseWindow(incognito);
+
+ signal.Wait();
+
+ incognito = CreateIncognitoBrowser();
+ ASSERT_TRUE(content::GetCookies(incognito->profile(), url).empty());
+ chrome::CloseWindow(incognito);
+ }
+
+ void PreBasic(const GURL& url) {
+ TabContents* tab = chrome::GetActiveTabContents(browser());
+ ASSERT_TRUE(GetCookies(tab->profile(), url).empty());
+
+ CookieCheckIncognitoWindow(url, true);
+
+ ui_test_utils::NavigateToURL(browser(), url);
+ ASSERT_FALSE(GetCookies(tab->profile(), url).empty());
+ }
+
+ void Basic(const GURL& url) {
+ TabContents* tab = chrome::GetActiveTabContents(browser());
+ ASSERT_FALSE(GetCookies(tab->profile(), url).empty());
+ }
+
+ net::TestServer https_server_;
+};
+
+// Sanity check on cookies before we do other tests. While these can be written
+// in content_browsertests, we want to verify Chrome's cookie storage and how it
+// handles incognito windows.
+IN_PROC_BROWSER_TEST_F(ContentSettingsTest, PRE_BasicCookies) {
+ ASSERT_TRUE(test_server()->Start());
+ GURL http_url = test_server()->GetURL("files/setcookie.html");
+ PreBasic(http_url);
+}
+
+IN_PROC_BROWSER_TEST_F(ContentSettingsTest, BasicCookies) {
+ ASSERT_TRUE(test_server()->Start());
+ GURL http_url = test_server()->GetURL("files/setcookie.html");
+ Basic(http_url);
+}
+
+IN_PROC_BROWSER_TEST_F(ContentSettingsTest, PRE_BasicCookiesHttps) {
+ ASSERT_TRUE(https_server_.Start());
+ GURL https_url = https_server_.GetURL("files/setcookie.html");
+ PreBasic(https_url);
+}
+
+IN_PROC_BROWSER_TEST_F(ContentSettingsTest, BasicCookiesHttps) {
+ ASSERT_TRUE(https_server_.Start());
+ GURL https_url = https_server_.GetURL("files/setcookie.html");
+ Basic(https_url);
+}
+
+// Verify that cookies are being blocked.
+IN_PROC_BROWSER_TEST_F(ContentSettingsTest, PRE_BlockCookies) {
+ ASSERT_TRUE(test_server()->Start());
+ CookieSettings::Factory::GetForProfile(browser()->profile())->
+ SetDefaultCookieSetting(CONTENT_SETTING_BLOCK);
+ GURL url = test_server()->GetURL("files/setcookie.html");
+ ui_test_utils::NavigateToURL(browser(), url);
+ ASSERT_TRUE(GetCookies(browser()->profile(), url).empty());
+ CookieCheckIncognitoWindow(url, false);
+}
+
+// Ensure that the setting persists.
+IN_PROC_BROWSER_TEST_F(ContentSettingsTest, BlockCookies) {
+ ASSERT_EQ(
+ CONTENT_SETTING_BLOCK,
+ CookieSettings::Factory::GetForProfile(browser()->profile())->
+ GetDefaultCookieSetting(NULL));
+}
+
+// Verify that cookies can be allowed and set using exceptions for particular
+// website(s) when all others are blocked.
+IN_PROC_BROWSER_TEST_F(ContentSettingsTest, AllowCookiesUsingExceptions) {
+ ASSERT_TRUE(test_server()->Start());
+ GURL url = test_server()->GetURL("files/setcookie.html");
+ CookieSettings* settings =
+ CookieSettings::Factory::GetForProfile(browser()->profile());
+ settings->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK);
+
+ ui_test_utils::NavigateToURL(browser(), url);
+ ASSERT_TRUE(GetCookies(browser()->profile(), url).empty());
+
+ settings->SetCookieSetting(
+ ContentSettingsPattern::FromURL(url),
+ ContentSettingsPattern::Wildcard(), CONTENT_SETTING_ALLOW);
+
+ ui_test_utils::NavigateToURL(browser(), url);
+ ASSERT_FALSE(GetCookies(browser()->profile(), url).empty());
+}
+
+// Verify that cookies can be blocked for a specific website using exceptions.
+IN_PROC_BROWSER_TEST_F(ContentSettingsTest, BlockCookiesUsingExceptions) {
+ ASSERT_TRUE(test_server()->Start());
+ GURL url = test_server()->GetURL("files/setcookie.html");
+ CookieSettings* settings =
+ CookieSettings::Factory::GetForProfile(browser()->profile());
+ settings->SetCookieSetting(
+ ContentSettingsPattern::FromURL(url),
+ ContentSettingsPattern::Wildcard(), CONTENT_SETTING_BLOCK);
+
+ ui_test_utils::NavigateToURL(browser(), url);
+ ASSERT_TRUE(GetCookies(browser()->profile(), url).empty());
scottmg 2012/08/24 22:59:26 the py one does http and https, is that worth main
jam 2012/08/25 00:23:24 I thought that was redundant. ie we don't duplicat
+
+ ASSERT_TRUE(https_server_.Start());
+ GURL unblocked_url = https_server_.GetURL("files/cookie1.html");
+
+ ui_test_utils::NavigateToURL(browser(), unblocked_url);
+ ASSERT_FALSE(GetCookies(browser()->profile(), unblocked_url).empty());
+}
+
+// This fails on ChromeOS because kRestoreOnStartup is ignored and the startup
+// preference is always "continue where I left off.
+#if !defined(OS_CHROMEOS)
+
+// Verify that cookies can be allowed and set using exceptions for particular
+// website(s) only for a session when all others are blocked.
+IN_PROC_BROWSER_TEST_F(ContentSettingsTest,
+ PRE_AllowCookiesForASessionUsingExceptions) {
+ // NOTE: don't use test_server here, since we need the port to be the same
+ // across the restart.
+ GURL url = URLRequestMockHTTPJob::GetMockUrl(
+ FilePath(FILE_PATH_LITERAL("setcookie.html")));
+ CookieSettings* settings =
+ CookieSettings::Factory::GetForProfile(browser()->profile());
+ settings->SetDefaultCookieSetting(CONTENT_SETTING_BLOCK);
+
+ ui_test_utils::NavigateToURL(browser(), url);
+ ASSERT_TRUE(GetCookies(browser()->profile(), url).empty());
+
+ settings->SetCookieSetting(
+ ContentSettingsPattern::FromURL(url),
+ ContentSettingsPattern::Wildcard(), CONTENT_SETTING_SESSION_ONLY);
+ ui_test_utils::NavigateToURL(browser(), url);
+ ASSERT_FALSE(GetCookies(browser()->profile(), url).empty());
+}
+
+IN_PROC_BROWSER_TEST_F(ContentSettingsTest,
+ AllowCookiesForASessionUsingExceptions) {
+ GURL url = URLRequestMockHTTPJob::GetMockUrl(
+ FilePath(FILE_PATH_LITERAL("setcookie.html")));
+ ASSERT_TRUE(GetCookies(browser()->profile(), url).empty());
+}
+
+#endif // !CHROME_OS
+
// Regression test for http://crbug.com/63649.
-IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, RedirectLoopCookies) {
+IN_PROC_BROWSER_TEST_F(ContentSettingsTest, RedirectLoopCookies) {
ASSERT_TRUE(test_server()->Start());
GURL test_url = test_server()->GetURL("files/redirect-loop.html");
@@ -41,7 +226,7 @@
CONTENT_SETTINGS_TYPE_COOKIES));
}
-IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, ContentSettingsBlockDataURLs) {
+IN_PROC_BROWSER_TEST_F(ContentSettingsTest, ContentSettingsBlockDataURLs) {
GURL url("data:text/html,<title>Data URL</title><script>alert(1)</script>");
browser()->profile()->GetHostContentSettingsMap()->SetDefaultContentSetting(
@@ -58,7 +243,7 @@
// Tests that if redirect across origins occurs, the new process still gets the
// content settings before the resource headers.
-IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, RedirectCrossOrigin) {
+IN_PROC_BROWSER_TEST_F(ContentSettingsTest, RedirectCrossOrigin) {
ASSERT_TRUE(test_server()->Start());
net::HostPortPair host_port = test_server()->host_port_pair();
@@ -82,7 +267,7 @@
#if !defined(USE_AURA) // No NPAPI plugins with Aura.
-class ClickToPlayPluginTest : public InProcessBrowserTest {
+class ClickToPlayPluginTest : public ContentSettingsTest {
public:
ClickToPlayPluginTest() {}
« no previous file with comments | « no previous file | chrome/browser/fast_shutdown_browsertest.cc » ('j') | chrome/test/functional/cookies.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698