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