Merge pull request #179 from NativeScript/webview-src

Implemented #172.
This commit is contained in:
Vladimir Enchev
2015-05-19 14:26:46 +03:00
11 changed files with 257 additions and 18 deletions

View File

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html>
<head>
<title>MyTitle</title>
<meta charset="utf-8" />
</head>
<body>
<span style="color:red">Test</span>
</body>
</html>

View File

@ -13,9 +13,10 @@ import webViewModule = require("ui/web-view");
// ### Declaring a WebView.
//```XML
// <Page>
// <WebView url="{{ someUrl }}" />
// <WebView src="{{ someUrl | pathToLocalFile | htmlString }}" />
// </Page>
//```
// </snippet>
var _createWebViewFunc = function (): webViewModule.WebView {
@ -76,6 +77,128 @@ export var testLoadExistingUrl = function () {
}
}
export var testLoadLocalFile = function () {
var newPage: page.Page;
var webView = _createWebViewFunc();
var pageFactory = function (): page.Page {
newPage = new page.Page();
newPage.content = webView;
return newPage;
};
helper.navigate(pageFactory);
var testFinished = false;
var actualHtml;
var actualTitle;
var actualError;
var expectedTitle = 'MyTitle';
var expectedHtml = '<span style="color:red">Test</span>';
// <snippet module="ui/web-view" title="WebView">
// ### Using WebView
// ``` JavaScript
webView.on(webViewModule.WebView.loadFinishedEvent, function (args: webViewModule.LoadEventData) {
// <hide>
if (webView.ios) {
actualHtml = webView.ios.stringByEvaluatingJavaScriptFromString("document.body.innerHTML").trim();
} else if (webView.android) {
actualTitle = webView.android.getTitle()
}
actualError = args.error;
testFinished = true;
// </hide>
var message;
if (!args.error) {
message = "WebView finished loading " + args.url;
}
else {
message = "Error loading " + args.url + ": " + args.error;
}
//console.log(message);
});
webView.src = "~/ui/web-view/test.html";
TKUnit.wait(4);
helper.goBack();
if (testFinished) {
if (webView.ios) {
TKUnit.assert(actualHtml === expectedHtml, "File ~/ui/web-view/test.html not loaded properly. Actual: " + actualHtml);
} else if (webView.android) {
TKUnit.assert(actualTitle === expectedTitle, "File ~/ui/web-view/test.html not loaded properly. Actual: " + actualTitle);
}
TKUnit.assert(actualError === undefined, actualError);
}
else {
TKUnit.assert(false, "TIMEOUT");
}
}
export var testLoadHTMLString = function () {
var newPage: page.Page;
var webView = _createWebViewFunc();
var pageFactory = function (): page.Page {
newPage = new page.Page();
newPage.content = webView;
return newPage;
};
helper.navigate(pageFactory);
var testFinished = false;
var actualHtml;
var actualTitle;
var actualError;
var expectedTitle = 'MyTitle';
var expectedHtml = '<span style="color:red">Test</span>';
// <snippet module="ui/web-view" title="WebView">
// ### Using WebView
// ``` JavaScript
webView.on(webViewModule.WebView.loadFinishedEvent, function (args: webViewModule.LoadEventData) {
// <hide>
if (webView.ios) {
actualHtml = webView.ios.stringByEvaluatingJavaScriptFromString("document.body.innerHTML").trim();
} else if (webView.android) {
actualTitle = webView.android.getTitle()
}
actualError = args.error;
testFinished = true;
// </hide>
var message;
if (!args.error) {
message = "WebView finished loading " + args.url;
}
else {
message = "Error loading " + args.url + ": " + args.error;
}
//console.log(message);
});
webView.src = '<!DOCTYPE html><html><head><title>MyTitle</title><meta charset="utf-8" /></head><body><span style="color:red">Test</span></body></html>';
TKUnit.wait(4);
helper.goBack();
if (testFinished) {
if (webView.ios) {
TKUnit.assert(actualHtml === expectedHtml, "HTML string not loaded properly. Actual: " + actualHtml);
} else if (webView.android) {
TKUnit.assert(actualTitle === expectedTitle, "HTML string not loaded properly. Actual: " + actualTitle);
}
TKUnit.assert(actualError === undefined, actualError);
}
else {
TKUnit.assert(false, "TIMEOUT");
}
}
export var testLoadInvalidUrl = function () {
var newPage: page.Page;
var webView = _createWebViewFunc();

View File

@ -7,6 +7,8 @@
<TabViewItem.view>
<StackLayout>
<WebView src="&lt;html&gt;&lt;body&gt;&lt;span style='color:red'&gt;Test&lt;/span&gt;&lt;/body&gt;&lt;/html&gt;" />
<!--<ToolBar>
<ToolBar.items>
<ToolBarItem>