diff --git a/mozilla/camino/BookmarksService.mm b/mozilla/camino/BookmarksService.mm index 62dd3f7ead0..bba02548063 100644 --- a/mozilla/camino/BookmarksService.mm +++ b/mozilla/camino/BookmarksService.mm @@ -346,7 +346,7 @@ content->GetAttr(kNameSpaceID_None, BookmarksService::gHrefAtom, href); if (!href.IsEmpty()) { NSString* url = [NSString stringWithCharacters: href.get() length: href.Length()]; - [[[mBrowserWindowController getBrowserWrapper] getBrowserView] loadURI:[NSURL URLWithString: url] flags: NSLoadFlagsNone]; + [[[mBrowserWindowController getBrowserWrapper] getBrowserView] loadURI: url flags: NSLoadFlagsNone]; // Focus and activate our content area. [[[mBrowserWindowController getBrowserWrapper] getBrowserView] setActive: YES]; } @@ -408,8 +408,8 @@ if (isExpandable) { PRBool isOpen = content->HasAttr(kNameSpaceID_None, BookmarksService::gOpenAtom); if (isOpen) - [mOutlineView expandItem: item]; - else + [mOutlineView expandItem: item]; + else [mOutlineView collapseItem: item]; } #endif @@ -626,12 +626,11 @@ // stuff it into the string NSString* hrefStr = [NSString stringWithCharacters:hrefAttr.get() length:hrefAttr.Length()]; - NSURL* urlToLoad = [NSURL URLWithString: hrefStr]; PRBool loadInBackground; pref->GetBoolPref("browser.tabs.loadInBackground", &loadInBackground); - [mBrowserWindowController openNewTabWithURL: urlToLoad loadInBackground: loadInBackground]; + [mBrowserWindowController openNewTabWithURL: hrefStr loadInBackground: loadInBackground]; } } @@ -647,12 +646,11 @@ // stuff it into the string NSString* hrefStr = [NSString stringWithCharacters:hrefAttr.get() length:hrefAttr.Length()]; - NSURL* urlToLoad = [NSURL URLWithString: hrefStr]; nsAutoString group; [item contentNode]->GetAttr(kNameSpaceID_None, BookmarksService::gGroupAtom, group); if (group.IsEmpty()) - [mBrowserWindowController openNewWindowWithURL: urlToLoad loadInBackground: NO]; + [mBrowserWindowController openNewWindowWithURL: hrefStr loadInBackground: NO]; else { nsCOMPtr elt(do_QueryInterface([item contentNode])); [mBrowserWindowController openNewWindowWithGroup: elt loadInBackground: NO]; @@ -1387,7 +1385,7 @@ BookmarksService::OpenMenuBookmark(BrowserWindowController* aController, id aMen NSString* url = [NSString stringWithCharacters: href.get() length: href.Length()]; // Now load the URL in the window. - [aController loadURL:[NSURL URLWithString: url]]; + [aController loadURL:url]; // Focus and activate our content area. [[[aController getBrowserWrapper] getBrowserView] setActive: YES]; @@ -1595,7 +1593,7 @@ BookmarksService::OpenBookmarkGroup(id aTabView, nsIDOMElement* aFolder) else tabViewItem = [aTabView tabViewItemAtIndex: currentIndex]; - [[[tabViewItem view] getBrowserView] loadURI:[NSURL URLWithString: url] + [[[tabViewItem view] getBrowserView] loadURI: url flags: NSLoadFlagsNone]; } } diff --git a/mozilla/camino/BrowserWindowController.h b/mozilla/camino/BrowserWindowController.h index 4cb416d56f0..45a40bc8911 100644 --- a/mozilla/camino/BrowserWindowController.h +++ b/mozilla/camino/BrowserWindowController.h @@ -112,7 +112,7 @@ class nsIDOMNode; NSToolbarItem *mSidebarToolbarItem; BOOL mInitialized; - NSURL* mURL; + NSString* mURL; CHBrowserWrapper* mBrowserView; @@ -146,7 +146,7 @@ class nsIDOMNode; -(id)getTabBrowser; -(CHBrowserWrapper*)getBrowserWrapper; -- (void)loadURL:(NSURL*)aURL; +- (void)loadURL:(NSString*)aURLSpec; - (void)loadURLString:(NSString*)aStr; - (void)updateLocationFields:(NSString *)locationString; - (void)updateToolbarItems; @@ -170,7 +170,7 @@ class nsIDOMNode; - (void)saveDocument: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList; - (void)saveURL: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList - url: (NSURL*)aURL suggestedFilename: (NSString*)aFilename; + url: (NSString*)aURLSpec suggestedFilename: (NSString*)aFilename; - (void)printDocument; - (void)printPreview; @@ -184,7 +184,7 @@ class nsIDOMNode; - (void)addBookmarkExtended: (BOOL)aIsFromMenu isFolder:(BOOL)aIsFolder; - (IBAction)manageBookmarks: (id)aSender; -- (void)importBookmarks: (NSURL*)aURL; +- (void)importBookmarks: (NSString*)aURLSpec; - (IBAction)toggleSidebar:(id)aSender; - (void)newTab; @@ -200,9 +200,9 @@ class nsIDOMNode; -(void)enterModalSession; --(void)openNewWindowWithURL: (NSURL*)aURL loadInBackground: (BOOL)aLoadInBG; +-(void)openNewWindowWithURL: (NSString*)aURLSpec loadInBackground: (BOOL)aLoadInBG; -(void)openNewWindowWithGroup: (nsIDOMElement*)aFolderElement loadInBackground: (BOOL)aLoadInBG; --(void)openNewTabWithURL: (NSURL*)aURL loadInBackground: (BOOL)aLoadInBG; +-(void)openNewTabWithURL: (NSString*)aURLSpec loadInBackground: (BOOL)aLoadInBG; -(void)autosaveWindowFrame; -(void)disableAutosave; diff --git a/mozilla/camino/BrowserWindowController.mm b/mozilla/camino/BrowserWindowController.mm index 30f82a10879..e2a677e0ed7 100644 --- a/mozilla/camino/BrowserWindowController.mm +++ b/mozilla/camino/BrowserWindowController.mm @@ -282,7 +282,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; - (void)drawerDidOpen:(NSNotification *)aNotification { // XXXdwh This is temporary. - // [[mSidebarBrowserView getBrowserView] loadURI: [NSURL URLWithString: @"http://tinderbox.mozilla.org/SeaMonkey/panel.html"] flags:NSLoadFlagsNone]; + // [[mSidebarBrowserView getBrowserView] loadURI: @"http://tinderbox.mozilla.org/SeaMonkey/panel.html" flags:NSLoadFlagsNone]; // Toggle the sidebar icon. [mSidebarToolbarItem setImage:[NSImage imageNamed:@"sidebarOpened"]]; @@ -294,7 +294,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [mSidebarToolbarItem setImage:[NSImage imageNamed:@"sidebarClosed"]]; // XXXdwh ignore for now. - // [[mSidebarBrowserView getBrowserView] loadURI: [NSURL URLWithString: @"about:blank"] flags:NSLoadFlagsNone]; + // [[mSidebarBrowserView getBrowserView] loadURI: @"about:blank" flags:NSLoadFlagsNone]; if (mDrawerCachedFrame) { printf("Got here.\n"); @@ -530,7 +530,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; { [mLocationSheetWindow orderOut:self]; [NSApp endSheet:mLocationSheetWindow returnCode:1]; - [self loadURL:[NSURL URLWithString:[mLocationSheetURLField stringValue]]]; + [self loadURL:[mLocationSheetURLField stringValue]]; // Focus and activate our content area. [[mBrowserView getBrowserView] setActive: YES]; @@ -569,7 +569,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [mSidebarTabView selectFirstTabViewItem:self]; } -- (void)importBookmarks: (NSURL*)aURL +- (void)importBookmarks: (NSString*)aURLSpec { // Open the bookmarks sidebar. [self manageBookmarks: self]; @@ -579,7 +579,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [newView setFrame: NSZeroRect]; [newView setIsBookmarksImport: YES]; [[[self window] contentView] addSubview: newView]; - [[newView getBrowserView] loadURI:aURL flags:NSLoadFlagsNone]; + [[newView getBrowserView] loadURI:aURLSpec flags:NSLoadFlagsNone]; } - (IBAction)goToLocationFromToolbarURLField:(id)sender @@ -587,7 +587,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; // trim off any whitespace around url NSMutableString *theURL = [[NSMutableString alloc] initWithString:[sender stringValue]]; CFStringTrimWhitespace((CFMutableStringRef)theURL); - [self loadURL:[NSURL URLWithString:theURL]]; + [self loadURL:theURL]; [theURL release]; // Focus and activate our content area. @@ -600,22 +600,21 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; } - (void)saveURL: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList - url: (NSURL*)aURL suggestedFilename: (NSString*)aFilename + url: (NSString*)aURLSpec suggestedFilename: (NSString*)aFilename { [[mBrowserView getBrowserView] saveURL: aFilterView filterList: aFilterList - url: aURL suggestedFilename: aFilename]; + url: aURLSpec suggestedFilename: aFilename]; } - (IBAction)viewSource:(id)aSender { NSString* urlStr = [[mBrowserView getBrowserView] getFocusedURLString]; NSString* viewSource = [@"view-source:" stringByAppendingString: urlStr]; - NSURL* urlToLoad = [NSURL URLWithString: viewSource]; PRBool loadInBackground; nsCOMPtr pref(do_GetService("@mozilla.org/preferences-service;1")); pref->GetBoolPref("browser.tabs.loadInBackground", &loadInBackground); - [self openNewTabWithURL: urlToLoad loadInBackground: loadInBackground]; + [self openNewTabWithURL: urlStr loadInBackground: loadInBackground]; } - (void)printDocument @@ -631,7 +630,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; - (void)performSearch { // XXX go to the user's preferred search engine. - [[mBrowserView getBrowserView] loadURI:[NSURL URLWithString: @"http://dmoz.org/"] flags:NSLoadFlagsNone]; + [[mBrowserView getBrowserView] loadURI: @"http://dmoz.org/" flags:NSLoadFlagsNone]; } @@ -754,7 +753,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; - (IBAction)home:(id)aSender { - [[mBrowserView getBrowserView] loadURI:[NSURL URLWithString:[[CHPreferenceManager sharedInstance] homePage:NO]] flags:NSLoadFlagsNone]; + [[mBrowserView getBrowserView] loadURI:[[CHPreferenceManager sharedInstance] homePage:NO] flags:NSLoadFlagsNone]; } - (IBAction)toggleSidebar:(id)aSender @@ -775,17 +774,17 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; -(void)loadURLString:(NSString*)aStr { - [self loadURL:[NSURL URLWithString:aStr]]; + [self loadURL: aStr]; } --(void)loadURL:(NSURL*)aURL +-(void)loadURL:(NSString*)aURLSpec { if (mInitialized) { - [[mBrowserView getBrowserView] loadURI:aURL flags:NSLoadFlagsNone]; + [[mBrowserView getBrowserView] loadURI:aURLSpec flags:NSLoadFlagsNone]; } else { - mURL = aURL; + mURL = aURLSpec; [mURL retain]; } } @@ -818,7 +817,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [newTab setView: newView]; [mTabBrowser addTabViewItem: newTab]; - [[newView getBrowserView] loadURI:[NSURL URLWithString:@"about:blank"] flags:NSLoadFlagsNone]; + [[newView getBrowserView] loadURI: @"about:blank" flags:NSLoadFlagsNone]; [mTabBrowser selectLastTabViewItem: self]; @@ -880,13 +879,13 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; return mBrowserView; } --(void)openNewWindowWithURL: (NSURL*)aURL loadInBackground: (BOOL)aLoadInBG +-(void)openNewWindowWithURL: (NSString*)aURLSpec loadInBackground: (BOOL)aLoadInBG { // Autosave our dimensions before we open a new window. That ensures the size ends up matching. [self autosaveWindowFrame]; BrowserWindowController* browser = [[BrowserWindowController alloc] initWithWindowNibName: @"BrowserWindow"]; - [browser loadURL: aURL]; + [browser loadURL: aURLSpec]; if (aLoadInBG) [[browser window] orderWindow: NSWindowBelow relativeTo: [[self window] windowNumber]]; else { @@ -915,7 +914,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [mSidebarBookmarksDataSource openBookmarkGroup: tabBrowser groupElement: aFolderElement]; } --(void)openNewTabWithURL: (NSURL*)aURL loadInBackground: (BOOL)aLoadInBG +-(void)openNewTabWithURL: (NSString*)aURLSpec loadInBackground: (BOOL)aLoadInBG { NSTabViewItem* newTab = [[[NSTabViewItem alloc] initWithIdentifier: nil] autorelease]; @@ -929,7 +928,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [newTab setLabel: @"Loading..."]; [newTab setView: newView]; - [[newView getBrowserView] loadURI:aURL flags:NSLoadFlagsNone]; + [[newView getBrowserView] loadURI:aURLSpec flags:NSLoadFlagsNone]; if (!aLoadInBG) { [mTabBrowser selectTabViewItem: newTab]; @@ -1114,15 +1113,14 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; return; // Something bad happened if we can't get prefs. NSString* hrefStr = [NSString stringWithCharacters: href.get() length:nsCRT::strlen(href.get())]; - NSURL* urlToLoad = [NSURL URLWithString: hrefStr]; PRBool loadInBackground; pref->GetBoolPref("browser.tabs.loadInBackground", &loadInBackground); if (aUseWindow) - [self openNewWindowWithURL: urlToLoad loadInBackground: loadInBackground]; + [self openNewWindowWithURL: hrefStr loadInBackground: loadInBackground]; else - [self openNewTabWithURL: urlToLoad loadInBackground: loadInBackground]; + [self openNewTabWithURL: hrefStr loadInBackground: loadInBackground]; } - (IBAction)savePageAs:(id)aSender @@ -1142,14 +1140,13 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; return; NSString* hrefStr = [NSString stringWithCharacters: href.get() length:nsCRT::strlen(href.get())]; - NSURL* urlToSave = [NSURL URLWithString: hrefStr]; // The user wants to save this link. nsAutoString text; CHGeckoUtils::GatherTextUnder(mContextMenuNode, text); [self saveURL: nil filterList: nil - url: urlToSave suggestedFilename: [NSString stringWithCharacters: text.get() + url: hrefStr suggestedFilename: [NSString stringWithCharacters: text.get() length:nsCRT::strlen(text.get())]]; } @@ -1163,10 +1160,9 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; imgElement->GetSrc(url); NSString* hrefStr = [NSString stringWithCharacters: url.get() length:nsCRT::strlen(url.get())]; - NSURL* urlToSave = [NSURL URLWithString: hrefStr]; [self saveURL: nil filterList: nil - url: urlToSave suggestedFilename: [NSString stringWithCharacters: text.get() + url: hrefStr suggestedFilename: [NSString stringWithCharacters: text.get() length:nsCRT::strlen(text.get())]]; } } @@ -1194,9 +1190,8 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; imgElement->GetSrc(url); NSString* urlStr = [NSString stringWithCharacters: url.get() length:nsCRT::strlen(url.get())]; - NSURL* urlToView = [NSURL URLWithString: urlStr]; - [self loadURL: urlToView]; + [self loadURL: urlStr]; // Focus and activate our content area. [[mBrowserView getBrowserView] setActive: YES]; diff --git a/mozilla/camino/CHBookmarksButton.mm b/mozilla/camino/CHBookmarksButton.mm index 674ce103de6..bb0f10b4139 100644 --- a/mozilla/camino/CHBookmarksButton.mm +++ b/mozilla/camino/CHBookmarksButton.mm @@ -63,7 +63,7 @@ NSString* url = [NSString stringWithCString: cref.get()]; // Now load the URL in the window. - [[[self window] windowController] loadURL:[NSURL URLWithString: url]]; + [[[self window] windowController] loadURL: url]; // Focus and activate our content area. [[[[[self window] windowController] getBrowserWrapper] getBrowserView] setActive: YES]; diff --git a/mozilla/camino/CHBrowserView.h b/mozilla/camino/CHBrowserView.h index 4e3ba1374ac..e5c8ff5866a 100644 --- a/mozilla/camino/CHBrowserView.h +++ b/mozilla/camino/CHBrowserView.h @@ -63,7 +63,7 @@ class nsIDragHelperService; // in. If the total number of bytes expected is unknown, // maxBytes is -1. - (void)onProgressChange:(int)currentBytes outOf:(int)maxBytes; -- (void)onLocationChange:(NSURL*)url; +- (void)onLocationChange:(NSString*)urlSpec; - (void)onStatusChange:(NSString*)aMessage; - (void)onSecurityStateChange:(unsigned long)newState; // Called when a context menu should be shown. @@ -126,7 +126,7 @@ enum { - (nsIDOMWindow*)getContentWindow; // nsIWebNavigation methods -- (void)loadURI:(NSURL *)url flags:(unsigned int)flags; +- (void)loadURI:(NSString *)urlSpec flags:(unsigned int)flags; - (void)reload:(unsigned int)flags; - (BOOL)canGoBack; - (BOOL)canGoForward; @@ -134,11 +134,11 @@ enum { - (void)goForward; - (void)gotoIndex:(int)index; - (void)stop:(unsigned int)flags; -- (NSURL*)getCurrentURI; +- (NSString*)getCurrentURI; - (void)saveDocument: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList; - (void)saveURL: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList - url: (NSURL*)aURL suggestedFilename: (NSString*)aFilename; + url: (NSString*)aURLSpec suggestedFilename: (NSString*)aFilename; - (void)printDocument; diff --git a/mozilla/camino/CHBrowserView.mm b/mozilla/camino/CHBrowserView.mm index f18c106b708..66726b33493 100644 --- a/mozilla/camino/CHBrowserView.mm +++ b/mozilla/camino/CHBrowserView.mm @@ -608,12 +608,11 @@ nsCocoaBrowserListener::OnLocationChange(nsIWebProgress *aWebProgress, nsIReques nsCAutoString spec; location->GetSpec(spec); NSString* str = [NSString stringWithCString:spec.get()]; - NSURL* url = [NSURL URLWithString:str]; NSEnumerator* enumerator = [mListeners objectEnumerator]; id obj; while ((obj = [enumerator nextObject])) - [obj onLocationChange:url]; + [obj onLocationChange:str]; return NS_OK; } @@ -1030,14 +1029,13 @@ nsHeaderSniffer::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aReq return window; } -- (void)loadURI:(NSURL *)url flags:(unsigned int)flags +- (void)loadURI:(NSString *)urlSpec flags:(unsigned int)flags { nsCOMPtr nav = do_QueryInterface(_webBrowser); - NSString* spec = [url absoluteString]; - int length = [spec length]; + int length = [urlSpec length]; PRUnichar* specStr = nsMemory::Alloc((length+1) * sizeof(PRUnichar)); - [spec getCharacters:specStr]; + [urlSpec getCharacters:specStr]; specStr[length] = PRUnichar(0); @@ -1137,7 +1135,8 @@ nsHeaderSniffer::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aReq } } -- (NSURL*)getCurrentURI +// XXXbryner This isn't used anywhere. how is it different from getCurrentURLSpec? +- (NSString*)getCurrentURI { nsCOMPtr uri; nsCOMPtr nav = do_QueryInterface(_webBrowser); @@ -1152,9 +1151,8 @@ nsHeaderSniffer::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aReq const char* cstr = spec.get(); NSString* str = [NSString stringWithCString:cstr]; - NSURL* url = [NSURL URLWithString:str]; - return url; + return str; } - (nsCocoaBrowserListener*)getCocoaBrowserListener @@ -1280,10 +1278,10 @@ nsHeaderSniffer::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aReq } - (void)saveURL: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList - url: (NSURL*)aURL suggestedFilename: (NSString*)aFilename + url: (NSString*)aURLSpec suggestedFilename: (NSString*)aFilename { nsCOMPtr url; - nsresult rv = NS_NewURI(getter_AddRefs(url), [[aURL absoluteString] cString]); + nsresult rv = NS_NewURI(getter_AddRefs(url), [aURLSpec cString]); if (NS_FAILED(rv)) return; diff --git a/mozilla/camino/CHBrowserWrapper.h b/mozilla/camino/CHBrowserWrapper.h index 908484bf98b..af68ba1cd91 100644 --- a/mozilla/camino/CHBrowserWrapper.h +++ b/mozilla/camino/CHBrowserWrapper.h @@ -95,7 +95,7 @@ - (void)onLoadingStarted; - (void)onLoadingCompleted:(BOOL)succeeded; - (void)onProgressChange:(int)currentBytes outOf:(int)maxBytes; -- (void)onLocationChange:(NSURL*)url; +- (void)onLocationChange:(NSString*)urlSpec; - (void)onStatusChange:(NSString*)aMessage; - (void)onSecurityStateChange:(unsigned long)newState; - (void)onShowTooltip:(NSPoint)where withText:(NSString*)text; diff --git a/mozilla/camino/CHBrowserWrapper.mm b/mozilla/camino/CHBrowserWrapper.mm index 7a28aa05677..4ccde827bcd 100644 --- a/mozilla/camino/CHBrowserWrapper.mm +++ b/mozilla/camino/CHBrowserWrapper.mm @@ -84,7 +84,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; - (IBAction)load:(id)sender { - [mBrowserView loadURI:[NSURL URLWithString:[urlbar stringValue]] flags:NSLoadFlagsNone]; + [mBrowserView loadURI:[urlbar stringValue] flags:NSLoadFlagsNone]; } -(void)disconnectView @@ -292,12 +292,10 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; } } -- (void)onLocationChange:(NSURL*)url +- (void)onLocationChange:(NSString*)urlSpec { - if ( mIsPrimary ) { - NSString* spec = [url absoluteString]; - [mWindowController updateLocationFields:spec]; - } + if (mIsPrimary) + [mWindowController updateLocationFields:urlSpec]; } - (void)onStatusChange:(NSString*)aStatusString diff --git a/mozilla/camino/CHExtendedTabView.mm b/mozilla/camino/CHExtendedTabView.mm index 85f6230c6f6..e1eb779d960 100644 --- a/mozilla/camino/CHExtendedTabView.mm +++ b/mozilla/camino/CHExtendedTabView.mm @@ -174,10 +174,10 @@ BookmarksService::OpenBookmarkGroup(self, bookmarkElt); } else { if (overTabViewItem) { - [[[overTabViewItem view] getBrowserView] loadURI:[NSURL URLWithString: url] + [[[overTabViewItem view] getBrowserView] loadURI: url flags: NSLoadFlagsNone]; } else if (overContentArea) { - [[[[self selectedTabViewItem] view] getBrowserView] loadURI:[NSURL URLWithString: url] + [[[[self selectedTabViewItem] view] getBrowserView] loadURI: url flags: NSLoadFlagsNone]; } else [self addTabForURL:url]; @@ -188,7 +188,7 @@ NSDictionary* data = [[sender draggingPasteboard] propertyListForType: @"MozURLType"]; if (overTabViewItem || overContentArea) { - [[[overTabViewItem view] getBrowserView] loadURI:[NSURL URLWithString: [data objectForKey:@"url"]] + [[[overTabViewItem view] getBrowserView] loadURI:[data objectForKey:@"url"] flags: NSLoadFlagsNone]; } else [self addTabForURL:[data objectForKey:@"url"]]; @@ -209,7 +209,7 @@ [tabViewItem setView: newView]; [self addTabViewItem: tabViewItem]; - [[[tabViewItem view] getBrowserView] loadURI:[NSURL URLWithString: aURL] + [[[tabViewItem view] getBrowserView] loadURI: aURL flags: NSLoadFlagsNone]; } diff --git a/mozilla/camino/ContentClickListener.mm b/mozilla/camino/ContentClickListener.mm index 9cf03f715ed..2f3ff0a6fd1 100644 --- a/mozilla/camino/ContentClickListener.mm +++ b/mozilla/camino/ContentClickListener.mm @@ -62,6 +62,9 @@ #include "nsIFrame.h" #include "nsIView.h" #include "nsIWidget.h" +#include "nsIURI.h" +#include "nsIProtocolHandler.h" +#include "nsNetUtil.h" // Common helper routines (also used by the context menu code) #include "CHGeckoUtils.h" @@ -277,22 +280,25 @@ ContentClickListener::MouseClick(nsIDOMEvent* aEvent) mouseEvent->GetAltKey(&altKey); NSString* hrefStr = [NSString stringWithCharacters: href.get() length:nsCRT::strlen(href.get())]; - NSURL* linkURL = [NSURL URLWithString: hrefStr]; // Hack to determine specific protocols handled by Chimera in the frontend // until I can determine why the general unknown protocol handler handoff // between Necko and uriloader isn't happening. - if (([[linkURL scheme] isEqualToString:@"http"]) || - ([[linkURL scheme] isEqualToString:@"https"]) || - ([[linkURL scheme] isEqualToString:@"ftp"]) || - ([[linkURL scheme] isEqualToString:@"about"]) || - ([[linkURL scheme] isEqualToString:@"file"]) || - ([[linkURL scheme] isEqualToString:@"data"]) || - ([[linkURL scheme] isEqualToString:@"javascript"])) - { + nsCOMPtr uri; + NS_NewURI(getter_AddRefs(uri), href); + nsCAutoString scheme; + uri->GetScheme(scheme); + + nsCAutoString contractId(NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX); + contractId.Append(scheme); + + nsCOMPtr handler = do_GetService(contractId.get()); + if (handler) { // Fall through and do whatever we'd normally do with this kind of URL - } else - [[NSWorkspace sharedWorkspace] openURL:linkURL]; + } else { + NSString* escapedString = (NSString*) CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef) hrefStr, NULL, NULL, kCFStringEncodingUTF8); + [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString: escapedString]]; + } if ((metaKey && button == 0) || button == 1) { // The command key is down or we got a middle click. Open the link in a new window or tab. @@ -303,9 +309,9 @@ ContentClickListener::MouseClick(nsIDOMEvent* aEvent) if (shiftKey) loadInBackground = !loadInBackground; if (useTab) - [mBrowserController openNewTabWithURL: linkURL loadInBackground: loadInBackground]; + [mBrowserController openNewTabWithURL: hrefStr loadInBackground: loadInBackground]; else - [mBrowserController openNewWindowWithURL: linkURL loadInBackground: loadInBackground]; + [mBrowserController openNewWindowWithURL: hrefStr loadInBackground: loadInBackground]; } else if (altKey) { // The user wants to save this link. @@ -313,7 +319,7 @@ ContentClickListener::MouseClick(nsIDOMEvent* aEvent) CHGeckoUtils::GatherTextUnder(content, text); [mBrowserController saveURL: nil filterList: nil - url: linkURL suggestedFilename: [NSString stringWithCharacters: text.get() + url: hrefStr suggestedFilename: [NSString stringWithCharacters: text.get() length: nsCRT::strlen(text.get())]]; } diff --git a/mozilla/camino/MainController.h b/mozilla/camino/MainController.h index 2b4cd00fa78..4793ae6929c 100644 --- a/mozilla/camino/MainController.h +++ b/mozilla/camino/MainController.h @@ -112,8 +112,7 @@ class BookmarksService; -(IBAction) newTab:(id)aSender; -(IBAction) closeTab:(id)aSender; --(BrowserWindowController*)openBrowserWindowWithURLString: (NSString*)aURL; --(BrowserWindowController*)openBrowserWindowWithURL: (NSURL*)aURL; +-(BrowserWindowController*)openBrowserWindowWithURL: (NSString*)aURL; - (MVPreferencesController *)preferencesController; - (void)displayPreferencesWindow:sender; diff --git a/mozilla/camino/MainController.mm b/mozilla/camino/MainController.mm index da848108eda..73c2c95344b 100644 --- a/mozilla/camino/MainController.mm +++ b/mozilla/camino/MainController.mm @@ -146,7 +146,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; // Now open the new window. NSString* homePage = [mPreferenceManager homePage:YES]; - BrowserWindowController* controller = [self openBrowserWindowWithURLString:homePage]; + BrowserWindowController* controller = [self openBrowserWindowWithURL:homePage]; if ([homePage isEqualToString: @"about:blank"]) [controller focusURLBar]; else @@ -194,11 +194,11 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; // ---------------------- NSWindow* mainWindow = [mApplication mainWindow]; if (mainWindow) { - [[mainWindow windowController] loadURL: url]; + [[mainWindow windowController] loadURL:[url absoluteString]]; [[[[mainWindow windowController] getBrowserWrapper] getBrowserView] setActive: YES]; } else - [self openBrowserWindowWithURL: url]; + [self openBrowserWindowWithURL:[url absoluteString]]; } } @@ -206,7 +206,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; { NSWindow* mainWindow = [mApplication mainWindow]; if (!mainWindow) { - [self openBrowserWindowWithURLString: @"about:blank"]; + [self openBrowserWindowWithURL: @"about:blank"]; mainWindow = [mApplication mainWindow]; } @@ -306,12 +306,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; [[[mApplication mainWindow] windowController] home: aSender]; } --(BrowserWindowController*)openBrowserWindowWithURLString: (NSString*)aURL -{ - return [self openBrowserWindowWithURL: [NSURL URLWithString:aURL]]; -} - --(BrowserWindowController*)openBrowserWindowWithURL: (NSURL*)aURL +-(BrowserWindowController*)openBrowserWindowWithURL: (NSString*)aURL { BrowserWindowController* browser = [[BrowserWindowController alloc] initWithWindowNibName: @"BrowserWindow"]; [browser loadURL: aURL]; @@ -365,7 +360,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; window = [mApplication mainWindow]; } - [[window windowController] importBookmarks: url]; + [[window windowController] importBookmarks: [url absoluteString]]; } } @@ -387,7 +382,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; { NSWindow* mainWind = [mApplication mainWindow]; if (!mainWind) { - [self openBrowserWindowWithURLString: @"about:blank"]; + [self openBrowserWindowWithURL: @"about:blank"]; mainWind = [mApplication mainWindow]; } @@ -398,7 +393,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; { NSWindow* mainWindow = [mApplication mainWindow]; if (!mainWindow) { - [self openBrowserWindowWithURLString: @"about:blank"]; + [self openBrowserWindowWithURL: @"about:blank"]; mainWindow = [mApplication mainWindow]; } @@ -428,9 +423,9 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; NSWindow* mainWindow = [mApplication mainWindow]; if (mainWindow) { - [[mainWindow windowController] loadURL:[NSURL fileURLWithPath:filename]]; + [[mainWindow windowController] loadURL:[[NSURL fileURLWithPath:filename] absoluteString]]; } else { - [self openBrowserWindowWithURL:[NSURL fileURLWithPath:filename]]; + [self openBrowserWindowWithURL:[[NSURL fileURLWithPath:filename] absoluteString]]; } return YES; @@ -614,7 +609,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; [urlString appendString:tmpString]; } - [self openBrowserWindowWithURLString:urlString]; + [self openBrowserWindowWithURL:urlString]; } @end diff --git a/mozilla/camino/src/application/MainController.h b/mozilla/camino/src/application/MainController.h index 2b4cd00fa78..4793ae6929c 100644 --- a/mozilla/camino/src/application/MainController.h +++ b/mozilla/camino/src/application/MainController.h @@ -112,8 +112,7 @@ class BookmarksService; -(IBAction) newTab:(id)aSender; -(IBAction) closeTab:(id)aSender; --(BrowserWindowController*)openBrowserWindowWithURLString: (NSString*)aURL; --(BrowserWindowController*)openBrowserWindowWithURL: (NSURL*)aURL; +-(BrowserWindowController*)openBrowserWindowWithURL: (NSString*)aURL; - (MVPreferencesController *)preferencesController; - (void)displayPreferencesWindow:sender; diff --git a/mozilla/camino/src/application/MainController.mm b/mozilla/camino/src/application/MainController.mm index da848108eda..73c2c95344b 100644 --- a/mozilla/camino/src/application/MainController.mm +++ b/mozilla/camino/src/application/MainController.mm @@ -146,7 +146,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; // Now open the new window. NSString* homePage = [mPreferenceManager homePage:YES]; - BrowserWindowController* controller = [self openBrowserWindowWithURLString:homePage]; + BrowserWindowController* controller = [self openBrowserWindowWithURL:homePage]; if ([homePage isEqualToString: @"about:blank"]) [controller focusURLBar]; else @@ -194,11 +194,11 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; // ---------------------- NSWindow* mainWindow = [mApplication mainWindow]; if (mainWindow) { - [[mainWindow windowController] loadURL: url]; + [[mainWindow windowController] loadURL:[url absoluteString]]; [[[[mainWindow windowController] getBrowserWrapper] getBrowserView] setActive: YES]; } else - [self openBrowserWindowWithURL: url]; + [self openBrowserWindowWithURL:[url absoluteString]]; } } @@ -206,7 +206,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; { NSWindow* mainWindow = [mApplication mainWindow]; if (!mainWindow) { - [self openBrowserWindowWithURLString: @"about:blank"]; + [self openBrowserWindowWithURL: @"about:blank"]; mainWindow = [mApplication mainWindow]; } @@ -306,12 +306,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; [[[mApplication mainWindow] windowController] home: aSender]; } --(BrowserWindowController*)openBrowserWindowWithURLString: (NSString*)aURL -{ - return [self openBrowserWindowWithURL: [NSURL URLWithString:aURL]]; -} - --(BrowserWindowController*)openBrowserWindowWithURL: (NSURL*)aURL +-(BrowserWindowController*)openBrowserWindowWithURL: (NSString*)aURL { BrowserWindowController* browser = [[BrowserWindowController alloc] initWithWindowNibName: @"BrowserWindow"]; [browser loadURL: aURL]; @@ -365,7 +360,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; window = [mApplication mainWindow]; } - [[window windowController] importBookmarks: url]; + [[window windowController] importBookmarks: [url absoluteString]]; } } @@ -387,7 +382,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; { NSWindow* mainWind = [mApplication mainWindow]; if (!mainWind) { - [self openBrowserWindowWithURLString: @"about:blank"]; + [self openBrowserWindowWithURL: @"about:blank"]; mainWind = [mApplication mainWindow]; } @@ -398,7 +393,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; { NSWindow* mainWindow = [mApplication mainWindow]; if (!mainWindow) { - [self openBrowserWindowWithURLString: @"about:blank"]; + [self openBrowserWindowWithURL: @"about:blank"]; mainWindow = [mApplication mainWindow]; } @@ -428,9 +423,9 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; NSWindow* mainWindow = [mApplication mainWindow]; if (mainWindow) { - [[mainWindow windowController] loadURL:[NSURL fileURLWithPath:filename]]; + [[mainWindow windowController] loadURL:[[NSURL fileURLWithPath:filename] absoluteString]]; } else { - [self openBrowserWindowWithURL:[NSURL fileURLWithPath:filename]]; + [self openBrowserWindowWithURL:[[NSURL fileURLWithPath:filename] absoluteString]]; } return YES; @@ -614,7 +609,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; [urlString appendString:tmpString]; } - [self openBrowserWindowWithURLString:urlString]; + [self openBrowserWindowWithURL:urlString]; } @end diff --git a/mozilla/camino/src/bookmarks/BookmarksButton.mm b/mozilla/camino/src/bookmarks/BookmarksButton.mm index 674ce103de6..bb0f10b4139 100644 --- a/mozilla/camino/src/bookmarks/BookmarksButton.mm +++ b/mozilla/camino/src/bookmarks/BookmarksButton.mm @@ -63,7 +63,7 @@ NSString* url = [NSString stringWithCString: cref.get()]; // Now load the URL in the window. - [[[self window] windowController] loadURL:[NSURL URLWithString: url]]; + [[[self window] windowController] loadURL: url]; // Focus and activate our content area. [[[[[self window] windowController] getBrowserWrapper] getBrowserView] setActive: YES]; diff --git a/mozilla/camino/src/bookmarks/BookmarksService.mm b/mozilla/camino/src/bookmarks/BookmarksService.mm index 62dd3f7ead0..bba02548063 100644 --- a/mozilla/camino/src/bookmarks/BookmarksService.mm +++ b/mozilla/camino/src/bookmarks/BookmarksService.mm @@ -346,7 +346,7 @@ content->GetAttr(kNameSpaceID_None, BookmarksService::gHrefAtom, href); if (!href.IsEmpty()) { NSString* url = [NSString stringWithCharacters: href.get() length: href.Length()]; - [[[mBrowserWindowController getBrowserWrapper] getBrowserView] loadURI:[NSURL URLWithString: url] flags: NSLoadFlagsNone]; + [[[mBrowserWindowController getBrowserWrapper] getBrowserView] loadURI: url flags: NSLoadFlagsNone]; // Focus and activate our content area. [[[mBrowserWindowController getBrowserWrapper] getBrowserView] setActive: YES]; } @@ -408,8 +408,8 @@ if (isExpandable) { PRBool isOpen = content->HasAttr(kNameSpaceID_None, BookmarksService::gOpenAtom); if (isOpen) - [mOutlineView expandItem: item]; - else + [mOutlineView expandItem: item]; + else [mOutlineView collapseItem: item]; } #endif @@ -626,12 +626,11 @@ // stuff it into the string NSString* hrefStr = [NSString stringWithCharacters:hrefAttr.get() length:hrefAttr.Length()]; - NSURL* urlToLoad = [NSURL URLWithString: hrefStr]; PRBool loadInBackground; pref->GetBoolPref("browser.tabs.loadInBackground", &loadInBackground); - [mBrowserWindowController openNewTabWithURL: urlToLoad loadInBackground: loadInBackground]; + [mBrowserWindowController openNewTabWithURL: hrefStr loadInBackground: loadInBackground]; } } @@ -647,12 +646,11 @@ // stuff it into the string NSString* hrefStr = [NSString stringWithCharacters:hrefAttr.get() length:hrefAttr.Length()]; - NSURL* urlToLoad = [NSURL URLWithString: hrefStr]; nsAutoString group; [item contentNode]->GetAttr(kNameSpaceID_None, BookmarksService::gGroupAtom, group); if (group.IsEmpty()) - [mBrowserWindowController openNewWindowWithURL: urlToLoad loadInBackground: NO]; + [mBrowserWindowController openNewWindowWithURL: hrefStr loadInBackground: NO]; else { nsCOMPtr elt(do_QueryInterface([item contentNode])); [mBrowserWindowController openNewWindowWithGroup: elt loadInBackground: NO]; @@ -1387,7 +1385,7 @@ BookmarksService::OpenMenuBookmark(BrowserWindowController* aController, id aMen NSString* url = [NSString stringWithCharacters: href.get() length: href.Length()]; // Now load the URL in the window. - [aController loadURL:[NSURL URLWithString: url]]; + [aController loadURL:url]; // Focus and activate our content area. [[[aController getBrowserWrapper] getBrowserView] setActive: YES]; @@ -1595,7 +1593,7 @@ BookmarksService::OpenBookmarkGroup(id aTabView, nsIDOMElement* aFolder) else tabViewItem = [aTabView tabViewItemAtIndex: currentIndex]; - [[[tabViewItem view] getBrowserView] loadURI:[NSURL URLWithString: url] + [[[tabViewItem view] getBrowserView] loadURI: url flags: NSLoadFlagsNone]; } } diff --git a/mozilla/camino/src/browser/BrowserWindowController.h b/mozilla/camino/src/browser/BrowserWindowController.h index 4cb416d56f0..45a40bc8911 100644 --- a/mozilla/camino/src/browser/BrowserWindowController.h +++ b/mozilla/camino/src/browser/BrowserWindowController.h @@ -112,7 +112,7 @@ class nsIDOMNode; NSToolbarItem *mSidebarToolbarItem; BOOL mInitialized; - NSURL* mURL; + NSString* mURL; CHBrowserWrapper* mBrowserView; @@ -146,7 +146,7 @@ class nsIDOMNode; -(id)getTabBrowser; -(CHBrowserWrapper*)getBrowserWrapper; -- (void)loadURL:(NSURL*)aURL; +- (void)loadURL:(NSString*)aURLSpec; - (void)loadURLString:(NSString*)aStr; - (void)updateLocationFields:(NSString *)locationString; - (void)updateToolbarItems; @@ -170,7 +170,7 @@ class nsIDOMNode; - (void)saveDocument: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList; - (void)saveURL: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList - url: (NSURL*)aURL suggestedFilename: (NSString*)aFilename; + url: (NSString*)aURLSpec suggestedFilename: (NSString*)aFilename; - (void)printDocument; - (void)printPreview; @@ -184,7 +184,7 @@ class nsIDOMNode; - (void)addBookmarkExtended: (BOOL)aIsFromMenu isFolder:(BOOL)aIsFolder; - (IBAction)manageBookmarks: (id)aSender; -- (void)importBookmarks: (NSURL*)aURL; +- (void)importBookmarks: (NSString*)aURLSpec; - (IBAction)toggleSidebar:(id)aSender; - (void)newTab; @@ -200,9 +200,9 @@ class nsIDOMNode; -(void)enterModalSession; --(void)openNewWindowWithURL: (NSURL*)aURL loadInBackground: (BOOL)aLoadInBG; +-(void)openNewWindowWithURL: (NSString*)aURLSpec loadInBackground: (BOOL)aLoadInBG; -(void)openNewWindowWithGroup: (nsIDOMElement*)aFolderElement loadInBackground: (BOOL)aLoadInBG; --(void)openNewTabWithURL: (NSURL*)aURL loadInBackground: (BOOL)aLoadInBG; +-(void)openNewTabWithURL: (NSString*)aURLSpec loadInBackground: (BOOL)aLoadInBG; -(void)autosaveWindowFrame; -(void)disableAutosave; diff --git a/mozilla/camino/src/browser/BrowserWindowController.mm b/mozilla/camino/src/browser/BrowserWindowController.mm index 30f82a10879..e2a677e0ed7 100644 --- a/mozilla/camino/src/browser/BrowserWindowController.mm +++ b/mozilla/camino/src/browser/BrowserWindowController.mm @@ -282,7 +282,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; - (void)drawerDidOpen:(NSNotification *)aNotification { // XXXdwh This is temporary. - // [[mSidebarBrowserView getBrowserView] loadURI: [NSURL URLWithString: @"http://tinderbox.mozilla.org/SeaMonkey/panel.html"] flags:NSLoadFlagsNone]; + // [[mSidebarBrowserView getBrowserView] loadURI: @"http://tinderbox.mozilla.org/SeaMonkey/panel.html" flags:NSLoadFlagsNone]; // Toggle the sidebar icon. [mSidebarToolbarItem setImage:[NSImage imageNamed:@"sidebarOpened"]]; @@ -294,7 +294,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [mSidebarToolbarItem setImage:[NSImage imageNamed:@"sidebarClosed"]]; // XXXdwh ignore for now. - // [[mSidebarBrowserView getBrowserView] loadURI: [NSURL URLWithString: @"about:blank"] flags:NSLoadFlagsNone]; + // [[mSidebarBrowserView getBrowserView] loadURI: @"about:blank" flags:NSLoadFlagsNone]; if (mDrawerCachedFrame) { printf("Got here.\n"); @@ -530,7 +530,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; { [mLocationSheetWindow orderOut:self]; [NSApp endSheet:mLocationSheetWindow returnCode:1]; - [self loadURL:[NSURL URLWithString:[mLocationSheetURLField stringValue]]]; + [self loadURL:[mLocationSheetURLField stringValue]]; // Focus and activate our content area. [[mBrowserView getBrowserView] setActive: YES]; @@ -569,7 +569,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [mSidebarTabView selectFirstTabViewItem:self]; } -- (void)importBookmarks: (NSURL*)aURL +- (void)importBookmarks: (NSString*)aURLSpec { // Open the bookmarks sidebar. [self manageBookmarks: self]; @@ -579,7 +579,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [newView setFrame: NSZeroRect]; [newView setIsBookmarksImport: YES]; [[[self window] contentView] addSubview: newView]; - [[newView getBrowserView] loadURI:aURL flags:NSLoadFlagsNone]; + [[newView getBrowserView] loadURI:aURLSpec flags:NSLoadFlagsNone]; } - (IBAction)goToLocationFromToolbarURLField:(id)sender @@ -587,7 +587,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; // trim off any whitespace around url NSMutableString *theURL = [[NSMutableString alloc] initWithString:[sender stringValue]]; CFStringTrimWhitespace((CFMutableStringRef)theURL); - [self loadURL:[NSURL URLWithString:theURL]]; + [self loadURL:theURL]; [theURL release]; // Focus and activate our content area. @@ -600,22 +600,21 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; } - (void)saveURL: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList - url: (NSURL*)aURL suggestedFilename: (NSString*)aFilename + url: (NSString*)aURLSpec suggestedFilename: (NSString*)aFilename { [[mBrowserView getBrowserView] saveURL: aFilterView filterList: aFilterList - url: aURL suggestedFilename: aFilename]; + url: aURLSpec suggestedFilename: aFilename]; } - (IBAction)viewSource:(id)aSender { NSString* urlStr = [[mBrowserView getBrowserView] getFocusedURLString]; NSString* viewSource = [@"view-source:" stringByAppendingString: urlStr]; - NSURL* urlToLoad = [NSURL URLWithString: viewSource]; PRBool loadInBackground; nsCOMPtr pref(do_GetService("@mozilla.org/preferences-service;1")); pref->GetBoolPref("browser.tabs.loadInBackground", &loadInBackground); - [self openNewTabWithURL: urlToLoad loadInBackground: loadInBackground]; + [self openNewTabWithURL: urlStr loadInBackground: loadInBackground]; } - (void)printDocument @@ -631,7 +630,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; - (void)performSearch { // XXX go to the user's preferred search engine. - [[mBrowserView getBrowserView] loadURI:[NSURL URLWithString: @"http://dmoz.org/"] flags:NSLoadFlagsNone]; + [[mBrowserView getBrowserView] loadURI: @"http://dmoz.org/" flags:NSLoadFlagsNone]; } @@ -754,7 +753,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; - (IBAction)home:(id)aSender { - [[mBrowserView getBrowserView] loadURI:[NSURL URLWithString:[[CHPreferenceManager sharedInstance] homePage:NO]] flags:NSLoadFlagsNone]; + [[mBrowserView getBrowserView] loadURI:[[CHPreferenceManager sharedInstance] homePage:NO] flags:NSLoadFlagsNone]; } - (IBAction)toggleSidebar:(id)aSender @@ -775,17 +774,17 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; -(void)loadURLString:(NSString*)aStr { - [self loadURL:[NSURL URLWithString:aStr]]; + [self loadURL: aStr]; } --(void)loadURL:(NSURL*)aURL +-(void)loadURL:(NSString*)aURLSpec { if (mInitialized) { - [[mBrowserView getBrowserView] loadURI:aURL flags:NSLoadFlagsNone]; + [[mBrowserView getBrowserView] loadURI:aURLSpec flags:NSLoadFlagsNone]; } else { - mURL = aURL; + mURL = aURLSpec; [mURL retain]; } } @@ -818,7 +817,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [newTab setView: newView]; [mTabBrowser addTabViewItem: newTab]; - [[newView getBrowserView] loadURI:[NSURL URLWithString:@"about:blank"] flags:NSLoadFlagsNone]; + [[newView getBrowserView] loadURI: @"about:blank" flags:NSLoadFlagsNone]; [mTabBrowser selectLastTabViewItem: self]; @@ -880,13 +879,13 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; return mBrowserView; } --(void)openNewWindowWithURL: (NSURL*)aURL loadInBackground: (BOOL)aLoadInBG +-(void)openNewWindowWithURL: (NSString*)aURLSpec loadInBackground: (BOOL)aLoadInBG { // Autosave our dimensions before we open a new window. That ensures the size ends up matching. [self autosaveWindowFrame]; BrowserWindowController* browser = [[BrowserWindowController alloc] initWithWindowNibName: @"BrowserWindow"]; - [browser loadURL: aURL]; + [browser loadURL: aURLSpec]; if (aLoadInBG) [[browser window] orderWindow: NSWindowBelow relativeTo: [[self window] windowNumber]]; else { @@ -915,7 +914,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [mSidebarBookmarksDataSource openBookmarkGroup: tabBrowser groupElement: aFolderElement]; } --(void)openNewTabWithURL: (NSURL*)aURL loadInBackground: (BOOL)aLoadInBG +-(void)openNewTabWithURL: (NSString*)aURLSpec loadInBackground: (BOOL)aLoadInBG { NSTabViewItem* newTab = [[[NSTabViewItem alloc] initWithIdentifier: nil] autorelease]; @@ -929,7 +928,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [newTab setLabel: @"Loading..."]; [newTab setView: newView]; - [[newView getBrowserView] loadURI:aURL flags:NSLoadFlagsNone]; + [[newView getBrowserView] loadURI:aURLSpec flags:NSLoadFlagsNone]; if (!aLoadInBG) { [mTabBrowser selectTabViewItem: newTab]; @@ -1114,15 +1113,14 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; return; // Something bad happened if we can't get prefs. NSString* hrefStr = [NSString stringWithCharacters: href.get() length:nsCRT::strlen(href.get())]; - NSURL* urlToLoad = [NSURL URLWithString: hrefStr]; PRBool loadInBackground; pref->GetBoolPref("browser.tabs.loadInBackground", &loadInBackground); if (aUseWindow) - [self openNewWindowWithURL: urlToLoad loadInBackground: loadInBackground]; + [self openNewWindowWithURL: hrefStr loadInBackground: loadInBackground]; else - [self openNewTabWithURL: urlToLoad loadInBackground: loadInBackground]; + [self openNewTabWithURL: hrefStr loadInBackground: loadInBackground]; } - (IBAction)savePageAs:(id)aSender @@ -1142,14 +1140,13 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; return; NSString* hrefStr = [NSString stringWithCharacters: href.get() length:nsCRT::strlen(href.get())]; - NSURL* urlToSave = [NSURL URLWithString: hrefStr]; // The user wants to save this link. nsAutoString text; CHGeckoUtils::GatherTextUnder(mContextMenuNode, text); [self saveURL: nil filterList: nil - url: urlToSave suggestedFilename: [NSString stringWithCharacters: text.get() + url: hrefStr suggestedFilename: [NSString stringWithCharacters: text.get() length:nsCRT::strlen(text.get())]]; } @@ -1163,10 +1160,9 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; imgElement->GetSrc(url); NSString* hrefStr = [NSString stringWithCharacters: url.get() length:nsCRT::strlen(url.get())]; - NSURL* urlToSave = [NSURL URLWithString: hrefStr]; [self saveURL: nil filterList: nil - url: urlToSave suggestedFilename: [NSString stringWithCharacters: text.get() + url: hrefStr suggestedFilename: [NSString stringWithCharacters: text.get() length:nsCRT::strlen(text.get())]]; } } @@ -1194,9 +1190,8 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; imgElement->GetSrc(url); NSString* urlStr = [NSString stringWithCharacters: url.get() length:nsCRT::strlen(url.get())]; - NSURL* urlToView = [NSURL URLWithString: urlStr]; - [self loadURL: urlToView]; + [self loadURL: urlStr]; // Focus and activate our content area. [[mBrowserView getBrowserView] setActive: YES]; diff --git a/mozilla/camino/src/browser/BrowserWrapper.h b/mozilla/camino/src/browser/BrowserWrapper.h index 908484bf98b..af68ba1cd91 100644 --- a/mozilla/camino/src/browser/BrowserWrapper.h +++ b/mozilla/camino/src/browser/BrowserWrapper.h @@ -95,7 +95,7 @@ - (void)onLoadingStarted; - (void)onLoadingCompleted:(BOOL)succeeded; - (void)onProgressChange:(int)currentBytes outOf:(int)maxBytes; -- (void)onLocationChange:(NSURL*)url; +- (void)onLocationChange:(NSString*)urlSpec; - (void)onStatusChange:(NSString*)aMessage; - (void)onSecurityStateChange:(unsigned long)newState; - (void)onShowTooltip:(NSPoint)where withText:(NSString*)text; diff --git a/mozilla/camino/src/browser/BrowserWrapper.mm b/mozilla/camino/src/browser/BrowserWrapper.mm index 7a28aa05677..4ccde827bcd 100644 --- a/mozilla/camino/src/browser/BrowserWrapper.mm +++ b/mozilla/camino/src/browser/BrowserWrapper.mm @@ -84,7 +84,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; - (IBAction)load:(id)sender { - [mBrowserView loadURI:[NSURL URLWithString:[urlbar stringValue]] flags:NSLoadFlagsNone]; + [mBrowserView loadURI:[urlbar stringValue] flags:NSLoadFlagsNone]; } -(void)disconnectView @@ -292,12 +292,10 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; } } -- (void)onLocationChange:(NSURL*)url +- (void)onLocationChange:(NSString*)urlSpec { - if ( mIsPrimary ) { - NSString* spec = [url absoluteString]; - [mWindowController updateLocationFields:spec]; - } + if (mIsPrimary) + [mWindowController updateLocationFields:urlSpec]; } - (void)onStatusChange:(NSString*)aStatusString diff --git a/mozilla/camino/src/browser/ContentClickListener.mm b/mozilla/camino/src/browser/ContentClickListener.mm index 9cf03f715ed..2f3ff0a6fd1 100644 --- a/mozilla/camino/src/browser/ContentClickListener.mm +++ b/mozilla/camino/src/browser/ContentClickListener.mm @@ -62,6 +62,9 @@ #include "nsIFrame.h" #include "nsIView.h" #include "nsIWidget.h" +#include "nsIURI.h" +#include "nsIProtocolHandler.h" +#include "nsNetUtil.h" // Common helper routines (also used by the context menu code) #include "CHGeckoUtils.h" @@ -277,22 +280,25 @@ ContentClickListener::MouseClick(nsIDOMEvent* aEvent) mouseEvent->GetAltKey(&altKey); NSString* hrefStr = [NSString stringWithCharacters: href.get() length:nsCRT::strlen(href.get())]; - NSURL* linkURL = [NSURL URLWithString: hrefStr]; // Hack to determine specific protocols handled by Chimera in the frontend // until I can determine why the general unknown protocol handler handoff // between Necko and uriloader isn't happening. - if (([[linkURL scheme] isEqualToString:@"http"]) || - ([[linkURL scheme] isEqualToString:@"https"]) || - ([[linkURL scheme] isEqualToString:@"ftp"]) || - ([[linkURL scheme] isEqualToString:@"about"]) || - ([[linkURL scheme] isEqualToString:@"file"]) || - ([[linkURL scheme] isEqualToString:@"data"]) || - ([[linkURL scheme] isEqualToString:@"javascript"])) - { + nsCOMPtr uri; + NS_NewURI(getter_AddRefs(uri), href); + nsCAutoString scheme; + uri->GetScheme(scheme); + + nsCAutoString contractId(NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX); + contractId.Append(scheme); + + nsCOMPtr handler = do_GetService(contractId.get()); + if (handler) { // Fall through and do whatever we'd normally do with this kind of URL - } else - [[NSWorkspace sharedWorkspace] openURL:linkURL]; + } else { + NSString* escapedString = (NSString*) CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef) hrefStr, NULL, NULL, kCFStringEncodingUTF8); + [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString: escapedString]]; + } if ((metaKey && button == 0) || button == 1) { // The command key is down or we got a middle click. Open the link in a new window or tab. @@ -303,9 +309,9 @@ ContentClickListener::MouseClick(nsIDOMEvent* aEvent) if (shiftKey) loadInBackground = !loadInBackground; if (useTab) - [mBrowserController openNewTabWithURL: linkURL loadInBackground: loadInBackground]; + [mBrowserController openNewTabWithURL: hrefStr loadInBackground: loadInBackground]; else - [mBrowserController openNewWindowWithURL: linkURL loadInBackground: loadInBackground]; + [mBrowserController openNewWindowWithURL: hrefStr loadInBackground: loadInBackground]; } else if (altKey) { // The user wants to save this link. @@ -313,7 +319,7 @@ ContentClickListener::MouseClick(nsIDOMEvent* aEvent) CHGeckoUtils::GatherTextUnder(content, text); [mBrowserController saveURL: nil filterList: nil - url: linkURL suggestedFilename: [NSString stringWithCharacters: text.get() + url: hrefStr suggestedFilename: [NSString stringWithCharacters: text.get() length: nsCRT::strlen(text.get())]]; } diff --git a/mozilla/camino/src/embedding/CHBrowserView.h b/mozilla/camino/src/embedding/CHBrowserView.h index 4e3ba1374ac..e5c8ff5866a 100644 --- a/mozilla/camino/src/embedding/CHBrowserView.h +++ b/mozilla/camino/src/embedding/CHBrowserView.h @@ -63,7 +63,7 @@ class nsIDragHelperService; // in. If the total number of bytes expected is unknown, // maxBytes is -1. - (void)onProgressChange:(int)currentBytes outOf:(int)maxBytes; -- (void)onLocationChange:(NSURL*)url; +- (void)onLocationChange:(NSString*)urlSpec; - (void)onStatusChange:(NSString*)aMessage; - (void)onSecurityStateChange:(unsigned long)newState; // Called when a context menu should be shown. @@ -126,7 +126,7 @@ enum { - (nsIDOMWindow*)getContentWindow; // nsIWebNavigation methods -- (void)loadURI:(NSURL *)url flags:(unsigned int)flags; +- (void)loadURI:(NSString *)urlSpec flags:(unsigned int)flags; - (void)reload:(unsigned int)flags; - (BOOL)canGoBack; - (BOOL)canGoForward; @@ -134,11 +134,11 @@ enum { - (void)goForward; - (void)gotoIndex:(int)index; - (void)stop:(unsigned int)flags; -- (NSURL*)getCurrentURI; +- (NSString*)getCurrentURI; - (void)saveDocument: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList; - (void)saveURL: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList - url: (NSURL*)aURL suggestedFilename: (NSString*)aFilename; + url: (NSString*)aURLSpec suggestedFilename: (NSString*)aFilename; - (void)printDocument; diff --git a/mozilla/camino/src/embedding/CHBrowserView.mm b/mozilla/camino/src/embedding/CHBrowserView.mm index f18c106b708..66726b33493 100644 --- a/mozilla/camino/src/embedding/CHBrowserView.mm +++ b/mozilla/camino/src/embedding/CHBrowserView.mm @@ -608,12 +608,11 @@ nsCocoaBrowserListener::OnLocationChange(nsIWebProgress *aWebProgress, nsIReques nsCAutoString spec; location->GetSpec(spec); NSString* str = [NSString stringWithCString:spec.get()]; - NSURL* url = [NSURL URLWithString:str]; NSEnumerator* enumerator = [mListeners objectEnumerator]; id obj; while ((obj = [enumerator nextObject])) - [obj onLocationChange:url]; + [obj onLocationChange:str]; return NS_OK; } @@ -1030,14 +1029,13 @@ nsHeaderSniffer::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aReq return window; } -- (void)loadURI:(NSURL *)url flags:(unsigned int)flags +- (void)loadURI:(NSString *)urlSpec flags:(unsigned int)flags { nsCOMPtr nav = do_QueryInterface(_webBrowser); - NSString* spec = [url absoluteString]; - int length = [spec length]; + int length = [urlSpec length]; PRUnichar* specStr = nsMemory::Alloc((length+1) * sizeof(PRUnichar)); - [spec getCharacters:specStr]; + [urlSpec getCharacters:specStr]; specStr[length] = PRUnichar(0); @@ -1137,7 +1135,8 @@ nsHeaderSniffer::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aReq } } -- (NSURL*)getCurrentURI +// XXXbryner This isn't used anywhere. how is it different from getCurrentURLSpec? +- (NSString*)getCurrentURI { nsCOMPtr uri; nsCOMPtr nav = do_QueryInterface(_webBrowser); @@ -1152,9 +1151,8 @@ nsHeaderSniffer::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aReq const char* cstr = spec.get(); NSString* str = [NSString stringWithCString:cstr]; - NSURL* url = [NSURL URLWithString:str]; - return url; + return str; } - (nsCocoaBrowserListener*)getCocoaBrowserListener @@ -1280,10 +1278,10 @@ nsHeaderSniffer::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aReq } - (void)saveURL: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList - url: (NSURL*)aURL suggestedFilename: (NSString*)aFilename + url: (NSString*)aURLSpec suggestedFilename: (NSString*)aFilename { nsCOMPtr url; - nsresult rv = NS_NewURI(getter_AddRefs(url), [[aURL absoluteString] cString]); + nsresult rv = NS_NewURI(getter_AddRefs(url), [aURLSpec cString]); if (NS_FAILED(rv)) return; diff --git a/mozilla/chimera/BookmarksService.mm b/mozilla/chimera/BookmarksService.mm index 62dd3f7ead0..bba02548063 100644 --- a/mozilla/chimera/BookmarksService.mm +++ b/mozilla/chimera/BookmarksService.mm @@ -346,7 +346,7 @@ content->GetAttr(kNameSpaceID_None, BookmarksService::gHrefAtom, href); if (!href.IsEmpty()) { NSString* url = [NSString stringWithCharacters: href.get() length: href.Length()]; - [[[mBrowserWindowController getBrowserWrapper] getBrowserView] loadURI:[NSURL URLWithString: url] flags: NSLoadFlagsNone]; + [[[mBrowserWindowController getBrowserWrapper] getBrowserView] loadURI: url flags: NSLoadFlagsNone]; // Focus and activate our content area. [[[mBrowserWindowController getBrowserWrapper] getBrowserView] setActive: YES]; } @@ -408,8 +408,8 @@ if (isExpandable) { PRBool isOpen = content->HasAttr(kNameSpaceID_None, BookmarksService::gOpenAtom); if (isOpen) - [mOutlineView expandItem: item]; - else + [mOutlineView expandItem: item]; + else [mOutlineView collapseItem: item]; } #endif @@ -626,12 +626,11 @@ // stuff it into the string NSString* hrefStr = [NSString stringWithCharacters:hrefAttr.get() length:hrefAttr.Length()]; - NSURL* urlToLoad = [NSURL URLWithString: hrefStr]; PRBool loadInBackground; pref->GetBoolPref("browser.tabs.loadInBackground", &loadInBackground); - [mBrowserWindowController openNewTabWithURL: urlToLoad loadInBackground: loadInBackground]; + [mBrowserWindowController openNewTabWithURL: hrefStr loadInBackground: loadInBackground]; } } @@ -647,12 +646,11 @@ // stuff it into the string NSString* hrefStr = [NSString stringWithCharacters:hrefAttr.get() length:hrefAttr.Length()]; - NSURL* urlToLoad = [NSURL URLWithString: hrefStr]; nsAutoString group; [item contentNode]->GetAttr(kNameSpaceID_None, BookmarksService::gGroupAtom, group); if (group.IsEmpty()) - [mBrowserWindowController openNewWindowWithURL: urlToLoad loadInBackground: NO]; + [mBrowserWindowController openNewWindowWithURL: hrefStr loadInBackground: NO]; else { nsCOMPtr elt(do_QueryInterface([item contentNode])); [mBrowserWindowController openNewWindowWithGroup: elt loadInBackground: NO]; @@ -1387,7 +1385,7 @@ BookmarksService::OpenMenuBookmark(BrowserWindowController* aController, id aMen NSString* url = [NSString stringWithCharacters: href.get() length: href.Length()]; // Now load the URL in the window. - [aController loadURL:[NSURL URLWithString: url]]; + [aController loadURL:url]; // Focus and activate our content area. [[[aController getBrowserWrapper] getBrowserView] setActive: YES]; @@ -1595,7 +1593,7 @@ BookmarksService::OpenBookmarkGroup(id aTabView, nsIDOMElement* aFolder) else tabViewItem = [aTabView tabViewItemAtIndex: currentIndex]; - [[[tabViewItem view] getBrowserView] loadURI:[NSURL URLWithString: url] + [[[tabViewItem view] getBrowserView] loadURI: url flags: NSLoadFlagsNone]; } } diff --git a/mozilla/chimera/BrowserWindowController.h b/mozilla/chimera/BrowserWindowController.h index 4cb416d56f0..45a40bc8911 100644 --- a/mozilla/chimera/BrowserWindowController.h +++ b/mozilla/chimera/BrowserWindowController.h @@ -112,7 +112,7 @@ class nsIDOMNode; NSToolbarItem *mSidebarToolbarItem; BOOL mInitialized; - NSURL* mURL; + NSString* mURL; CHBrowserWrapper* mBrowserView; @@ -146,7 +146,7 @@ class nsIDOMNode; -(id)getTabBrowser; -(CHBrowserWrapper*)getBrowserWrapper; -- (void)loadURL:(NSURL*)aURL; +- (void)loadURL:(NSString*)aURLSpec; - (void)loadURLString:(NSString*)aStr; - (void)updateLocationFields:(NSString *)locationString; - (void)updateToolbarItems; @@ -170,7 +170,7 @@ class nsIDOMNode; - (void)saveDocument: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList; - (void)saveURL: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList - url: (NSURL*)aURL suggestedFilename: (NSString*)aFilename; + url: (NSString*)aURLSpec suggestedFilename: (NSString*)aFilename; - (void)printDocument; - (void)printPreview; @@ -184,7 +184,7 @@ class nsIDOMNode; - (void)addBookmarkExtended: (BOOL)aIsFromMenu isFolder:(BOOL)aIsFolder; - (IBAction)manageBookmarks: (id)aSender; -- (void)importBookmarks: (NSURL*)aURL; +- (void)importBookmarks: (NSString*)aURLSpec; - (IBAction)toggleSidebar:(id)aSender; - (void)newTab; @@ -200,9 +200,9 @@ class nsIDOMNode; -(void)enterModalSession; --(void)openNewWindowWithURL: (NSURL*)aURL loadInBackground: (BOOL)aLoadInBG; +-(void)openNewWindowWithURL: (NSString*)aURLSpec loadInBackground: (BOOL)aLoadInBG; -(void)openNewWindowWithGroup: (nsIDOMElement*)aFolderElement loadInBackground: (BOOL)aLoadInBG; --(void)openNewTabWithURL: (NSURL*)aURL loadInBackground: (BOOL)aLoadInBG; +-(void)openNewTabWithURL: (NSString*)aURLSpec loadInBackground: (BOOL)aLoadInBG; -(void)autosaveWindowFrame; -(void)disableAutosave; diff --git a/mozilla/chimera/BrowserWindowController.mm b/mozilla/chimera/BrowserWindowController.mm index 30f82a10879..e2a677e0ed7 100644 --- a/mozilla/chimera/BrowserWindowController.mm +++ b/mozilla/chimera/BrowserWindowController.mm @@ -282,7 +282,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; - (void)drawerDidOpen:(NSNotification *)aNotification { // XXXdwh This is temporary. - // [[mSidebarBrowserView getBrowserView] loadURI: [NSURL URLWithString: @"http://tinderbox.mozilla.org/SeaMonkey/panel.html"] flags:NSLoadFlagsNone]; + // [[mSidebarBrowserView getBrowserView] loadURI: @"http://tinderbox.mozilla.org/SeaMonkey/panel.html" flags:NSLoadFlagsNone]; // Toggle the sidebar icon. [mSidebarToolbarItem setImage:[NSImage imageNamed:@"sidebarOpened"]]; @@ -294,7 +294,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [mSidebarToolbarItem setImage:[NSImage imageNamed:@"sidebarClosed"]]; // XXXdwh ignore for now. - // [[mSidebarBrowserView getBrowserView] loadURI: [NSURL URLWithString: @"about:blank"] flags:NSLoadFlagsNone]; + // [[mSidebarBrowserView getBrowserView] loadURI: @"about:blank" flags:NSLoadFlagsNone]; if (mDrawerCachedFrame) { printf("Got here.\n"); @@ -530,7 +530,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; { [mLocationSheetWindow orderOut:self]; [NSApp endSheet:mLocationSheetWindow returnCode:1]; - [self loadURL:[NSURL URLWithString:[mLocationSheetURLField stringValue]]]; + [self loadURL:[mLocationSheetURLField stringValue]]; // Focus and activate our content area. [[mBrowserView getBrowserView] setActive: YES]; @@ -569,7 +569,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [mSidebarTabView selectFirstTabViewItem:self]; } -- (void)importBookmarks: (NSURL*)aURL +- (void)importBookmarks: (NSString*)aURLSpec { // Open the bookmarks sidebar. [self manageBookmarks: self]; @@ -579,7 +579,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [newView setFrame: NSZeroRect]; [newView setIsBookmarksImport: YES]; [[[self window] contentView] addSubview: newView]; - [[newView getBrowserView] loadURI:aURL flags:NSLoadFlagsNone]; + [[newView getBrowserView] loadURI:aURLSpec flags:NSLoadFlagsNone]; } - (IBAction)goToLocationFromToolbarURLField:(id)sender @@ -587,7 +587,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; // trim off any whitespace around url NSMutableString *theURL = [[NSMutableString alloc] initWithString:[sender stringValue]]; CFStringTrimWhitespace((CFMutableStringRef)theURL); - [self loadURL:[NSURL URLWithString:theURL]]; + [self loadURL:theURL]; [theURL release]; // Focus and activate our content area. @@ -600,22 +600,21 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; } - (void)saveURL: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList - url: (NSURL*)aURL suggestedFilename: (NSString*)aFilename + url: (NSString*)aURLSpec suggestedFilename: (NSString*)aFilename { [[mBrowserView getBrowserView] saveURL: aFilterView filterList: aFilterList - url: aURL suggestedFilename: aFilename]; + url: aURLSpec suggestedFilename: aFilename]; } - (IBAction)viewSource:(id)aSender { NSString* urlStr = [[mBrowserView getBrowserView] getFocusedURLString]; NSString* viewSource = [@"view-source:" stringByAppendingString: urlStr]; - NSURL* urlToLoad = [NSURL URLWithString: viewSource]; PRBool loadInBackground; nsCOMPtr pref(do_GetService("@mozilla.org/preferences-service;1")); pref->GetBoolPref("browser.tabs.loadInBackground", &loadInBackground); - [self openNewTabWithURL: urlToLoad loadInBackground: loadInBackground]; + [self openNewTabWithURL: urlStr loadInBackground: loadInBackground]; } - (void)printDocument @@ -631,7 +630,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; - (void)performSearch { // XXX go to the user's preferred search engine. - [[mBrowserView getBrowserView] loadURI:[NSURL URLWithString: @"http://dmoz.org/"] flags:NSLoadFlagsNone]; + [[mBrowserView getBrowserView] loadURI: @"http://dmoz.org/" flags:NSLoadFlagsNone]; } @@ -754,7 +753,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; - (IBAction)home:(id)aSender { - [[mBrowserView getBrowserView] loadURI:[NSURL URLWithString:[[CHPreferenceManager sharedInstance] homePage:NO]] flags:NSLoadFlagsNone]; + [[mBrowserView getBrowserView] loadURI:[[CHPreferenceManager sharedInstance] homePage:NO] flags:NSLoadFlagsNone]; } - (IBAction)toggleSidebar:(id)aSender @@ -775,17 +774,17 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; -(void)loadURLString:(NSString*)aStr { - [self loadURL:[NSURL URLWithString:aStr]]; + [self loadURL: aStr]; } --(void)loadURL:(NSURL*)aURL +-(void)loadURL:(NSString*)aURLSpec { if (mInitialized) { - [[mBrowserView getBrowserView] loadURI:aURL flags:NSLoadFlagsNone]; + [[mBrowserView getBrowserView] loadURI:aURLSpec flags:NSLoadFlagsNone]; } else { - mURL = aURL; + mURL = aURLSpec; [mURL retain]; } } @@ -818,7 +817,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [newTab setView: newView]; [mTabBrowser addTabViewItem: newTab]; - [[newView getBrowserView] loadURI:[NSURL URLWithString:@"about:blank"] flags:NSLoadFlagsNone]; + [[newView getBrowserView] loadURI: @"about:blank" flags:NSLoadFlagsNone]; [mTabBrowser selectLastTabViewItem: self]; @@ -880,13 +879,13 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; return mBrowserView; } --(void)openNewWindowWithURL: (NSURL*)aURL loadInBackground: (BOOL)aLoadInBG +-(void)openNewWindowWithURL: (NSString*)aURLSpec loadInBackground: (BOOL)aLoadInBG { // Autosave our dimensions before we open a new window. That ensures the size ends up matching. [self autosaveWindowFrame]; BrowserWindowController* browser = [[BrowserWindowController alloc] initWithWindowNibName: @"BrowserWindow"]; - [browser loadURL: aURL]; + [browser loadURL: aURLSpec]; if (aLoadInBG) [[browser window] orderWindow: NSWindowBelow relativeTo: [[self window] windowNumber]]; else { @@ -915,7 +914,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [mSidebarBookmarksDataSource openBookmarkGroup: tabBrowser groupElement: aFolderElement]; } --(void)openNewTabWithURL: (NSURL*)aURL loadInBackground: (BOOL)aLoadInBG +-(void)openNewTabWithURL: (NSString*)aURLSpec loadInBackground: (BOOL)aLoadInBG { NSTabViewItem* newTab = [[[NSTabViewItem alloc] initWithIdentifier: nil] autorelease]; @@ -929,7 +928,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [newTab setLabel: @"Loading..."]; [newTab setView: newView]; - [[newView getBrowserView] loadURI:aURL flags:NSLoadFlagsNone]; + [[newView getBrowserView] loadURI:aURLSpec flags:NSLoadFlagsNone]; if (!aLoadInBG) { [mTabBrowser selectTabViewItem: newTab]; @@ -1114,15 +1113,14 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; return; // Something bad happened if we can't get prefs. NSString* hrefStr = [NSString stringWithCharacters: href.get() length:nsCRT::strlen(href.get())]; - NSURL* urlToLoad = [NSURL URLWithString: hrefStr]; PRBool loadInBackground; pref->GetBoolPref("browser.tabs.loadInBackground", &loadInBackground); if (aUseWindow) - [self openNewWindowWithURL: urlToLoad loadInBackground: loadInBackground]; + [self openNewWindowWithURL: hrefStr loadInBackground: loadInBackground]; else - [self openNewTabWithURL: urlToLoad loadInBackground: loadInBackground]; + [self openNewTabWithURL: hrefStr loadInBackground: loadInBackground]; } - (IBAction)savePageAs:(id)aSender @@ -1142,14 +1140,13 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; return; NSString* hrefStr = [NSString stringWithCharacters: href.get() length:nsCRT::strlen(href.get())]; - NSURL* urlToSave = [NSURL URLWithString: hrefStr]; // The user wants to save this link. nsAutoString text; CHGeckoUtils::GatherTextUnder(mContextMenuNode, text); [self saveURL: nil filterList: nil - url: urlToSave suggestedFilename: [NSString stringWithCharacters: text.get() + url: hrefStr suggestedFilename: [NSString stringWithCharacters: text.get() length:nsCRT::strlen(text.get())]]; } @@ -1163,10 +1160,9 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; imgElement->GetSrc(url); NSString* hrefStr = [NSString stringWithCharacters: url.get() length:nsCRT::strlen(url.get())]; - NSURL* urlToSave = [NSURL URLWithString: hrefStr]; [self saveURL: nil filterList: nil - url: urlToSave suggestedFilename: [NSString stringWithCharacters: text.get() + url: hrefStr suggestedFilename: [NSString stringWithCharacters: text.get() length:nsCRT::strlen(text.get())]]; } } @@ -1194,9 +1190,8 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; imgElement->GetSrc(url); NSString* urlStr = [NSString stringWithCharacters: url.get() length:nsCRT::strlen(url.get())]; - NSURL* urlToView = [NSURL URLWithString: urlStr]; - [self loadURL: urlToView]; + [self loadURL: urlStr]; // Focus and activate our content area. [[mBrowserView getBrowserView] setActive: YES]; diff --git a/mozilla/chimera/CHBookmarksButton.mm b/mozilla/chimera/CHBookmarksButton.mm index 674ce103de6..bb0f10b4139 100644 --- a/mozilla/chimera/CHBookmarksButton.mm +++ b/mozilla/chimera/CHBookmarksButton.mm @@ -63,7 +63,7 @@ NSString* url = [NSString stringWithCString: cref.get()]; // Now load the URL in the window. - [[[self window] windowController] loadURL:[NSURL URLWithString: url]]; + [[[self window] windowController] loadURL: url]; // Focus and activate our content area. [[[[[self window] windowController] getBrowserWrapper] getBrowserView] setActive: YES]; diff --git a/mozilla/chimera/CHBrowserView.h b/mozilla/chimera/CHBrowserView.h index 4e3ba1374ac..e5c8ff5866a 100644 --- a/mozilla/chimera/CHBrowserView.h +++ b/mozilla/chimera/CHBrowserView.h @@ -63,7 +63,7 @@ class nsIDragHelperService; // in. If the total number of bytes expected is unknown, // maxBytes is -1. - (void)onProgressChange:(int)currentBytes outOf:(int)maxBytes; -- (void)onLocationChange:(NSURL*)url; +- (void)onLocationChange:(NSString*)urlSpec; - (void)onStatusChange:(NSString*)aMessage; - (void)onSecurityStateChange:(unsigned long)newState; // Called when a context menu should be shown. @@ -126,7 +126,7 @@ enum { - (nsIDOMWindow*)getContentWindow; // nsIWebNavigation methods -- (void)loadURI:(NSURL *)url flags:(unsigned int)flags; +- (void)loadURI:(NSString *)urlSpec flags:(unsigned int)flags; - (void)reload:(unsigned int)flags; - (BOOL)canGoBack; - (BOOL)canGoForward; @@ -134,11 +134,11 @@ enum { - (void)goForward; - (void)gotoIndex:(int)index; - (void)stop:(unsigned int)flags; -- (NSURL*)getCurrentURI; +- (NSString*)getCurrentURI; - (void)saveDocument: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList; - (void)saveURL: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList - url: (NSURL*)aURL suggestedFilename: (NSString*)aFilename; + url: (NSString*)aURLSpec suggestedFilename: (NSString*)aFilename; - (void)printDocument; diff --git a/mozilla/chimera/CHBrowserView.mm b/mozilla/chimera/CHBrowserView.mm index f18c106b708..66726b33493 100644 --- a/mozilla/chimera/CHBrowserView.mm +++ b/mozilla/chimera/CHBrowserView.mm @@ -608,12 +608,11 @@ nsCocoaBrowserListener::OnLocationChange(nsIWebProgress *aWebProgress, nsIReques nsCAutoString spec; location->GetSpec(spec); NSString* str = [NSString stringWithCString:spec.get()]; - NSURL* url = [NSURL URLWithString:str]; NSEnumerator* enumerator = [mListeners objectEnumerator]; id obj; while ((obj = [enumerator nextObject])) - [obj onLocationChange:url]; + [obj onLocationChange:str]; return NS_OK; } @@ -1030,14 +1029,13 @@ nsHeaderSniffer::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aReq return window; } -- (void)loadURI:(NSURL *)url flags:(unsigned int)flags +- (void)loadURI:(NSString *)urlSpec flags:(unsigned int)flags { nsCOMPtr nav = do_QueryInterface(_webBrowser); - NSString* spec = [url absoluteString]; - int length = [spec length]; + int length = [urlSpec length]; PRUnichar* specStr = nsMemory::Alloc((length+1) * sizeof(PRUnichar)); - [spec getCharacters:specStr]; + [urlSpec getCharacters:specStr]; specStr[length] = PRUnichar(0); @@ -1137,7 +1135,8 @@ nsHeaderSniffer::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aReq } } -- (NSURL*)getCurrentURI +// XXXbryner This isn't used anywhere. how is it different from getCurrentURLSpec? +- (NSString*)getCurrentURI { nsCOMPtr uri; nsCOMPtr nav = do_QueryInterface(_webBrowser); @@ -1152,9 +1151,8 @@ nsHeaderSniffer::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aReq const char* cstr = spec.get(); NSString* str = [NSString stringWithCString:cstr]; - NSURL* url = [NSURL URLWithString:str]; - return url; + return str; } - (nsCocoaBrowserListener*)getCocoaBrowserListener @@ -1280,10 +1278,10 @@ nsHeaderSniffer::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aReq } - (void)saveURL: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList - url: (NSURL*)aURL suggestedFilename: (NSString*)aFilename + url: (NSString*)aURLSpec suggestedFilename: (NSString*)aFilename { nsCOMPtr url; - nsresult rv = NS_NewURI(getter_AddRefs(url), [[aURL absoluteString] cString]); + nsresult rv = NS_NewURI(getter_AddRefs(url), [aURLSpec cString]); if (NS_FAILED(rv)) return; diff --git a/mozilla/chimera/CHBrowserWrapper.h b/mozilla/chimera/CHBrowserWrapper.h index 908484bf98b..af68ba1cd91 100644 --- a/mozilla/chimera/CHBrowserWrapper.h +++ b/mozilla/chimera/CHBrowserWrapper.h @@ -95,7 +95,7 @@ - (void)onLoadingStarted; - (void)onLoadingCompleted:(BOOL)succeeded; - (void)onProgressChange:(int)currentBytes outOf:(int)maxBytes; -- (void)onLocationChange:(NSURL*)url; +- (void)onLocationChange:(NSString*)urlSpec; - (void)onStatusChange:(NSString*)aMessage; - (void)onSecurityStateChange:(unsigned long)newState; - (void)onShowTooltip:(NSPoint)where withText:(NSString*)text; diff --git a/mozilla/chimera/CHBrowserWrapper.mm b/mozilla/chimera/CHBrowserWrapper.mm index 7a28aa05677..4ccde827bcd 100644 --- a/mozilla/chimera/CHBrowserWrapper.mm +++ b/mozilla/chimera/CHBrowserWrapper.mm @@ -84,7 +84,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; - (IBAction)load:(id)sender { - [mBrowserView loadURI:[NSURL URLWithString:[urlbar stringValue]] flags:NSLoadFlagsNone]; + [mBrowserView loadURI:[urlbar stringValue] flags:NSLoadFlagsNone]; } -(void)disconnectView @@ -292,12 +292,10 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; } } -- (void)onLocationChange:(NSURL*)url +- (void)onLocationChange:(NSString*)urlSpec { - if ( mIsPrimary ) { - NSString* spec = [url absoluteString]; - [mWindowController updateLocationFields:spec]; - } + if (mIsPrimary) + [mWindowController updateLocationFields:urlSpec]; } - (void)onStatusChange:(NSString*)aStatusString diff --git a/mozilla/chimera/CHExtendedTabView.mm b/mozilla/chimera/CHExtendedTabView.mm index 85f6230c6f6..e1eb779d960 100644 --- a/mozilla/chimera/CHExtendedTabView.mm +++ b/mozilla/chimera/CHExtendedTabView.mm @@ -174,10 +174,10 @@ BookmarksService::OpenBookmarkGroup(self, bookmarkElt); } else { if (overTabViewItem) { - [[[overTabViewItem view] getBrowserView] loadURI:[NSURL URLWithString: url] + [[[overTabViewItem view] getBrowserView] loadURI: url flags: NSLoadFlagsNone]; } else if (overContentArea) { - [[[[self selectedTabViewItem] view] getBrowserView] loadURI:[NSURL URLWithString: url] + [[[[self selectedTabViewItem] view] getBrowserView] loadURI: url flags: NSLoadFlagsNone]; } else [self addTabForURL:url]; @@ -188,7 +188,7 @@ NSDictionary* data = [[sender draggingPasteboard] propertyListForType: @"MozURLType"]; if (overTabViewItem || overContentArea) { - [[[overTabViewItem view] getBrowserView] loadURI:[NSURL URLWithString: [data objectForKey:@"url"]] + [[[overTabViewItem view] getBrowserView] loadURI:[data objectForKey:@"url"] flags: NSLoadFlagsNone]; } else [self addTabForURL:[data objectForKey:@"url"]]; @@ -209,7 +209,7 @@ [tabViewItem setView: newView]; [self addTabViewItem: tabViewItem]; - [[[tabViewItem view] getBrowserView] loadURI:[NSURL URLWithString: aURL] + [[[tabViewItem view] getBrowserView] loadURI: aURL flags: NSLoadFlagsNone]; } diff --git a/mozilla/chimera/ContentClickListener.mm b/mozilla/chimera/ContentClickListener.mm index 9cf03f715ed..2f3ff0a6fd1 100644 --- a/mozilla/chimera/ContentClickListener.mm +++ b/mozilla/chimera/ContentClickListener.mm @@ -62,6 +62,9 @@ #include "nsIFrame.h" #include "nsIView.h" #include "nsIWidget.h" +#include "nsIURI.h" +#include "nsIProtocolHandler.h" +#include "nsNetUtil.h" // Common helper routines (also used by the context menu code) #include "CHGeckoUtils.h" @@ -277,22 +280,25 @@ ContentClickListener::MouseClick(nsIDOMEvent* aEvent) mouseEvent->GetAltKey(&altKey); NSString* hrefStr = [NSString stringWithCharacters: href.get() length:nsCRT::strlen(href.get())]; - NSURL* linkURL = [NSURL URLWithString: hrefStr]; // Hack to determine specific protocols handled by Chimera in the frontend // until I can determine why the general unknown protocol handler handoff // between Necko and uriloader isn't happening. - if (([[linkURL scheme] isEqualToString:@"http"]) || - ([[linkURL scheme] isEqualToString:@"https"]) || - ([[linkURL scheme] isEqualToString:@"ftp"]) || - ([[linkURL scheme] isEqualToString:@"about"]) || - ([[linkURL scheme] isEqualToString:@"file"]) || - ([[linkURL scheme] isEqualToString:@"data"]) || - ([[linkURL scheme] isEqualToString:@"javascript"])) - { + nsCOMPtr uri; + NS_NewURI(getter_AddRefs(uri), href); + nsCAutoString scheme; + uri->GetScheme(scheme); + + nsCAutoString contractId(NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX); + contractId.Append(scheme); + + nsCOMPtr handler = do_GetService(contractId.get()); + if (handler) { // Fall through and do whatever we'd normally do with this kind of URL - } else - [[NSWorkspace sharedWorkspace] openURL:linkURL]; + } else { + NSString* escapedString = (NSString*) CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef) hrefStr, NULL, NULL, kCFStringEncodingUTF8); + [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString: escapedString]]; + } if ((metaKey && button == 0) || button == 1) { // The command key is down or we got a middle click. Open the link in a new window or tab. @@ -303,9 +309,9 @@ ContentClickListener::MouseClick(nsIDOMEvent* aEvent) if (shiftKey) loadInBackground = !loadInBackground; if (useTab) - [mBrowserController openNewTabWithURL: linkURL loadInBackground: loadInBackground]; + [mBrowserController openNewTabWithURL: hrefStr loadInBackground: loadInBackground]; else - [mBrowserController openNewWindowWithURL: linkURL loadInBackground: loadInBackground]; + [mBrowserController openNewWindowWithURL: hrefStr loadInBackground: loadInBackground]; } else if (altKey) { // The user wants to save this link. @@ -313,7 +319,7 @@ ContentClickListener::MouseClick(nsIDOMEvent* aEvent) CHGeckoUtils::GatherTextUnder(content, text); [mBrowserController saveURL: nil filterList: nil - url: linkURL suggestedFilename: [NSString stringWithCharacters: text.get() + url: hrefStr suggestedFilename: [NSString stringWithCharacters: text.get() length: nsCRT::strlen(text.get())]]; } diff --git a/mozilla/chimera/MainController.h b/mozilla/chimera/MainController.h index 2b4cd00fa78..4793ae6929c 100644 --- a/mozilla/chimera/MainController.h +++ b/mozilla/chimera/MainController.h @@ -112,8 +112,7 @@ class BookmarksService; -(IBAction) newTab:(id)aSender; -(IBAction) closeTab:(id)aSender; --(BrowserWindowController*)openBrowserWindowWithURLString: (NSString*)aURL; --(BrowserWindowController*)openBrowserWindowWithURL: (NSURL*)aURL; +-(BrowserWindowController*)openBrowserWindowWithURL: (NSString*)aURL; - (MVPreferencesController *)preferencesController; - (void)displayPreferencesWindow:sender; diff --git a/mozilla/chimera/MainController.mm b/mozilla/chimera/MainController.mm index da848108eda..73c2c95344b 100644 --- a/mozilla/chimera/MainController.mm +++ b/mozilla/chimera/MainController.mm @@ -146,7 +146,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; // Now open the new window. NSString* homePage = [mPreferenceManager homePage:YES]; - BrowserWindowController* controller = [self openBrowserWindowWithURLString:homePage]; + BrowserWindowController* controller = [self openBrowserWindowWithURL:homePage]; if ([homePage isEqualToString: @"about:blank"]) [controller focusURLBar]; else @@ -194,11 +194,11 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; // ---------------------- NSWindow* mainWindow = [mApplication mainWindow]; if (mainWindow) { - [[mainWindow windowController] loadURL: url]; + [[mainWindow windowController] loadURL:[url absoluteString]]; [[[[mainWindow windowController] getBrowserWrapper] getBrowserView] setActive: YES]; } else - [self openBrowserWindowWithURL: url]; + [self openBrowserWindowWithURL:[url absoluteString]]; } } @@ -206,7 +206,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; { NSWindow* mainWindow = [mApplication mainWindow]; if (!mainWindow) { - [self openBrowserWindowWithURLString: @"about:blank"]; + [self openBrowserWindowWithURL: @"about:blank"]; mainWindow = [mApplication mainWindow]; } @@ -306,12 +306,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; [[[mApplication mainWindow] windowController] home: aSender]; } --(BrowserWindowController*)openBrowserWindowWithURLString: (NSString*)aURL -{ - return [self openBrowserWindowWithURL: [NSURL URLWithString:aURL]]; -} - --(BrowserWindowController*)openBrowserWindowWithURL: (NSURL*)aURL +-(BrowserWindowController*)openBrowserWindowWithURL: (NSString*)aURL { BrowserWindowController* browser = [[BrowserWindowController alloc] initWithWindowNibName: @"BrowserWindow"]; [browser loadURL: aURL]; @@ -365,7 +360,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; window = [mApplication mainWindow]; } - [[window windowController] importBookmarks: url]; + [[window windowController] importBookmarks: [url absoluteString]]; } } @@ -387,7 +382,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; { NSWindow* mainWind = [mApplication mainWindow]; if (!mainWind) { - [self openBrowserWindowWithURLString: @"about:blank"]; + [self openBrowserWindowWithURL: @"about:blank"]; mainWind = [mApplication mainWindow]; } @@ -398,7 +393,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; { NSWindow* mainWindow = [mApplication mainWindow]; if (!mainWindow) { - [self openBrowserWindowWithURLString: @"about:blank"]; + [self openBrowserWindowWithURL: @"about:blank"]; mainWindow = [mApplication mainWindow]; } @@ -428,9 +423,9 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; NSWindow* mainWindow = [mApplication mainWindow]; if (mainWindow) { - [[mainWindow windowController] loadURL:[NSURL fileURLWithPath:filename]]; + [[mainWindow windowController] loadURL:[[NSURL fileURLWithPath:filename] absoluteString]]; } else { - [self openBrowserWindowWithURL:[NSURL fileURLWithPath:filename]]; + [self openBrowserWindowWithURL:[[NSURL fileURLWithPath:filename] absoluteString]]; } return YES; @@ -614,7 +609,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; [urlString appendString:tmpString]; } - [self openBrowserWindowWithURLString:urlString]; + [self openBrowserWindowWithURL:urlString]; } @end diff --git a/mozilla/chimera/src/application/MainController.h b/mozilla/chimera/src/application/MainController.h index 2b4cd00fa78..4793ae6929c 100644 --- a/mozilla/chimera/src/application/MainController.h +++ b/mozilla/chimera/src/application/MainController.h @@ -112,8 +112,7 @@ class BookmarksService; -(IBAction) newTab:(id)aSender; -(IBAction) closeTab:(id)aSender; --(BrowserWindowController*)openBrowserWindowWithURLString: (NSString*)aURL; --(BrowserWindowController*)openBrowserWindowWithURL: (NSURL*)aURL; +-(BrowserWindowController*)openBrowserWindowWithURL: (NSString*)aURL; - (MVPreferencesController *)preferencesController; - (void)displayPreferencesWindow:sender; diff --git a/mozilla/chimera/src/application/MainController.mm b/mozilla/chimera/src/application/MainController.mm index da848108eda..73c2c95344b 100644 --- a/mozilla/chimera/src/application/MainController.mm +++ b/mozilla/chimera/src/application/MainController.mm @@ -146,7 +146,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; // Now open the new window. NSString* homePage = [mPreferenceManager homePage:YES]; - BrowserWindowController* controller = [self openBrowserWindowWithURLString:homePage]; + BrowserWindowController* controller = [self openBrowserWindowWithURL:homePage]; if ([homePage isEqualToString: @"about:blank"]) [controller focusURLBar]; else @@ -194,11 +194,11 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; // ---------------------- NSWindow* mainWindow = [mApplication mainWindow]; if (mainWindow) { - [[mainWindow windowController] loadURL: url]; + [[mainWindow windowController] loadURL:[url absoluteString]]; [[[[mainWindow windowController] getBrowserWrapper] getBrowserView] setActive: YES]; } else - [self openBrowserWindowWithURL: url]; + [self openBrowserWindowWithURL:[url absoluteString]]; } } @@ -206,7 +206,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; { NSWindow* mainWindow = [mApplication mainWindow]; if (!mainWindow) { - [self openBrowserWindowWithURLString: @"about:blank"]; + [self openBrowserWindowWithURL: @"about:blank"]; mainWindow = [mApplication mainWindow]; } @@ -306,12 +306,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; [[[mApplication mainWindow] windowController] home: aSender]; } --(BrowserWindowController*)openBrowserWindowWithURLString: (NSString*)aURL -{ - return [self openBrowserWindowWithURL: [NSURL URLWithString:aURL]]; -} - --(BrowserWindowController*)openBrowserWindowWithURL: (NSURL*)aURL +-(BrowserWindowController*)openBrowserWindowWithURL: (NSString*)aURL { BrowserWindowController* browser = [[BrowserWindowController alloc] initWithWindowNibName: @"BrowserWindow"]; [browser loadURL: aURL]; @@ -365,7 +360,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; window = [mApplication mainWindow]; } - [[window windowController] importBookmarks: url]; + [[window windowController] importBookmarks: [url absoluteString]]; } } @@ -387,7 +382,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; { NSWindow* mainWind = [mApplication mainWindow]; if (!mainWind) { - [self openBrowserWindowWithURLString: @"about:blank"]; + [self openBrowserWindowWithURL: @"about:blank"]; mainWind = [mApplication mainWindow]; } @@ -398,7 +393,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; { NSWindow* mainWindow = [mApplication mainWindow]; if (!mainWindow) { - [self openBrowserWindowWithURLString: @"about:blank"]; + [self openBrowserWindowWithURL: @"about:blank"]; mainWindow = [mApplication mainWindow]; } @@ -428,9 +423,9 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; NSWindow* mainWindow = [mApplication mainWindow]; if (mainWindow) { - [[mainWindow windowController] loadURL:[NSURL fileURLWithPath:filename]]; + [[mainWindow windowController] loadURL:[[NSURL fileURLWithPath:filename] absoluteString]]; } else { - [self openBrowserWindowWithURL:[NSURL fileURLWithPath:filename]]; + [self openBrowserWindowWithURL:[[NSURL fileURLWithPath:filename] absoluteString]]; } return YES; @@ -614,7 +609,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; [urlString appendString:tmpString]; } - [self openBrowserWindowWithURLString:urlString]; + [self openBrowserWindowWithURL:urlString]; } @end diff --git a/mozilla/chimera/src/bookmarks/BookmarksButton.mm b/mozilla/chimera/src/bookmarks/BookmarksButton.mm index 674ce103de6..bb0f10b4139 100644 --- a/mozilla/chimera/src/bookmarks/BookmarksButton.mm +++ b/mozilla/chimera/src/bookmarks/BookmarksButton.mm @@ -63,7 +63,7 @@ NSString* url = [NSString stringWithCString: cref.get()]; // Now load the URL in the window. - [[[self window] windowController] loadURL:[NSURL URLWithString: url]]; + [[[self window] windowController] loadURL: url]; // Focus and activate our content area. [[[[[self window] windowController] getBrowserWrapper] getBrowserView] setActive: YES]; diff --git a/mozilla/chimera/src/bookmarks/BookmarksService.mm b/mozilla/chimera/src/bookmarks/BookmarksService.mm index 62dd3f7ead0..bba02548063 100644 --- a/mozilla/chimera/src/bookmarks/BookmarksService.mm +++ b/mozilla/chimera/src/bookmarks/BookmarksService.mm @@ -346,7 +346,7 @@ content->GetAttr(kNameSpaceID_None, BookmarksService::gHrefAtom, href); if (!href.IsEmpty()) { NSString* url = [NSString stringWithCharacters: href.get() length: href.Length()]; - [[[mBrowserWindowController getBrowserWrapper] getBrowserView] loadURI:[NSURL URLWithString: url] flags: NSLoadFlagsNone]; + [[[mBrowserWindowController getBrowserWrapper] getBrowserView] loadURI: url flags: NSLoadFlagsNone]; // Focus and activate our content area. [[[mBrowserWindowController getBrowserWrapper] getBrowserView] setActive: YES]; } @@ -408,8 +408,8 @@ if (isExpandable) { PRBool isOpen = content->HasAttr(kNameSpaceID_None, BookmarksService::gOpenAtom); if (isOpen) - [mOutlineView expandItem: item]; - else + [mOutlineView expandItem: item]; + else [mOutlineView collapseItem: item]; } #endif @@ -626,12 +626,11 @@ // stuff it into the string NSString* hrefStr = [NSString stringWithCharacters:hrefAttr.get() length:hrefAttr.Length()]; - NSURL* urlToLoad = [NSURL URLWithString: hrefStr]; PRBool loadInBackground; pref->GetBoolPref("browser.tabs.loadInBackground", &loadInBackground); - [mBrowserWindowController openNewTabWithURL: urlToLoad loadInBackground: loadInBackground]; + [mBrowserWindowController openNewTabWithURL: hrefStr loadInBackground: loadInBackground]; } } @@ -647,12 +646,11 @@ // stuff it into the string NSString* hrefStr = [NSString stringWithCharacters:hrefAttr.get() length:hrefAttr.Length()]; - NSURL* urlToLoad = [NSURL URLWithString: hrefStr]; nsAutoString group; [item contentNode]->GetAttr(kNameSpaceID_None, BookmarksService::gGroupAtom, group); if (group.IsEmpty()) - [mBrowserWindowController openNewWindowWithURL: urlToLoad loadInBackground: NO]; + [mBrowserWindowController openNewWindowWithURL: hrefStr loadInBackground: NO]; else { nsCOMPtr elt(do_QueryInterface([item contentNode])); [mBrowserWindowController openNewWindowWithGroup: elt loadInBackground: NO]; @@ -1387,7 +1385,7 @@ BookmarksService::OpenMenuBookmark(BrowserWindowController* aController, id aMen NSString* url = [NSString stringWithCharacters: href.get() length: href.Length()]; // Now load the URL in the window. - [aController loadURL:[NSURL URLWithString: url]]; + [aController loadURL:url]; // Focus and activate our content area. [[[aController getBrowserWrapper] getBrowserView] setActive: YES]; @@ -1595,7 +1593,7 @@ BookmarksService::OpenBookmarkGroup(id aTabView, nsIDOMElement* aFolder) else tabViewItem = [aTabView tabViewItemAtIndex: currentIndex]; - [[[tabViewItem view] getBrowserView] loadURI:[NSURL URLWithString: url] + [[[tabViewItem view] getBrowserView] loadURI: url flags: NSLoadFlagsNone]; } } diff --git a/mozilla/chimera/src/browser/BrowserWindowController.h b/mozilla/chimera/src/browser/BrowserWindowController.h index 4cb416d56f0..45a40bc8911 100644 --- a/mozilla/chimera/src/browser/BrowserWindowController.h +++ b/mozilla/chimera/src/browser/BrowserWindowController.h @@ -112,7 +112,7 @@ class nsIDOMNode; NSToolbarItem *mSidebarToolbarItem; BOOL mInitialized; - NSURL* mURL; + NSString* mURL; CHBrowserWrapper* mBrowserView; @@ -146,7 +146,7 @@ class nsIDOMNode; -(id)getTabBrowser; -(CHBrowserWrapper*)getBrowserWrapper; -- (void)loadURL:(NSURL*)aURL; +- (void)loadURL:(NSString*)aURLSpec; - (void)loadURLString:(NSString*)aStr; - (void)updateLocationFields:(NSString *)locationString; - (void)updateToolbarItems; @@ -170,7 +170,7 @@ class nsIDOMNode; - (void)saveDocument: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList; - (void)saveURL: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList - url: (NSURL*)aURL suggestedFilename: (NSString*)aFilename; + url: (NSString*)aURLSpec suggestedFilename: (NSString*)aFilename; - (void)printDocument; - (void)printPreview; @@ -184,7 +184,7 @@ class nsIDOMNode; - (void)addBookmarkExtended: (BOOL)aIsFromMenu isFolder:(BOOL)aIsFolder; - (IBAction)manageBookmarks: (id)aSender; -- (void)importBookmarks: (NSURL*)aURL; +- (void)importBookmarks: (NSString*)aURLSpec; - (IBAction)toggleSidebar:(id)aSender; - (void)newTab; @@ -200,9 +200,9 @@ class nsIDOMNode; -(void)enterModalSession; --(void)openNewWindowWithURL: (NSURL*)aURL loadInBackground: (BOOL)aLoadInBG; +-(void)openNewWindowWithURL: (NSString*)aURLSpec loadInBackground: (BOOL)aLoadInBG; -(void)openNewWindowWithGroup: (nsIDOMElement*)aFolderElement loadInBackground: (BOOL)aLoadInBG; --(void)openNewTabWithURL: (NSURL*)aURL loadInBackground: (BOOL)aLoadInBG; +-(void)openNewTabWithURL: (NSString*)aURLSpec loadInBackground: (BOOL)aLoadInBG; -(void)autosaveWindowFrame; -(void)disableAutosave; diff --git a/mozilla/chimera/src/browser/BrowserWindowController.mm b/mozilla/chimera/src/browser/BrowserWindowController.mm index 30f82a10879..e2a677e0ed7 100644 --- a/mozilla/chimera/src/browser/BrowserWindowController.mm +++ b/mozilla/chimera/src/browser/BrowserWindowController.mm @@ -282,7 +282,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; - (void)drawerDidOpen:(NSNotification *)aNotification { // XXXdwh This is temporary. - // [[mSidebarBrowserView getBrowserView] loadURI: [NSURL URLWithString: @"http://tinderbox.mozilla.org/SeaMonkey/panel.html"] flags:NSLoadFlagsNone]; + // [[mSidebarBrowserView getBrowserView] loadURI: @"http://tinderbox.mozilla.org/SeaMonkey/panel.html" flags:NSLoadFlagsNone]; // Toggle the sidebar icon. [mSidebarToolbarItem setImage:[NSImage imageNamed:@"sidebarOpened"]]; @@ -294,7 +294,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [mSidebarToolbarItem setImage:[NSImage imageNamed:@"sidebarClosed"]]; // XXXdwh ignore for now. - // [[mSidebarBrowserView getBrowserView] loadURI: [NSURL URLWithString: @"about:blank"] flags:NSLoadFlagsNone]; + // [[mSidebarBrowserView getBrowserView] loadURI: @"about:blank" flags:NSLoadFlagsNone]; if (mDrawerCachedFrame) { printf("Got here.\n"); @@ -530,7 +530,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; { [mLocationSheetWindow orderOut:self]; [NSApp endSheet:mLocationSheetWindow returnCode:1]; - [self loadURL:[NSURL URLWithString:[mLocationSheetURLField stringValue]]]; + [self loadURL:[mLocationSheetURLField stringValue]]; // Focus and activate our content area. [[mBrowserView getBrowserView] setActive: YES]; @@ -569,7 +569,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [mSidebarTabView selectFirstTabViewItem:self]; } -- (void)importBookmarks: (NSURL*)aURL +- (void)importBookmarks: (NSString*)aURLSpec { // Open the bookmarks sidebar. [self manageBookmarks: self]; @@ -579,7 +579,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [newView setFrame: NSZeroRect]; [newView setIsBookmarksImport: YES]; [[[self window] contentView] addSubview: newView]; - [[newView getBrowserView] loadURI:aURL flags:NSLoadFlagsNone]; + [[newView getBrowserView] loadURI:aURLSpec flags:NSLoadFlagsNone]; } - (IBAction)goToLocationFromToolbarURLField:(id)sender @@ -587,7 +587,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; // trim off any whitespace around url NSMutableString *theURL = [[NSMutableString alloc] initWithString:[sender stringValue]]; CFStringTrimWhitespace((CFMutableStringRef)theURL); - [self loadURL:[NSURL URLWithString:theURL]]; + [self loadURL:theURL]; [theURL release]; // Focus and activate our content area. @@ -600,22 +600,21 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; } - (void)saveURL: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList - url: (NSURL*)aURL suggestedFilename: (NSString*)aFilename + url: (NSString*)aURLSpec suggestedFilename: (NSString*)aFilename { [[mBrowserView getBrowserView] saveURL: aFilterView filterList: aFilterList - url: aURL suggestedFilename: aFilename]; + url: aURLSpec suggestedFilename: aFilename]; } - (IBAction)viewSource:(id)aSender { NSString* urlStr = [[mBrowserView getBrowserView] getFocusedURLString]; NSString* viewSource = [@"view-source:" stringByAppendingString: urlStr]; - NSURL* urlToLoad = [NSURL URLWithString: viewSource]; PRBool loadInBackground; nsCOMPtr pref(do_GetService("@mozilla.org/preferences-service;1")); pref->GetBoolPref("browser.tabs.loadInBackground", &loadInBackground); - [self openNewTabWithURL: urlToLoad loadInBackground: loadInBackground]; + [self openNewTabWithURL: urlStr loadInBackground: loadInBackground]; } - (void)printDocument @@ -631,7 +630,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; - (void)performSearch { // XXX go to the user's preferred search engine. - [[mBrowserView getBrowserView] loadURI:[NSURL URLWithString: @"http://dmoz.org/"] flags:NSLoadFlagsNone]; + [[mBrowserView getBrowserView] loadURI: @"http://dmoz.org/" flags:NSLoadFlagsNone]; } @@ -754,7 +753,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; - (IBAction)home:(id)aSender { - [[mBrowserView getBrowserView] loadURI:[NSURL URLWithString:[[CHPreferenceManager sharedInstance] homePage:NO]] flags:NSLoadFlagsNone]; + [[mBrowserView getBrowserView] loadURI:[[CHPreferenceManager sharedInstance] homePage:NO] flags:NSLoadFlagsNone]; } - (IBAction)toggleSidebar:(id)aSender @@ -775,17 +774,17 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; -(void)loadURLString:(NSString*)aStr { - [self loadURL:[NSURL URLWithString:aStr]]; + [self loadURL: aStr]; } --(void)loadURL:(NSURL*)aURL +-(void)loadURL:(NSString*)aURLSpec { if (mInitialized) { - [[mBrowserView getBrowserView] loadURI:aURL flags:NSLoadFlagsNone]; + [[mBrowserView getBrowserView] loadURI:aURLSpec flags:NSLoadFlagsNone]; } else { - mURL = aURL; + mURL = aURLSpec; [mURL retain]; } } @@ -818,7 +817,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [newTab setView: newView]; [mTabBrowser addTabViewItem: newTab]; - [[newView getBrowserView] loadURI:[NSURL URLWithString:@"about:blank"] flags:NSLoadFlagsNone]; + [[newView getBrowserView] loadURI: @"about:blank" flags:NSLoadFlagsNone]; [mTabBrowser selectLastTabViewItem: self]; @@ -880,13 +879,13 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; return mBrowserView; } --(void)openNewWindowWithURL: (NSURL*)aURL loadInBackground: (BOOL)aLoadInBG +-(void)openNewWindowWithURL: (NSString*)aURLSpec loadInBackground: (BOOL)aLoadInBG { // Autosave our dimensions before we open a new window. That ensures the size ends up matching. [self autosaveWindowFrame]; BrowserWindowController* browser = [[BrowserWindowController alloc] initWithWindowNibName: @"BrowserWindow"]; - [browser loadURL: aURL]; + [browser loadURL: aURLSpec]; if (aLoadInBG) [[browser window] orderWindow: NSWindowBelow relativeTo: [[self window] windowNumber]]; else { @@ -915,7 +914,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [mSidebarBookmarksDataSource openBookmarkGroup: tabBrowser groupElement: aFolderElement]; } --(void)openNewTabWithURL: (NSURL*)aURL loadInBackground: (BOOL)aLoadInBG +-(void)openNewTabWithURL: (NSString*)aURLSpec loadInBackground: (BOOL)aLoadInBG { NSTabViewItem* newTab = [[[NSTabViewItem alloc] initWithIdentifier: nil] autorelease]; @@ -929,7 +928,7 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; [newTab setLabel: @"Loading..."]; [newTab setView: newView]; - [[newView getBrowserView] loadURI:aURL flags:NSLoadFlagsNone]; + [[newView getBrowserView] loadURI:aURLSpec flags:NSLoadFlagsNone]; if (!aLoadInBG) { [mTabBrowser selectTabViewItem: newTab]; @@ -1114,15 +1113,14 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; return; // Something bad happened if we can't get prefs. NSString* hrefStr = [NSString stringWithCharacters: href.get() length:nsCRT::strlen(href.get())]; - NSURL* urlToLoad = [NSURL URLWithString: hrefStr]; PRBool loadInBackground; pref->GetBoolPref("browser.tabs.loadInBackground", &loadInBackground); if (aUseWindow) - [self openNewWindowWithURL: urlToLoad loadInBackground: loadInBackground]; + [self openNewWindowWithURL: hrefStr loadInBackground: loadInBackground]; else - [self openNewTabWithURL: urlToLoad loadInBackground: loadInBackground]; + [self openNewTabWithURL: hrefStr loadInBackground: loadInBackground]; } - (IBAction)savePageAs:(id)aSender @@ -1142,14 +1140,13 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; return; NSString* hrefStr = [NSString stringWithCharacters: href.get() length:nsCRT::strlen(href.get())]; - NSURL* urlToSave = [NSURL URLWithString: hrefStr]; // The user wants to save this link. nsAutoString text; CHGeckoUtils::GatherTextUnder(mContextMenuNode, text); [self saveURL: nil filterList: nil - url: urlToSave suggestedFilename: [NSString stringWithCharacters: text.get() + url: hrefStr suggestedFilename: [NSString stringWithCharacters: text.get() length:nsCRT::strlen(text.get())]]; } @@ -1163,10 +1160,9 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; imgElement->GetSrc(url); NSString* hrefStr = [NSString stringWithCharacters: url.get() length:nsCRT::strlen(url.get())]; - NSURL* urlToSave = [NSURL URLWithString: hrefStr]; [self saveURL: nil filterList: nil - url: urlToSave suggestedFilename: [NSString stringWithCharacters: text.get() + url: hrefStr suggestedFilename: [NSString stringWithCharacters: text.get() length:nsCRT::strlen(text.get())]]; } } @@ -1194,9 +1190,8 @@ static NSString *SearchToolbarItemIdentifier = @"Search Toolbar Item"; imgElement->GetSrc(url); NSString* urlStr = [NSString stringWithCharacters: url.get() length:nsCRT::strlen(url.get())]; - NSURL* urlToView = [NSURL URLWithString: urlStr]; - [self loadURL: urlToView]; + [self loadURL: urlStr]; // Focus and activate our content area. [[mBrowserView getBrowserView] setActive: YES]; diff --git a/mozilla/chimera/src/browser/BrowserWrapper.h b/mozilla/chimera/src/browser/BrowserWrapper.h index 908484bf98b..af68ba1cd91 100644 --- a/mozilla/chimera/src/browser/BrowserWrapper.h +++ b/mozilla/chimera/src/browser/BrowserWrapper.h @@ -95,7 +95,7 @@ - (void)onLoadingStarted; - (void)onLoadingCompleted:(BOOL)succeeded; - (void)onProgressChange:(int)currentBytes outOf:(int)maxBytes; -- (void)onLocationChange:(NSURL*)url; +- (void)onLocationChange:(NSString*)urlSpec; - (void)onStatusChange:(NSString*)aMessage; - (void)onSecurityStateChange:(unsigned long)newState; - (void)onShowTooltip:(NSPoint)where withText:(NSString*)text; diff --git a/mozilla/chimera/src/browser/BrowserWrapper.mm b/mozilla/chimera/src/browser/BrowserWrapper.mm index 7a28aa05677..4ccde827bcd 100644 --- a/mozilla/chimera/src/browser/BrowserWrapper.mm +++ b/mozilla/chimera/src/browser/BrowserWrapper.mm @@ -84,7 +84,7 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; - (IBAction)load:(id)sender { - [mBrowserView loadURI:[NSURL URLWithString:[urlbar stringValue]] flags:NSLoadFlagsNone]; + [mBrowserView loadURI:[urlbar stringValue] flags:NSLoadFlagsNone]; } -(void)disconnectView @@ -292,12 +292,10 @@ static const char* ioServiceContractID = "@mozilla.org/network/io-service;1"; } } -- (void)onLocationChange:(NSURL*)url +- (void)onLocationChange:(NSString*)urlSpec { - if ( mIsPrimary ) { - NSString* spec = [url absoluteString]; - [mWindowController updateLocationFields:spec]; - } + if (mIsPrimary) + [mWindowController updateLocationFields:urlSpec]; } - (void)onStatusChange:(NSString*)aStatusString diff --git a/mozilla/chimera/src/browser/ContentClickListener.mm b/mozilla/chimera/src/browser/ContentClickListener.mm index 9cf03f715ed..2f3ff0a6fd1 100644 --- a/mozilla/chimera/src/browser/ContentClickListener.mm +++ b/mozilla/chimera/src/browser/ContentClickListener.mm @@ -62,6 +62,9 @@ #include "nsIFrame.h" #include "nsIView.h" #include "nsIWidget.h" +#include "nsIURI.h" +#include "nsIProtocolHandler.h" +#include "nsNetUtil.h" // Common helper routines (also used by the context menu code) #include "CHGeckoUtils.h" @@ -277,22 +280,25 @@ ContentClickListener::MouseClick(nsIDOMEvent* aEvent) mouseEvent->GetAltKey(&altKey); NSString* hrefStr = [NSString stringWithCharacters: href.get() length:nsCRT::strlen(href.get())]; - NSURL* linkURL = [NSURL URLWithString: hrefStr]; // Hack to determine specific protocols handled by Chimera in the frontend // until I can determine why the general unknown protocol handler handoff // between Necko and uriloader isn't happening. - if (([[linkURL scheme] isEqualToString:@"http"]) || - ([[linkURL scheme] isEqualToString:@"https"]) || - ([[linkURL scheme] isEqualToString:@"ftp"]) || - ([[linkURL scheme] isEqualToString:@"about"]) || - ([[linkURL scheme] isEqualToString:@"file"]) || - ([[linkURL scheme] isEqualToString:@"data"]) || - ([[linkURL scheme] isEqualToString:@"javascript"])) - { + nsCOMPtr uri; + NS_NewURI(getter_AddRefs(uri), href); + nsCAutoString scheme; + uri->GetScheme(scheme); + + nsCAutoString contractId(NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX); + contractId.Append(scheme); + + nsCOMPtr handler = do_GetService(contractId.get()); + if (handler) { // Fall through and do whatever we'd normally do with this kind of URL - } else - [[NSWorkspace sharedWorkspace] openURL:linkURL]; + } else { + NSString* escapedString = (NSString*) CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef) hrefStr, NULL, NULL, kCFStringEncodingUTF8); + [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString: escapedString]]; + } if ((metaKey && button == 0) || button == 1) { // The command key is down or we got a middle click. Open the link in a new window or tab. @@ -303,9 +309,9 @@ ContentClickListener::MouseClick(nsIDOMEvent* aEvent) if (shiftKey) loadInBackground = !loadInBackground; if (useTab) - [mBrowserController openNewTabWithURL: linkURL loadInBackground: loadInBackground]; + [mBrowserController openNewTabWithURL: hrefStr loadInBackground: loadInBackground]; else - [mBrowserController openNewWindowWithURL: linkURL loadInBackground: loadInBackground]; + [mBrowserController openNewWindowWithURL: hrefStr loadInBackground: loadInBackground]; } else if (altKey) { // The user wants to save this link. @@ -313,7 +319,7 @@ ContentClickListener::MouseClick(nsIDOMEvent* aEvent) CHGeckoUtils::GatherTextUnder(content, text); [mBrowserController saveURL: nil filterList: nil - url: linkURL suggestedFilename: [NSString stringWithCharacters: text.get() + url: hrefStr suggestedFilename: [NSString stringWithCharacters: text.get() length: nsCRT::strlen(text.get())]]; } diff --git a/mozilla/chimera/src/embedding/CHBrowserView.h b/mozilla/chimera/src/embedding/CHBrowserView.h index 4e3ba1374ac..e5c8ff5866a 100644 --- a/mozilla/chimera/src/embedding/CHBrowserView.h +++ b/mozilla/chimera/src/embedding/CHBrowserView.h @@ -63,7 +63,7 @@ class nsIDragHelperService; // in. If the total number of bytes expected is unknown, // maxBytes is -1. - (void)onProgressChange:(int)currentBytes outOf:(int)maxBytes; -- (void)onLocationChange:(NSURL*)url; +- (void)onLocationChange:(NSString*)urlSpec; - (void)onStatusChange:(NSString*)aMessage; - (void)onSecurityStateChange:(unsigned long)newState; // Called when a context menu should be shown. @@ -126,7 +126,7 @@ enum { - (nsIDOMWindow*)getContentWindow; // nsIWebNavigation methods -- (void)loadURI:(NSURL *)url flags:(unsigned int)flags; +- (void)loadURI:(NSString *)urlSpec flags:(unsigned int)flags; - (void)reload:(unsigned int)flags; - (BOOL)canGoBack; - (BOOL)canGoForward; @@ -134,11 +134,11 @@ enum { - (void)goForward; - (void)gotoIndex:(int)index; - (void)stop:(unsigned int)flags; -- (NSURL*)getCurrentURI; +- (NSString*)getCurrentURI; - (void)saveDocument: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList; - (void)saveURL: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList - url: (NSURL*)aURL suggestedFilename: (NSString*)aFilename; + url: (NSString*)aURLSpec suggestedFilename: (NSString*)aFilename; - (void)printDocument; diff --git a/mozilla/chimera/src/embedding/CHBrowserView.mm b/mozilla/chimera/src/embedding/CHBrowserView.mm index f18c106b708..66726b33493 100644 --- a/mozilla/chimera/src/embedding/CHBrowserView.mm +++ b/mozilla/chimera/src/embedding/CHBrowserView.mm @@ -608,12 +608,11 @@ nsCocoaBrowserListener::OnLocationChange(nsIWebProgress *aWebProgress, nsIReques nsCAutoString spec; location->GetSpec(spec); NSString* str = [NSString stringWithCString:spec.get()]; - NSURL* url = [NSURL URLWithString:str]; NSEnumerator* enumerator = [mListeners objectEnumerator]; id obj; while ((obj = [enumerator nextObject])) - [obj onLocationChange:url]; + [obj onLocationChange:str]; return NS_OK; } @@ -1030,14 +1029,13 @@ nsHeaderSniffer::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aReq return window; } -- (void)loadURI:(NSURL *)url flags:(unsigned int)flags +- (void)loadURI:(NSString *)urlSpec flags:(unsigned int)flags { nsCOMPtr nav = do_QueryInterface(_webBrowser); - NSString* spec = [url absoluteString]; - int length = [spec length]; + int length = [urlSpec length]; PRUnichar* specStr = nsMemory::Alloc((length+1) * sizeof(PRUnichar)); - [spec getCharacters:specStr]; + [urlSpec getCharacters:specStr]; specStr[length] = PRUnichar(0); @@ -1137,7 +1135,8 @@ nsHeaderSniffer::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aReq } } -- (NSURL*)getCurrentURI +// XXXbryner This isn't used anywhere. how is it different from getCurrentURLSpec? +- (NSString*)getCurrentURI { nsCOMPtr uri; nsCOMPtr nav = do_QueryInterface(_webBrowser); @@ -1152,9 +1151,8 @@ nsHeaderSniffer::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aReq const char* cstr = spec.get(); NSString* str = [NSString stringWithCString:cstr]; - NSURL* url = [NSURL URLWithString:str]; - return url; + return str; } - (nsCocoaBrowserListener*)getCocoaBrowserListener @@ -1280,10 +1278,10 @@ nsHeaderSniffer::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aReq } - (void)saveURL: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList - url: (NSURL*)aURL suggestedFilename: (NSString*)aFilename + url: (NSString*)aURLSpec suggestedFilename: (NSString*)aFilename { nsCOMPtr url; - nsresult rv = NS_NewURI(getter_AddRefs(url), [[aURL absoluteString] cString]); + nsresult rv = NS_NewURI(getter_AddRefs(url), [aURLSpec cString]); if (NS_FAILED(rv)) return;