From 84fe2b64c187fc6986b42c2c5607d657d92e65a1 Mon Sep 17 00:00:00 2001 From: "peterlubczynski%netscape.com" Date: Thu, 21 Jun 2001 01:04:29 +0000 Subject: [PATCH] Fix for title bar not updating for full page plugins bug 59749 r=av sr=attinasi a=choffman git-svn-id: svn://10.0.0.236/trunk@97645 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/docshell/base/nsDocShell.cpp | 9 +++- .../modules/plugin/base/public/MANIFEST_IDL | 4 +- .../modules/plugin/base/public/Makefile.in | 3 +- .../modules/plugin/base/public/makefile.win | 1 + .../plugin/base/public/nsIPluginViewer.idl | 44 +++++++++++++++++++ .../plugin/base/src/nsPluginViewer.cpp | 39 +++++----------- .../modules/plugin/nglsrc/nsPluginViewer.cpp | 39 +++++----------- mozilla/modules/plugin/public/MANIFEST_IDL | 4 +- mozilla/modules/plugin/public/Makefile.in | 3 +- mozilla/modules/plugin/public/makefile.win | 1 + .../modules/plugin/public/nsIPluginViewer.idl | 44 +++++++++++++++++++ 11 files changed, 131 insertions(+), 60 deletions(-) create mode 100644 mozilla/modules/plugin/base/public/nsIPluginViewer.idl create mode 100644 mozilla/modules/plugin/public/nsIPluginViewer.idl diff --git a/mozilla/docshell/base/nsDocShell.cpp b/mozilla/docshell/base/nsDocShell.cpp index facd7d40afe..9a6f7efb089 100644 --- a/mozilla/docshell/base/nsDocShell.cpp +++ b/mozilla/docshell/base/nsDocShell.cpp @@ -52,7 +52,8 @@ #include "nsISecurityEventSink.h" #include "nsScriptSecurityManager.h" #include "nsDocumentCharsetInfoCID.h" -#include "nsICanvasFrame.h" +#include "nsICanvasFrame.h" +#include "nsIPluginViewer.h" // Local Includes #include "nsDocShell.h" @@ -3812,8 +3813,12 @@ nsDocShell::NewContentViewerObj(const char *aContentType, aContentHandler, aViewer), NS_ERROR_FAILURE); - + (*aViewer)->SetContainer(NS_STATIC_CAST(nsIContentViewerContainer *, this)); + + nsCOMPtr pv(do_QueryInterface(*aViewer)); + if (pv) + SetTitle(nsnull); // clear title bar for full-page plugins return NS_OK; } diff --git a/mozilla/modules/plugin/base/public/MANIFEST_IDL b/mozilla/modules/plugin/base/public/MANIFEST_IDL index 5511bdbcb96..ceeb09e17a6 100644 --- a/mozilla/modules/plugin/base/public/MANIFEST_IDL +++ b/mozilla/modules/plugin/base/public/MANIFEST_IDL @@ -19,4 +19,6 @@ # # This is a list of local files which get copied to the mozilla:dist:??? directory # -nsIPluginManager.idl \ No newline at end of file +nsIPluginManager.idl +nsIPluginViewer.idl + diff --git a/mozilla/modules/plugin/base/public/Makefile.in b/mozilla/modules/plugin/base/public/Makefile.in index 99fc0fa44be..36b8789e121 100644 --- a/mozilla/modules/plugin/base/public/Makefile.in +++ b/mozilla/modules/plugin/base/public/Makefile.in @@ -67,7 +67,8 @@ EXPORTS += \ XPIDLSRCS = \ nsIScriptablePlugin.idl \ nsIHTTPHeaderListener.idl \ - nsIPluginManager.idl \ + nsIPluginManager.idl \ + nsIPluginViewer.idl \ $(NULL) EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS)) diff --git a/mozilla/modules/plugin/base/public/makefile.win b/mozilla/modules/plugin/base/public/makefile.win index dc505d9ece2..2a8e7a09b85 100644 --- a/mozilla/modules/plugin/base/public/makefile.win +++ b/mozilla/modules/plugin/base/public/makefile.win @@ -58,6 +58,7 @@ XPIDLSRCS = \ .\nsIScriptablePlugin.idl \ .\nsIHTTPHeaderListener.idl \ .\nsIPluginManager.idl \ + .\nsIPluginViewer.idl \ $(NULL) include <$(DEPTH)/config/rules.mak> diff --git a/mozilla/modules/plugin/base/public/nsIPluginViewer.idl b/mozilla/modules/plugin/base/public/nsIPluginViewer.idl new file mode 100644 index 00000000000..bbb6f345377 --- /dev/null +++ b/mozilla/modules/plugin/base/public/nsIPluginViewer.idl @@ -0,0 +1,44 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape 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/NPL/ + * + * 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 mozilla.org code. + * + * The Initial Developer of the Original Code is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 2000 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + +/** + * Interface for the content viewer for full-page plugins + */ + +#include "nsISupports.idl" +#include "nsIRequest.idl" +#include "nsIStreamListener.idl" + +[uuid(506967e5-837f-44af-91bd-018b959476c0)] +interface nsIPluginViewer : nsISupports +{ +%{C++ + + + /** + * Creates a new plugin viewer, based on a nsIRequest. + */ + void StartLoad (nsIRequest * aRequest, nsIStreamListener *&aResult); +%} +}; + diff --git a/mozilla/modules/plugin/base/src/nsPluginViewer.cpp b/mozilla/modules/plugin/base/src/nsPluginViewer.cpp index 15c71a66af7..9ad6d1aa3da 100644 --- a/mozilla/modules/plugin/base/src/nsPluginViewer.cpp +++ b/mozilla/modules/plugin/base/src/nsPluginViewer.cpp @@ -45,7 +45,7 @@ #include "nsIWebBrowserChrome.h" #include "nsIDOMDocument.h" #include "nsPluginViewer.h" - +#include "nsIPluginViewer.h" #include "nsITimer.h" @@ -150,7 +150,8 @@ private: nsRect& aClipRect); -class PluginViewerImpl : public nsIContentViewer, +class PluginViewerImpl : public nsIPluginViewer, + public nsIContentViewer, public nsIContentViewerEdit, public nsIContentViewerFile { @@ -163,6 +164,9 @@ public: // nsISupports NS_DECL_ISUPPORTS + // nsIPluginViewer + NS_IMETHOD StartLoad(nsIRequest* request, nsIStreamListener*& aResult); + // nsIContentViewer NS_IMETHOD Init(nsIWidget* aParentWidget, nsIDeviceContext* aDeviceContext, @@ -201,8 +205,6 @@ public: nsIDeviceContext* aDeviceContext, const nsRect& aBounds); - nsresult StartLoad(nsIRequest* request, nsIStreamListener*& aResult); - void ForceRefresh(void); nsresult GetURI(nsIURI* *aURI); @@ -258,29 +260,12 @@ PluginViewerImpl::Init(nsIStreamListener** aDocListener) // ISupports implementation... NS_IMPL_ADDREF(PluginViewerImpl) NS_IMPL_RELEASE(PluginViewerImpl) +NS_IMPL_QUERY_INTERFACE4(PluginViewerImpl, + nsIPluginViewer, + nsIContentViewer, + nsIContentViewerEdit, + nsIContentViewerFile) -nsresult -PluginViewerImpl::QueryInterface(REFNSIID aIID, void** aInstancePtr) -{ - if (NULL == aInstancePtr) { - return NS_ERROR_NULL_POINTER; - } - - if (aIID.Equals(kIContentViewerIID)) { - nsIContentViewer* tmp = this; - *aInstancePtr = (void*)tmp; - NS_ADDREF_THIS(); - return NS_OK; - } - if (aIID.Equals(kISupportsIID)) { - nsIContentViewer* tmp1 = this; - nsISupports* tmp2 = tmp1; - *aInstancePtr = (void*) tmp2; - NS_ADDREF_THIS(); - return NS_OK; - } - return NS_NOINTERFACE; -} PluginViewerImpl::~PluginViewerImpl() { @@ -333,7 +318,7 @@ PluginViewerImpl::Init(nsIWidget* aParentWidget, return rv; } -nsresult +NS_IMETHODIMP PluginViewerImpl::StartLoad(nsIRequest* request, nsIStreamListener*& aResult) { nsCOMPtr channel = do_QueryInterface(request); diff --git a/mozilla/modules/plugin/nglsrc/nsPluginViewer.cpp b/mozilla/modules/plugin/nglsrc/nsPluginViewer.cpp index 15c71a66af7..9ad6d1aa3da 100644 --- a/mozilla/modules/plugin/nglsrc/nsPluginViewer.cpp +++ b/mozilla/modules/plugin/nglsrc/nsPluginViewer.cpp @@ -45,7 +45,7 @@ #include "nsIWebBrowserChrome.h" #include "nsIDOMDocument.h" #include "nsPluginViewer.h" - +#include "nsIPluginViewer.h" #include "nsITimer.h" @@ -150,7 +150,8 @@ private: nsRect& aClipRect); -class PluginViewerImpl : public nsIContentViewer, +class PluginViewerImpl : public nsIPluginViewer, + public nsIContentViewer, public nsIContentViewerEdit, public nsIContentViewerFile { @@ -163,6 +164,9 @@ public: // nsISupports NS_DECL_ISUPPORTS + // nsIPluginViewer + NS_IMETHOD StartLoad(nsIRequest* request, nsIStreamListener*& aResult); + // nsIContentViewer NS_IMETHOD Init(nsIWidget* aParentWidget, nsIDeviceContext* aDeviceContext, @@ -201,8 +205,6 @@ public: nsIDeviceContext* aDeviceContext, const nsRect& aBounds); - nsresult StartLoad(nsIRequest* request, nsIStreamListener*& aResult); - void ForceRefresh(void); nsresult GetURI(nsIURI* *aURI); @@ -258,29 +260,12 @@ PluginViewerImpl::Init(nsIStreamListener** aDocListener) // ISupports implementation... NS_IMPL_ADDREF(PluginViewerImpl) NS_IMPL_RELEASE(PluginViewerImpl) +NS_IMPL_QUERY_INTERFACE4(PluginViewerImpl, + nsIPluginViewer, + nsIContentViewer, + nsIContentViewerEdit, + nsIContentViewerFile) -nsresult -PluginViewerImpl::QueryInterface(REFNSIID aIID, void** aInstancePtr) -{ - if (NULL == aInstancePtr) { - return NS_ERROR_NULL_POINTER; - } - - if (aIID.Equals(kIContentViewerIID)) { - nsIContentViewer* tmp = this; - *aInstancePtr = (void*)tmp; - NS_ADDREF_THIS(); - return NS_OK; - } - if (aIID.Equals(kISupportsIID)) { - nsIContentViewer* tmp1 = this; - nsISupports* tmp2 = tmp1; - *aInstancePtr = (void*) tmp2; - NS_ADDREF_THIS(); - return NS_OK; - } - return NS_NOINTERFACE; -} PluginViewerImpl::~PluginViewerImpl() { @@ -333,7 +318,7 @@ PluginViewerImpl::Init(nsIWidget* aParentWidget, return rv; } -nsresult +NS_IMETHODIMP PluginViewerImpl::StartLoad(nsIRequest* request, nsIStreamListener*& aResult) { nsCOMPtr channel = do_QueryInterface(request); diff --git a/mozilla/modules/plugin/public/MANIFEST_IDL b/mozilla/modules/plugin/public/MANIFEST_IDL index 5511bdbcb96..ceeb09e17a6 100644 --- a/mozilla/modules/plugin/public/MANIFEST_IDL +++ b/mozilla/modules/plugin/public/MANIFEST_IDL @@ -19,4 +19,6 @@ # # This is a list of local files which get copied to the mozilla:dist:??? directory # -nsIPluginManager.idl \ No newline at end of file +nsIPluginManager.idl +nsIPluginViewer.idl + diff --git a/mozilla/modules/plugin/public/Makefile.in b/mozilla/modules/plugin/public/Makefile.in index 99fc0fa44be..36b8789e121 100644 --- a/mozilla/modules/plugin/public/Makefile.in +++ b/mozilla/modules/plugin/public/Makefile.in @@ -67,7 +67,8 @@ EXPORTS += \ XPIDLSRCS = \ nsIScriptablePlugin.idl \ nsIHTTPHeaderListener.idl \ - nsIPluginManager.idl \ + nsIPluginManager.idl \ + nsIPluginViewer.idl \ $(NULL) EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS)) diff --git a/mozilla/modules/plugin/public/makefile.win b/mozilla/modules/plugin/public/makefile.win index dc505d9ece2..2a8e7a09b85 100644 --- a/mozilla/modules/plugin/public/makefile.win +++ b/mozilla/modules/plugin/public/makefile.win @@ -58,6 +58,7 @@ XPIDLSRCS = \ .\nsIScriptablePlugin.idl \ .\nsIHTTPHeaderListener.idl \ .\nsIPluginManager.idl \ + .\nsIPluginViewer.idl \ $(NULL) include <$(DEPTH)/config/rules.mak> diff --git a/mozilla/modules/plugin/public/nsIPluginViewer.idl b/mozilla/modules/plugin/public/nsIPluginViewer.idl new file mode 100644 index 00000000000..bbb6f345377 --- /dev/null +++ b/mozilla/modules/plugin/public/nsIPluginViewer.idl @@ -0,0 +1,44 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape 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/NPL/ + * + * 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 mozilla.org code. + * + * The Initial Developer of the Original Code is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 2000 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * + */ + +/** + * Interface for the content viewer for full-page plugins + */ + +#include "nsISupports.idl" +#include "nsIRequest.idl" +#include "nsIStreamListener.idl" + +[uuid(506967e5-837f-44af-91bd-018b959476c0)] +interface nsIPluginViewer : nsISupports +{ +%{C++ + + + /** + * Creates a new plugin viewer, based on a nsIRequest. + */ + void StartLoad (nsIRequest * aRequest, nsIStreamListener *&aResult); +%} +}; +