| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "base/path_service.h" | 5 #include "base/path_service.h" |
| 6 #include "base/process/process.h" | 6 #include "base/process/process.h" |
| 7 #include "base/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "chrome/app/chrome_command_ids.h" | 9 #include "chrome/app/chrome_command_ids.h" |
| 10 #include "chrome/browser/apps/app_browsertest_util.h" | 10 #include "chrome/browser/apps/app_browsertest_util.h" |
| (...skipping 1815 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1826 EXPECT_STREQ("badval", output.c_str()); | 1826 EXPECT_STREQ("badval", output.c_str()); |
| 1827 EXPECT_TRUE(ExecuteScriptAndExtractString(default_tag_contents1, | 1827 EXPECT_TRUE(ExecuteScriptAndExtractString(default_tag_contents1, |
| 1828 get_session_storage.c_str(), | 1828 get_session_storage.c_str(), |
| 1829 &output)); | 1829 &output)); |
| 1830 EXPECT_STREQ("badval", output.c_str()); | 1830 EXPECT_STREQ("badval", output.c_str()); |
| 1831 } | 1831 } |
| 1832 | 1832 |
| 1833 // This tests IndexedDB isolation for packaged apps with webview tags. It loads | 1833 // This tests IndexedDB isolation for packaged apps with webview tags. It loads |
| 1834 // an app with multiple webview tags and each tag creates an IndexedDB record, | 1834 // an app with multiple webview tags and each tag creates an IndexedDB record, |
| 1835 // which the test checks to ensure proper storage isolation is enforced. | 1835 // which the test checks to ensure proper storage isolation is enforced. |
| 1836 // This test is flaky. See http://crbug.com/248500. | 1836 IN_PROC_BROWSER_TEST_F(WebViewTest, IndexedDBIsolation) { |
| 1837 IN_PROC_BROWSER_TEST_F(WebViewTest, DISABLED_IndexedDBIsolation) { | |
| 1838 ASSERT_TRUE(StartEmbeddedTestServer()); | 1837 ASSERT_TRUE(StartEmbeddedTestServer()); |
| 1839 GURL regular_url = embedded_test_server()->GetURL("/title1.html"); | 1838 ASSERT_TRUE(RunPlatformAppTest( |
| 1840 | 1839 "platform_apps/web_view/isolation_indexeddb")) << message_; |
| 1841 content::WebContents* default_tag_contents1; | |
| 1842 content::WebContents* default_tag_contents2; | |
| 1843 content::WebContents* storage_contents1; | |
| 1844 content::WebContents* storage_contents2; | |
| 1845 | |
| 1846 NavigateAndOpenAppForIsolation(regular_url, &default_tag_contents1, | |
| 1847 &default_tag_contents2, &storage_contents1, | |
| 1848 &storage_contents2, NULL, NULL, NULL); | |
| 1849 | |
| 1850 // Initialize the storage for the first of the two tags that share a storage | |
| 1851 // partition. | |
| 1852 ExecuteScriptWaitForTitle(storage_contents1, "initIDB()", "idb created"); | |
| 1853 ExecuteScriptWaitForTitle(storage_contents1, "addItemIDB(7, 'page1')", | |
| 1854 "addItemIDB complete"); | |
| 1855 ExecuteScriptWaitForTitle(storage_contents1, "readItemIDB(7)", | |
| 1856 "readItemIDB complete"); | |
| 1857 | |
| 1858 std::string output; | |
| 1859 std::string get_value( | |
| 1860 "window.domAutomationController.send(getValueIDB() || 'badval')"); | |
| 1861 | |
| 1862 EXPECT_TRUE(ExecuteScriptAndExtractString(storage_contents1, | |
| 1863 get_value.c_str(), &output)); | |
| 1864 EXPECT_STREQ("page1", output.c_str()); | |
| 1865 | |
| 1866 // Initialize the db in the second tag. | |
| 1867 ExecuteScriptWaitForTitle(storage_contents2, "initIDB()", "idb open"); | |
| 1868 | |
| 1869 // Since we share a partition, reading the value should return the existing | |
| 1870 // one. | |
| 1871 ExecuteScriptWaitForTitle(storage_contents2, "readItemIDB(7)", | |
| 1872 "readItemIDB complete"); | |
| 1873 EXPECT_TRUE(ExecuteScriptAndExtractString(storage_contents2, | |
| 1874 get_value.c_str(), &output)); | |
| 1875 EXPECT_STREQ("page1", output.c_str()); | |
| 1876 | |
| 1877 // Now write through the second tag and read it back. | |
| 1878 ExecuteScriptWaitForTitle(storage_contents2, "addItemIDB(7, 'page2')", | |
| 1879 "addItemIDB complete"); | |
| 1880 ExecuteScriptWaitForTitle(storage_contents2, "readItemIDB(7)", | |
| 1881 "readItemIDB complete"); | |
| 1882 EXPECT_TRUE(ExecuteScriptAndExtractString(storage_contents2, | |
| 1883 get_value.c_str(), &output)); | |
| 1884 EXPECT_STREQ("page2", output.c_str()); | |
| 1885 | |
| 1886 // Reset the document title, otherwise the next call will not see a change and | |
| 1887 // will hang waiting for it. | |
| 1888 EXPECT_TRUE(content::ExecuteScript(storage_contents1, | |
| 1889 "document.title = 'foo'")); | |
| 1890 | |
| 1891 // Read through the first tag to ensure we have the second value. | |
| 1892 ExecuteScriptWaitForTitle(storage_contents1, "readItemIDB(7)", | |
| 1893 "readItemIDB complete"); | |
| 1894 EXPECT_TRUE(ExecuteScriptAndExtractString(storage_contents1, | |
| 1895 get_value.c_str(), &output)); | |
| 1896 EXPECT_STREQ("page2", output.c_str()); | |
| 1897 | |
| 1898 // Now, let's confirm there is no database in the main browser and another | |
| 1899 // tag that doesn't share the same partition. Due to the IndexedDB API design, | |
| 1900 // open will succeed, but the version will be 1, since it creates the database | |
| 1901 // if it is not found. The two tags use database version 3, so we avoid | |
| 1902 // ambiguity. | |
| 1903 const char* script = | |
| 1904 "indexedDB.open('isolation').onsuccess = function(e) {" | |
| 1905 " if (e.target.result.version == 1)" | |
| 1906 " document.title = 'db not found';" | |
| 1907 " else " | |
| 1908 " document.title = 'error';" | |
| 1909 "}"; | |
| 1910 ExecuteScriptWaitForTitle(browser()->tab_strip_model()->GetWebContentsAt(0), | |
| 1911 script, "db not found"); | |
| 1912 ExecuteScriptWaitForTitle(default_tag_contents1, script, "db not found"); | |
| 1913 } | 1840 } |
| 1914 | 1841 |
| 1915 // This test ensures that closing app window on 'loadcommit' does not crash. | 1842 // This test ensures that closing app window on 'loadcommit' does not crash. |
| 1916 // The test launches an app with guest and closes the window on loadcommit. It | 1843 // The test launches an app with guest and closes the window on loadcommit. It |
| 1917 // then launches the app window again. The process is repeated 3 times. | 1844 // then launches the app window again. The process is repeated 3 times. |
| 1918 // http://crbug.com/291278 | 1845 // http://crbug.com/291278 |
| 1919 #if defined(OS_WIN) | 1846 #if defined(OS_WIN) |
| 1920 #define MAYBE_CloseOnLoadcommit DISABLED_CloseOnLoadcommit | 1847 #define MAYBE_CloseOnLoadcommit DISABLED_CloseOnLoadcommit |
| 1921 #else | 1848 #else |
| 1922 #define MAYBE_CloseOnLoadcommit CloseOnLoadcommit | 1849 #define MAYBE_CloseOnLoadcommit CloseOnLoadcommit |
| (...skipping 860 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2783 // This test verifies that the allowtransparency attribute properly propagates | 2710 // This test verifies that the allowtransparency attribute properly propagates |
| 2784 IN_PROC_BROWSER_TEST_F(WebViewTest, AllowTransparencyAndAllowScalingPropagate) { | 2711 IN_PROC_BROWSER_TEST_F(WebViewTest, AllowTransparencyAndAllowScalingPropagate) { |
| 2785 LoadAppWithGuest("web_view/simple"); | 2712 LoadAppWithGuest("web_view/simple"); |
| 2786 | 2713 |
| 2787 ASSERT_TRUE(!!GetGuestWebContents()); | 2714 ASSERT_TRUE(!!GetGuestWebContents()); |
| 2788 extensions::WebViewGuest* guest = | 2715 extensions::WebViewGuest* guest = |
| 2789 extensions::WebViewGuest::FromWebContents(GetGuestWebContents()); | 2716 extensions::WebViewGuest::FromWebContents(GetGuestWebContents()); |
| 2790 ASSERT_TRUE(guest->allow_transparency()); | 2717 ASSERT_TRUE(guest->allow_transparency()); |
| 2791 ASSERT_TRUE(guest->allow_scaling()); | 2718 ASSERT_TRUE(guest->allow_scaling()); |
| 2792 } | 2719 } |
| OLD | NEW |