cxxsources := \
auto_proc.cpp browser_widget.cpp child_iterator.cpp generate_dvd.cpp \
- link_iterator.cpp pixbufs.cpp style_sheets.cpp temp_file.cpp video.cpp \
- vob_list.cpp webdvd.cpp x_frame_buffer.cpp xml_utils.cpp xpcom_support.cpp
+ link_iterator.cpp null_prompt_service.cpp pixbufs.cpp style_sheets.cpp \
+ temp_file.cpp video.cpp vob_list.cpp webdvd.cpp x_frame_buffer.cpp \
+ xml_utils.cpp xpcom_support.cpp
csources := jquant2.c
webdvd : $(cxxsources:.cpp=.o) $(csources:.c=.o)
browser_widget.% generate_dvd.% pixbufs.% temp_file.% vob_list.% webdvd.% \
: CPPFLAGS += $(shell pkg-config --cflags gtkmm-2.0)
-browser_widget.% child_iterator.o link_iterator.% style_sheets.% webdvd.% \
-xpcom_support.% \
+browser_widget.% child_iterator.o link_iterator.% null_prompt_service.% \
+style_sheets.% webdvd.% xpcom_support.% \
: CPPFLAGS += $(shell pkg-config --cflags mozilla-gtkmozembed)
# These dig a bit deeper into Mozilla
--- /dev/null
+// Copyright 2006 Ben Hutchings <ben@decadentplace.org.uk>.
+// See the file "COPYING" for licence details.
+
+#include <nsCOMPtr.h>
+#include <nsIComponentManager.h>
+#include <nsIFactory.h>
+
+#include "null_prompt_service.hpp"
+#include "xpcom_support.hpp"
+
+using xpcom_support::check;
+
+namespace
+{
+ NS_DEFINE_IID(prompt_service_iid, NS_IPROMPTSERVICE_IID);
+
+ class null_prompt_service_factory : public nsIFactory
+ {
+ NS_DECL_ISUPPORTS
+ NS_DECL_NSIFACTORY
+ };
+
+ NS_IMPL_ISUPPORTS1(null_prompt_service_factory, nsIFactory)
+
+ NS_IMETHODIMP null_prompt_service_factory::CreateInstance(
+ nsISupports *, const nsIID & iid, void ** result)
+ {
+ if (!iid.Equals(prompt_service_iid))
+ return NS_ERROR_NO_INTERFACE;
+
+ try
+ {
+ *result = new null_prompt_service;
+ return NS_OK;
+ }
+ catch (std::bad_alloc &)
+ {
+ return NS_ERROR_OUT_OF_MEMORY;
+ }
+ }
+
+ NS_IMETHODIMP null_prompt_service_factory::LockFactory(PRBool lock)
+ {
+ return NS_ERROR_NOT_IMPLEMENTED;
+ }
+}
+
+NS_IMPL_ISUPPORTS1(null_prompt_service, nsIPromptService)
+
+NS_IMETHODIMP null_prompt_service::Alert(
+ nsIDOMWindow *, const PRUnichar *, const PRUnichar *)
+{
+ return NS_OK;
+}
+
+NS_IMETHODIMP null_prompt_service::AlertCheck(
+ nsIDOMWindow *, const PRUnichar *, const PRUnichar *, const PRUnichar *,
+ PRBool *)
+{
+ return NS_OK;
+}
+
+NS_IMETHODIMP null_prompt_service::Confirm(
+ nsIDOMWindow *, const PRUnichar *, const PRUnichar *, PRBool * result)
+{
+ // Cancel
+ *result = false;
+ return NS_OK;
+}
+
+NS_IMETHODIMP null_prompt_service::ConfirmCheck(
+ nsIDOMWindow *, const PRUnichar *, const PRUnichar *,
+ const PRUnichar *, PRBool *, PRBool * result)
+{
+ // Cancel
+ *result = false;
+ return NS_OK;
+}
+
+NS_IMETHODIMP null_prompt_service::ConfirmEx(
+ nsIDOMWindow *, const PRUnichar *, const PRUnichar *,
+ PRUint32 flags, const PRUnichar *, const PRUnichar *, const PRUnichar *,
+ const PRUnichar *, PRBool *, PRInt32 * result)
+{
+ // Accept the default
+ if (flags & BUTTON_POS_1_DEFAULT)
+ *result = 1;
+ else if (flags & BUTTON_POS_2_DEFAULT)
+ *result = 2;
+ else
+ *result = 0;
+ return NS_OK;
+}
+
+NS_IMETHODIMP null_prompt_service::Prompt(
+ nsIDOMWindow *, const PRUnichar *, const PRUnichar *, PRUnichar **,
+ const PRUnichar *, PRBool *, PRBool * result)
+{
+ // Cancel
+ *result = false;
+ return NS_OK;
+}
+
+NS_IMETHODIMP null_prompt_service::PromptUsernameAndPassword(
+ nsIDOMWindow *, const PRUnichar *, const PRUnichar *,
+ PRUnichar **, PRUnichar **, const PRUnichar *, PRBool *, PRBool * result)
+{
+ // Cancel
+ *result = false;
+ return NS_OK;
+}
+
+NS_IMETHODIMP null_prompt_service::PromptPassword(
+ nsIDOMWindow *, const PRUnichar *, const PRUnichar *, PRUnichar **,
+ const PRUnichar *, PRBool *, PRBool * result)
+{
+ // Cancel
+ *result = false;
+ return NS_OK;
+}
+
+NS_IMETHODIMP null_prompt_service::Select(
+ nsIDOMWindow *, const PRUnichar *, const PRUnichar *, PRUint32,
+ const PRUnichar **, PRInt32 *, PRBool * result)
+{
+ // Cancel
+ *result = false;
+ return NS_OK;
+}
+
+void null_prompt_service::install()
+{
+ static const nsCID prompt_service_cid = {
+ 0xa2112d6a, 0x0e28, 0x421f,
+ {0xb4, 0x6a, 0x25, 0xc0, 0xb3, 0x8, 0xcb, 0xd0}
+ };
+ nsCOMPtr<nsIFactory> prompt_factory(new null_prompt_service_factory);
+ check(nsComponentManager::RegisterFactory(
+ prompt_service_cid,
+ "Prompt Service",
+ "@mozilla.org/embedcomp/prompt-service;1",
+ prompt_factory,
+ PR_TRUE)); // replace existing
+}