| 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()); | |
| 81 m_scriptController->executeScriptInMainWorld(script); | 80 m_scriptController->executeScriptInMainWorld(script); |
| 82 runPendingTasks(); | 81 runPendingTasks(); |
| 83 } | 82 } |
| 84 | 83 |
| 85 void executeScriptInIsolatedWorld(const String& script) const | 84 void executeScriptInIsolatedWorld(const String& script) const |
| 86 { | 85 { |
| 87 v8::HandleScope scope(v8::Isolate::GetCurrent()); | |
| 88 Vector<ScriptSourceCode> sources; | 86 Vector<ScriptSourceCode> sources; |
| 89 sources.append(ScriptSourceCode(script)); | 87 sources.append(ScriptSourceCode(script)); |
| 90 Vector<v8::Local<v8::Value> > results; | 88 Vector<v8::Local<v8::Value> > results; |
| 91 m_scriptController->executeScriptInIsolatedWorld(isolatedWorldId, source
s, extensionGroup, 0); | 89 m_scriptController->executeScriptInIsolatedWorld(isolatedWorldId, source
s, extensionGroup, 0); |
| 92 runPendingTasks(); | 90 runPendingTasks(); |
| 93 } | 91 } |
| 94 | 92 |
| 95 bool verifyActivities(const String& activities) | 93 bool verifyActivities(const String& activities) |
| 96 { | 94 { |
| 97 Vector<String> activityVector; | 95 Vector<String> activityVector; |
| 98 activities.split("\n", activityVector); | 96 activities.split("\n", activityVector); |
| 99 return m_activityLogger->verifyActivities(activityVector); | 97 return m_activityLogger->verifyActivities(activityVector); |
| 100 } | 98 } |
| 101 | 99 |
| 102 private: | 100 private: |
| 103 static const int isolatedWorldId = 1; | 101 static const int isolatedWorldId = 1; |
| 104 static const int extensionGroup = 0; | 102 static const int extensionGroup = 0; |
| 105 | 103 |
| 106 WebViewHelper m_webViewHelper; | 104 WebViewHelper m_webViewHelper; |
| 107 ScriptController* m_scriptController; | 105 ScriptController* m_scriptController; |
| 108 // TestActivityLogger is owned by a static table within V8DOMActivityLogger | 106 // TestActivityLogger is owned by a static table within V8DOMActivityLogger |
| 109 // and should be alive as long as not overwritten. | 107 // and should be alive as long as not overwritten. |
| 110 TestActivityLogger* m_activityLogger; | 108 TestActivityLogger* m_activityLogger; |
| 111 }; | 109 }; |
| 112 | 110 |
| 113 TEST_F(ActivityLoggerTest, EventHandler) | 111 TEST_F(ActivityLoggerTest, EventHandler) |
| 114 { | 112 { |
| 113 v8::HandleScope scope(v8::Isolate::GetCurrent()); |
| 115 const char* code = | 114 const char* code = |
| 116 "document.body.innerHTML = '<a onclick=\\\'do()\\\'>test</a>';" | 115 "document.body.innerHTML = '<a onclick=\\\'do()\\\'>test</a>';" |
| 117 "document.body.onchange = function(){};" | 116 "document.body.onchange = function(){};" |
| 118 "document.body.setAttribute('onfocus', 'fnc()');" | 117 "document.body.setAttribute('onfocus', 'fnc()');" |
| 119 "document.body.addEventListener('onload', function(){});"; | 118 "document.body.addEventListener('onload', function(){});"; |
| 120 const char* expectedActivities = | 119 const char* expectedActivities = |
| 121 "blinkAddEventListener | A | click\n" | 120 "blinkAddEventListener | A | click\n" |
| 122 "blinkAddElement | a | \n" | 121 "blinkAddElement | a | \n" |
| 123 "blinkAddEventListener | BODY | change\n" | 122 "blinkAddEventListener | BODY | change\n" |
| 124 "blinkAddEventListener | LocalDOMWindow | focus\n" | 123 "blinkAddEventListener | LocalDOMWindow | focus\n" |
| 125 "blinkAddEventListener | BODY | onload"; | 124 "blinkAddEventListener | BODY | onload"; |
| 126 executeScriptInMainWorld(code); | 125 executeScriptInMainWorld(code); |
| 127 ASSERT_TRUE(verifyActivities("")); | 126 ASSERT_TRUE(verifyActivities("")); |
| 128 executeScriptInIsolatedWorld(code); | 127 executeScriptInIsolatedWorld(code); |
| 129 ASSERT_TRUE(verifyActivities(expectedActivities)); | 128 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 130 } | 129 } |
| 131 | 130 |
| 132 TEST_F(ActivityLoggerTest, ScriptElement) | 131 TEST_F(ActivityLoggerTest, ScriptElement) |
| 133 { | 132 { |
| 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" |
| 147 "blinkAddElement | script | data:text/html;charset=utf-8,\n" | 148 "blinkAddElement | script | data:text/html;charset=utf-8,\n" |
| 148 "blinkAddElement | script | data:text/html;charset=utf-8,"; | 149 "blinkAddElement | script | data:text/html;charset=utf-8,"; |
| 149 executeScriptInMainWorld(code); | 150 executeScriptInMainWorld(code); |
| 150 ASSERT_TRUE(verifyActivities("")); | 151 ASSERT_TRUE(verifyActivities("")); |
| 151 executeScriptInIsolatedWorld(code); | 152 executeScriptInIsolatedWorld(code); |
| 152 ASSERT_TRUE(verifyActivities(expectedActivities)); | 153 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 153 } | 154 } |
| 154 | 155 |
| 155 TEST_F(ActivityLoggerTest, IFrameElement) | 156 TEST_F(ActivityLoggerTest, IFrameElement) |
| 156 { | 157 { |
| 158 v8::HandleScope scope(v8::Isolate::GetCurrent()); |
| 157 const char* code = | 159 const char* code = |
| 158 "document.body.innerHTML = '<iframe src=\\\'data:text/html;charset=utf-8
,\\\'></iframe>';" | 160 "document.body.innerHTML = '<iframe src=\\\'data:text/html;charset=utf-8
,\\\'></iframe>';" |
| 159 "document.body.innerHTML = '<iframe></iframe>';" | 161 "document.body.innerHTML = '<iframe></iframe>';" |
| 160 "var iframe = document.createElement('iframe');" | 162 "var iframe = document.createElement('iframe');" |
| 161 "document.body.appendChild(iframe);" | 163 "document.body.appendChild(iframe);" |
| 162 "iframe = document.createElement('iframe');" | 164 "iframe = document.createElement('iframe');" |
| 163 "iframe.src = 'data:text/html;charset=utf-8,';" | 165 "iframe.src = 'data:text/html;charset=utf-8,';" |
| 164 "document.body.appendChild(iframe);" | 166 "document.body.appendChild(iframe);" |
| 165 "document.write('<body><iframe src=\\\'data:text/html;charset=utf-8,\\\'
></iframe></body>');"; | 167 "document.write('<body><iframe src=\\\'data:text/html;charset=utf-8,\\\'
></iframe></body>');"; |
| 166 const char* expectedActivities = | 168 const char* expectedActivities = |
| 167 "blinkAddElement | iframe | data:text/html;charset=utf-8,\n" | 169 "blinkAddElement | iframe | data:text/html;charset=utf-8,\n" |
| 168 "blinkAddElement | iframe | \n" | 170 "blinkAddElement | iframe | \n" |
| 169 "blinkAddElement | iframe | \n" | 171 "blinkAddElement | iframe | \n" |
| 172 "HTMLIFrameElement.src | | data:text/html;charset=utf-8,\n" |
| 170 "blinkAddElement | iframe | data:text/html;charset=utf-8,\n" | 173 "blinkAddElement | iframe | data:text/html;charset=utf-8,\n" |
| 171 "blinkAddElement | iframe | data:text/html;charset=utf-8,"; | 174 "blinkAddElement | iframe | data:text/html;charset=utf-8,"; |
| 172 executeScriptInMainWorld(code); | 175 executeScriptInMainWorld(code); |
| 173 ASSERT_TRUE(verifyActivities("")); | 176 ASSERT_TRUE(verifyActivities("")); |
| 174 executeScriptInIsolatedWorld(code); | 177 executeScriptInIsolatedWorld(code); |
| 175 ASSERT_TRUE(verifyActivities(expectedActivities)); | 178 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 176 } | 179 } |
| 177 | 180 |
| 178 TEST_F(ActivityLoggerTest, AnchorElement) | 181 TEST_F(ActivityLoggerTest, AnchorElement) |
| 179 { | 182 { |
| 183 v8::HandleScope scope(v8::Isolate::GetCurrent()); |
| 180 const char* code = | 184 const char* code = |
| 181 "document.body.innerHTML = '<a href=\\\'data:text/css;charset=utf-8,\\\'
></a>';" | 185 "document.body.innerHTML = '<a href=\\\'data:text/css;charset=utf-8,\\\'
></a>';" |
| 182 "document.body.innerHTML = '<a></a>';" | 186 "document.body.innerHTML = '<a></a>';" |
| 183 "var a = document.createElement('a');" | 187 "var a = document.createElement('a');" |
| 184 "document.body.appendChild(a);" | 188 "document.body.appendChild(a);" |
| 185 "a = document.createElement('a');" | 189 "a = document.createElement('a');" |
| 186 "a.href = 'data:text/css;charset=utf-8,';" | 190 "a.href = 'data:text/css;charset=utf-8,';" |
| 187 "document.body.appendChild(a);" | 191 "document.body.appendChild(a);" |
| 188 "document.write('<body><a href=\\\'data:text/css;charset=utf-8,\\\'></a>
</body>');"; | 192 "document.write('<body><a href=\\\'data:text/css;charset=utf-8,\\\'></a>
</body>');"; |
| 189 const char* expectedActivities = | 193 const char* expectedActivities = |
| 190 "blinkAddElement | a | data:text/css;charset=utf-8,\n" | 194 "blinkAddElement | a | data:text/css;charset=utf-8,\n" |
| 191 "blinkAddElement | a | \n" | 195 "blinkAddElement | a | \n" |
| 192 "blinkAddElement | a | \n" | 196 "blinkAddElement | a | \n" |
| 197 "HTMLAnchorElement.href | | data:text/css;charset=utf-8,\n" |
| 193 "blinkAddElement | a | data:text/css;charset=utf-8,\n" | 198 "blinkAddElement | a | data:text/css;charset=utf-8,\n" |
| 194 "blinkAddElement | a | data:text/css;charset=utf-8,"; | 199 "blinkAddElement | a | data:text/css;charset=utf-8,"; |
| 195 executeScriptInMainWorld(code); | 200 executeScriptInMainWorld(code); |
| 196 ASSERT_TRUE(verifyActivities("")); | 201 ASSERT_TRUE(verifyActivities("")); |
| 197 executeScriptInIsolatedWorld(code); | 202 executeScriptInIsolatedWorld(code); |
| 198 ASSERT_TRUE(verifyActivities(expectedActivities)); | 203 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 199 } | 204 } |
| 200 | 205 |
| 201 TEST_F(ActivityLoggerTest, LinkElement) | 206 TEST_F(ActivityLoggerTest, LinkElement) |
| 202 { | 207 { |
| 208 v8::HandleScope scope(v8::Isolate::GetCurrent()); |
| 203 const char* code = | 209 const char* code = |
| 204 "document.body.innerHTML = '<link rel=\\\'stylesheet\\\' href=\\\'data:t
ext/css;charset=utf-8,\\\'></link>';" | 210 "document.body.innerHTML = '<link rel=\\\'stylesheet\\\' href=\\\'data:t
ext/css;charset=utf-8,\\\'></link>';" |
| 205 "document.body.innerHTML = '<link></link>';" | 211 "document.body.innerHTML = '<link></link>';" |
| 206 "var link = document.createElement('link');" | 212 "var link = document.createElement('link');" |
| 207 "document.body.appendChild(link);" | 213 "document.body.appendChild(link);" |
| 208 "link = document.createElement('link');" | 214 "link = document.createElement('link');" |
| 209 "link.rel = 'stylesheet';" | 215 "link.rel = 'stylesheet';" |
| 210 "link.href = 'data:text/css;charset=utf-8,';" | 216 "link.href = 'data:text/css;charset=utf-8,';" |
| 211 "document.body.appendChild(link);" | 217 "document.body.appendChild(link);" |
| 212 "document.write('<body><link rel=\\\'stylesheet\\\' href=\\\'data:text/c
ss;charset=utf-8,\\\'></link></body>');"; | 218 "document.write('<body><link rel=\\\'stylesheet\\\' href=\\\'data:text/c
ss;charset=utf-8,\\\'></link></body>');"; |
| 213 const char* expectedActivities = | 219 const char* expectedActivities = |
| 214 "blinkAddElement | link | stylesheet | data:text/css;charset=utf-8,\n" | 220 "blinkAddElement | link | stylesheet | data:text/css;charset=utf-8,\n" |
| 215 "blinkAddElement | link | | \n" | 221 "blinkAddElement | link | | \n" |
| 216 "blinkAddElement | link | | \n" | 222 "blinkAddElement | link | | \n" |
| 223 "HTMLLinkElement.href | data:text/css;charset=utf-8,\n" |
| 217 "blinkAddElement | link | stylesheet | data:text/css;charset=utf-8,\n" | 224 "blinkAddElement | link | stylesheet | data:text/css;charset=utf-8,\n" |
| 218 "blinkAddElement | link | stylesheet | data:text/css;charset=utf-8,"; | 225 "blinkAddElement | link | stylesheet | data:text/css;charset=utf-8,"; |
| 219 executeScriptInMainWorld(code); | 226 executeScriptInMainWorld(code); |
| 220 ASSERT_TRUE(verifyActivities("")); | 227 ASSERT_TRUE(verifyActivities("")); |
| 221 executeScriptInIsolatedWorld(code); | 228 executeScriptInIsolatedWorld(code); |
| 222 ASSERT_TRUE(verifyActivities(expectedActivities)); | 229 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 223 } | 230 } |
| 224 | 231 |
| 225 TEST_F(ActivityLoggerTest, InputElement) | 232 TEST_F(ActivityLoggerTest, InputElement) |
| 226 { | 233 { |
| 234 v8::HandleScope scope(v8::Isolate::GetCurrent()); |
| 227 const char* code = | 235 const char* code = |
| 228 "document.body.innerHTML = '<input type=\\\'submit\\\' formaction=\\\'da
ta:text/html;charset=utf-8,\\\'></input>';" | 236 "document.body.innerHTML = '<input type=\\\'submit\\\' formaction=\\\'da
ta:text/html;charset=utf-8,\\\'></input>';" |
| 229 "document.body.innerHTML = '<input></input>';" | 237 "document.body.innerHTML = '<input></input>';" |
| 230 "var input = document.createElement('input');" | 238 "var input = document.createElement('input');" |
| 231 "document.body.appendChild(input);" | 239 "document.body.appendChild(input);" |
| 232 "input = document.createElement('input');" | 240 "input = document.createElement('input');" |
| 233 "input.type = 'submit';" | 241 "input.type = 'submit';" |
| 234 "input.formAction = 'data:text/html;charset=utf-8,';" | 242 "input.formAction = 'data:text/html;charset=utf-8,';" |
| 235 "document.body.appendChild(input);" | 243 "document.body.appendChild(input);" |
| 236 "document.write('<body><input type=\\\'submit\\\' formaction=\\\'data:te
xt/html;charset=utf-8,\\\'></input></body>');"; | 244 "document.write('<body><input type=\\\'submit\\\' formaction=\\\'data:te
xt/html;charset=utf-8,\\\'></input></body>');"; |
| 237 const char* expectedActivities = | 245 const char* expectedActivities = |
| 238 "blinkAddElement | input | submit | data:text/html;charset=utf-8,\n" | 246 "blinkAddElement | input | submit | data:text/html;charset=utf-8,\n" |
| 239 "blinkAddElement | input | | \n" | 247 "blinkAddElement | input | | \n" |
| 240 "blinkAddElement | input | | \n" | 248 "blinkAddElement | input | | \n" |
| 249 "HTMLInputElement.formAction | data:text/html;charset=utf-8,\n" |
| 241 "blinkAddElement | input | submit | data:text/html;charset=utf-8,\n" | 250 "blinkAddElement | input | submit | data:text/html;charset=utf-8,\n" |
| 242 "blinkAddElement | input | submit | data:text/html;charset=utf-8,"; | 251 "blinkAddElement | input | submit | data:text/html;charset=utf-8,"; |
| 243 executeScriptInMainWorld(code); | 252 executeScriptInMainWorld(code); |
| 244 ASSERT_TRUE(verifyActivities("")); | 253 ASSERT_TRUE(verifyActivities("")); |
| 245 executeScriptInIsolatedWorld(code); | 254 executeScriptInIsolatedWorld(code); |
| 246 ASSERT_TRUE(verifyActivities(expectedActivities)); | 255 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 247 } | 256 } |
| 248 | 257 |
| 249 TEST_F(ActivityLoggerTest, ButtonElement) | 258 TEST_F(ActivityLoggerTest, ButtonElement) |
| 250 { | 259 { |
| 260 v8::HandleScope scope(v8::Isolate::GetCurrent()); |
| 251 const char* code = | 261 const char* code = |
| 252 "document.body.innerHTML = '<button type=\\\'submit\\\' formmethod=\\\'p
ost\\\' formaction=\\\'data:text/html;charset=utf-8,\\\'></input>';" | 262 "document.body.innerHTML = '<button type=\\\'submit\\\' formmethod=\\\'p
ost\\\' formaction=\\\'data:text/html;charset=utf-8,\\\'></input>';" |
| 253 "document.body.innerHTML = '<button></button>';" | 263 "document.body.innerHTML = '<button></button>';" |
| 254 "var button = document.createElement('button');" | 264 "var button = document.createElement('button');" |
| 255 "document.body.appendChild(button);" | 265 "document.body.appendChild(button);" |
| 256 "button = document.createElement('button');" | 266 "button = document.createElement('button');" |
| 257 "button.type = 'submit';" | 267 "button.type = 'submit';" |
| 258 "button.formMethod = 'post';" | 268 "button.formMethod = 'post';" |
| 259 "button.formAction = 'data:text/html;charset=utf-8,';" | 269 "button.formAction = 'data:text/html;charset=utf-8,';" |
| 260 "document.body.appendChild(button);" | 270 "document.body.appendChild(button);" |
| 261 "document.write('<body><button type=\\\'submit\\\' formmethod=\\\'post\\
\' formaction=\\\'data:text/html;charset=utf-8,\\\'></button></body>');"; | 271 "document.write('<body><button type=\\\'submit\\\' formmethod=\\\'post\\
\' formaction=\\\'data:text/html;charset=utf-8,\\\'></button></body>');"; |
| 262 const char* expectedActivities = | 272 const char* expectedActivities = |
| 263 "blinkAddElement | button | submit | post | data:text/html;charset=utf-8
,\n" | 273 "blinkAddElement | button | submit | post | data:text/html;charset=utf-8
,\n" |
| 264 "blinkAddElement | button | | | \n" | 274 "blinkAddElement | button | | | \n" |
| 265 "blinkAddElement | button | | | \n" | 275 "blinkAddElement | button | | | \n" |
| 276 "HTMLButtonElement.formAction | data:text/html;charset=utf-8,\n" |
| 266 "blinkAddElement | button | submit | post | data:text/html;charset=utf-8
,\n" | 277 "blinkAddElement | button | submit | post | data:text/html;charset=utf-8
,\n" |
| 267 "blinkAddElement | button | submit | post | data:text/html;charset=utf-8
,"; | 278 "blinkAddElement | button | submit | post | data:text/html;charset=utf-8
,"; |
| 268 executeScriptInMainWorld(code); | 279 executeScriptInMainWorld(code); |
| 269 ASSERT_TRUE(verifyActivities("")); | 280 ASSERT_TRUE(verifyActivities("")); |
| 270 executeScriptInIsolatedWorld(code); | 281 executeScriptInIsolatedWorld(code); |
| 271 ASSERT_TRUE(verifyActivities(expectedActivities)); | 282 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 272 } | 283 } |
| 273 | 284 |
| 274 TEST_F(ActivityLoggerTest, FormElement) | 285 TEST_F(ActivityLoggerTest, FormElement) |
| 275 { | 286 { |
| 287 v8::HandleScope scope(v8::Isolate::GetCurrent()); |
| 276 const char* code = | 288 const char* code = |
| 277 "document.body.innerHTML = '<form method=\\\'post\\\' action=\\\'data:te
xt/html;charset=utf-8,\\\'></form>';" | 289 "document.body.innerHTML = '<form method=\\\'post\\\' action=\\\'data:te
xt/html;charset=utf-8,\\\'></form>';" |
| 278 "document.body.innerHTML = '<form></form>';" | 290 "document.body.innerHTML = '<form></form>';" |
| 279 "var form = document.createElement('form');" | 291 "var form = document.createElement('form');" |
| 280 "document.body.appendChild(form);" | 292 "document.body.appendChild(form);" |
| 281 "form = document.createElement('form');" | 293 "form = document.createElement('form');" |
| 282 "form.method = 'post';" | 294 "form.method = 'post';" |
| 283 "form.action = 'data:text/html;charset=utf-8,';" | 295 "form.action = 'data:text/html;charset=utf-8,';" |
| 284 "document.body.appendChild(form);" | 296 "document.body.appendChild(form);" |
| 285 "document.write('<body><form method=\\\'post\\\' action=\\\'data:text/ht
ml;charset=utf-8,\\\'></form></body>');"; | 297 "document.write('<body><form method=\\\'post\\\' action=\\\'data:text/ht
ml;charset=utf-8,\\\'></form></body>');"; |
| 286 const char* expectedActivities = | 298 const char* expectedActivities = |
| 287 "blinkAddElement | form | post | data:text/html;charset=utf-8,\n" | 299 "blinkAddElement | form | post | data:text/html;charset=utf-8,\n" |
| 288 "blinkAddElement | form | | \n" | 300 "blinkAddElement | form | | \n" |
| 289 "blinkAddElement | form | | \n" | 301 "blinkAddElement | form | | \n" |
| 302 "HTMLFormElement.action | data:text/html;charset=utf-8,\n" |
| 290 "blinkAddElement | form | post | data:text/html;charset=utf-8,\n" | 303 "blinkAddElement | form | post | data:text/html;charset=utf-8,\n" |
| 291 "blinkAddElement | form | post | data:text/html;charset=utf-8,"; | 304 "blinkAddElement | form | post | data:text/html;charset=utf-8,"; |
| 292 executeScriptInMainWorld(code); | 305 executeScriptInMainWorld(code); |
| 293 ASSERT_TRUE(verifyActivities("")); | 306 ASSERT_TRUE(verifyActivities("")); |
| 294 executeScriptInIsolatedWorld(code); | 307 executeScriptInIsolatedWorld(code); |
| 295 ASSERT_TRUE(verifyActivities(expectedActivities)); | 308 ASSERT_TRUE(verifyActivities(expectedActivities)); |
| 296 } | 309 } |
| 297 | 310 |
| 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 | |
| 436 } // namespace | 311 } // namespace |
| OLD | NEW |