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
3// found in the LICENSE file.
4
5#include "base/path_service.h"
6#include "content/browser/web_contents/web_contents_impl.h"
7#include "content/common/dom_storage/dom_storage_types.h"
8#include "content/public/common/content_paths.h"
9#include "content/public/test/browser_test_utils.h"
10#include "content/public/test/content_browser_test.h"
11#include "content/public/test/content_browser_test_utils.h"
12#include "content/shell/browser/shell.h"
13#include "net/base/net_util.h"
14
15namespace content {
16
17// This browser test is aimed towards exercising the DOMStorage system
18// from end-to-end.
19class DOMStorageBrowserTest : public ContentBrowserTest {
20 public:
21  DOMStorageBrowserTest() {}
22
23  void SimpleTest(const GURL& test_url, bool incognito) {
24    // The test page will perform tests then navigate to either
25    // a #pass or #fail ref.
26    Shell* the_browser = incognito ? CreateOffTheRecordBrowser() : shell();
27    NavigateToURLBlockUntilNavigationsComplete(the_browser, test_url, 2);
28    std::string result =
29        the_browser->web_contents()->GetLastCommittedURL().ref();
30    if (result != "pass") {
31      std::string js_result;
32      ASSERT_TRUE(ExecuteScriptAndExtractString(
33          the_browser->web_contents(),
34          "window.domAutomationController.send(getLog())",
35          &js_result));
36      FAIL() << "Failed: " << js_result;
37    }
38  }
39};
40
41static const bool kIncognito = true;
42static const bool kNotIncognito = false;
43
44IN_PROC_BROWSER_TEST_F(DOMStorageBrowserTest, SanityCheck) {
45  SimpleTest(GetTestUrl("dom_storage", "sanity_check.html"), kNotIncognito);
46}
47
48IN_PROC_BROWSER_TEST_F(DOMStorageBrowserTest, SanityCheckIncognito) {
49  SimpleTest(GetTestUrl("dom_storage", "sanity_check.html"), kIncognito);
50}
51
52}  // namespace content
53