Back to index

lightning-sunbird  0.9+nobinonly
nsDOMPageTransitionEvent.cpp
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
00002 /* ***** BEGIN LICENSE BLOCK *****
00003  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00004  *
00005  * The contents of this file are subject to the Mozilla Public License Version
00006  * 1.1 (the "License"); you may not use this file except in compliance with
00007  * the License. You may obtain a copy of the License at
00008  * http://www.mozilla.org/MPL/
00009  *
00010  * Software distributed under the License is distributed on an "AS IS" basis,
00011  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00012  * for the specific language governing rights and limitations under the
00013  * License.
00014  *
00015  * The Original Code is mozilla.org code.
00016  *
00017  * The Initial Developer of the Original Code is
00018  * Google Inc.
00019  * Portions created by the Initial Developer are Copyright (C) 2005
00020  * the Initial Developer. All Rights Reserved.
00021  *
00022  * Contributor(s):
00023  *  Brian Ryner <bryner@brianryner.com>
00024  *
00025  * Alternatively, the contents of this file may be used under the terms of
00026  * either of the GNU General Public License Version 2 or later (the "GPL"),
00027  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00028  * in which case the provisions of the GPL or the LGPL are applicable instead
00029  * of those above. If you wish to allow use of your version of this file only
00030  * under the terms of either the GPL or the LGPL, and not to allow others to
00031  * use your version of this file under the terms of the MPL, indicate your
00032  * decision by deleting the provisions above and replace them with the notice
00033  * and other provisions required by the GPL or the LGPL. If you do not delete
00034  * the provisions above, a recipient may use your version of this file under
00035  * the terms of any one of the MPL, the GPL or the LGPL.
00036  *
00037  * ***** END LICENSE BLOCK ***** */
00038 
00039 #include "nsDOMPageTransitionEvent.h"
00040 #include "nsContentUtils.h"
00041 
00042 nsDOMPageTransitionEvent::nsDOMPageTransitionEvent(nsPresContext* aPresContext,
00043                                                    nsPageTransitionEvent* aEvent)
00044   : nsDOMEvent(aPresContext, aEvent ? aEvent :
00045                new nsPageTransitionEvent(PR_FALSE, 0, PR_FALSE))
00046 {  
00047   if ( aEvent ) {
00048     mEventIsInternal = PR_FALSE;
00049   }
00050   else
00051   {
00052     mEventIsInternal = PR_TRUE;
00053     mEvent->time = PR_Now();
00054   }
00055 }
00056 
00057 NS_INTERFACE_MAP_BEGIN(nsDOMPageTransitionEvent)
00058   NS_INTERFACE_MAP_ENTRY(nsIDOMPageTransitionEvent)
00059   NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(PageTransitionEvent)
00060 NS_INTERFACE_MAP_END_INHERITING(nsDOMEvent)
00061 
00062 NS_IMPL_ADDREF_INHERITED(nsDOMPageTransitionEvent, nsDOMEvent)
00063 NS_IMPL_RELEASE_INHERITED(nsDOMPageTransitionEvent, nsDOMEvent)
00064 
00065 NS_IMETHODIMP
00066 nsDOMPageTransitionEvent::GetPersisted(PRBool* aPersisted)
00067 {
00068   *aPersisted = NS_STATIC_CAST(nsPageTransitionEvent*, mEvent)->persisted;
00069   return NS_OK;
00070 }
00071 
00072 NS_IMETHODIMP
00073 nsDOMPageTransitionEvent::InitPageTransitionEvent(const nsAString &aTypeArg,
00074                                                   PRBool aCanBubbleArg,
00075                                                   PRBool aCancelableArg,
00076                                                   PRBool aPersisted)
00077 {
00078   nsresult rv = nsDOMEvent::InitEvent(aTypeArg, aCanBubbleArg, aCancelableArg);
00079   NS_ENSURE_SUCCESS(rv, rv);
00080 
00081   NS_STATIC_CAST(nsPageTransitionEvent*, mEvent)->persisted = aPersisted;
00082   return NS_OK;
00083 }
00084 
00085 nsresult NS_NewDOMPageTransitionEvent(nsIDOMEvent** aInstancePtrResult,
00086                                       nsPresContext* aPresContext,
00087                                       nsPageTransitionEvent *aEvent) 
00088 {
00089   nsDOMPageTransitionEvent* it =
00090     new nsDOMPageTransitionEvent(aPresContext, aEvent);
00091   if (nsnull == it) {
00092     return NS_ERROR_OUT_OF_MEMORY;
00093   }
00094 
00095   return CallQueryInterface(it, aInstancePtrResult);
00096 }