From 815bc9a462b784a047fc732da2efeab000e945aa Mon Sep 17 00:00:00 2001 From: "bryner%netscape.com" Date: Tue, 25 Jun 2002 19:25:27 +0000 Subject: [PATCH] Fixing the problem where URL's containing certain characters won't load, by removing uses of NSURL (which has escaping conventions that are incompatible with nsIURI) internally, replacing it with NSString. Bug 147914, r=pink. git-svn-id: svn://10.0.0.236/trunk@124008 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/camino/BookmarksService.mm | 16 +++--- mozilla/camino/BrowserWindowController.h | 12 ++-- mozilla/camino/BrowserWindowController.mm | 55 +++++++++---------- mozilla/camino/CHBookmarksButton.mm | 2 +- mozilla/camino/CHBrowserView.h | 8 +-- mozilla/camino/CHBrowserView.mm | 20 +++---- mozilla/camino/CHBrowserWrapper.h | 2 +- mozilla/camino/CHBrowserWrapper.mm | 10 ++-- mozilla/camino/CHExtendedTabView.mm | 8 +-- mozilla/camino/ContentClickListener.mm | 34 +++++++----- mozilla/camino/MainController.h | 3 +- mozilla/camino/MainController.mm | 27 ++++----- .../camino/src/application/MainController.h | 3 +- .../camino/src/application/MainController.mm | 27 ++++----- .../camino/src/bookmarks/BookmarksButton.mm | 2 +- .../camino/src/bookmarks/BookmarksService.mm | 16 +++--- .../src/browser/BrowserWindowController.h | 12 ++-- .../src/browser/BrowserWindowController.mm | 55 +++++++++---------- mozilla/camino/src/browser/BrowserWrapper.h | 2 +- mozilla/camino/src/browser/BrowserWrapper.mm | 10 ++-- .../src/browser/ContentClickListener.mm | 34 +++++++----- mozilla/camino/src/embedding/CHBrowserView.h | 8 +-- mozilla/camino/src/embedding/CHBrowserView.mm | 20 +++---- mozilla/chimera/BookmarksService.mm | 16 +++--- mozilla/chimera/BrowserWindowController.h | 12 ++-- mozilla/chimera/BrowserWindowController.mm | 55 +++++++++---------- mozilla/chimera/CHBookmarksButton.mm | 2 +- mozilla/chimera/CHBrowserView.h | 8 +-- mozilla/chimera/CHBrowserView.mm | 20 +++---- mozilla/chimera/CHBrowserWrapper.h | 2 +- mozilla/chimera/CHBrowserWrapper.mm | 10 ++-- mozilla/chimera/CHExtendedTabView.mm | 8 +-- mozilla/chimera/ContentClickListener.mm | 34 +++++++----- mozilla/chimera/MainController.h | 3 +- mozilla/chimera/MainController.mm | 27 ++++----- .../chimera/src/application/MainController.h | 3 +- .../chimera/src/application/MainController.mm | 27 ++++----- .../chimera/src/bookmarks/BookmarksButton.mm | 2 +- .../chimera/src/bookmarks/BookmarksService.mm | 16 +++--- .../src/browser/BrowserWindowController.h | 12 ++-- .../src/browser/BrowserWindowController.mm | 55 +++++++++---------- mozilla/chimera/src/browser/BrowserWrapper.h | 2 +- mozilla/chimera/src/browser/BrowserWrapper.mm | 10 ++-- .../src/browser/ContentClickListener.mm | 34 +++++++----- mozilla/chimera/src/embedding/CHBrowserView.h | 8 +-- .../chimera/src/embedding/CHBrowserView.mm | 20 +++---- 46 files changed, 364 insertions(+), 408 deletions(-) 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;