summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Barnes <krbarnes>2008-09-26 16:51:06 +0000
committerKevin Barnes <krbarnes>2008-09-26 16:51:06 +0000
commit13042b6f9bf994e9a2fd59f115a6fc6504989f32 (patch)
treed9670395dc17e3b7154357dc6b638efa0fb2aff6
parent5a65e565f0d2dc396d44b63866dad9935f963aec (diff)
downloadeclipse.platform.swt-13042b6f9bf994e9a2fd59f115a6fc6504989f32.tar.gz
eclipse.platform.swt-13042b6f9bf994e9a2fd59f115a6fc6504989f32.tar.xz
eclipse.platform.swt-13042b6f9bf994e9a2fd59f115a6fc6504989f32.zip
rereleasing ggayed fix (revision 1.39.2.2)
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT Browser/carbon/org/eclipse/swt/browser/Safari.java42
1 files changed, 23 insertions, 19 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/carbon/org/eclipse/swt/browser/Safari.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/carbon/org/eclipse/swt/browser/Safari.java
index d83094ee0d..464e2dc015 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT Browser/carbon/org/eclipse/swt/browser/Safari.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/carbon/org/eclipse/swt/browser/Safari.java
@@ -48,8 +48,8 @@ class Safari extends WebBrowser {
static final String WebElementLinkURLKey = "WebElementLinkURL"; //$NON-NLS-1$
static final String AGENT_STRING = "Safari/412.0"; /* Safari version on OSX 10.4 initial release */ //$NON-NLS-1$
static final String URI_FROMMEMORY = "file:///"; //$NON-NLS-1$
- static final String PROTOCOL_FILE = "file:"; //$NON-NLS-1$
- static final String PROTOCOL_HTTP = "http:"; //$NON-NLS-1$
+ static final String PROTOCOL_FILE = "file://"; //$NON-NLS-1$
+ static final String PROTOCOL_HTTP = "http://"; //$NON-NLS-1$
static final String URI_APPLEWEBDATA = "applewebdata://"; //$NON-NLS-1$
static final String ABOUT_BLANK = "about:blank"; //$NON-NLS-1$
static final String ADD_WIDGET_KEY = "org.eclipse.swt.internal.addWidget"; //$NON-NLS-1$
@@ -679,31 +679,35 @@ void _setText(String html) {
public boolean setUrl(String url) {
html = null;
- if (url.startsWith(PROTOCOL_FILE)) {
- url = url.substring(PROTOCOL_FILE.length());
+ if (url.indexOf('/') == 0) {
+ url = PROTOCOL_FILE + url;
+ } else if (url.indexOf(':') == -1) {
+ url = PROTOCOL_HTTP + url;
}
- int selector = Cocoa.S_fileURLWithPath;
- boolean isHttpURL = url.indexOf('/') != 0;
- if (isHttpURL) {
- selector = Cocoa.S_URLWithString;
- if (url.indexOf(':') == -1) {
- url = PROTOCOL_HTTP + "//" + url; //$NON-NLS-1$
+
+ int inURL = 0;
+ char[] chars = new char[url.length()];
+ url.getChars(0, chars.length, chars, 0);
+ int str = OS.CFStringCreateWithCharacters(0, chars, chars.length);
+ if (str != 0) {
+ char[] unescapedChars = new char[] {'%', '#'};
+ int unescapedStr = OS.CFStringCreateWithCharacters(0, unescapedChars, unescapedChars.length);
+ int escapedStr = OS.CFURLCreateStringByAddingPercentEscapes(OS.kCFAllocatorDefault, str, unescapedStr, 0, OS.kCFStringEncodingUTF8);
+ if (escapedStr != 0) {
+ inURL = OS.CFURLCreateWithString(OS.kCFAllocatorDefault, escapedStr, 0);
+ OS.CFRelease(escapedStr);
}
+ if (unescapedStr != 0) OS.CFRelease(unescapedStr);
+ OS.CFRelease(str);
}
- int length = url.length();
- char[] chars = new char[length];
- url.getChars(0, length, chars, 0);
- int sHandle = OS.CFStringCreateWithCharacters(0, chars, length);
- /* NSURL.fileURLWithPath and NSURL.URLWithString do autorelease */
- int inURL = Cocoa.objc_msgSend(Cocoa.C_NSURL, selector, sHandle);
- OS.CFRelease(sHandle);
if (inURL == 0) return false;
//request = [NSURLRequest requestWithURL:(NSURL*)inURL];
- int request= Cocoa.objc_msgSend(Cocoa.C_NSURLRequest, Cocoa.S_requestWithURL, inURL);
+ int request = Cocoa.objc_msgSend(Cocoa.C_NSURLRequest, Cocoa.S_requestWithURL, inURL);
+ OS.CFRelease(inURL);
//mainFrame = [webView mainFrame];
- int mainFrame= Cocoa.objc_msgSend(webView, Cocoa.S_mainFrame);
+ int mainFrame = Cocoa.objc_msgSend(webView, Cocoa.S_mainFrame);
//[mainFrame loadRequest:request];
Cocoa.objc_msgSend(mainFrame, Cocoa.S_loadRequest, request);