Skip to content

Commit 7881c8d

Browse files
author
Vasyl Vavrychuk
committed
fixed web visualizer TODO by replacing ExecuteScriptAndParse with ExecuteScript
1 parent 7e9266f commit 7881c8d

File tree

2 files changed

+34
-27
lines changed

2 files changed

+34
-27
lines changed

src/webdriver/extension_qt/qwebkit_proxy.cc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1165,9 +1165,8 @@ Error* QWebkitProxy::ExecuteScriptAndParse(QWebFrame* frame,
11651165
}
11661166

11671167
scoped_ptr<Value> value(unscoped_value);
1168-
std::string error_msg;
11691168
if (!parser->Parse(value.get())) {
1170-
error_msg = base::StringPrintf("%s returned invalid value: %s",
1169+
std::string error_msg = base::StringPrintf("%s returned invalid value: %s",
11711170
script_name.c_str(), JsonStringify(value.get()).c_str());
11721171
return new Error(kUnknownError, error_msg);
11731172
}

src/webdriver/extension_qt/web_view_visualizer.cc

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,38 +19,46 @@ QWebViewVisualizerSourceCommand::QWebViewVisualizerSourceCommand(QWebViewCmdExec
1919
void QWebViewVisualizerSourceCommand::Execute(std::string* source, Error** error) {
2020
// Convert DOM tree to valid XML.
2121
const char* kSource =
22-
"function() {\n"
23-
" var elements = document.getElementsByTagName('*');\n"
24-
" for (var elementIndex = 0; elementIndex < elements.length; elementIndex++) {\n"
25-
" var element = elements[elementIndex];\n"
26-
" if (element.tagName.toLowerCase() == 'script')\n"
27-
" element.innerHTML = '';\n"
28-
" if (element.hasAttribute('\"'))\n"
29-
" element.removeAttribute('\"');\n"
22+
"var elements = document.getElementsByTagName('*');\n"
23+
"for (var elementIndex = 0; elementIndex < elements.length; elementIndex++) {\n"
24+
" var element = elements[elementIndex];\n"
25+
" if (element.tagName.toLowerCase() == 'script')\n"
26+
" element.innerHTML = '';\n"
27+
" if (element.hasAttribute('\"'))\n"
28+
" element.removeAttribute('\"');\n"
3029
"\n"
31-
" var childNodes = element.childNodes;\n"
32-
" for (var childIndex = 0; childIndex < childNodes.length; childIndex++) {\n"
33-
" var child = childNodes[childIndex];\n"
34-
" if (child.nodeType == Node.TEXT_NODE) {\n"
35-
" child.nodeValue = child.nodeValue.replace(/&/g, '&amp;');\n"
36-
" }\n"
30+
" var childNodes = element.childNodes;\n"
31+
" for (var childIndex = 0; childIndex < childNodes.length; childIndex++) {\n"
32+
" var child = childNodes[childIndex];\n"
33+
" if (child.nodeType == Node.TEXT_NODE) {\n"
34+
" child.nodeValue = child.nodeValue.replace(/&/g, '&amp;');\n"
3735
" }\n"
3836
" }\n"
37+
"}\n"
3938
"\n"
40-
" var xhtml = document.implementation.createDocument();\n"
41-
" xhtml = xhtml.importNode(document.documentElement, true);\n"
42-
"\n"
43-
" return new XMLSerializer().serializeToString(xhtml);\n"
44-
"}";
39+
"var xhtml = document.implementation.createDocument();\n"
40+
"xhtml = xhtml.importNode(document.documentElement, true);\n"
41+
"return new XMLSerializer().serializeToString(xhtml);";
4542

46-
// TODO: use executor->webkitProxy->ExecuteScript()
47-
/* *error = executor_->ExecuteScriptAndParse(
48-
executor_->GetFrame(view_, session_->current_frame()),
43+
Value* unscoped_value = NULL;
44+
executor_->ExecuteScript(
4945
kSource,
50-
"getSource",
5146
new ListValue(),
52-
CreateDirectValueParser(source));
53-
*/
47+
&unscoped_value,
48+
error);
49+
if (*error) {
50+
(*error)->AddDetails("getSource execution failed");
51+
return;
52+
}
53+
54+
scoped_ptr<Value> value(unscoped_value);
55+
const ValueParser* parser = CreateDirectValueParser(source);
56+
if (!parser->Parse(value.get())) {
57+
std::string error_msg = base::StringPrintf("getSource returned invalid value: %s",
58+
JsonStringify(value.get()).c_str());
59+
*error = new Error(kUnknownError, error_msg);
60+
return;
61+
}
5462

5563
session_->logger().Log(kInfoLogLevel, "[QWebViewVisualizerSourceCommand] before transform:");
5664
session_->logger().Log(kInfoLogLevel, *source);

0 commit comments

Comments
 (0)