1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 *
3 * This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7 #include "nsDatePickerProxy.h"
8
9 #include "mozilla/dom/TabChild.h"
10
11 using namespace mozilla::dom;
12
NS_IMPL_ISUPPORTS(nsDatePickerProxy,nsIDatePicker)13 NS_IMPL_ISUPPORTS(nsDatePickerProxy, nsIDatePicker)
14
15 /* void init (in nsIDOMWindow parent, in AString title, in short mode); */
16 NS_IMETHODIMP
17 nsDatePickerProxy::Init(mozIDOMWindowProxy* aParent, const nsAString& aTitle,
18 const nsAString& aInitialDate)
19 {
20 TabChild* tabChild = TabChild::GetFrom(aParent);
21 if (!tabChild) {
22 return NS_ERROR_FAILURE;
23 }
24
25 tabChild->SendPDatePickerConstructor(this,
26 nsString(aTitle),
27 nsString(aInitialDate));
28 NS_ADDREF_THIS(); //Released in DeallocPDatePickerChild
29 return NS_OK;
30 }
31
32 /* void open (in nsIDatePickerShownCallback aDatePickerShownCallback); */
33 NS_IMETHODIMP
Open(nsIDatePickerShownCallback * aDatePickerShownCallback)34 nsDatePickerProxy::Open(nsIDatePickerShownCallback* aDatePickerShownCallback)
35 {
36 NS_ENSURE_STATE(!mCallback);
37 mCallback = aDatePickerShownCallback;
38
39 SendOpen();
40 return NS_OK;
41 }
42
43 bool
RecvCancel()44 nsDatePickerProxy::RecvCancel()
45 {
46 if (mCallback) {
47 mCallback->Cancel();
48 mCallback = nullptr;
49 }
50 return true;
51 }
52
53 bool
Recv__delete__(const nsString & aDate)54 nsDatePickerProxy::Recv__delete__(const nsString& aDate)
55 {
56 if (mCallback) {
57 mCallback->Done(aDate);
58 mCallback = nullptr;
59 }
60 return true;
61 }
62