| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "config.h" | 5 #include "config.h" |
| 6 | 6 |
| 7 #include "FrameTestHelpers.h" | 7 #include "FrameTestHelpers.h" |
| 8 #include "bindings/core/v8/ScriptController.h" | 8 #include "bindings/core/v8/ScriptController.h" |
| 9 #include "bindings/core/v8/V8DOMActivityLogger.h" | 9 #include "bindings/core/v8/V8DOMActivityLogger.h" |
| 10 #include "web/WebLocalFrameImpl.h" | 10 #include "web/WebLocalFrameImpl.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 ActivityLoggerTest() | 70 ActivityLoggerTest() |
| 71 { | 71 { |
| 72 m_activityLogger = new TestActivityLogger(); | 72 m_activityLogger = new TestActivityLogger(); |
| 73 V8DOMActivityLogger::setActivityLogger(isolatedWorldId, String(), adoptP
tr(m_activityLogger)); | 73 V8DOMActivityLogger::setActivityLogger(isolatedWorldId, String(), adoptP
tr(m_activityLogger)); |
| 74 m_webViewHelper.initialize(true); | 74 m_webViewHelper.initialize(true); |
| 75 m_scriptController = &m_webViewHelper.webViewImpl()->mainFrameImpl()->fr
ame()->script(); | 75 m_scriptController = &m_webViewHelper.webViewImpl()->mainFrameImpl()->fr
ame()->script(); |
| 76 } | 76 } |
| 77 | 77 |
| 78 void executeScriptInMainWorld(const String& script) const | 78 void executeScriptInMainWorld(const String& script) const |
| 79 { | 79 { |
| 80 v8::HandleScope scope(v8::Isolate::GetCurrent()); |
| 80 m_scriptController->executeScriptInMainWorld(script); | 81 m_scriptController->executeScriptInMainWorld(script); |
| 81 runPendingTasks(); | 82 runPendingTasks(); |
| 82 } | 83 } |
| 83 | 84 |
| 84 void executeScriptInIsolatedWorld(const String& script) const | 85 void executeScriptInIsolatedWorld(const String& script) const |
| 85 { | 86 { |
| 87 v8::HandleScope scope(v8::Isolate::GetCurrent()); |
| 86 Vector<ScriptSourceCode> sources; | 88 Vector<ScriptSourceCode> sources; |
| 87 sources.append(ScriptSourceCode(script)); | 89 sources.append(ScriptSourceCode(script)); |
| 88 Vector<v8::Local<v8::Value> > results; | 90 Vector<v8::Local<v8::Value> > results; |
| 89 m_scriptController->executeScriptInIsolatedWorld(isolatedWorldId, source
s, extensionGroup, 0); | 91 m_scriptController->executeScriptInIsolatedWorld(isolatedWorldId, source
s, extensionGroup, 0); |
| 90 runPendingTasks(); | 92 runPendingTasks(); |
| 91 } | 93 } |
| 92 | 94 |
| 93 bool verifyActivities(const String& activities) | 95 bool verifyActivities(const String& activities) |
| 94 { | 96 { |
| 95 Vector<String> activityVector; | 97 Vector<String> activityVector; |
| 96 activities.split("\n", activityVector); | 98 activities.split("\n", activityVector); |
| 97 return m_activityLogger->verifyActivities(activityVector); | 99 return m_activityLogger->verifyActivities(activityVector); |
| 98 } | 100 } |
| 99 | 101 |
| 100 private: | 102 private: |
| 101 static const int isolatedWorldId = 1; | 103 static const int isolatedWorldId = 1; |
| 102 static const int extensionGroup = 0; | 104 static const int extensionGroup = 0; |
| 103 | 105 |
| 104 WebViewHelper m_webViewHelper; | 106 WebViewHelper m_webViewHelper; |
| 105 ScriptController* m_scriptController; | 107 ScriptController* m_scriptController; |
| 106 // TestActivityLogger is owned by a static table within V8DOMActivityLogger | 108 // TestActivityLogger is owned by a static table within V8DOMActivityLogger |
| 107 // and should be alive as long as not overwritten. | 109 // and should be alive as long as not overwritten. |
| 108 TestActivityLogger* m_activityLogger; | 110 TestActivityLogger* m_activityLogger; |
| 109 }; | 111 }; |
| 110 | 112 |
| 111 TEST_F(ActivityLoggerTest, EventHandler) | 113 TEST_F(ActivityLoggerTest, EventHandler) |
| 112 { | 114 { |
| 113 v8::HandleScope scope(v8::Isolate::GetCurrent()); | |
| 114 const char* code = | 115 const char* code = |
| 115 "document.body.innerHTML = '<a onclick=\\\'do()\\\'>test</a>';" | 116 "document.body.innerHTML = '<a onclick=\\\'do()\\\'>test</a>';" |
| 116 "document.body.onchange = function(){};" | 117 "document.body.onchange = function(){};" |
| 117 "document.body.setAttribute('onfocus', 'fnc()');" | 118 "document.body.setAttribute('onfocus', 'fnc()');" |
| 118 "document.body.addEventListener('onload', function(){});"; | 119 "document.body.addEventListener('onload', function(){});"; |
| 119 const char* expectedActivities = | 120 const char* expectedActivities = |
| 120 "blinkAddEventListener | A | click\n" | 121 "blinkAddEventListener | A | click\n" |
| 121 "blinkAddElement | a | \n" | 122 "blinkAddElement | a | \n" |
| 122 "blinkAddEventListener | BODY | change\n" | 123 "blinkAddEventListener | BODY | change\n" |
| 123 "blinkAddEventListener | LocalDOMWindow | focus\n" | 124 "blinkAddEventListener | LocalDOMWindow | focus\n" |
| 124 "blinkAddEventListener | BODY | onload"; | 125 "blinkAddEventListener | BODY | onload"; |
| 125 executeScriptInMainWorld(code); | 126 executeScriptInMainWorld(code); |
| 126 ASSERT_TRUE(verifyActivities("")); | 127 ASSERT_TRUE(verifyActivities("")); |
| 127 executeScriptInIsolatedWorld(code); | 128 executeScriptInIsolatedWorld(code); |
| 128 ASSERT_TRUE(verifyActivities(expectedActivities)); | 129 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 129 } | 130 } |
| 130 | 131 |
| 131 TEST_F(ActivityLoggerTest, ScriptElement) | 132 TEST_F(ActivityLoggerTest, ScriptElement) |
| 132 { | 133 { |
| 133 v8::HandleScope scope(v8::Isolate::GetCurrent()); | |
| 134 const char* code = | 134 const char* code = |
| 135 "document.body.innerHTML = '<script src=\\\'data:text/html;charset=utf-8
,\\\'></script>';" | 135 "document.body.innerHTML = '<script src=\\\'data:text/html;charset=utf-8
,\\\'></script>';" |
| 136 "document.body.innerHTML = '<script>console.log(\\\'test\\\')</script>';
" | 136 "document.body.innerHTML = '<script>console.log(\\\'test\\\')</script>';
" |
| 137 "var script = document.createElement('script');" | 137 "var script = document.createElement('script');" |
| 138 "document.body.appendChild(script);" | 138 "document.body.appendChild(script);" |
| 139 "script = document.createElement('script');" | 139 "script = document.createElement('script');" |
| 140 "script.src = 'data:text/html;charset=utf-8,';" | 140 "script.src = 'data:text/html;charset=utf-8,';" |
| 141 "document.body.appendChild(script);" | 141 "document.body.appendChild(script);" |
| 142 "document.write('<body><script src=\\\'data:text/html;charset=utf-8,\\\'
></script></body>');"; | 142 "document.write('<body><script src=\\\'data:text/html;charset=utf-8,\\\'
></script></body>');"; |
| 143 const char* expectedActivities = | 143 const char* expectedActivities = |
| 144 "blinkAddElement | script | data:text/html;charset=utf-8,\n" | 144 "blinkAddElement | script | data:text/html;charset=utf-8,\n" |
| 145 "blinkAddElement | script | \n" | 145 "blinkAddElement | script | \n" |
| 146 "blinkAddElement | script | \n" | 146 "blinkAddElement | script | \n" |
| 147 "HTMLScriptElement.src | data:text/html;charset=utf-8,\n" | |
| 148 "blinkAddElement | script | data:text/html;charset=utf-8,\n" | 147 "blinkAddElement | script | data:text/html;charset=utf-8,\n" |
| 149 "blinkAddElement | script | data:text/html;charset=utf-8,"; | 148 "blinkAddElement | script | data:text/html;charset=utf-8,"; |
| 150 executeScriptInMainWorld(code); | 149 executeScriptInMainWorld(code); |
| 151 ASSERT_TRUE(verifyActivities("")); | 150 ASSERT_TRUE(verifyActivities("")); |
| 152 executeScriptInIsolatedWorld(code); | 151 executeScriptInIsolatedWorld(code); |
| 153 ASSERT_TRUE(verifyActivities(expectedActivities)); | 152 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 154 } | 153 } |
| 155 | 154 |
| 156 TEST_F(ActivityLoggerTest, IFrameElement) | 155 TEST_F(ActivityLoggerTest, IFrameElement) |
| 157 { | 156 { |
| 158 v8::HandleScope scope(v8::Isolate::GetCurrent()); | |
| 159 const char* code = | 157 const char* code = |
| 160 "document.body.innerHTML = '<iframe src=\\\'data:text/html;charset=utf-8
,\\\'></iframe>';" | 158 "document.body.innerHTML = '<iframe src=\\\'data:text/html;charset=utf-8
,\\\'></iframe>';" |
| 161 "document.body.innerHTML = '<iframe></iframe>';" | 159 "document.body.innerHTML = '<iframe></iframe>';" |
| 162 "var iframe = document.createElement('iframe');" | 160 "var iframe = document.createElement('iframe');" |
| 163 "document.body.appendChild(iframe);" | 161 "document.body.appendChild(iframe);" |
| 164 "iframe = document.createElement('iframe');" | 162 "iframe = document.createElement('iframe');" |
| 165 "iframe.src = 'data:text/html;charset=utf-8,';" | 163 "iframe.src = 'data:text/html;charset=utf-8,';" |
| 166 "document.body.appendChild(iframe);" | 164 "document.body.appendChild(iframe);" |
| 167 "document.write('<body><iframe src=\\\'data:text/html;charset=utf-8,\\\'
></iframe></body>');"; | 165 "document.write('<body><iframe src=\\\'data:text/html;charset=utf-8,\\\'
></iframe></body>');"; |
| 168 const char* expectedActivities = | 166 const char* expectedActivities = |
| 169 "blinkAddElement | iframe | data:text/html;charset=utf-8,\n" | 167 "blinkAddElement | iframe | data:text/html;charset=utf-8,\n" |
| 170 "blinkAddElement | iframe | \n" | 168 "blinkAddElement | iframe | \n" |
| 171 "blinkAddElement | iframe | \n" | 169 "blinkAddElement | iframe | \n" |
| 172 "HTMLIFrameElement.src | | data:text/html;charset=utf-8,\n" | |
| 173 "blinkAddElement | iframe | data:text/html;charset=utf-8,\n" | 170 "blinkAddElement | iframe | data:text/html;charset=utf-8,\n" |
| 174 "blinkAddElement | iframe | data:text/html;charset=utf-8,"; | 171 "blinkAddElement | iframe | data:text/html;charset=utf-8,"; |
| 175 executeScriptInMainWorld(code); | 172 executeScriptInMainWorld(code); |
| 176 ASSERT_TRUE(verifyActivities("")); | 173 ASSERT_TRUE(verifyActivities("")); |
| 177 executeScriptInIsolatedWorld(code); | 174 executeScriptInIsolatedWorld(code); |
| 178 ASSERT_TRUE(verifyActivities(expectedActivities)); | 175 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 179 } | 176 } |
| 180 | 177 |
| 181 TEST_F(ActivityLoggerTest, AnchorElement) | 178 TEST_F(ActivityLoggerTest, AnchorElement) |
| 182 { | 179 { |
| 183 v8::HandleScope scope(v8::Isolate::GetCurrent()); | |
| 184 const char* code = | 180 const char* code = |
| 185 "document.body.innerHTML = '<a href=\\\'data:text/css;charset=utf-8,\\\'
></a>';" | 181 "document.body.innerHTML = '<a href=\\\'data:text/css;charset=utf-8,\\\'
></a>';" |
| 186 "document.body.innerHTML = '<a></a>';" | 182 "document.body.innerHTML = '<a></a>';" |
| 187 "var a = document.createElement('a');" | 183 "var a = document.createElement('a');" |
| 188 "document.body.appendChild(a);" | 184 "document.body.appendChild(a);" |
| 189 "a = document.createElement('a');" | 185 "a = document.createElement('a');" |
| 190 "a.href = 'data:text/css;charset=utf-8,';" | 186 "a.href = 'data:text/css;charset=utf-8,';" |
| 191 "document.body.appendChild(a);" | 187 "document.body.appendChild(a);" |
| 192 "document.write('<body><a href=\\\'data:text/css;charset=utf-8,\\\'></a>
</body>');"; | 188 "document.write('<body><a href=\\\'data:text/css;charset=utf-8,\\\'></a>
</body>');"; |
| 193 const char* expectedActivities = | 189 const char* expectedActivities = |
| 194 "blinkAddElement | a | data:text/css;charset=utf-8,\n" | 190 "blinkAddElement | a | data:text/css;charset=utf-8,\n" |
| 195 "blinkAddElement | a | \n" | 191 "blinkAddElement | a | \n" |
| 196 "blinkAddElement | a | \n" | 192 "blinkAddElement | a | \n" |
| 197 "HTMLAnchorElement.href | | data:text/css;charset=utf-8,\n" | |
| 198 "blinkAddElement | a | data:text/css;charset=utf-8,\n" | 193 "blinkAddElement | a | data:text/css;charset=utf-8,\n" |
| 199 "blinkAddElement | a | data:text/css;charset=utf-8,"; | 194 "blinkAddElement | a | data:text/css;charset=utf-8,"; |
| 200 executeScriptInMainWorld(code); | 195 executeScriptInMainWorld(code); |
| 201 ASSERT_TRUE(verifyActivities("")); | 196 ASSERT_TRUE(verifyActivities("")); |
| 202 executeScriptInIsolatedWorld(code); | 197 executeScriptInIsolatedWorld(code); |
| 203 ASSERT_TRUE(verifyActivities(expectedActivities)); | 198 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 204 } | 199 } |
| 205 | 200 |
| 206 TEST_F(ActivityLoggerTest, LinkElement) | 201 TEST_F(ActivityLoggerTest, LinkElement) |
| 207 { | 202 { |
| 208 v8::HandleScope scope(v8::Isolate::GetCurrent()); | |
| 209 const char* code = | 203 const char* code = |
| 210 "document.body.innerHTML = '<link rel=\\\'stylesheet\\\' href=\\\'data:t
ext/css;charset=utf-8,\\\'></link>';" | 204 "document.body.innerHTML = '<link rel=\\\'stylesheet\\\' href=\\\'data:t
ext/css;charset=utf-8,\\\'></link>';" |
| 211 "document.body.innerHTML = '<link></link>';" | 205 "document.body.innerHTML = '<link></link>';" |
| 212 "var link = document.createElement('link');" | 206 "var link = document.createElement('link');" |
| 213 "document.body.appendChild(link);" | 207 "document.body.appendChild(link);" |
| 214 "link = document.createElement('link');" | 208 "link = document.createElement('link');" |
| 215 "link.rel = 'stylesheet';" | 209 "link.rel = 'stylesheet';" |
| 216 "link.href = 'data:text/css;charset=utf-8,';" | 210 "link.href = 'data:text/css;charset=utf-8,';" |
| 217 "document.body.appendChild(link);" | 211 "document.body.appendChild(link);" |
| 218 "document.write('<body><link rel=\\\'stylesheet\\\' href=\\\'data:text/c
ss;charset=utf-8,\\\'></link></body>');"; | 212 "document.write('<body><link rel=\\\'stylesheet\\\' href=\\\'data:text/c
ss;charset=utf-8,\\\'></link></body>');"; |
| 219 const char* expectedActivities = | 213 const char* expectedActivities = |
| 220 "blinkAddElement | link | stylesheet | data:text/css;charset=utf-8,\n" | 214 "blinkAddElement | link | stylesheet | data:text/css;charset=utf-8,\n" |
| 221 "blinkAddElement | link | | \n" | 215 "blinkAddElement | link | | \n" |
| 222 "blinkAddElement | link | | \n" | 216 "blinkAddElement | link | | \n" |
| 223 "HTMLLinkElement.href | data:text/css;charset=utf-8,\n" | |
| 224 "blinkAddElement | link | stylesheet | data:text/css;charset=utf-8,\n" | 217 "blinkAddElement | link | stylesheet | data:text/css;charset=utf-8,\n" |
| 225 "blinkAddElement | link | stylesheet | data:text/css;charset=utf-8,"; | 218 "blinkAddElement | link | stylesheet | data:text/css;charset=utf-8,"; |
| 226 executeScriptInMainWorld(code); | 219 executeScriptInMainWorld(code); |
| 227 ASSERT_TRUE(verifyActivities("")); | 220 ASSERT_TRUE(verifyActivities("")); |
| 228 executeScriptInIsolatedWorld(code); | 221 executeScriptInIsolatedWorld(code); |
| 229 ASSERT_TRUE(verifyActivities(expectedActivities)); | 222 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 230 } | 223 } |
| 231 | 224 |
| 232 TEST_F(ActivityLoggerTest, InputElement) | 225 TEST_F(ActivityLoggerTest, InputElement) |
| 233 { | 226 { |
| 234 v8::HandleScope scope(v8::Isolate::GetCurrent()); | |
| 235 const char* code = | 227 const char* code = |
| 236 "document.body.innerHTML = '<input type=\\\'submit\\\' formaction=\\\'da
ta:text/html;charset=utf-8,\\\'></input>';" | 228 "document.body.innerHTML = '<input type=\\\'submit\\\' formaction=\\\'da
ta:text/html;charset=utf-8,\\\'></input>';" |
| 237 "document.body.innerHTML = '<input></input>';" | 229 "document.body.innerHTML = '<input></input>';" |
| 238 "var input = document.createElement('input');" | 230 "var input = document.createElement('input');" |
| 239 "document.body.appendChild(input);" | 231 "document.body.appendChild(input);" |
| 240 "input = document.createElement('input');" | 232 "input = document.createElement('input');" |
| 241 "input.type = 'submit';" | 233 "input.type = 'submit';" |
| 242 "input.formAction = 'data:text/html;charset=utf-8,';" | 234 "input.formAction = 'data:text/html;charset=utf-8,';" |
| 243 "document.body.appendChild(input);" | 235 "document.body.appendChild(input);" |
| 244 "document.write('<body><input type=\\\'submit\\\' formaction=\\\'data:te
xt/html;charset=utf-8,\\\'></input></body>');"; | 236 "document.write('<body><input type=\\\'submit\\\' formaction=\\\'data:te
xt/html;charset=utf-8,\\\'></input></body>');"; |
| 245 const char* expectedActivities = | 237 const char* expectedActivities = |
| 246 "blinkAddElement | input | submit | data:text/html;charset=utf-8,\n" | 238 "blinkAddElement | input | submit | data:text/html;charset=utf-8,\n" |
| 247 "blinkAddElement | input | | \n" | 239 "blinkAddElement | input | | \n" |
| 248 "blinkAddElement | input | | \n" | 240 "blinkAddElement | input | | \n" |
| 249 "HTMLInputElement.formAction | data:text/html;charset=utf-8,\n" | |
| 250 "blinkAddElement | input | submit | data:text/html;charset=utf-8,\n" | 241 "blinkAddElement | input | submit | data:text/html;charset=utf-8,\n" |
| 251 "blinkAddElement | input | submit | data:text/html;charset=utf-8,"; | 242 "blinkAddElement | input | submit | data:text/html;charset=utf-8,"; |
| 252 executeScriptInMainWorld(code); | 243 executeScriptInMainWorld(code); |
| 253 ASSERT_TRUE(verifyActivities("")); | 244 ASSERT_TRUE(verifyActivities("")); |
| 254 executeScriptInIsolatedWorld(code); | 245 executeScriptInIsolatedWorld(code); |
| 255 ASSERT_TRUE(verifyActivities(expectedActivities)); | 246 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 256 } | 247 } |
| 257 | 248 |
| 258 TEST_F(ActivityLoggerTest, ButtonElement) | 249 TEST_F(ActivityLoggerTest, ButtonElement) |
| 259 { | 250 { |
| 260 v8::HandleScope scope(v8::Isolate::GetCurrent()); | |
| 261 const char* code = | 251 const char* code = |
| 262 "document.body.innerHTML = '<button type=\\\'submit\\\' formmethod=\\\'p
ost\\\' formaction=\\\'data:text/html;charset=utf-8,\\\'></input>';" | 252 "document.body.innerHTML = '<button type=\\\'submit\\\' formmethod=\\\'p
ost\\\' formaction=\\\'data:text/html;charset=utf-8,\\\'></input>';" |
| 263 "document.body.innerHTML = '<button></button>';" | 253 "document.body.innerHTML = '<button></button>';" |
| 264 "var button = document.createElement('button');" | 254 "var button = document.createElement('button');" |
| 265 "document.body.appendChild(button);" | 255 "document.body.appendChild(button);" |
| 266 "button = document.createElement('button');" | 256 "button = document.createElement('button');" |
| 267 "button.type = 'submit';" | 257 "button.type = 'submit';" |
| 268 "button.formMethod = 'post';" | 258 "button.formMethod = 'post';" |
| 269 "button.formAction = 'data:text/html;charset=utf-8,';" | 259 "button.formAction = 'data:text/html;charset=utf-8,';" |
| 270 "document.body.appendChild(button);" | 260 "document.body.appendChild(button);" |
| 271 "document.write('<body><button type=\\\'submit\\\' formmethod=\\\'post\\
\' formaction=\\\'data:text/html;charset=utf-8,\\\'></button></body>');"; | 261 "document.write('<body><button type=\\\'submit\\\' formmethod=\\\'post\\
\' formaction=\\\'data:text/html;charset=utf-8,\\\'></button></body>');"; |
| 272 const char* expectedActivities = | 262 const char* expectedActivities = |
| 273 "blinkAddElement | button | submit | post | data:text/html;charset=utf-8
,\n" | 263 "blinkAddElement | button | submit | post | data:text/html;charset=utf-8
,\n" |
| 274 "blinkAddElement | button | | | \n" | 264 "blinkAddElement | button | | | \n" |
| 275 "blinkAddElement | button | | | \n" | 265 "blinkAddElement | button | | | \n" |
| 276 "HTMLButtonElement.formAction | data:text/html;charset=utf-8,\n" | |
| 277 "blinkAddElement | button | submit | post | data:text/html;charset=utf-8
,\n" | 266 "blinkAddElement | button | submit | post | data:text/html;charset=utf-8
,\n" |
| 278 "blinkAddElement | button | submit | post | data:text/html;charset=utf-8
,"; | 267 "blinkAddElement | button | submit | post | data:text/html;charset=utf-8
,"; |
| 279 executeScriptInMainWorld(code); | 268 executeScriptInMainWorld(code); |
| 280 ASSERT_TRUE(verifyActivities("")); | 269 ASSERT_TRUE(verifyActivities("")); |
| 281 executeScriptInIsolatedWorld(code); | 270 executeScriptInIsolatedWorld(code); |
| 282 ASSERT_TRUE(verifyActivities(expectedActivities)); | 271 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 283 } | 272 } |
| 284 | 273 |
| 285 TEST_F(ActivityLoggerTest, FormElement) | 274 TEST_F(ActivityLoggerTest, FormElement) |
| 286 { | 275 { |
| 287 v8::HandleScope scope(v8::Isolate::GetCurrent()); | |
| 288 const char* code = | 276 const char* code = |
| 289 "document.body.innerHTML = '<form method=\\\'post\\\' action=\\\'data:te
xt/html;charset=utf-8,\\\'></form>';" | 277 "document.body.innerHTML = '<form method=\\\'post\\\' action=\\\'data:te
xt/html;charset=utf-8,\\\'></form>';" |
| 290 "document.body.innerHTML = '<form></form>';" | 278 "document.body.innerHTML = '<form></form>';" |
| 291 "var form = document.createElement('form');" | 279 "var form = document.createElement('form');" |
| 292 "document.body.appendChild(form);" | 280 "document.body.appendChild(form);" |
| 293 "form = document.createElement('form');" | 281 "form = document.createElement('form');" |
| 294 "form.method = 'post';" | 282 "form.method = 'post';" |
| 295 "form.action = 'data:text/html;charset=utf-8,';" | 283 "form.action = 'data:text/html;charset=utf-8,';" |
| 296 "document.body.appendChild(form);" | 284 "document.body.appendChild(form);" |
| 297 "document.write('<body><form method=\\\'post\\\' action=\\\'data:text/ht
ml;charset=utf-8,\\\'></form></body>');"; | 285 "document.write('<body><form method=\\\'post\\\' action=\\\'data:text/ht
ml;charset=utf-8,\\\'></form></body>');"; |
| 298 const char* expectedActivities = | 286 const char* expectedActivities = |
| 299 "blinkAddElement | form | post | data:text/html;charset=utf-8,\n" | 287 "blinkAddElement | form | post | data:text/html;charset=utf-8,\n" |
| 300 "blinkAddElement | form | | \n" | 288 "blinkAddElement | form | | \n" |
| 301 "blinkAddElement | form | | \n" | 289 "blinkAddElement | form | | \n" |
| 302 "HTMLFormElement.action | data:text/html;charset=utf-8,\n" | |
| 303 "blinkAddElement | form | post | data:text/html;charset=utf-8,\n" | 290 "blinkAddElement | form | post | data:text/html;charset=utf-8,\n" |
| 304 "blinkAddElement | form | post | data:text/html;charset=utf-8,"; | 291 "blinkAddElement | form | post | data:text/html;charset=utf-8,"; |
| 305 executeScriptInMainWorld(code); | 292 executeScriptInMainWorld(code); |
| 306 ASSERT_TRUE(verifyActivities("")); | 293 ASSERT_TRUE(verifyActivities("")); |
| 307 executeScriptInIsolatedWorld(code); | 294 executeScriptInIsolatedWorld(code); |
| 308 ASSERT_TRUE(verifyActivities(expectedActivities)); | 295 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 309 } | 296 } |
| 310 | 297 |
| 298 TEST_F(ActivityLoggerTest, IFrameSrcAttribute) |
| 299 { |
| 300 const char* code = |
| 301 "document.body.innerHTML = '<iframe src=\\\'data:text/html;charset=utf-8
,A\\\'></iframe>';" |
| 302 "var iframe = document.getElementsByTagName('iframe')[0];" |
| 303 "iframe.src = 'data:text/html;charset=utf-8,B';" |
| 304 "iframe.setAttribute('src', 'data:text/html;charset=utf-8,C');" |
| 305 "iframe.setAttributeNS('', 'src', 'data:text/html;charset=utf-8,D');" |
| 306 "var attr = document.createAttribute('src');" |
| 307 "attr.value = 'data:text/html;charset=utf-8,E';" |
| 308 "iframe.setAttributeNode(attr);"; |
| 309 const char* expectedActivities = |
| 310 "blinkAddElement | iframe | data:text/html;charset=utf-8,A\n" |
| 311 "blinkSetAttribute | iframe | src | data:text/html;charset=utf-8,A | dat
a:text/html;charset=utf-8,B\n" |
| 312 "blinkSetAttribute | iframe | src | data:text/html;charset=utf-8,B | dat
a:text/html;charset=utf-8,C\n" |
| 313 "blinkSetAttribute | iframe | src | data:text/html;charset=utf-8,C | dat
a:text/html;charset=utf-8,D\n" |
| 314 "blinkSetAttribute | iframe | src | data:text/html;charset=utf-8,D | dat
a:text/html;charset=utf-8,E"; |
| 315 executeScriptInMainWorld(code); |
| 316 ASSERT_TRUE(verifyActivities("")); |
| 317 executeScriptInIsolatedWorld(code); |
| 318 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 319 } |
| 320 |
| 321 TEST_F(ActivityLoggerTest, AnchorHrefAttribute) |
| 322 { |
| 323 const char* code = |
| 324 "document.body.innerHTML = '<a href=\\\'data:text/html;charset=utf-8,A\\
\'></a>';" |
| 325 "var a = document.getElementsByTagName('a')[0];" |
| 326 "a.href = 'data:text/html;charset=utf-8,B';" |
| 327 "a.setAttribute('href', 'data:text/html;charset=utf-8,C');" |
| 328 "a.setAttributeNS('', 'href', 'data:text/html;charset=utf-8,D');" |
| 329 "var attr = document.createAttribute('href');" |
| 330 "attr.value = 'data:text/html;charset=utf-8,E';" |
| 331 "a.setAttributeNode(attr);"; |
| 332 const char* expectedActivities = |
| 333 "blinkAddElement | a | data:text/html;charset=utf-8,A\n" |
| 334 "blinkSetAttribute | a | href | data:text/html;charset=utf-8,A | data:te
xt/html;charset=utf-8,B\n" |
| 335 "blinkSetAttribute | a | href | data:text/html;charset=utf-8,B | data:te
xt/html;charset=utf-8,C\n" |
| 336 "blinkSetAttribute | a | href | data:text/html;charset=utf-8,C | data:te
xt/html;charset=utf-8,D\n" |
| 337 "blinkSetAttribute | a | href | data:text/html;charset=utf-8,D | data:te
xt/html;charset=utf-8,E"; |
| 338 executeScriptInMainWorld(code); |
| 339 ASSERT_TRUE(verifyActivities("")); |
| 340 executeScriptInIsolatedWorld(code); |
| 341 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 342 } |
| 343 |
| 344 TEST_F(ActivityLoggerTest, LinkHrefAttribute) |
| 345 { |
| 346 const char* code = |
| 347 "document.body.innerHTML = '<link rel=\\\'stylesheet\\\' href=\\\'data:t
ext/css;charset=utf-8,A\\\'></link>';" |
| 348 "var link = document.getElementsByTagName('link')[0];" |
| 349 "link.href = 'data:text/css;charset=utf-8,B';" |
| 350 "link.setAttribute('href', 'data:text/css;charset=utf-8,C');" |
| 351 "link.setAttributeNS('', 'href', 'data:text/css;charset=utf-8,D');" |
| 352 "var attr = document.createAttribute('href');" |
| 353 "attr.value = 'data:text/css;charset=utf-8,E';" |
| 354 "link.setAttributeNode(attr);"; |
| 355 const char* expectedActivities = |
| 356 "blinkAddElement | link | stylesheet | data:text/css;charset=utf-8,A\n" |
| 357 "blinkSetAttribute | link | href | data:text/css;charset=utf-8,A | data:
text/css;charset=utf-8,B\n" |
| 358 "blinkSetAttribute | link | href | data:text/css;charset=utf-8,B | data:
text/css;charset=utf-8,C\n" |
| 359 "blinkSetAttribute | link | href | data:text/css;charset=utf-8,C | data:
text/css;charset=utf-8,D\n" |
| 360 "blinkSetAttribute | link | href | data:text/css;charset=utf-8,D | data:
text/css;charset=utf-8,E"; |
| 361 executeScriptInMainWorld(code); |
| 362 ASSERT_TRUE(verifyActivities("")); |
| 363 executeScriptInIsolatedWorld(code); |
| 364 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 365 } |
| 366 |
| 367 TEST_F(ActivityLoggerTest, InputFormActionAttribute) |
| 368 { |
| 369 const char* code = |
| 370 "document.body.innerHTML = '<input type=\\\'button\\\' formaction=\\\'da
ta:text/html;charset=utf-8,A\\\'></input>';" |
| 371 "var input = document.getElementsByTagName('input')[0];" |
| 372 "input.formAction = 'data:text/html;charset=utf-8,B';" |
| 373 "input.setAttribute('formaction', 'data:text/html;charset=utf-8,C');" |
| 374 "input.setAttributeNS('', 'formaction', 'data:text/html;charset=utf-8,D'
);" |
| 375 "var attr = document.createAttribute('formaction');" |
| 376 "attr.value = 'data:text/html;charset=utf-8,E';" |
| 377 "input.setAttributeNode(attr);"; |
| 378 const char* expectedActivities = |
| 379 "blinkAddElement | input | button | data:text/html;charset=utf-8,A\n" |
| 380 "blinkSetAttribute | input | formaction | data:text/html;charset=utf-8,A
| data:text/html;charset=utf-8,B\n" |
| 381 "blinkSetAttribute | input | formaction | data:text/html;charset=utf-8,B
| data:text/html;charset=utf-8,C\n" |
| 382 "blinkSetAttribute | input | formaction | data:text/html;charset=utf-8,C
| data:text/html;charset=utf-8,D\n" |
| 383 "blinkSetAttribute | input | formaction | data:text/html;charset=utf-8,D
| data:text/html;charset=utf-8,E"; |
| 384 executeScriptInMainWorld(code); |
| 385 ASSERT_TRUE(verifyActivities("")); |
| 386 executeScriptInIsolatedWorld(code); |
| 387 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 388 } |
| 389 |
| 390 TEST_F(ActivityLoggerTest, ButtonFormActionAttribute) |
| 391 { |
| 392 const char* code = |
| 393 "document.body.innerHTML = '<button type=\\\'submit\\\' formmethod=\\\'p
ost\\\' formaction=\\\'data:text/html;charset=utf-8,A\\\'></input>';" |
| 394 "var button = document.getElementsByTagName('button')[0];" |
| 395 "button.formAction = 'data:text/html;charset=utf-8,B';" |
| 396 "button.setAttribute('formaction', 'data:text/html;charset=utf-8,C');" |
| 397 "button.setAttributeNS('', 'formaction', 'data:text/html;charset=utf-8,D
');" |
| 398 "var attr = document.createAttribute('formaction');" |
| 399 "attr.value = 'data:text/html;charset=utf-8,E';" |
| 400 "button.setAttributeNode(attr);"; |
| 401 const char* expectedActivities = |
| 402 "blinkAddElement | button | submit | post | data:text/html;charset=utf-8
,A\n" |
| 403 "blinkSetAttribute | button | formaction | data:text/html;charset=utf-8,
A | data:text/html;charset=utf-8,B\n" |
| 404 "blinkSetAttribute | button | formaction | data:text/html;charset=utf-8,
B | data:text/html;charset=utf-8,C\n" |
| 405 "blinkSetAttribute | button | formaction | data:text/html;charset=utf-8,
C | data:text/html;charset=utf-8,D\n" |
| 406 "blinkSetAttribute | button | formaction | data:text/html;charset=utf-8,
D | data:text/html;charset=utf-8,E"; |
| 407 executeScriptInMainWorld(code); |
| 408 ASSERT_TRUE(verifyActivities("")); |
| 409 executeScriptInIsolatedWorld(code); |
| 410 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 411 } |
| 412 |
| 413 TEST_F(ActivityLoggerTest, FormActionAttribute) |
| 414 { |
| 415 const char* code = |
| 416 "document.body.innerHTML = '<form action=\\\'data:text/html;charset=utf-
8,A\\\'></form>';" |
| 417 "var form = document.getElementsByTagName('form')[0];" |
| 418 "form.action = 'data:text/html;charset=utf-8,B';" |
| 419 "form.setAttribute('action', 'data:text/html;charset=utf-8,C');" |
| 420 "form.setAttributeNS('', 'action', 'data:text/html;charset=utf-8,D');" |
| 421 "var attr = document.createAttribute('action');" |
| 422 "attr.value = 'data:text/html;charset=utf-8,E';" |
| 423 "form.setAttributeNode(attr);"; |
| 424 const char* expectedActivities = |
| 425 "blinkAddElement | form | | data:text/html;charset=utf-8,A\n" |
| 426 "blinkSetAttribute | form | action | data:text/html;charset=utf-8,A | da
ta:text/html;charset=utf-8,B\n" |
| 427 "blinkSetAttribute | form | action | data:text/html;charset=utf-8,B | da
ta:text/html;charset=utf-8,C\n" |
| 428 "blinkSetAttribute | form | action | data:text/html;charset=utf-8,C | da
ta:text/html;charset=utf-8,D\n" |
| 429 "blinkSetAttribute | form | action | data:text/html;charset=utf-8,D | da
ta:text/html;charset=utf-8,E"; |
| 430 executeScriptInMainWorld(code); |
| 431 ASSERT_TRUE(verifyActivities("")); |
| 432 executeScriptInIsolatedWorld(code); |
| 433 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 434 } |
| 435 |
| 311 } // namespace | 436 } // namespace |
| OLD | NEW |