mirror of
https://github.com/classilla/tenfourfox.git
synced 2025-02-06 02:30:56 +00:00
#405: plumbing into browser
This commit is contained in:
parent
f702324dbf
commit
e2a5d0b4cb
@ -112,6 +112,7 @@
|
||||
#include <limits>
|
||||
|
||||
#include "nsIColorPicker.h"
|
||||
#include "nsIDatePicker.h" // TenFourFox issue 405
|
||||
#include "nsIStringEnumerator.h"
|
||||
#include "HTMLSplitOnSpacesTokenizer.h"
|
||||
#include "nsIController.h"
|
||||
@ -565,6 +566,22 @@ HTMLInputElement::IsPopupBlocked() const
|
||||
return permission == nsIPopupWindowManager::DENY_POPUP;
|
||||
}
|
||||
|
||||
/* Time and date picker implementations from TenFourFox issue 405. */
|
||||
|
||||
nsresult
|
||||
HTMLInputElement::InitTimePicker()
|
||||
{
|
||||
NS_WARNING("InitTimePicker NYI");
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsresult
|
||||
HTMLInputElement::InitDatePicker()
|
||||
{
|
||||
NS_WARNING("InitDatePicker NYI");
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsresult
|
||||
HTMLInputElement::InitColorPicker()
|
||||
{
|
||||
@ -3608,6 +3625,12 @@ HTMLInputElement::MaybeInitPickers(EventChainPostVisitor& aVisitor)
|
||||
if (mType == NS_FORM_INPUT_COLOR) {
|
||||
return InitColorPicker();
|
||||
}
|
||||
if (mType == NS_FORM_INPUT_DATE) {
|
||||
return InitDatePicker();
|
||||
}
|
||||
if (mType == NS_FORM_INPUT_TIME) {
|
||||
return InitTimePicker();
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -3831,6 +3854,8 @@ HTMLInputElement::PostHandleEvent(EventChainPostVisitor& aVisitor)
|
||||
case NS_FORM_INPUT_SUBMIT:
|
||||
case NS_FORM_INPUT_IMAGE: // Bug 34418
|
||||
case NS_FORM_INPUT_COLOR:
|
||||
case NS_FORM_INPUT_DATE: // TenFourFox issue 405
|
||||
case NS_FORM_INPUT_TIME: // ditto
|
||||
{
|
||||
WidgetMouseEvent event(aVisitor.mEvent->mFlags.mIsTrusted,
|
||||
eMouseClick, nullptr,
|
||||
@ -4732,6 +4757,10 @@ HTMLInputElement::ParseAttribute(int32_t aNamespaceID,
|
||||
newType = aResult.GetEnumValue();
|
||||
if ((IsExperimentalMobileType(newType) &&
|
||||
!Preferences::GetBool("dom.experimental_forms", false)) ||
|
||||
(newType == NS_FORM_INPUT_DATE &&
|
||||
!Preferences::GetBool("tenfourfox.dom.forms.date", false)) ||
|
||||
(newType == NS_FORM_INPUT_TIME &&
|
||||
!Preferences::GetBool("tenfourfox.dom.forms.time", false)) ||
|
||||
(newType == NS_FORM_INPUT_NUMBER &&
|
||||
!Preferences::GetBool("dom.forms.number", false)) ||
|
||||
(newType == NS_FORM_INPUT_COLOR &&
|
||||
|
@ -1256,6 +1256,10 @@ protected:
|
||||
nsresult InitFilePicker(FilePickerType aType);
|
||||
nsresult InitColorPicker();
|
||||
|
||||
// TenFourFox issue 405
|
||||
nsresult InitDatePicker();
|
||||
nsresult InitTimePicker();
|
||||
|
||||
/**
|
||||
* Use this function before trying to open a picker.
|
||||
* It checks if the page is allowed to open a new pop-up.
|
||||
|
93
dom/ipc/DatePickerParent.cpp
Normal file
93
dom/ipc/DatePickerParent.cpp
Normal file
@ -0,0 +1,93 @@
|
||||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "DatePickerParent.h"
|
||||
#include "nsComponentManagerUtils.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsIDOMWindow.h"
|
||||
#include "mozilla/unused.h"
|
||||
#include "mozilla/dom/Element.h"
|
||||
#include "mozilla/dom/TabParent.h"
|
||||
|
||||
using mozilla::Unused;
|
||||
using namespace mozilla::dom;
|
||||
|
||||
NS_IMPL_ISUPPORTS(DatePickerParent::DatePickerShownCallback,
|
||||
nsIDatePickerShownCallback);
|
||||
|
||||
NS_IMETHODIMP
|
||||
DatePickerParent::DatePickerShownCallback::Update(const nsAString& aDate)
|
||||
{
|
||||
if (mDatePickerParent) {
|
||||
Unused << mDatePickerParent->SendUpdate(nsString(aDate));
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
DatePickerParent::DatePickerShownCallback::Done(int16_t aResult)
|
||||
{
|
||||
if (mDatePickerParent) {
|
||||
mDatePickerParent->Done(aResult);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
DatePickerParent::DatePickerShownCallback::Destroy()
|
||||
{
|
||||
mDatePickerParent = nullptr;
|
||||
}
|
||||
|
||||
bool
|
||||
DatePickerParent::CreateDatePicker()
|
||||
{
|
||||
mPicker = do_CreateInstance("@mozilla.org/datepicker;1");
|
||||
if (!mPicker) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Element* ownerElement = TabParent::GetFrom(Manager())->GetOwnerElement();
|
||||
if (!ownerElement) {
|
||||
return false;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIDOMWindow> window = do_QueryInterface(ownerElement->OwnerDoc()->GetWindow());
|
||||
if (!window) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return NS_SUCCEEDED(mPicker->Init(window, mTitle));
|
||||
}
|
||||
|
||||
void
|
||||
DatePickerParent::Done(int16_t aResult)
|
||||
{
|
||||
Unused << Send__delete__(this, nsString());
|
||||
MOZ_CRASH("DatePickerParent::Done NYI");
|
||||
}
|
||||
|
||||
bool
|
||||
DatePickerParent::RecvOpen()
|
||||
{
|
||||
if (!CreateDatePicker()) {
|
||||
Unused << Send__delete__(this, nsString());
|
||||
return true;
|
||||
}
|
||||
|
||||
mCallback = new DatePickerShownCallback(this);
|
||||
|
||||
mPicker->Open(mCallback);
|
||||
return true;
|
||||
};
|
||||
|
||||
void
|
||||
DatePickerParent::ActorDestroy(ActorDestroyReason aWhy)
|
||||
{
|
||||
if (mCallback) {
|
||||
mCallback->Destroy();
|
||||
}
|
||||
}
|
63
dom/ipc/DatePickerParent.h
Normal file
63
dom/ipc/DatePickerParent.h
Normal file
@ -0,0 +1,63 @@
|
||||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef mozilla_dom_DatePickerParent_h
|
||||
#define mozilla_dom_DatePickerParent_h
|
||||
|
||||
#include "mozilla/dom/PDatePickerParent.h"
|
||||
#include "nsIDatePicker.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace dom {
|
||||
|
||||
class DatePickerParent : public PDatePickerParent
|
||||
{
|
||||
public:
|
||||
DatePickerParent(const nsString& aTitle)
|
||||
: mTitle(aTitle)
|
||||
{}
|
||||
|
||||
virtual bool RecvOpen() override;
|
||||
virtual void ActorDestroy(ActorDestroyReason aWhy) override;
|
||||
|
||||
void Done(int16_t aResult);
|
||||
|
||||
class DatePickerShownCallback final
|
||||
: public nsIDatePickerShownCallback
|
||||
{
|
||||
public:
|
||||
explicit DatePickerShownCallback(DatePickerParent* aDatePickerParent)
|
||||
: mDatePickerParent(aDatePickerParent)
|
||||
{}
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIDATEPICKERSHOWNCALLBACK
|
||||
|
||||
NS_IMETHODIMP Update(const nsAString& aDate);
|
||||
|
||||
void Destroy();
|
||||
|
||||
private:
|
||||
~DatePickerShownCallback() {}
|
||||
|
||||
DatePickerParent* mDatePickerParent;
|
||||
};
|
||||
|
||||
private:
|
||||
virtual ~DatePickerParent() {}
|
||||
|
||||
bool CreateDatePicker();
|
||||
|
||||
RefPtr<DatePickerShownCallback> mCallback;
|
||||
nsCOMPtr<nsIDatePicker> mPicker;
|
||||
|
||||
nsString mTitle;
|
||||
};
|
||||
|
||||
} // namespace dom
|
||||
} // namespace mozilla
|
||||
|
||||
#endif // mozilla_dom_DatePickerParent_h
|
@ -11,6 +11,7 @@ include protocol PContent;
|
||||
include protocol PContentBridge;
|
||||
include protocol PDocAccessible;
|
||||
include protocol PDocumentRenderer;
|
||||
include protocol PDatePicker;
|
||||
include protocol PFilePicker;
|
||||
include protocol PIndexedDBPermissionRequest;
|
||||
include protocol PRenderFrame;
|
||||
@ -104,6 +105,7 @@ prio(normal upto urgent) sync protocol PBrowser
|
||||
manages PDocAccessible;
|
||||
manages PDocumentRenderer;
|
||||
manages PFilePicker;
|
||||
manages PDatePicker;
|
||||
manages PIndexedDBPermissionRequest;
|
||||
manages PRenderFrame;
|
||||
manages PPluginWidget;
|
||||
@ -377,6 +379,8 @@ parent:
|
||||
|
||||
PFilePicker(nsString aTitle, int16_t aMode);
|
||||
|
||||
PDatePicker(nsString aTitle);
|
||||
|
||||
/**
|
||||
* Initiates an asynchronous request for one of the special indexedDB
|
||||
* permissions for the provided principal.
|
||||
|
27
dom/ipc/PDatePicker.ipdl
Normal file
27
dom/ipc/PDatePicker.ipdl
Normal file
@ -0,0 +1,27 @@
|
||||
/* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8 -*- */
|
||||
/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */
|
||||
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
include protocol PBrowser;
|
||||
|
||||
namespace mozilla {
|
||||
namespace dom {
|
||||
|
||||
protocol PDatePicker
|
||||
{
|
||||
manager PBrowser;
|
||||
|
||||
parent:
|
||||
Open();
|
||||
|
||||
child:
|
||||
Update(nsString date);
|
||||
|
||||
__delete__(nsString date);
|
||||
};
|
||||
|
||||
} // namespace dom
|
||||
} // namespace mozilla
|
@ -53,6 +53,7 @@
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
#include "nsExceptionHandler.h"
|
||||
#endif
|
||||
#include "nsDatePickerProxy.h"
|
||||
#include "nsFilePickerProxy.h"
|
||||
#include "mozilla/dom/Element.h"
|
||||
#include "nsIBaseWindow.h"
|
||||
@ -2136,6 +2137,21 @@ TabChild::DeallocPFilePickerChild(PFilePickerChild* actor)
|
||||
return true;
|
||||
}
|
||||
|
||||
PDatePickerChild*
|
||||
TabChild::AllocPDatePickerChild(const nsString&)
|
||||
{
|
||||
NS_RUNTIMEABORT("unused");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool
|
||||
TabChild::DeallocPDatePickerChild(PDatePickerChild* actor)
|
||||
{
|
||||
nsDatePickerProxy* datePicker = static_cast<nsDatePickerProxy*>(actor);
|
||||
NS_RELEASE(datePicker);
|
||||
return true;
|
||||
}
|
||||
|
||||
auto
|
||||
TabChild::AllocPIndexedDBPermissionRequestChild(const Principal& aPrincipal)
|
||||
-> PIndexedDBPermissionRequestChild*
|
||||
|
@ -420,6 +420,11 @@ public:
|
||||
virtual bool
|
||||
DeallocPFilePickerChild(PFilePickerChild* actor) override;
|
||||
|
||||
virtual PDatePickerChild*
|
||||
AllocPDatePickerChild(const nsString& aTitle) override;
|
||||
virtual bool
|
||||
DeallocPDatePickerChild(PDatePickerChild* actor) override;
|
||||
|
||||
virtual PIndexedDBPermissionRequestChild*
|
||||
AllocPIndexedDBPermissionRequestChild(const Principal& aPrincipal)
|
||||
override;
|
||||
|
@ -78,6 +78,7 @@
|
||||
#include "PermissionMessageUtils.h"
|
||||
#include "StructuredCloneData.h"
|
||||
#include "ColorPickerParent.h"
|
||||
#include "DatePickerParent.h"
|
||||
#include "FilePickerParent.h"
|
||||
#include "TabChild.h"
|
||||
#include "LoadContext.h"
|
||||
@ -1214,6 +1215,19 @@ TabParent::DeallocPFilePickerParent(PFilePickerParent* actor)
|
||||
return true;
|
||||
}
|
||||
|
||||
PDatePickerParent*
|
||||
TabParent::AllocPDatePickerParent(const nsString& aTitle)
|
||||
{
|
||||
return new DatePickerParent(aTitle);
|
||||
}
|
||||
|
||||
bool
|
||||
TabParent::DeallocPDatePickerParent(PDatePickerParent* actor)
|
||||
{
|
||||
delete actor;
|
||||
return true;
|
||||
}
|
||||
|
||||
auto
|
||||
TabParent::AllocPIndexedDBPermissionRequestParent(const Principal& aPrincipal)
|
||||
-> PIndexedDBPermissionRequestParent*
|
||||
|
@ -364,6 +364,10 @@ public:
|
||||
const int16_t& aMode) override;
|
||||
virtual bool DeallocPFilePickerParent(PFilePickerParent* actor) override;
|
||||
|
||||
virtual PDatePickerParent*
|
||||
AllocPDatePickerParent(const nsString& aTitle) override;
|
||||
virtual bool DeallocPDatePickerParent(PDatePickerParent* actor) override;
|
||||
|
||||
virtual PIndexedDBPermissionRequestParent*
|
||||
AllocPIndexedDBPermissionRequestParent(const Principal& aPrincipal)
|
||||
override;
|
||||
|
@ -61,6 +61,7 @@ UNIFIED_SOURCES += [
|
||||
'ContentProcess.cpp',
|
||||
'ContentProcessManager.cpp',
|
||||
'CrashReporterParent.cpp',
|
||||
'DatePickerParent.cpp',
|
||||
'FilePickerParent.cpp',
|
||||
'nsIContentChild.cpp',
|
||||
'nsIContentParent.cpp',
|
||||
@ -102,6 +103,7 @@ IPDL_SOURCES += [
|
||||
'PContentPermissionRequest.ipdl',
|
||||
'PCrashReporter.ipdl',
|
||||
'PCycleCollectWithLogs.ipdl',
|
||||
'PDatePicker.ipdl',
|
||||
'PDocumentRenderer.ipdl',
|
||||
'PFilePicker.ipdl',
|
||||
'PMemoryReportRequest.ipdl',
|
||||
|
@ -5139,3 +5139,5 @@ pref("toolkit.pageThumbs.minHeight", 0);
|
||||
|
||||
pref("tenfourfox.adblock.enabled", false);
|
||||
pref("tenfourfox.adblock.logging.enabled", false);
|
||||
pref("tenfourfox.dom.forms.date", false);
|
||||
pref("tenfourfox.dom.forms.time", false);
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include "nsCocoaWindow.h"
|
||||
#include "nsAppShell.h"
|
||||
#include "nsAppShellSingleton.h"
|
||||
#include "nsDatePicker.h"
|
||||
#include "nsFilePicker.h"
|
||||
#include "nsColorPicker.h"
|
||||
|
||||
@ -44,6 +45,7 @@ using namespace mozilla::widget;
|
||||
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsCocoaWindow)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsChildView)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDatePicker)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsFilePicker)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsColorPicker)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSound)
|
||||
@ -92,6 +94,7 @@ NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(GfxInfo, Init)
|
||||
NS_DEFINE_NAMED_CID(NS_WINDOW_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_POPUP_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_CHILD_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_DATEPICKER_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_FILEPICKER_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_COLORPICKER_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_APPSHELL_CID);
|
||||
@ -121,6 +124,8 @@ static const mozilla::Module::CIDEntry kWidgetCIDs[] = {
|
||||
{ &kNS_WINDOW_CID, false, NULL, nsCocoaWindowConstructor },
|
||||
{ &kNS_POPUP_CID, false, NULL, nsCocoaWindowConstructor },
|
||||
{ &kNS_CHILD_CID, false, NULL, nsChildViewConstructor },
|
||||
{ &kNS_DATEPICKER_CID, false, NULL, nsDatePickerConstructor,
|
||||
mozilla::Module::MAIN_PROCESS_ONLY },
|
||||
{ &kNS_FILEPICKER_CID, false, NULL, nsFilePickerConstructor,
|
||||
mozilla::Module::MAIN_PROCESS_ONLY },
|
||||
{ &kNS_COLORPICKER_CID, false, NULL, nsColorPickerConstructor,
|
||||
@ -159,6 +164,8 @@ static const mozilla::Module::ContractIDEntry kWidgetContracts[] = {
|
||||
{ "@mozilla.org/widgets/window/mac;1", &kNS_WINDOW_CID },
|
||||
{ "@mozilla.org/widgets/popup/mac;1", &kNS_POPUP_CID },
|
||||
{ "@mozilla.org/widgets/childwindow/mac;1", &kNS_CHILD_CID },
|
||||
{ "@mozilla.org/datepicker;1", &kNS_DATEPICKER_CID,
|
||||
mozilla::Module::MAIN_PROCESS_ONLY },
|
||||
{ "@mozilla.org/filepicker;1", &kNS_FILEPICKER_CID,
|
||||
mozilla::Module::MAIN_PROCESS_ONLY },
|
||||
{ "@mozilla.org/colorpicker;1", &kNS_COLORPICKER_CID,
|
||||
|
@ -198,9 +198,12 @@ if CONFIG['MOZ_X11']:
|
||||
'GfxInfoX11.cpp'
|
||||
]
|
||||
|
||||
# Do not put nsDatePickerProxy.cpp into the unified sources, or we get weird
|
||||
# build problems due to an inexplicable dependency in nsPrimitiveHelpers.cpp.
|
||||
if toolkit == 'cocoa':
|
||||
SOURCES += [
|
||||
'nsBaseDatePicker.cpp',
|
||||
'nsDatePickerProxy.cpp',
|
||||
]
|
||||
|
||||
if toolkit in ('cocoa', 'windows'):
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include "nsWidgetsCID.h"
|
||||
#include "nsClipboardProxy.h"
|
||||
#include "nsColorPickerProxy.h"
|
||||
#include "nsDatePickerProxy.h"
|
||||
#include "nsDragServiceProxy.h"
|
||||
#include "nsFilePickerProxy.h"
|
||||
#include "nsScreenManagerProxy.h"
|
||||
@ -21,6 +22,7 @@ using namespace mozilla::widget;
|
||||
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboardProxy)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsColorPickerProxy)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDatePickerProxy)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDragServiceProxy)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsFilePickerProxy)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsScreenManagerProxy)
|
||||
@ -28,6 +30,7 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(PuppetBidiKeyboard)
|
||||
|
||||
NS_DEFINE_NAMED_CID(NS_CLIPBOARD_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_COLORPICKER_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_DATEPICKER_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_DRAGSERVICE_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_FILEPICKER_CID);
|
||||
NS_DEFINE_NAMED_CID(PUPPETBIDIKEYBOARD_CID);
|
||||
@ -36,6 +39,8 @@ NS_DEFINE_NAMED_CID(NS_SCREENMANAGER_CID);
|
||||
static const mozilla::Module::CIDEntry kWidgetCIDs[] = {
|
||||
{ &kNS_CLIPBOARD_CID, false, nullptr, nsClipboardProxyConstructor,
|
||||
Module::CONTENT_PROCESS_ONLY },
|
||||
{ &kNS_DATEPICKER_CID, false, nullptr, nsDatePickerProxyConstructor,
|
||||
Module::CONTENT_PROCESS_ONLY },
|
||||
{ &kNS_COLORPICKER_CID, false, nullptr, nsColorPickerProxyConstructor,
|
||||
Module::CONTENT_PROCESS_ONLY },
|
||||
{ &kNS_DRAGSERVICE_CID, false, nullptr, nsDragServiceProxyConstructor,
|
||||
@ -52,6 +57,7 @@ static const mozilla::Module::CIDEntry kWidgetCIDs[] = {
|
||||
static const mozilla::Module::ContractIDEntry kWidgetContracts[] = {
|
||||
{ "@mozilla.org/widget/clipboard;1", &kNS_CLIPBOARD_CID, Module::CONTENT_PROCESS_ONLY },
|
||||
{ "@mozilla.org/colorpicker;1", &kNS_COLORPICKER_CID, Module::CONTENT_PROCESS_ONLY },
|
||||
{ "@mozilla.org/datepicker;1", &kNS_DATEPICKER_CID, Module::CONTENT_PROCESS_ONLY },
|
||||
{ "@mozilla.org/filepicker;1", &kNS_FILEPICKER_CID, Module::CONTENT_PROCESS_ONLY },
|
||||
{ "@mozilla.org/gfx/screenmanager;1", &kNS_SCREENMANAGER_CID, Module::CONTENT_PROCESS_ONLY },
|
||||
{ "@mozilla.org/widget/dragservice;1", &kNS_DRAGSERVICE_CID, Module::CONTENT_PROCESS_ONLY },
|
||||
|
87
widget/nsDatePickerProxy.cpp
Normal file
87
widget/nsDatePickerProxy.cpp
Normal file
@ -0,0 +1,87 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "nsDatePickerProxy.h"
|
||||
#include "nsComponentManagerUtils.h"
|
||||
#include "mozilla/dom/TabChild.h"
|
||||
|
||||
using namespace mozilla::dom;
|
||||
|
||||
NS_IMPL_ISUPPORTS(nsDatePickerProxy, nsIDatePicker)
|
||||
|
||||
nsDatePickerProxy::nsDatePickerProxy()
|
||||
{
|
||||
}
|
||||
|
||||
nsDatePickerProxy::~nsDatePickerProxy()
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDatePickerProxy::Init(nsIDOMWindow* aParent, const nsAString& aTitle)
|
||||
{
|
||||
TabChild* tabChild = TabChild::GetFrom(aParent);
|
||||
if (!tabChild) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
MOZ_CRASH("Date picker not implemented for e10s");
|
||||
|
||||
mParent = do_QueryInterface(aParent);
|
||||
if (!mParent->IsInnerWindow()) {
|
||||
mParent = mParent->GetCurrentInnerWindow();
|
||||
}
|
||||
|
||||
NS_ADDREF_THIS();
|
||||
tabChild->SendPDatePickerConstructor(nsString(aTitle));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
nsDatePickerProxy::InitNative(nsIWidget* aParent, const nsAString& aTitle)
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDatePickerProxy::Open(nsIDatePickerShownCallback* aCallback)
|
||||
{
|
||||
mCallback = aCallback;
|
||||
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDatePickerProxy::Show(int16_t* aReturn)
|
||||
{
|
||||
MOZ_ASSERT(false, "Show is unimplemented; use Open");
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsDatePickerProxy::GetDefaultDate(nsAString &aDefaultDate) {return NS_ERROR_NOT_IMPLEMENTED;}
|
||||
NS_IMETHODIMP nsDatePickerProxy::SetDefaultDate(const nsAString &aDefaultDate) {return NS_ERROR_NOT_IMPLEMENTED;}
|
||||
NS_IMETHODIMP nsDatePickerProxy::GetMinDate(nsAString &aMinDate) {return NS_ERROR_NOT_IMPLEMENTED;}
|
||||
NS_IMETHODIMP nsDatePickerProxy::SetMinDate(const nsAString &aMinDate) {return NS_ERROR_NOT_IMPLEMENTED;}
|
||||
NS_IMETHODIMP nsDatePickerProxy::GetMaxDate(nsAString &aMaxDate) {return NS_ERROR_NOT_IMPLEMENTED;};
|
||||
NS_IMETHODIMP nsDatePickerProxy::SetMaxDate(const nsAString &aMaxDate) {return NS_ERROR_NOT_IMPLEMENTED;}
|
||||
NS_IMETHODIMP nsDatePickerProxy::GetSelectedDate(nsAString &aSelectedDate) {return NS_ERROR_NOT_IMPLEMENTED;}
|
||||
|
||||
bool
|
||||
nsDatePickerProxy::Recv__delete__(const nsString& date, const int16_t& aResult)
|
||||
{
|
||||
if (mCallback) {
|
||||
mCallback->Done(aResult);
|
||||
mCallback = nullptr;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
nsDatePickerProxy::RecvUpdate(const nsString& date)
|
||||
{
|
||||
MOZ_CRASH("unimplemented");
|
||||
return false;
|
||||
}
|
69
widget/nsDatePickerProxy.h
Normal file
69
widget/nsDatePickerProxy.h
Normal file
@ -0,0 +1,69 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
#ifndef NSDATEPICKERPROXY_H
|
||||
#define NSDATEPICKERPROXY_H
|
||||
|
||||
#include "nsBaseDatePicker.h"
|
||||
#include "nsString.h"
|
||||
#include "nsIURI.h"
|
||||
#include "nsTArray.h"
|
||||
#include "nsCOMArray.h"
|
||||
|
||||
#include "mozilla/dom/PDatePickerChild.h"
|
||||
|
||||
class nsIWidget;
|
||||
class nsIFile;
|
||||
class nsPIDOMWindow;
|
||||
|
||||
namespace mozilla {
|
||||
namespace dom {
|
||||
class File;
|
||||
} // namespace dom
|
||||
} // namespace mozilla
|
||||
|
||||
/*
|
||||
|
||||
This class creates a proxy date picker to be used in content processes.
|
||||
The date picker just collects the initialization data and when Show() is
|
||||
called, remotes everything to the chrome process which in turn can show a
|
||||
platform specific date picker.
|
||||
|
||||
I'm not sure why I'm implementing this for TenFourFox given that we'll never
|
||||
run in e10s, but anyway.
|
||||
|
||||
*/
|
||||
class nsDatePickerProxy : public nsBaseDatePicker,
|
||||
public mozilla::dom::PDatePickerChild
|
||||
{
|
||||
public:
|
||||
nsDatePickerProxy();
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
// nsIDatePicker
|
||||
NS_IMETHODIMP Init(nsIDOMWindow* aParent, const nsAString& aTitle) override;
|
||||
NS_IMETHODIMP Open(nsIDatePickerShownCallback* aCallback) override;
|
||||
NS_IMETHODIMP Show(int16_t *_retval) override;
|
||||
NS_IMETHODIMP GetDefaultDate(nsAString &aDefaultDate) override;
|
||||
NS_IMETHODIMP SetDefaultDate(const nsAString &aDefaultDate) override;
|
||||
NS_IMETHODIMP GetMinDate(nsAString &aMinDate) override;
|
||||
NS_IMETHODIMP SetMinDate(const nsAString &aMinDate) override;
|
||||
NS_IMETHODIMP GetMaxDate(nsAString &aMaxDate) override;
|
||||
NS_IMETHODIMP SetMaxDate(const nsAString &aMaxDate) override;
|
||||
NS_IMETHODIMP GetSelectedDate(nsAString &aSelectedDate);
|
||||
|
||||
// PDatePickerChild
|
||||
virtual bool Recv__delete__(const nsString& date, const int16_t& aResult);
|
||||
virtual bool RecvUpdate(const nsString& date);
|
||||
|
||||
private:
|
||||
~nsDatePickerProxy();
|
||||
void InitNative(nsIWidget*, const nsAString&) override;
|
||||
|
||||
nsCOMPtr<nsIDatePickerShownCallback> mCallback;
|
||||
};
|
||||
|
||||
#endif // NSDATEPICKERPROXY_H
|
@ -24,6 +24,11 @@
|
||||
{ 0xbd57cee8, 0x1dd1, 0x11b2, \
|
||||
{0x9f, 0xe7, 0x95, 0xcf, 0x47, 0x09, 0xae, 0xa3} }
|
||||
|
||||
/* bd57cee8-1dd1-11b2-9fe7-95cf4709aea4 */
|
||||
#define NS_DATEPICKER_CID \
|
||||
{ 0xbd57cee8, 0x1dd1, 0x11b2, \
|
||||
{0x9f, 0xe7, 0x95, 0xcf, 0x47, 0x09, 0xae, 0xa4} }
|
||||
|
||||
/* e221df9b-3d66-4045-9a66-5720949f8d10 */
|
||||
#define NS_APPLICATIONCHOOSER_CID \
|
||||
{ 0xe221df9b, 0x3d66, 0x4045, \
|
||||
|
Loading…
x
Reference in New Issue
Block a user