From 21b138c8a02e105091dfe6edc7f84835cf6e340e Mon Sep 17 00:00:00 2001 From: "dougt%meer.net" Date: Tue, 27 Jan 2004 08:45:11 +0000 Subject: [PATCH] [Minimo only] Adding simple popup blocking --- allmakefiles.sh | 1 + embedding/config/minimo-unix | 1 + embedding/minimo/Makefile.in | 2 +- embedding/minimo/app/minimo-link-comps | 1 + embedding/minimo/popuplite/Makefile.in | 71 +++++++++++ .../minimo/popuplite/nsSimplePopupBlocker.cpp | 117 ++++++++++++++++++ 6 files changed, 192 insertions(+), 1 deletion(-) create mode 100644 embedding/minimo/popuplite/Makefile.in create mode 100644 embedding/minimo/popuplite/nsSimplePopupBlocker.cpp diff --git a/allmakefiles.sh b/allmakefiles.sh index 2aeb79eba5b..2f5219b2a5d 100755 --- a/allmakefiles.sh +++ b/allmakefiles.sh @@ -814,6 +814,7 @@ MAKEFILES_minimo=" embedding/minimo/Makefile embedding/minimo/app/Makefile embedding/minimo/chromelite/Makefile +embedding/minimo/popuplite/Makefile " MAKEFILES_psm2=" diff --git a/embedding/config/minimo-unix b/embedding/config/minimo-unix index f1146c504bc..504a87a882f 100644 --- a/embedding/config/minimo-unix +++ b/embedding/config/minimo-unix @@ -199,3 +199,4 @@ res/entityTables/transliterate.properties ; minimo stuff components/libchrmlite.so +components/libpopuplite.so diff --git a/embedding/minimo/Makefile.in b/embedding/minimo/Makefile.in index 32ebcf4a72e..7d6c4484f5d 100644 --- a/embedding/minimo/Makefile.in +++ b/embedding/minimo/Makefile.in @@ -42,7 +42,7 @@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk -DIRS = chromelite ../browser/gtk/src app +DIRS = chromelite popuplite ../browser/gtk/src app include $(topsrcdir)/config/rules.mk diff --git a/embedding/minimo/app/minimo-link-comps b/embedding/minimo/app/minimo-link-comps index 01e7779d98d..117e8cb3663 100644 --- a/embedding/minimo/app/minimo-link-comps +++ b/embedding/minimo/app/minimo-link-comps @@ -1,5 +1,6 @@ caps chrmlite +popuplite docshell editor embedcomponents diff --git a/embedding/minimo/popuplite/Makefile.in b/embedding/minimo/popuplite/Makefile.in new file mode 100644 index 00000000000..16ee4b9a5cb --- /dev/null +++ b/embedding/minimo/popuplite/Makefile.in @@ -0,0 +1,71 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# 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 Minimo. +# +# The Initial Developer of the Original Code is +# Doug Turner . +# Portions created by the Initial Developer are Copyright (C) 2004 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + + +DEPTH = ../../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +MODULE_NAME = popuplite +MODULE = popuplite +LIBRARY_NAME = popuplite + +IS_COMPONENT = 1 +EXPORT_LIBRARY = 1 + + +REQUIRES = \ + layout \ + content \ + necko \ + xpcom \ + string \ + uconv \ + appshell \ + pref \ + $(NULL) + +CPPSRCS = \ + nsSimplePopupBlocker.cpp \ + $(NULL) + +EXTRA_DSO_LDOPTS += $(MOZ_COMPONENT_LIBS) + +include $(topsrcdir)/config/rules.mk + diff --git a/embedding/minimo/popuplite/nsSimplePopupBlocker.cpp b/embedding/minimo/popuplite/nsSimplePopupBlocker.cpp new file mode 100644 index 00000000000..1c24809dbe9 --- /dev/null +++ b/embedding/minimo/popuplite/nsSimplePopupBlocker.cpp @@ -0,0 +1,117 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * 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 mozilla.org code. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 2002 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Doug Turner + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include "nsCOMPtr.h" +#include "nsString.h" + +#include "nsIPopupWindowManager.h" +#include "nsIServiceManagerUtils.h" + +#include "nsIModule.h" +#include "nsIGenericFactory.h" + +class nsIURI; + +class nsSimplePopupBlocker : public nsIPopupWindowManager +{ +public: + NS_DECL_ISUPPORTS + NS_DECL_NSIPOPUPWINDOWMANAGER + + nsSimplePopupBlocker(); + virtual ~nsSimplePopupBlocker(); + +private: + PRUint32 mPolicy; +}; + +nsSimplePopupBlocker::nsSimplePopupBlocker() + : mPolicy(DENY_POPUP) +{ +} + +nsSimplePopupBlocker::~nsSimplePopupBlocker(void) +{ +} + +NS_IMPL_ISUPPORTS1(nsSimplePopupBlocker, nsIPopupWindowManager) + +NS_IMETHODIMP +nsSimplePopupBlocker::GetDefaultPermission(PRUint32 *aDefaultPermission) +{ + NS_ENSURE_ARG_POINTER(aDefaultPermission); + *aDefaultPermission = mPolicy; + return NS_OK; +} + +NS_IMETHODIMP +nsSimplePopupBlocker::SetDefaultPermission(PRUint32 aDefaultPermission) +{ + mPolicy = aDefaultPermission; + return NS_OK; +} + + +NS_IMETHODIMP +nsSimplePopupBlocker::TestPermission(nsIURI *aURI, PRUint32 *aPermission) +{ + NS_ENSURE_ARG_POINTER(aURI); + NS_ENSURE_ARG_POINTER(aPermission); + + // For now, I don't care if we should display the popup. Eventually, + // we need to do some bookkeeping. + + *aPermission = DENY_POPUP; + return NS_OK; +} + +NS_GENERIC_FACTORY_CONSTRUCTOR(nsSimplePopupBlocker) + +#define NS_POPUPWINDOWMANAGER_CID \ + {0x4275d3f4, 0x752a, 0x427a, {0xb4, 0x32, 0x14, 0xd5, 0xdd, 0xa1, 0xc2, 0x0b}} + +static const nsModuleComponentInfo components[] = { + { "Simple Popup Blocker", + NS_POPUPWINDOWMANAGER_CID, + NS_POPUPWINDOWMANAGER_CONTRACTID, + nsSimplePopupBlockerConstructor + }, +}; + +NS_IMPL_NSGETMODULE(popuplite, components) +