diff options
| author | Guillermo Zunino | 2020-08-07 02:53:37 +0000 |
|---|---|---|
| committer | Niraj Modi | 2020-08-14 06:35:30 +0000 |
| commit | dd877da9bfdc36b401e298735cc0c62f932c922f (patch) | |
| tree | d178cc3bade4fba3c691a72aaf5caa17aacbaebe | |
| parent | ffb58219a0c5b106f3ef9dddd9c8bbf21e8d3936 (diff) | |
| download | eclipse.platform.swt-dd877da9bfdc36b401e298735cc0c62f932c922f.tar.gz eclipse.platform.swt-dd877da9bfdc36b401e298735cc0c62f932c922f.tar.xz eclipse.platform.swt-dd877da9bfdc36b401e298735cc0c62f932c922f.zip | |
Bug 565832 - [chromium]Not allowed to load local resource error
Use tmp file for setText due data:text/ urls cannot load
file:/resources in chromium.
Change-Id: I9c34492cf28f3e2f53ce0f9dfd255a89a2787707
Signed-off-by: Guillermo Zunino <guillez@gmail.com>
| -rw-r--r-- | bundles/org.eclipse.swt.browser.chromium/common/org/eclipse/swt/browser/Chromium.java | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/bundles/org.eclipse.swt.browser.chromium/common/org/eclipse/swt/browser/Chromium.java b/bundles/org.eclipse.swt.browser.chromium/common/org/eclipse/swt/browser/Chromium.java index 8c22cd5757..1fd5a7b2fb 100644 --- a/bundles/org.eclipse.swt.browser.chromium/common/org/eclipse/swt/browser/Chromium.java +++ b/bundles/org.eclipse.swt.browser.chromium/common/org/eclipse/swt/browser/Chromium.java @@ -37,6 +37,7 @@ import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; abstract class Chromium extends WebBrowser { + private static final String SET_TEXT_URL = "swt.chromium.setText."; private static final String DATA_TEXT_URL = "data:text/html;base64,"; private static final String VERSION = Library.getVersionString(); private static final String CEFVERSION = "3071"; @@ -780,7 +781,7 @@ abstract class Chromium extends WebBrowser { } else { event.required = true; } - } else { + } else if (!event.required) { createDefaultPopup(windowInfo, client, event); } }); @@ -994,7 +995,7 @@ abstract class Chromium extends WebBrowser { event.display = chromium.getDisplay(); event.widget = chromium; event.doit = true; - event.location = ChromiumLib.cefswt_request_to_java(request); + event.location = getPlainUrl(ChromiumLib.cefswt_request_to_java(request)); debugPrint("on_before_browse:" + event.location); try { loopDisable = true; @@ -1904,6 +1905,8 @@ abstract class Chromium extends WebBrowser { // debugPrint("getUrl1:" + cefurl); if (cefurl == null) cefurl = getPlainUrl(this.url); + else + cefurl = getPlainUrl(cefurl); return cefurl; } @@ -1930,6 +1933,16 @@ abstract class Chromium extends WebBrowser { @Override public boolean setText(String html, boolean trusted) { + if (html.contains("file:/")) { // file:/ resources not supported with data:text + try { + Path tmp = Files.createTempFile(SET_TEXT_URL, ".html"); + Files.write(tmp, html.getBytes()); + tmp.toFile().deleteOnExit(); + boolean s = setUrl(tmp.toUri().toString(), null, null); + return s; + } catch (IOException e) { + } + } String texturl = DATA_TEXT_URL + Base64.getEncoder().encodeToString(html.getBytes()); return setUrl(texturl, null, null); } @@ -1938,6 +1951,9 @@ abstract class Chromium extends WebBrowser { if (url != null && url.startsWith(DATA_TEXT_URL)) { return url.substring(0, DATA_TEXT_URL.length()-8); } + if (url != null && url.startsWith("file:/") && url.contains(SET_TEXT_URL)) { + return "about:blank"; + } return url; } |
