From 12c40e3a0cca3a165766de79404f9ed786942d61 Mon Sep 17 00:00:00 2001 From: "dr%netscape.com" Date: Wed, 25 Apr 2001 02:04:56 +0000 Subject: [PATCH] fix for 70224 (need nsIWebBrowserChromeFocus for embedding). r=danm, sr=hyatt, a=asa git-svn-id: svn://10.0.0.236/trunk@93048 18797224-902f-48f8-a5cc-f745e15eee43 --- .../events/src/nsEventStateManager.cpp | 2 +- mozilla/docshell/base/nsDocShell.cpp | 36 ++++++++++--- mozilla/docshell/base/nsDocShell.h | 2 +- .../embedding/browser/gtk/src/EmbedWindow.cpp | 15 ++++++ .../embedding/browser/gtk/src/EmbedWindow.h | 4 ++ .../browser/photon/src/PhMozEmbedChrome.cpp | 5 +- .../powerplant/source/CWebBrowserChrome.cpp | 14 ++++++ .../powerplant/source/CWebBrowserChrome.h | 17 ++++--- .../embedding/browser/webBrowser/MANIFEST_IDL | 1 + .../embedding/browser/webBrowser/Makefile.in | 1 + .../embedding/browser/webBrowser/makefile.win | 1 + .../webBrowser/nsDocShellTreeOwner.cpp | 9 +++- .../webBrowser/nsIWebBrowserChromeFocus.idl | 50 +++++++++++++++++++ .../browser/webBrowser/nsWebBrowser.cpp | 6 ++- .../tests/gtkEmbed/WebBrowserChrome.cpp | 15 +++++- .../tests/gtkEmbed/WebBrowserChrome.h | 6 ++- .../embedding/tests/mfcembed/BrowserImpl.cpp | 15 ++++++ .../embedding/tests/mfcembed/BrowserImpl.h | 3 ++ .../tests/winEmbed/WebBrowserChrome.cpp | 14 ++++++ .../tests/winEmbed/WebBrowserChrome.h | 5 +- .../webshell/tests/viewer/nsBrowserWindow.cpp | 5 +- .../xpfe/appshell/src/nsChromeTreeOwner.cpp | 7 +-- .../xpfe/appshell/src/nsContentTreeOwner.cpp | 7 +-- mozilla/xpfe/appshell/src/nsXULWindow.cpp | 5 +- 24 files changed, 210 insertions(+), 35 deletions(-) create mode 100644 mozilla/embedding/browser/webBrowser/nsIWebBrowserChromeFocus.idl diff --git a/mozilla/content/events/src/nsEventStateManager.cpp b/mozilla/content/events/src/nsEventStateManager.cpp index 4b2412230ab..e83673a53a1 100644 --- a/mozilla/content/events/src/nsEventStateManager.cpp +++ b/mozilla/content/events/src/nsEventStateManager.cpp @@ -2438,7 +2438,7 @@ nsEventStateManager::ShiftFocus(PRBool forward, nsIContent* aRoot) mPresContext->GetContainer(getter_AddRefs(container)); nsCOMPtr docShellAsWin(do_QueryInterface(container)); if (docShellAsWin) { - docShellAsWin->FocusAvailable(docShellAsWin, &focusTaken); + docShellAsWin->FocusAvailable(docShellAsWin, forward, &focusTaken); } //No one took focus and we're not already at the top of the doc diff --git a/mozilla/docshell/base/nsDocShell.cpp b/mozilla/docshell/base/nsDocShell.cpp index 02933aa004c..e6ed502652e 100644 --- a/mozilla/docshell/base/nsDocShell.cpp +++ b/mozilla/docshell/base/nsDocShell.cpp @@ -20,6 +20,7 @@ * Travis Bogard * Pierre Phaneuf * Peter Annema + * Dan Rosen */ #include "nsIComponentManager.h" @@ -102,6 +103,10 @@ #include "nsIFrame.h" #include "nsIStyleContext.h" +// for embedding +#include "nsIEmbeddingSiteWindow.h" +#include "nsIWebBrowserChromeFocus.h" + static NS_DEFINE_IID(kDeviceContextCID, NS_DEVICE_CONTEXT_CID); static NS_DEFINE_CID(kSimpleURICID, NS_SIMPLEURI_CID); static NS_DEFINE_CID(kDocumentCharsetInfoCID, NS_DOCUMENTCHARSETINFO_CID); @@ -2025,14 +2030,31 @@ NS_IMETHODIMP nsDocShell::SetFocus() return NS_OK; } -NS_IMETHODIMP nsDocShell::FocusAvailable(nsIBaseWindow* aCurrentFocus, +NS_IMETHODIMP nsDocShell::FocusAvailable(nsIBaseWindow* aCurrentFocus, + PRBool aForward, PRBool* aTookFocus) { NS_ENSURE_ARG_POINTER(aTookFocus); - - // Next person we should call is first the parent otherwise the - // docshell tree owner. + nsresult ret; + + // Are we embedded? + + nsCOMPtr + chromeFocus(do_GetInterface(mTreeOwner, &ret)); + if (chromeFocus) { +#ifdef DEBUG_dr + printf("dr :: nsDocShell::FocusAvailable, embedded\n"); +#endif + if (aForward) + ret = chromeFocus->FocusNextElement(); + else + ret = chromeFocus->FocusPrevElement(); + return ret; + } + + // Otherwise, first person we should call is the parent, or the + // docshell tree owner. nsCOMPtr nextCallWin(do_QueryInterface(mParent)); if(!nextCallWin) nextCallWin = do_QueryInterface(mTreeOwner); @@ -2040,7 +2062,9 @@ NS_IMETHODIMP nsDocShell::FocusAvailable(nsIBaseWindow* aCurrentFocus, //If the current focus is us, offer it to the next owner. if(aCurrentFocus == NS_STATIC_CAST(nsIBaseWindow*, this)) { if(nextCallWin) { - nsresult ret = nextCallWin->FocusAvailable(aCurrentFocus, aTookFocus); + ret = nextCallWin->FocusAvailable(aCurrentFocus, + aForward, + aTookFocus); if (NS_SUCCEEDED(ret) && *aTookFocus) return NS_OK; } @@ -2094,7 +2118,7 @@ NS_IMETHODIMP nsDocShell::FocusAvailable(nsIBaseWindow* aCurrentFocus, // Call again to offer focus upwards and to start at the beginning of our // child list if no one above us wants focus. - return FocusAvailable(this, aTookFocus); + return FocusAvailable(this, aForward, aTookFocus); } NS_IMETHODIMP nsDocShell::GetTitle(PRUnichar** aTitle) diff --git a/mozilla/docshell/base/nsDocShell.h b/mozilla/docshell/base/nsDocShell.h index fa37174f1b4..bfca595b63b 100644 --- a/mozilla/docshell/base/nsDocShell.h +++ b/mozilla/docshell/base/nsDocShell.h @@ -1,4 +1,4 @@ -/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file diff --git a/mozilla/embedding/browser/gtk/src/EmbedWindow.cpp b/mozilla/embedding/browser/gtk/src/EmbedWindow.cpp index 652ca36f454..daddf2dc5f0 100644 --- a/mozilla/embedding/browser/gtk/src/EmbedWindow.cpp +++ b/mozilla/embedding/browser/gtk/src/EmbedWindow.cpp @@ -99,6 +99,7 @@ NS_IMPL_RELEASE(EmbedWindow) NS_INTERFACE_MAP_BEGIN(EmbedWindow) NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWebBrowserChrome) NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChrome) + NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChromeFocus) NS_INTERFACE_MAP_ENTRY(nsIEmbeddingSiteWindow) NS_INTERFACE_MAP_ENTRY(nsITooltipListener) NS_INTERFACE_MAP_ENTRY(nsIPrompt) @@ -232,6 +233,20 @@ EmbedWindow::ExitModalEventLoop(nsresult aStatus) return NS_ERROR_NOT_IMPLEMENTED; } +// nsIWebBrowserChromeFocus + +NS_IMETHODIMP +EmbedWindow::FocusNextElement() +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +EmbedWindow::FocusPrevElement() +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + // nsIEmbeddingSiteWindow NS_IMETHODIMP diff --git a/mozilla/embedding/browser/gtk/src/EmbedWindow.h b/mozilla/embedding/browser/gtk/src/EmbedWindow.h index 0e77542806d..4523102eeea 100644 --- a/mozilla/embedding/browser/gtk/src/EmbedWindow.h +++ b/mozilla/embedding/browser/gtk/src/EmbedWindow.h @@ -23,6 +23,7 @@ #define __EmbedWindow_h #include +#include #include #include #include @@ -37,6 +38,7 @@ class EmbedPrivate; class EmbedWindow : public nsIWebBrowserChrome, + public nsIWebBrowserChromeFocus, public nsIEmbeddingSiteWindow, public nsITooltipListener, public nsIPrompt, @@ -56,6 +58,8 @@ class EmbedWindow : public nsIWebBrowserChrome, NS_DECL_NSIWEBBROWSERCHROME + NS_DECL_NSIWEBBROWSERCHROMEFOCUS + NS_DECL_NSIEMBEDDINGSITEWINDOW NS_DECL_NSITOOLTIPLISTENER diff --git a/mozilla/embedding/browser/photon/src/PhMozEmbedChrome.cpp b/mozilla/embedding/browser/photon/src/PhMozEmbedChrome.cpp index 959303ddac8..7a748fcc670 100644 --- a/mozilla/embedding/browser/photon/src/PhMozEmbedChrome.cpp +++ b/mozilla/embedding/browser/photon/src/PhMozEmbedChrome.cpp @@ -782,8 +782,9 @@ NS_IMETHODIMP PhMozEmbedChrome::SetFocus(void) return NS_ERROR_NOT_IMPLEMENTED; } -NS_IMETHODIMP PhMozEmbedChrome::FocusAvailable(nsIBaseWindow *aCurrentFocus, - PRBool *aTookFocus) +NS_IMETHODIMP PhMozEmbedChrome::FocusAvailable(nsIBaseWindow *aCurrentFocus, + PRBool aForward, + PRBool *aTookFocus) { PR_LOG(mozEmbedLm, PR_LOG_DEBUG, ("PhMozEmbedChrome::FocusAvailable\n")); return NS_ERROR_NOT_IMPLEMENTED; diff --git a/mozilla/embedding/browser/powerplant/source/CWebBrowserChrome.cpp b/mozilla/embedding/browser/powerplant/source/CWebBrowserChrome.cpp index 021999e3d91..b324277e4c5 100644 --- a/mozilla/embedding/browser/powerplant/source/CWebBrowserChrome.cpp +++ b/mozilla/embedding/browser/powerplant/source/CWebBrowserChrome.cpp @@ -227,6 +227,20 @@ NS_IMETHODIMP CWebBrowserChrome::ExitModalEventLoop(nsresult aStatus) return NS_OK; } +//***************************************************************************** +// CWebBrowserChrome::nsIWebBrowserChromeFocus +//***************************************************************************** + +NS_IMETHODIMP CWebBrowserChrome::FocusNextElement() +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP CWebBrowserChrome::FocusPrevElement() +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + //***************************************************************************** // CWebBrowserChrome::nsIWebProgressListener //***************************************************************************** diff --git a/mozilla/embedding/browser/powerplant/source/CWebBrowserChrome.h b/mozilla/embedding/browser/powerplant/source/CWebBrowserChrome.h index 655f39db20d..ba4b7a6859b 100644 --- a/mozilla/embedding/browser/powerplant/source/CWebBrowserChrome.h +++ b/mozilla/embedding/browser/powerplant/source/CWebBrowserChrome.h @@ -1,4 +1,4 @@ -/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file @@ -29,6 +29,7 @@ // Interfaces Needed #include "nsIWebBrowserChrome.h" +#include "nsIWebBrowserChromeFocus.h" #include "nsIWebProgressListener.h" #include "nsIEmbeddingSiteWindow.h" #include "nsIInterfaceRequestor.h" @@ -44,18 +45,20 @@ class CBrowserWindow; class CBrowserShell; class CWebBrowserChrome : public nsIWebBrowserChrome, - public nsIWebProgressListener, - public nsIEmbeddingSiteWindow, - public nsIInterfaceRequestor, - public nsIContextMenuListener, - public nsITooltipListener, - public nsSupportsWeakReference + public nsIWebBrowserChromeFocus, + public nsIWebProgressListener, + public nsIEmbeddingSiteWindow, + public nsIInterfaceRequestor, + public nsIContextMenuListener, + public nsITooltipListener, + public nsSupportsWeakReference { friend class CBrowserWindow; public: NS_DECL_ISUPPORTS NS_DECL_NSIWEBBROWSERCHROME + NS_DECL_NSIWEBBROWSERCHROMEFOCUS NS_DECL_NSIWEBPROGRESSLISTENER NS_DECL_NSIEMBEDDINGSITEWINDOW NS_DECL_NSIINTERFACEREQUESTOR diff --git a/mozilla/embedding/browser/webBrowser/MANIFEST_IDL b/mozilla/embedding/browser/webBrowser/MANIFEST_IDL index f43334b563e..142a48315f5 100644 --- a/mozilla/embedding/browser/webBrowser/MANIFEST_IDL +++ b/mozilla/embedding/browser/webBrowser/MANIFEST_IDL @@ -23,6 +23,7 @@ nsCWebBrowser.idl nsIWebBrowser.idl nsIWebBrowserChrome.idl +nsIWebBrowserChromeFocus.idl nsIWebBrowserSetup.idl nsIEmbeddingSiteWindow.idl nsIWebBrowserPersist.idl diff --git a/mozilla/embedding/browser/webBrowser/Makefile.in b/mozilla/embedding/browser/webBrowser/Makefile.in index bad89469ca3..430a7e05569 100644 --- a/mozilla/embedding/browser/webBrowser/Makefile.in +++ b/mozilla/embedding/browser/webBrowser/Makefile.in @@ -34,6 +34,7 @@ XPIDLSRCS = \ nsCWebBrowser.idl \ nsIWebBrowser.idl \ nsIWebBrowserChrome.idl \ + nsIWebBrowserChromeFocus.idl \ nsIWebBrowserSetup.idl \ nsICommandHandler.idl \ nsIContextMenuListener.idl \ diff --git a/mozilla/embedding/browser/webBrowser/makefile.win b/mozilla/embedding/browser/webBrowser/makefile.win index ceecf94b4ee..2cd7f4740d1 100644 --- a/mozilla/embedding/browser/webBrowser/makefile.win +++ b/mozilla/embedding/browser/webBrowser/makefile.win @@ -28,6 +28,7 @@ XPIDLSRCS= \ .\nsCWebBrowser.idl \ .\nsIWebBrowser.idl \ .\nsIWebBrowserChrome.idl \ + .\nsIWebBrowserChromeFocus.idl \ .\nsICommandHandler.idl \ .\nsIWebBrowserSetup.idl \ .\nsIWebBrowserPersist.idl \ diff --git a/mozilla/embedding/browser/webBrowser/nsDocShellTreeOwner.cpp b/mozilla/embedding/browser/webBrowser/nsDocShellTreeOwner.cpp index 01616f9778a..816ee2058a6 100644 --- a/mozilla/embedding/browser/webBrowser/nsDocShellTreeOwner.cpp +++ b/mozilla/embedding/browser/webBrowser/nsDocShellTreeOwner.cpp @@ -57,6 +57,7 @@ #include "nsPIWindowWatcher.h" #include "nsIPrompt.h" #include "nsIWalletService.h" +#include "nsIWebBrowserChromeFocus.h" static char *sWindowWatcherContractID = "@mozilla.org/embedcomp/window-watcher;1"; @@ -112,6 +113,9 @@ NS_IMETHODIMP nsDocShellTreeOwner::GetInterface(const nsIID& aIID, void** aSink) if(NS_SUCCEEDED(QueryInterface(aIID, aSink))) return NS_OK; + if (aIID.Equals(NS_GET_IID(nsIWebBrowserChromeFocus))) + return mOwnerWin->QueryInterface(aIID, aSink); + if (aIID.Equals(NS_GET_IID(nsIPrompt))) { nsIPrompt *prompt; EnsurePrompter(); @@ -617,8 +621,9 @@ NS_IMETHODIMP nsDocShellTreeOwner::SetFocus() return NS_ERROR_NULL_POINTER; } -NS_IMETHODIMP nsDocShellTreeOwner::FocusAvailable(nsIBaseWindow* aCurrentFocus, - PRBool* aTookFocus) +NS_IMETHODIMP nsDocShellTreeOwner::FocusAvailable(nsIBaseWindow* aCurrentFocus, + PRBool aForward, + PRBool* aTookFocus) { return NS_ERROR_NULL_POINTER; } diff --git a/mozilla/embedding/browser/webBrowser/nsIWebBrowserChromeFocus.idl b/mozilla/embedding/browser/webBrowser/nsIWebBrowserChromeFocus.idl new file mode 100644 index 00000000000..b3a95c0fc33 --- /dev/null +++ b/mozilla/embedding/browser/webBrowser/nsIWebBrowserChromeFocus.idl @@ -0,0 +1,50 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 0 -*- + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is the Mozilla browser. + * + * The Initial Developer of the Original Code is Netscape + * Communications, Inc. Portions created by Netscape are + * Copyright (C) 1999, Mozilla. All Rights Reserved. + * + * Original Author: + * Dan Rosen + * Contributor(s): + * + */ + +#include "nsISupports.idl" + +/** + * The nsIWebBrowserChromeFocus is implemented by the same object as the + * nsIWebBrowserSiteWindow. It represents the focus up-calls from mozilla + * to the embedding chrome. See mozilla bug #70224 for gratuitous info. + * + * @status UNDER_REVIEW + */ + +[scriptable, uuid(d2206418-1dd1-11b2-8e55-acddcd2bcfb8)] +interface nsIWebBrowserChromeFocus : nsISupports +{ + /** + * Set the focus at the next focusable element in the chrome + */ + + void focusNextElement(); + + /** + * Set the focus at the previous focusable element in the chrome + */ + + void focusPrevElement(); + +}; diff --git a/mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp b/mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp index bb1672a2da0..71b65d2aa2c 100644 --- a/mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp +++ b/mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp @@ -1191,7 +1191,8 @@ NS_IMETHODIMP nsWebBrowser::SetFocus() } NS_IMETHODIMP nsWebBrowser::FocusAvailable(nsIBaseWindow* aCurrentFocus, - PRBool* aTookFocus) + PRBool aForward, + PRBool* aTookFocus) { NS_ENSURE_ARG_POINTER(aTookFocus); @@ -1205,7 +1206,8 @@ NS_IMETHODIMP nsWebBrowser::FocusAvailable(nsIBaseWindow* aCurrentFocus, if(aCurrentFocus == NS_STATIC_CAST(nsIBaseWindow*, this)) { if(nextCallWin) - return nextCallWin->FocusAvailable(aCurrentFocus, aTookFocus); + return nextCallWin->FocusAvailable(aCurrentFocus, + aForward, aTookFocus); return NS_OK; } diff --git a/mozilla/embedding/tests/gtkEmbed/WebBrowserChrome.cpp b/mozilla/embedding/tests/gtkEmbed/WebBrowserChrome.cpp index 570654589f2..0b5a0f25505 100644 --- a/mozilla/embedding/tests/gtkEmbed/WebBrowserChrome.cpp +++ b/mozilla/embedding/tests/gtkEmbed/WebBrowserChrome.cpp @@ -59,6 +59,7 @@ NS_INTERFACE_MAP_BEGIN(WebBrowserChrome) NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWebBrowserChrome) NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor) NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChrome) + NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChromeFocus) NS_INTERFACE_MAP_ENTRY(nsIEmbeddingSiteWindow) NS_INTERFACE_MAP_ENTRY(nsIWebProgressListener) //optional // NS_INTERFACE_MAP_ENTRY(nsIPrompt) @@ -207,6 +208,19 @@ NS_IMETHODIMP WebBrowserChrome::ExitModalEventLoop(nsresult aStatus) return NS_ERROR_NOT_IMPLEMENTED; } +//***************************************************************************** +// WebBrowserChrome::nsIWebBrowserChromeFocus +//***************************************************************************** + +NS_IMETHODIMP WebBrowserChrome::FocusNextElement() +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP WebBrowserChrome::FocusPrevElement() +{ + return NS_ERROR_NOT_IMPLEMENTED; +} //***************************************************************************** // WebBrowserChrome::nsIWebProgressListener @@ -306,4 +320,3 @@ NS_IMETHODIMP WebBrowserChrome::GetSiteWindow(void ** aSiteWindow) *aSiteWindow = mNativeWindow; return NS_OK; } - diff --git a/mozilla/embedding/tests/gtkEmbed/WebBrowserChrome.h b/mozilla/embedding/tests/gtkEmbed/WebBrowserChrome.h index 7c45ecce45e..dc49fd6ca35 100644 --- a/mozilla/embedding/tests/gtkEmbed/WebBrowserChrome.h +++ b/mozilla/embedding/tests/gtkEmbed/WebBrowserChrome.h @@ -1,4 +1,4 @@ -/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file @@ -26,6 +26,7 @@ #include "nsIGenericFactory.h" #include "nsString.h" #include "nsIWebBrowserChrome.h" +#include "nsIWebBrowserChromeFocus.h" #include "nsIDocShell.h" #include "nsIContentViewer.h" @@ -40,8 +41,8 @@ #include "nsVoidArray.h" - class WebBrowserChrome : public nsIWebBrowserChrome, + public nsIWebBrowserChromeFocus, public nsIWebProgressListener, public nsIEmbeddingSiteWindow, // public nsIPrompt, @@ -56,6 +57,7 @@ public: NS_DECL_NSIWEBBROWSERCHROME NS_DECL_NSIWEBPROGRESSLISTENER NS_DECL_NSIEMBEDDINGSITEWINDOW + NS_DECL_NSIWEBBROWSERCHROMEFOCUS // NS_DECL_NSIPROMPT NS_DECL_NSIINTERFACEREQUESTOR diff --git a/mozilla/embedding/tests/mfcembed/BrowserImpl.cpp b/mozilla/embedding/tests/mfcembed/BrowserImpl.cpp index 10de6cf98c5..f3e54aae28a 100644 --- a/mozilla/embedding/tests/mfcembed/BrowserImpl.cpp +++ b/mozilla/embedding/tests/mfcembed/BrowserImpl.cpp @@ -104,6 +104,7 @@ NS_INTERFACE_MAP_BEGIN(CBrowserImpl) NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWebBrowserChrome) NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor) NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChrome) + NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChromeFocus) NS_INTERFACE_MAP_ENTRY(nsIEmbeddingSiteWindow) NS_INTERFACE_MAP_ENTRY(nsIWebProgressListener) NS_INTERFACE_MAP_ENTRY(nsIContextMenuListener) @@ -240,6 +241,20 @@ NS_IMETHODIMP CBrowserImpl::ExitModalEventLoop(nsresult aStatus) return NS_OK; } +//***************************************************************************** +// CBrowserImpl::nsIWebBrowserChromeFocus +//***************************************************************************** + +NS_IMETHODIMP CBrowserImpl::FocusNextElement() +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP CBrowserImpl::FocusPrevElement() +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + //***************************************************************************** // CBrowserImpl::nsIEmbeddingSiteWindow //***************************************************************************** diff --git a/mozilla/embedding/tests/mfcembed/BrowserImpl.h b/mozilla/embedding/tests/mfcembed/BrowserImpl.h index b974b18dc69..5cd74546a38 100644 --- a/mozilla/embedding/tests/mfcembed/BrowserImpl.h +++ b/mozilla/embedding/tests/mfcembed/BrowserImpl.h @@ -25,9 +25,11 @@ #define _BROWSERIMPL_H #include "IBrowserFrameGlue.h" +#include "nsIWebBrowserChromeFocus.h" class CBrowserImpl : public nsIInterfaceRequestor, public nsIWebBrowserChrome, + public nsIWebBrowserChromeFocus, public nsIEmbeddingSiteWindow, public nsIWebProgressListener, public nsIContextMenuListener, @@ -42,6 +44,7 @@ public: NS_DECL_ISUPPORTS NS_DECL_NSIINTERFACEREQUESTOR NS_DECL_NSIWEBBROWSERCHROME + NS_DECL_NSIWEBBROWSERCHROMEFOCUS NS_DECL_NSIEMBEDDINGSITEWINDOW NS_DECL_NSIWEBPROGRESSLISTENER NS_DECL_NSICONTEXTMENULISTENER diff --git a/mozilla/embedding/tests/winEmbed/WebBrowserChrome.cpp b/mozilla/embedding/tests/winEmbed/WebBrowserChrome.cpp index 31e93d41a60..4e192ee8651 100644 --- a/mozilla/embedding/tests/winEmbed/WebBrowserChrome.cpp +++ b/mozilla/embedding/tests/winEmbed/WebBrowserChrome.cpp @@ -251,6 +251,20 @@ NS_IMETHODIMP WebBrowserChrome::ExitModalEventLoop(nsresult aStatus) return NS_OK; } +//***************************************************************************** +// WebBrowserChrome::nsIWebBrowserChromeFocus +//***************************************************************************** + +NS_IMETHODIMP WebBrowserChrome::FocusNextElement() +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP WebBrowserChrome::FocusPrevElement() +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + //***************************************************************************** // WebBrowserChrome::nsIWebProgressListener //***************************************************************************** diff --git a/mozilla/embedding/tests/winEmbed/WebBrowserChrome.h b/mozilla/embedding/tests/winEmbed/WebBrowserChrome.h index d2e500d2af2..038f00c98eb 100644 --- a/mozilla/embedding/tests/winEmbed/WebBrowserChrome.h +++ b/mozilla/embedding/tests/winEmbed/WebBrowserChrome.h @@ -1,4 +1,4 @@ -/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file @@ -26,6 +26,7 @@ #include "nsIGenericFactory.h" #include "nsString.h" #include "nsIWebBrowserChrome.h" +#include "nsIWebBrowserChromeFocus.h" #include "nsIDocShell.h" #include "nsIContentViewer.h" @@ -61,6 +62,7 @@ public: }; class WebBrowserChrome : public nsIWebBrowserChrome, + public nsIWebBrowserChromeFocus, public nsIWebProgressListener, public nsIEmbeddingSiteWindow, public nsIInterfaceRequestor, @@ -77,6 +79,7 @@ public: NS_DECL_ISUPPORTS NS_DECL_NSIWEBBROWSERCHROME + NS_DECL_NSIWEBBROWSERCHROMEFOCUS NS_DECL_NSIWEBPROGRESSLISTENER NS_DECL_NSIEMBEDDINGSITEWINDOW NS_DECL_NSIINTERFACEREQUESTOR diff --git a/mozilla/webshell/tests/viewer/nsBrowserWindow.cpp b/mozilla/webshell/tests/viewer/nsBrowserWindow.cpp index b7af5e0925b..f1ea119e236 100644 --- a/mozilla/webshell/tests/viewer/nsBrowserWindow.cpp +++ b/mozilla/webshell/tests/viewer/nsBrowserWindow.cpp @@ -410,8 +410,9 @@ NS_IMETHODIMP nsBrowserWindow::SetFocus() return NS_OK; } -NS_IMETHODIMP nsBrowserWindow::FocusAvailable(nsIBaseWindow* aCurrentFocus, - PRBool* aTookFocus) +NS_IMETHODIMP nsBrowserWindow::FocusAvailable(nsIBaseWindow* aCurrentFocus, + PRBool aForward, + PRBool* aTookFocus) { //XXX First Check In NS_ASSERTION(PR_FALSE, "Not Yet Implemented"); diff --git a/mozilla/xpfe/appshell/src/nsChromeTreeOwner.cpp b/mozilla/xpfe/appshell/src/nsChromeTreeOwner.cpp index 4f67491324a..4a4e2ca2ec9 100644 --- a/mozilla/xpfe/appshell/src/nsChromeTreeOwner.cpp +++ b/mozilla/xpfe/appshell/src/nsChromeTreeOwner.cpp @@ -310,10 +310,11 @@ NS_IMETHODIMP nsChromeTreeOwner::SetFocus() return mXULWindow->SetFocus(); } -NS_IMETHODIMP nsChromeTreeOwner::FocusAvailable(nsIBaseWindow* aCurrentFocus, - PRBool* aTookFocus) +NS_IMETHODIMP nsChromeTreeOwner::FocusAvailable(nsIBaseWindow* aCurrentFocus, + PRBool aForward, + PRBool* aTookFocus) { - return mXULWindow->FocusAvailable(aCurrentFocus, aTookFocus); + return mXULWindow->FocusAvailable(aCurrentFocus, aForward, aTookFocus); } NS_IMETHODIMP nsChromeTreeOwner::GetTitle(PRUnichar** aTitle) diff --git a/mozilla/xpfe/appshell/src/nsContentTreeOwner.cpp b/mozilla/xpfe/appshell/src/nsContentTreeOwner.cpp index 266218abf80..cf8b3f7a696 100644 --- a/mozilla/xpfe/appshell/src/nsContentTreeOwner.cpp +++ b/mozilla/xpfe/appshell/src/nsContentTreeOwner.cpp @@ -511,10 +511,11 @@ NS_IMETHODIMP nsContentTreeOwner::SetFocus() return mXULWindow->SetFocus(); } -NS_IMETHODIMP nsContentTreeOwner::FocusAvailable(nsIBaseWindow* aCurrentFocus, - PRBool* aTookFocus) +NS_IMETHODIMP nsContentTreeOwner::FocusAvailable(nsIBaseWindow* aCurrentFocus, + PRBool aForward, + PRBool* aTookFocus) { - return mXULWindow->FocusAvailable(aCurrentFocus, aTookFocus); + return mXULWindow->FocusAvailable(aCurrentFocus, aForward, aTookFocus); } NS_IMETHODIMP nsContentTreeOwner::GetTitle(PRUnichar** aTitle) diff --git a/mozilla/xpfe/appshell/src/nsXULWindow.cpp b/mozilla/xpfe/appshell/src/nsXULWindow.cpp index 984b97cdb9b..f2151baa0e2 100644 --- a/mozilla/xpfe/appshell/src/nsXULWindow.cpp +++ b/mozilla/xpfe/appshell/src/nsXULWindow.cpp @@ -588,8 +588,9 @@ NS_IMETHODIMP nsXULWindow::SetFocus() return NS_OK; } -NS_IMETHODIMP nsXULWindow::FocusAvailable(nsIBaseWindow* aCurrentFocus, - PRBool* aTookFocus) +NS_IMETHODIMP nsXULWindow::FocusAvailable(nsIBaseWindow* aCurrentFocus, + PRBool aForward, + PRBool* aTookFocus) { return NS_OK; }