Commit 194f2a8c authored by dbeam's avatar dbeam Committed by Commit bot

Convert i18n_process.css to use * /deep/ instead of ::shadow and add tests.

R=esprehn@chromium.org,thestig@chromium.org
BUG=511486

Review URL: https://codereview.chromium.org/1246253002

Cr-Commit-Position: refs/heads/master@{#339814}
parent 0a13a603
......@@ -573,10 +573,12 @@ repack("packed_extra_resources") {
repack("browser_tests_pak") {
sources = [
"$root_gen_dir/chrome/options_test_resources.pak",
"$root_gen_dir/chrome/webui_test_resources.pak",
]
output = "$root_out_dir/browser_tests.pak"
deps = [
"//chrome/browser/resources:options_test_resources",
"//chrome/test/data:webui_test_resources",
]
}
......
......@@ -598,12 +598,28 @@
],
'includes': [ '../build/grit_target.gypi' ],
},
{
# GN version: //chrome/test/data/resources:webui_test_resources
'target_name': 'webui_test_resources',
'type': 'none',
'actions': [
{
'action_name': 'generate_webui_test_resources',
'variables': {
'grit_grd_file': 'test/data/webui_test_resources.grd',
},
'includes': [ '../build/grit_action.gypi' ],
},
],
'includes': [ '../build/grit_target.gypi' ],
},
{
# GN version: //chrome:browser_tests_pak
'target_name': 'browser_tests_pak',
'type': 'none',
'dependencies': [
'options_test_resources',
'webui_test_resources',
],
'actions': [
{
......@@ -611,6 +627,7 @@
'variables': {
'pak_inputs': [
'<(SHARED_INTERMEDIATE_DIR)/chrome/options_test_resources.pak',
'<(SHARED_INTERMEDIATE_DIR)/chrome/webui_test_resources.pak',
],
'pak_output': '<(PRODUCT_DIR)/browser_tests.pak',
},
......
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//tools/grit/grit_rule.gni")
grit("webui_test_resources") {
source = "webui_test_resources.grd"
outputs = [
"chrome/test/data/grit/webui_test_resources.h",
"webui_test_resources.pak",
]
output_dir = "$root_gen_dir/chrome"
}
<!doctype html>
<style>
<include src="../../../../ui/webui/resources/css/i18n_process.css">
</style>
<h1 i18n-content="buy"></h1>
<span i18n-values=".innerHTML:link"></span>
<script>
function testI18nProcess_NbspPlaceholder() {
var h1 = document.querySelector('h1');
var span = document.querySelector('span');
assertFalse(document.documentElement.hasAttribute('i18n-processed'));
assertEquals('', h1.textContent);
assertEquals('', span.textContent);
/* We can't check that the non-breaking space hack actually works because it
* uses :psuedo-elements that are inaccessible to the DOM. Let's just check
* that they're not auto-collapsed. */
assertNotEqual(0, h1.offsetHeight);
assertNotEqual(0, span.offsetHeight);
h1.removeAttribute('i18n-content');
assertEquals(0, h1.offsetHeight);
span.removeAttribute('i18n-values');
assertEquals(0, span.offsetHeight);
}
</script>
......@@ -10,6 +10,7 @@
#include "chrome/grit/options_test_resources.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
#include "chrome/test/data/grit/webui_test_resources.h"
#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/web_contents.h"
#include "content/public/test/browser_test_utils.h"
......@@ -28,15 +29,15 @@ class WebUIResourceBrowserTest : public InProcessBrowserTest {
}
// Runs all test functions in |file|, waiting for them to complete.
void RunTest(const base::FilePath& file) {
GURL url = ui_test_utils::GetTestUrl(
base::FilePath(FILE_PATH_LITERAL("webui")), file);
ui_test_utils::NavigateToURL(browser(), url);
void LoadFile(const base::FilePath& file) {
base::FilePath webui(FILE_PATH_LITERAL("webui"));
RunTest(ui_test_utils::GetTestUrl(webui, file));
}
content::WebContents* web_contents =
browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_TRUE(web_contents);
EXPECT_TRUE(ExecuteWebUIResourceTest(web_contents, include_libraries_));
void LoadResource(int idr) {
ResourceBundle& bundle = ResourceBundle::GetSharedInstance();
base::StringPiece resource = bundle.GetRawDataResource(idr);
RunTest(GURL(std::string("data:text/html,") + resource.as_string()));
}
// Queues the library corresponding to |resource_id| for injection into the
......@@ -48,6 +49,14 @@ class WebUIResourceBrowserTest : public InProcessBrowserTest {
}
private:
void RunTest(const GURL& url) {
ui_test_utils::NavigateToURL(browser(), url);
content::WebContents* web_contents =
browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_TRUE(web_contents);
EXPECT_TRUE(ExecuteWebUIResourceTest(web_contents, include_libraries_));
}
// Resource IDs for internal javascript libraries to inject into the test.
std::vector<int> include_libraries_;
};
......@@ -56,26 +65,30 @@ IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, ArrayDataModelTest) {
AddLibrary(IDR_WEBUI_JS_CR);
AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET);
AddLibrary(IDR_WEBUI_JS_CR_UI_ARRAY_DATA_MODEL);
RunTest(base::FilePath(FILE_PATH_LITERAL("array_data_model_test.html")));
LoadFile(base::FilePath(FILE_PATH_LITERAL("array_data_model_test.html")));
}
IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, CrTest) {
AddLibrary(IDR_WEBUI_JS_CR);
AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET);
RunTest(base::FilePath(FILE_PATH_LITERAL("cr_test.html")));
LoadFile(base::FilePath(FILE_PATH_LITERAL("cr_test.html")));
}
IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, EventTargetTest) {
AddLibrary(IDR_WEBUI_JS_CR);
AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET);
RunTest(base::FilePath(FILE_PATH_LITERAL("event_target_test.html")));
LoadFile(base::FilePath(FILE_PATH_LITERAL("event_target_test.html")));
}
IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, I18nProcessCssTest) {
LoadResource(IDR_WEBUI_TEST_I18N_PROCESS_CSS_TEST);
}
IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, I18nProcessTest) {
AddLibrary(IDR_WEBUI_JS_LOAD_TIME_DATA);
AddLibrary(IDR_WEBUI_JS_I18N_TEMPLATE_NO_PROCESS);
AddLibrary(IDR_WEBUI_JS_UTIL);
RunTest(base::FilePath(FILE_PATH_LITERAL("i18n_process_test.html")));
LoadFile(base::FilePath(FILE_PATH_LITERAL("i18n_process_test.html")));
}
IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, ListTest) {
......@@ -87,7 +100,7 @@ IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, ListTest) {
AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SELECTION_CONTROLLER);
AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SELECTION_MODEL);
AddLibrary(IDR_WEBUI_JS_CR_UI_LIST);
RunTest(base::FilePath(FILE_PATH_LITERAL("list_test.html")));
LoadFile(base::FilePath(FILE_PATH_LITERAL("list_test.html")));
}
IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, GridTest) {
......@@ -101,27 +114,27 @@ IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, GridTest) {
AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SELECTION_MODEL);
// Grid must be the last addition as it depends on list libraries.
AddLibrary(IDR_WEBUI_JS_CR_UI_GRID);
RunTest(base::FilePath(FILE_PATH_LITERAL("grid_test.html")));
LoadFile(base::FilePath(FILE_PATH_LITERAL("grid_test.html")));
}
IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, LinkControllerTest) {
AddLibrary(IDR_WEBUI_JS_CR);
AddLibrary(IDR_WEBUI_JS_CR_LINK_CONTROLLER);
RunTest(base::FilePath(FILE_PATH_LITERAL("link_controller_test.html")));
LoadFile(base::FilePath(FILE_PATH_LITERAL("link_controller_test.html")));
}
IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, ListSelectionModelTest) {
AddLibrary(IDR_WEBUI_JS_CR);
AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET);
AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SELECTION_MODEL);
RunTest(base::FilePath(FILE_PATH_LITERAL("list_selection_model_test.html")));
LoadFile(base::FilePath(FILE_PATH_LITERAL("list_selection_model_test.html")));
}
IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, ListSingleSelectionModelTest) {
AddLibrary(IDR_WEBUI_JS_CR);
AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET);
AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SINGLE_SELECTION_MODEL);
RunTest(base::FilePath(FILE_PATH_LITERAL(
LoadFile(base::FilePath(FILE_PATH_LITERAL(
"list_single_selection_model_test.html")));
}
......@@ -137,7 +150,7 @@ IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, InlineEditableListTest) {
AddLibrary(IDR_WEBUI_JS_LOAD_TIME_DATA);
AddLibrary(IDR_OPTIONS_DELETABLE_ITEM_LIST);
AddLibrary(IDR_OPTIONS_INLINE_EDITABLE_LIST);
RunTest(base::FilePath(FILE_PATH_LITERAL(
LoadFile(base::FilePath(FILE_PATH_LITERAL(
"inline_editable_list_test.html")));
}
......@@ -148,29 +161,29 @@ IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, MenuTest) {
AddLibrary(IDR_WEBUI_JS_CR_UI_COMMAND);
AddLibrary(IDR_WEBUI_JS_CR_UI_MENU_ITEM);
AddLibrary(IDR_WEBUI_JS_CR_UI_MENU);
RunTest(base::FilePath(FILE_PATH_LITERAL("menu_test.html")));
LoadFile(base::FilePath(FILE_PATH_LITERAL("menu_test.html")));
}
IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, MockTimerTest) {
RunTest(base::FilePath(FILE_PATH_LITERAL("mock_timer_test.html")));
LoadFile(base::FilePath(FILE_PATH_LITERAL("mock_timer_test.html")));
}
IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, ParseHtmlSubsetTest) {
AddLibrary(IDR_WEBUI_JS_PARSE_HTML_SUBSET);
RunTest(base::FilePath(FILE_PATH_LITERAL("parse_html_subset_test.html")));
LoadFile(base::FilePath(FILE_PATH_LITERAL("parse_html_subset_test.html")));
}
IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, PositionUtilTest) {
AddLibrary(IDR_WEBUI_JS_CR);
AddLibrary(IDR_WEBUI_JS_CR_UI_POSITION_UTIL);
RunTest(base::FilePath(FILE_PATH_LITERAL("position_util_test.html")));
LoadFile(base::FilePath(FILE_PATH_LITERAL("position_util_test.html")));
}
IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, RepeatingButtonTest) {
AddLibrary(IDR_WEBUI_JS_CR);
AddLibrary(IDR_WEBUI_JS_CR_UI);
AddLibrary(IDR_WEBUI_JS_CR_UI_REPEATING_BUTTON);
RunTest(base::FilePath(FILE_PATH_LITERAL("repeating_button_test.html")));
LoadFile(base::FilePath(FILE_PATH_LITERAL("repeating_button_test.html")));
}
IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, CommandTest) {
......@@ -178,7 +191,7 @@ IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, CommandTest) {
AddLibrary(IDR_WEBUI_JS_CR);
AddLibrary(IDR_WEBUI_JS_CR_UI);
AddLibrary(IDR_WEBUI_JS_CR_UI_COMMAND);
RunTest(base::FilePath(FILE_PATH_LITERAL("command_test.html")));
LoadFile(base::FilePath(FILE_PATH_LITERAL("command_test.html")));
}
IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, ContextMenuHandlerTest) {
......@@ -192,7 +205,7 @@ IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, ContextMenuHandlerTest) {
AddLibrary(IDR_WEBUI_JS_CR_UI_MENU_BUTTON);
AddLibrary(IDR_WEBUI_JS_CR_UI_MENU);
AddLibrary(IDR_WEBUI_JS_CR_UI_CONTEXT_MENU_HANDLER);
RunTest(base::FilePath(FILE_PATH_LITERAL("context_menu_handler_test.html")));
LoadFile(base::FilePath(FILE_PATH_LITERAL("context_menu_handler_test.html")));
}
IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, MenuButtonTest) {
......@@ -203,5 +216,5 @@ IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, MenuButtonTest) {
AddLibrary(IDR_WEBUI_JS_CR_UI_POSITION_UTIL);
AddLibrary(IDR_WEBUI_JS_CR_UI_MENU_BUTTON);
AddLibrary(IDR_WEBUI_JS_CR_UI_MENU);
RunTest(base::FilePath(FILE_PATH_LITERAL("menu_button_test.html")));
LoadFile(base::FilePath(FILE_PATH_LITERAL("menu_button_test.html")));
}
<?xml version="1.0" encoding="UTF-8"?>
<grit latest_public_release="0" current_release="1">
<outputs>
<output filename="chrome/test/data/grit/webui_test_resources.h" type="rc_header">
<emit emit_type='prepend'></emit>
</output>
<output filename="webui_test_resources.pak" type="data_package" />
</outputs>
<release seq="1">
<includes>
<include name="IDR_WEBUI_TEST_I18N_PROCESS_CSS_TEST" file="webui/i18n_process_css_test.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
</includes>
</release>
</grit>
......@@ -135,7 +135,11 @@
},
"chrome/browser/resources/options_test_resources.grd": {
"includes": [23400],
"structures": [23450],
"structures": [23440],
},
"chrome/test/data/webui_test_resources.grd": {
"includes": [23480],
"structures": [23490],
},
"cloud_print/virtual_driver/win/install/virtual_driver_setup_resources.grd": {
"messages": [23500],
......
......@@ -4,8 +4,8 @@
[i18n-content]::before,
[i18n-values*=".innerHTML:"]::before,
::shadow [i18n-content]::before,
::shadow [i18n-values*=".innerHTML:"]::before {
* /deep/ [i18n-content]::before,
* /deep/ [i18n-values*=".innerHTML:"]::before {
/* Insert a non-breaking space into nodes that have i18n content. */
content: '\00a0';
}
......@@ -14,10 +14,10 @@
[i18n-processed] [i18n-content]::before,
[i18n-processed][i18n-values*=".innerHTML:"]::before,
[i18n-processed] [i18n-values*=".innerHTML:"]::before,
::shadow [i18n-processed][i18n-content]::before,
::shadow [i18n-processed] [i18n-content]::before,
::shadow [i18n-processed][i18n-values*=".innerHTML:"]::before,
::shadow [i18n-processed] [i18n-values*=".innerHTML:"]::before {
* /deep/ [i18n-processed][i18n-content]::before,
* /deep/ [i18n-processed] [i18n-content]::before,
* /deep/ [i18n-processed][i18n-values*=".innerHTML:"]::before,
* /deep/ [i18n-processed] [i18n-values*=".innerHTML:"]::before {
/* Undo the non-breaking space hack after i18n processing has run. */
content: normal;
}
......@@ -143,8 +143,17 @@ function assertDeepEquals(expected, observed, opt_message) {
*/
function runTests() {
for (var name in window) {
if (typeof window[name] == 'function' && /^test/.test(name))
testCases.push(name);
try {
if (typeof window[name] == 'function' && /^test/.test(name))
testCases.push(name);
} catch(e) {
if (location.protocol == 'data:' && e.name == 'SecurityError') {
// Sometimes this file gets loaded as a data: URI. That causes issues
// when it touches window.caches or window.cookie.
} else {
throw e;
}
}
}
if (!testCases.length) {
console.error('Failed to find test cases.');
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment