OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 '''Unit tests for grit.format.html_inline''' | 6 '''Unit tests for grit.format.html_inline''' |
7 | 7 |
8 | 8 |
9 import os | 9 import os |
10 import re | 10 import re |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 tmp_dir.CleanUp() | 84 tmp_dir.CleanUp() |
85 | 85 |
86 def testInlineCSSImports(self): | 86 def testInlineCSSImports(self): |
87 '''Tests that @import directives in inlined CSS files are inlined too. | 87 '''Tests that @import directives in inlined CSS files are inlined too. |
88 ''' | 88 ''' |
89 | 89 |
90 files = { | 90 files = { |
91 'index.html': ''' | 91 'index.html': ''' |
92 <html> | 92 <html> |
93 <head> | 93 <head> |
94 <link rel="stylesheet" href="test.css"> | 94 <link rel="stylesheet" href="css/test.css"> |
95 </head> | 95 </head> |
96 </html> | 96 </html> |
97 ''', | 97 ''', |
98 | 98 |
99 'test.css': ''' | 99 'css/test.css': ''' |
100 @import url('test2.css') | 100 @import url('test2.css'); |
101 blink { | 101 blink { |
102 display: none; | 102 display: none; |
103 } | 103 } |
104 ''', | 104 ''', |
105 | 105 |
106 'test2.css': ''' | 106 'css/test2.css': ''' |
107 .image { | 107 .image { |
108 background: url('test.png'); | 108 background: url('../images/test.png'); |
109 } | 109 } |
110 '''.strip(), | 110 '''.strip(), |
111 | 111 |
112 'test.png': 'PNG DATA' | 112 'images/test.png': 'PNG DATA' |
113 } | 113 } |
114 | 114 |
115 expected_inlined = ''' | 115 expected_inlined = ''' |
116 <html> | 116 <html> |
117 <head> | 117 <head> |
118 <style> | 118 <style> |
119 .image { | 119 .image { |
120 background: url('data:image/png;base64,UE5HIERBVEE='); | 120 background: url('data:image/png;base64,UE5HIERBVEE='); |
121 } | 121 } |
122 blink { | 122 blink { |
(...skipping 10 matching lines...) Expand all Loading... |
133 source_resources.add(tmp_dir.GetPath(filename)) | 133 source_resources.add(tmp_dir.GetPath(filename)) |
134 | 134 |
135 result = html_inline.DoInline(tmp_dir.GetPath('index.html'), None) | 135 result = html_inline.DoInline(tmp_dir.GetPath('index.html'), None) |
136 resources = result.inlined_files | 136 resources = result.inlined_files |
137 resources.add(tmp_dir.GetPath('index.html')) | 137 resources.add(tmp_dir.GetPath('index.html')) |
138 self.failUnlessEqual(resources, source_resources) | 138 self.failUnlessEqual(resources, source_resources) |
139 self.failUnlessEqual(expected_inlined, result.inlined_data) | 139 self.failUnlessEqual(expected_inlined, result.inlined_data) |
140 | 140 |
141 tmp_dir.CleanUp() | 141 tmp_dir.CleanUp() |
142 | 142 |
| 143 def testInlineCSSLinks(self): |
| 144 '''Tests that only CSS files referenced via relative URLs are inlined.''' |
| 145 |
| 146 files = { |
| 147 'index.html': ''' |
| 148 <html> |
| 149 <head> |
| 150 <link rel="stylesheet" href="foo.css"> |
| 151 <link rel="stylesheet" href="chrome://resources/bar.css"> |
| 152 </head> |
| 153 </html> |
| 154 ''', |
| 155 |
| 156 'foo.css': ''' |
| 157 @import url(chrome://resources/blurp.css); |
| 158 blink { |
| 159 display: none; |
| 160 } |
| 161 ''', |
| 162 } |
| 163 |
| 164 expected_inlined = ''' |
| 165 <html> |
| 166 <head> |
| 167 <style> |
| 168 @import url(chrome://resources/blurp.css); |
| 169 blink { |
| 170 display: none; |
| 171 } |
| 172 </style> |
| 173 <link rel="stylesheet" href="chrome://resources/bar.css"> |
| 174 </head> |
| 175 </html> |
| 176 ''' |
| 177 |
| 178 source_resources = set() |
| 179 tmp_dir = util.TempDir(files) |
| 180 for filename in files: |
| 181 source_resources.add(tmp_dir.GetPath(filename)) |
| 182 |
| 183 result = html_inline.DoInline(tmp_dir.GetPath('index.html'), None) |
| 184 resources = result.inlined_files |
| 185 resources.add(tmp_dir.GetPath('index.html')) |
| 186 self.failUnlessEqual(resources, source_resources) |
| 187 self.failUnlessEqual(expected_inlined, result.inlined_data) |
| 188 |
143 | 189 |
144 if __name__ == '__main__': | 190 if __name__ == '__main__': |
145 unittest.main() | 191 unittest.main() |
OLD | NEW |