version 1.9, 2002/02/05 01:17:11
|
version 1.22, 2002/02/25 08:44:17
|
Line 37
|
Line 37
|
|
|
#import "NSBrowserView.h" |
#import "NSBrowserView.h" |
#import "ProgressDlgController.h" |
#import "ProgressDlgController.h" |
|
#import "FindDlgController.h" |
#import "nsCocoaBrowserService.h" |
#import "nsCocoaBrowserService.h" |
|
|
// Embedding includes |
// Embedding includes |
Line 63
|
Line 64
|
// Saving of links/images/docs |
// Saving of links/images/docs |
#include "nsIWebBrowserFocus.h" |
#include "nsIWebBrowserFocus.h" |
#include "nsIDOMHTMLDocument.h" |
#include "nsIDOMHTMLDocument.h" |
#include "nsIDocument.h" | #include "nsIDOMNSDocument.h" |
| #include "nsIDOMLocation.h" |
#include "nsIURL.h" |
#include "nsIURL.h" |
#include "nsIWebBrowserPersist.h" |
#include "nsIWebBrowserPersist.h" |
#include "nsIProperties.h" |
#include "nsIProperties.h" |
Line 76
|
Line 78
|
#include "nsISHistory.h" |
#include "nsISHistory.h" |
#include "nsIHistoryEntry.h" |
#include "nsIHistoryEntry.h" |
#include "nsISHEntry.h" |
#include "nsISHEntry.h" |
|
#include "nsNetUtil.h" |
|
|
|
// Cut/copy/paste |
|
#include "nsIClipboardCommands.h" |
|
#include "nsIInterfaceRequestorUtils.h" |
|
|
const char* persistContractID = "@mozilla.org/embedding/browser/nsWebBrowserPersist;1"; |
const char* persistContractID = "@mozilla.org/embedding/browser/nsWebBrowserPersist;1"; |
const char* dirServiceContractID = "@mozilla.org/file/directory_service;1"; |
const char* dirServiceContractID = "@mozilla.org/file/directory_service;1"; |
|
|
class nsCocoaBrowserListener : public nsSupportsWeakReference, |
class nsCocoaBrowserListener : public nsSupportsWeakReference, |
public nsIInterfaceRequestor, |
public nsIInterfaceRequestor, |
public nsIWebBrowserChrome, | public nsIWebBrowserChrome, |
public nsIEmbeddingSiteWindow, | public nsIWindowCreator, |
| public nsIEmbeddingSiteWindow, |
public nsIWebProgressListener |
public nsIWebProgressListener |
{ |
{ |
public: |
public: |
Line 93 public:
|
Line 101 public:
|
NS_DECL_ISUPPORTS |
NS_DECL_ISUPPORTS |
NS_DECL_NSIINTERFACEREQUESTOR |
NS_DECL_NSIINTERFACEREQUESTOR |
NS_DECL_NSIWEBBROWSERCHROME |
NS_DECL_NSIWEBBROWSERCHROME |
|
NS_DECL_NSIWINDOWCREATOR |
NS_DECL_NSIEMBEDDINGSITEWINDOW |
NS_DECL_NSIEMBEDDINGSITEWINDOW |
NS_DECL_NSIWEBPROGRESSLISTENER |
NS_DECL_NSIWEBPROGRESSLISTENER |
|
|
Line 124 nsCocoaBrowserListener::~nsCocoaBrowserL
|
Line 133 nsCocoaBrowserListener::~nsCocoaBrowserL
|
} |
} |
} |
} |
|
|
NS_IMPL_ISUPPORTS5(nsCocoaBrowserListener, | NS_IMPL_ISUPPORTS6(nsCocoaBrowserListener, |
nsIInterfaceRequestor, |
nsIInterfaceRequestor, |
nsIWebBrowserChrome, |
nsIWebBrowserChrome, |
|
nsIWindowCreator, |
nsIEmbeddingSiteWindow, |
nsIEmbeddingSiteWindow, |
nsIWebProgressListener, |
nsIWebProgressListener, |
nsISupportsWeakReference) | nsISupportsWeakReference) |
|
|
// Implementation of nsIInterfaceRequestor |
// Implementation of nsIInterfaceRequestor |
NS_IMETHODIMP |
NS_IMETHODIMP |
Line 144 nsCocoaBrowserListener::GetInterface(con
|
Line 154 nsCocoaBrowserListener::GetInterface(con
|
return QueryInterface(aIID, aInstancePtr); |
return QueryInterface(aIID, aInstancePtr); |
} |
} |
|
|
|
// Implementation of nsIWindowCreator. The CocoaBrowserService forwards requests |
|
// for a new window that have a parent to us, and we take over from there. |
|
/* nsIWebBrowserChrome createChromeWindow (in nsIWebBrowserChrome parent, in PRUint32 chromeFlags); */ |
|
NS_IMETHODIMP |
|
nsCocoaBrowserListener::CreateChromeWindow(nsIWebBrowserChrome *parent, |
|
PRUint32 chromeFlags, |
|
nsIWebBrowserChrome **_retval) |
|
{ |
|
if (parent != this) { |
|
printf("Mismatch in nsCocoaBrowserListener::CreateChromeWindow. We should be the owning parent.\n"); |
|
return NS_ERROR_FAILURE; |
|
} |
|
|
|
NSBrowserView* childView = [mContainer createBrowserWindow: chromeFlags]; |
|
if (!childView) { |
|
printf("No NSBrowserView hooked up for a newly created window yet.\n"); |
|
return NS_ERROR_FAILURE; |
|
} |
|
|
|
nsCocoaBrowserListener* listener = [childView getCocoaBrowserListener]; |
|
if (!listener) { |
|
printf("Uh-oh! No listener yet for a newly created window (nsCocoaBrowserlistener)\n"); |
|
return NS_ERROR_FAILURE; |
|
} |
|
|
|
*_retval = listener; |
|
NS_IF_ADDREF(*_retval); |
|
return NS_OK; |
|
} |
|
|
// Implementation of nsIWebBrowserChrome |
// Implementation of nsIWebBrowserChrome |
/* void setStatus (in unsigned long statusType, in wstring status); */ |
/* void setStatus (in unsigned long statusType, in wstring status); */ |
NS_IMETHODIMP |
NS_IMETHODIMP |
Line 249 nsCocoaBrowserListener::ShowAsModal()
|
Line 289 nsCocoaBrowserListener::ShowAsModal()
|
} |
} |
|
|
mIsModal = PR_TRUE; |
mIsModal = PR_TRUE; |
int result = [NSApp runModalForWindow:window]; | //int result = [NSApp runModalForWindow:window]; |
mIsModal = PR_FALSE; |
mIsModal = PR_FALSE; |
|
|
return (nsresult)result; | return NS_OK; |
} |
} |
|
|
/* boolean isWindowModal (); */ |
/* boolean isWindowModal (); */ |
Line 270 nsCocoaBrowserListener::IsWindowModal(PR
|
Line 310 nsCocoaBrowserListener::IsWindowModal(PR
|
NS_IMETHODIMP |
NS_IMETHODIMP |
nsCocoaBrowserListener::ExitModalEventLoop(nsresult aStatus) |
nsCocoaBrowserListener::ExitModalEventLoop(nsresult aStatus) |
{ |
{ |
[NSApp stopModalWithCode:(int)aStatus]; | // [NSApp stopModalWithCode:(int)aStatus]; |
|
|
return NS_OK; |
return NS_OK; |
} |
} |
Line 557 nsCocoaBrowserListener::OnStatusChange(n
|
Line 597 nsCocoaBrowserListener::OnStatusChange(n
|
nsresult aStatus, |
nsresult aStatus, |
const PRUnichar *aMessage) |
const PRUnichar *aMessage) |
{ |
{ |
|
nsCAutoString msg; msg.AssignWithConversion(aMessage); |
|
|
|
NSString* str = [NSString stringWithCString:msg.get()]; |
|
|
|
NSEnumerator* enumerator = [mListeners objectEnumerator]; |
|
id obj; |
|
|
|
while ((obj = [enumerator nextObject])) { |
|
[obj onStatusChange: str]; |
|
} |
|
|
return NS_OK; |
return NS_OK; |
} |
} |
|
|
Line 913 nsHeaderSniffer::OnSecurityChange(nsIWeb
|
Line 964 nsHeaderSniffer::OnSecurityChange(nsIWeb
|
{ |
{ |
NS_RELEASE(_listener); |
NS_RELEASE(_listener); |
NS_IF_RELEASE(_webBrowser); |
NS_IF_RELEASE(_webBrowser); |
|
|
|
nsCocoaBrowserService::BrowserClosed(); |
|
|
|
printf("NSBrowserView died.\n"); |
|
|
[super dealloc]; |
[super dealloc]; |
} |
} |
|
|
Line 1078 nsHeaderSniffer::OnSecurityChange(nsIWeb
|
Line 1134 nsHeaderSniffer::OnSecurityChange(nsIWeb
|
return url; |
return url; |
} |
} |
|
|
|
- (nsCocoaBrowserListener*)getCocoaBrowserListener |
|
{ |
|
return _listener; |
|
} |
|
|
- (nsIWebBrowser*)getWebBrowser |
- (nsIWebBrowser*)getWebBrowser |
{ |
{ |
NS_IF_ADDREF(_webBrowser); |
NS_IF_ADDREF(_webBrowser); |
Line 1162 nsHeaderSniffer::OnSecurityChange(nsIWeb
|
Line 1223 nsHeaderSniffer::OnSecurityChange(nsIWeb
|
print->Print(nsnull, nsnull); |
print->Print(nsnull, nsnull); |
} |
} |
|
|
|
-(void)findInPage |
|
{ |
|
FindDlgController* findDialog = [[FindDlgController alloc] initWithWindowNibName: @"FindDialog"]; |
|
nsCOMPtr<nsIWebBrowserFocus> wbf(do_QueryInterface(_webBrowser)); |
|
nsCOMPtr<nsIDOMWindow> rootWindow; |
|
nsCOMPtr<nsIDOMWindow> focusedWindow; |
|
_webBrowser->GetContentDOMWindow(getter_AddRefs(rootWindow)); |
|
wbf->GetFocusedWindow(getter_AddRefs(focusedWindow)); |
|
if (!focusedWindow) |
|
focusedWindow = rootWindow; |
|
nsCOMPtr<nsIWebBrowserFind> webFind(do_GetInterface(_webBrowser)); |
|
nsCOMPtr<nsIWebBrowserFindInFrames> framesFind(do_QueryInterface(webFind)); |
|
framesFind->SetRootSearchFrame(rootWindow); |
|
framesFind->SetCurrentSearchFrame(focusedWindow); |
|
|
|
[findDialog setFind: webFind]; |
|
[findDialog showWindow: findDialog]; |
|
} |
|
|
|
-(void)findAgain |
|
{ |
|
} |
|
|
-(void)saveDocument: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList |
-(void)saveDocument: (NSView*)aFilterView filterList: (NSPopUpButton*)aFilterList |
{ |
{ |
nsCOMPtr<nsIWebBrowserFocus> wbf(do_QueryInterface(_webBrowser)); |
nsCOMPtr<nsIWebBrowserFocus> wbf(do_QueryInterface(_webBrowser)); |
Line 1176 nsHeaderSniffer::OnSecurityChange(nsIWeb
|
Line 1260 nsHeaderSniffer::OnSecurityChange(nsIWeb
|
domWindow->GetDocument(getter_AddRefs(domDocument)); |
domWindow->GetDocument(getter_AddRefs(domDocument)); |
if (!domDocument) |
if (!domDocument) |
return; |
return; |
|
nsCOMPtr<nsIDOMNSDocument> nsDoc(do_QueryInterface(domDocument)); |
|
if (!nsDoc) |
|
return; |
|
nsCOMPtr<nsIDOMLocation> location; |
|
nsDoc->GetLocation(getter_AddRefs(location)); |
|
if (!location) |
|
return; |
|
nsAutoString urlStr; |
|
location->GetHref(urlStr); |
|
nsCAutoString urlCStr; urlCStr.AssignWithConversion(urlStr); |
|
nsCOMPtr<nsIURI> url; |
|
nsresult rv = NS_NewURI(getter_AddRefs(url), urlCStr.get()); |
|
if (NS_FAILED(rv)) |
|
return; |
|
|
|
#if 0 |
nsCOMPtr<nsIDocument> doc(do_QueryInterface(domDocument)); |
nsCOMPtr<nsIDocument> doc(do_QueryInterface(domDocument)); |
if (!doc) |
if (!doc) |
return; |
return; |
nsCOMPtr<nsIURI> url; |
nsCOMPtr<nsIURI> url; |
doc->GetDocumentURL(getter_AddRefs(url)); |
doc->GetDocumentURL(getter_AddRefs(url)); |
|
#endif |
|
|
[self saveInternal: url.get() |
[self saveInternal: url.get() |
withDocument: domDocument |
withDocument: domDocument |
Line 1189 nsHeaderSniffer::OnSecurityChange(nsIWeb
|
Line 1290 nsHeaderSniffer::OnSecurityChange(nsIWeb
|
filterList: aFilterList]; |
filterList: aFilterList]; |
} |
} |
|
|
|
|
|
-(IBAction)cut:(id)aSender |
|
{ |
|
nsCOMPtr<nsIClipboardCommands> clipboard(do_GetInterface(_webBrowser)); |
|
clipboard->CutSelection(); |
|
} |
|
|
|
-(IBAction)copy:(id)aSender |
|
{ |
|
nsCOMPtr<nsIClipboardCommands> clipboard(do_GetInterface(_webBrowser)); |
|
clipboard->CopySelection(); |
|
} |
|
|
|
-(IBAction)paste:(id)aSender |
|
{ |
|
nsCOMPtr<nsIClipboardCommands> clipboard(do_GetInterface(_webBrowser)); |
|
clipboard->Paste(); |
|
} |
|
|
|
-(IBAction)clear:(id)aSender |
|
{ |
|
nsCOMPtr<nsIClipboardCommands> clipboard(do_GetInterface(_webBrowser)); |
|
clipboard->SelectNone(); |
|
} |
|
|
|
-(IBAction)selectAll:(id)aSender |
|
{ |
|
nsCOMPtr<nsIClipboardCommands> clipboard(do_GetInterface(_webBrowser)); |
|
clipboard->SelectAll(); |
|
} |
|
|
|
-(NSString*)getCurrentURLSpec |
|
{ |
|
NSString* empty = @""; |
|
nsCOMPtr<nsIDOMWindow> domWindow; |
|
_webBrowser->GetContentDOMWindow(getter_AddRefs(domWindow)); |
|
if (!domWindow) |
|
return empty; |
|
|
|
nsCOMPtr<nsIDOMDocument> domDocument; |
|
domWindow->GetDocument(getter_AddRefs(domDocument)); |
|
if (!domDocument) |
|
return empty; |
|
nsCOMPtr<nsIDOMNSDocument> nsDoc(do_QueryInterface(domDocument)); |
|
if (!nsDoc) |
|
return empty; |
|
nsCOMPtr<nsIDOMLocation> location; |
|
nsDoc->GetLocation(getter_AddRefs(location)); |
|
if (!location) |
|
return empty; |
|
nsAutoString urlStr; |
|
location->GetHref(urlStr); |
|
nsCAutoString urlCStr; urlCStr.AssignWithConversion(urlStr); |
|
|
|
return [NSString stringWithCString: urlCStr.get()]; |
|
} |
|
|
|
- (void)setActive: (BOOL)aIsActive |
|
{ |
|
nsCOMPtr<nsIWebBrowserFocus> wbf(do_QueryInterface(_webBrowser)); |
|
if (aIsActive) |
|
wbf->Activate(); |
|
else |
|
wbf->Deactivate(); |
|
} |
@end |
@end |
|
|