Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-26855] Windows: Add "baseURL" support to WebView.setHtml()

GitHub Issuen/a
TypeImprovement
PriorityMedium
StatusClosed
ResolutionFixed
Resolution Date2019-04-29T17:56:39.000+0000
Affected Version/sRelease 6.0.3
Fix Version/sRelease 8.1.0
ComponentsWindows
Labelsparity, url, webview
ReporterJoshua Quick
AssigneeKota Iguchi
Created2019-02-24T13:04:21.000+0000
Updated2019-04-29T17:56:39.000+0000

Description

*Summary:* Titanium currently documents that the WebView.setHtml() method supports a 2nd argument on Android and iOS which can provide a "baseURL" setting. Android used to support this, but it was inadvertently removed in Titanium 6.0.3. This feature should be re-added since it's needed by "iframes" to indicate which URL an iframe's embedded paths are relative to. For example, a YouTube video embedded within an iframe will not play on Android or iOS unless a "baseURL" of "https://www.youtube.com" is provided. *Steps to reproduce:*

Build and run the below code on Android.

Tap on the video to attempt to play it.

Notice that the video won't play. Instead it reads "Video Unavailable".

Build and run on iOS.

Tap on the video play it.

Notice that the video plays fine. _(This is because the "baseURL" is being used.)_

var htmlText =
		'<!DOCTYPE html>' +
		'<html>' +
		'	<body>' +
		'		<iframe width="560" height="315" src="https://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen/>' +
		'	</body>' +
		'</html>';

var window = Ti.UI.createWindow();
var webView = Ti.UI.createWebView();
//webView.html = htmlText;
webView.setHtml(htmlText, { baseURL: "https://www.youtube.com" });
window.add(webView);
window.open();
*Work-Around:* The "baseURL" is not needed if the webpage was loaded from the Internet (ie: the "url" property). That is, "baseURL" is only applicable when loading HTML from string. So, hosting the webpage on your own web server will work-around this problem.

Comments

  1. Kota Iguchi 2019-03-21

    https://github.com/appcelerator/titanium_mobile_windows/pull/1369
  2. Samir Mohammed 2019-04-26

    FR Passed, waiting on Jenkins build.
  3. Kota Iguchi 2019-04-27

    Merged to master.
  4. Keerthi Mahalingam 2019-04-29

    Verified the fix on SDK 8.1.0.v20190426222341.Video plays as expected. Works fine .closing
       Operating System
         Name                        = Microsoft Windows 10 Pro
         Version                     = 10.0.17763
         Architecture                = 32bit
         # CPUs                      = 4
         Memory                      = 17034395648
       CLI                              =7.0.11 -1
       Studio                          =5.1.2.201903111843
       Node.js
         Node.js Version             = 8.9.1
         npm Version                 = 5.5.1
       Titanium CLI
         CLI Version                 = 5.1.1
       Titanium SDK
         SDK Version                 = 8.1.0.v20190426222341
       Simulator =Mobile Emulator 10.0.14393. 0 1080p 6 inch 
        

JSON Source