Diff for /chimera/NSBrowserView.mm between versions 1.10 and 1.24

version 1.10, 2002/02/05 01:28:18 version 1.24, 2002/03/06 00:30:35
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 911  nsHeaderSniffer::OnSecurityChange(nsIWeb Line 962  nsHeaderSniffer::OnSecurityChange(nsIWeb
   
 - (void)dealloc   - (void)dealloc 
 {  {
     [super dealloc];
     
   NS_RELEASE(_listener);    NS_RELEASE(_listener);
   NS_IF_RELEASE(_webBrowser);    NS_IF_RELEASE(_webBrowser);
       
   nsCocoaBrowserService::BrowserClosed();    nsCocoaBrowserService::BrowserClosed();
       
  [super dealloc];  printf("NSBrowserView died.\n");
 }  }
   
 - (void)setFrame:(NSRect)frameRect   - (void)setFrame:(NSRect)frameRect 
Line 1081  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 1127  nsHeaderSniffer::OnSecurityChange(nsIWeb Line 1185  nsHeaderSniffer::OnSecurityChange(nsIWeb
     nsCOMPtr<nsIFile> tmpFile;      nsCOMPtr<nsIFile> tmpFile;
     dirService->Get("TmpD", NS_GET_IID(nsIFile), getter_AddRefs(tmpFile));      dirService->Get("TmpD", NS_GET_IID(nsIFile), getter_AddRefs(tmpFile));
     static short unsigned int tmpRandom = 0;      static short unsigned int tmpRandom = 0;
    nsCAutoString tmpNo; tmpNo.AssignWithConversion(tmpRandom++);    nsCAutoString tmpNo; tmpNo.AppendInt(tmpRandom++);
     nsCAutoString saveFile("-sav");      nsCAutoString saveFile("-sav");
     saveFile += tmpNo;      saveFile += tmpNo;
     saveFile += "tmp";      saveFile += "tmp";
Line 1165  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 1179  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 1192  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
   

Removed from v.1.10  
changed lines
  Added in v.1.24


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>