Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillermo Zunino2020-08-07 02:53:37 +0000
committerNiraj Modi2020-08-14 06:35:30 +0000
commitdd877da9bfdc36b401e298735cc0c62f932c922f (patch)
treed178cc3bade4fba3c691a72aaf5caa17aacbaebe
parentffb58219a0c5b106f3ef9dddd9c8bbf21e8d3936 (diff)
downloadeclipse.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.java20
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;
}

Back to the top