dom/indexedDB/IDBEvents.cpp

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     2 /* vim: set ts=2 et sw=2 tw=80: */
     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/. */
     7 #include "IDBEvents.h"
     9 #include "nsJSON.h"
    10 #include "nsThreadUtils.h"
    12 #include "IDBRequest.h"
    13 #include "IDBTransaction.h"
    15 USING_INDEXEDDB_NAMESPACE
    16 using namespace mozilla::dom;
    18 namespace {
    20 class EventFiringRunnable : public nsRunnable
    21 {
    22 public:
    23   EventFiringRunnable(EventTarget* aTarget,
    24                       nsIDOMEvent* aEvent)
    25   : mTarget(aTarget), mEvent(aEvent)
    26   { }
    28   NS_IMETHOD Run() {
    29     bool dummy;
    30     return mTarget->DispatchEvent(mEvent, &dummy);
    31   }
    33 private:
    34   nsCOMPtr<EventTarget> mTarget;
    35   nsCOMPtr<nsIDOMEvent> mEvent;
    36 };
    38 } // anonymous namespace
    40 already_AddRefed<nsIDOMEvent>
    41 mozilla::dom::indexedDB::CreateGenericEvent(mozilla::dom::EventTarget* aOwner,
    42                                             const nsAString& aType,
    43                                             Bubbles aBubbles,
    44                                             Cancelable aCancelable)
    45 {
    46   nsCOMPtr<nsIDOMEvent> event;
    47   NS_NewDOMEvent(getter_AddRefs(event), aOwner, nullptr, nullptr);
    48   nsresult rv = event->InitEvent(aType,
    49                                  aBubbles == eDoesBubble ? true : false,
    50                                  aCancelable == eCancelable ? true : false);
    51   NS_ENSURE_SUCCESS(rv, nullptr);
    53   event->SetTrusted(true);
    55   return event.forget();
    56 }
    58 // static
    59 already_AddRefed<IDBVersionChangeEvent>
    60 IDBVersionChangeEvent::CreateInternal(mozilla::dom::EventTarget* aOwner,
    61                                       const nsAString& aType,
    62                                       uint64_t aOldVersion,
    63                                       uint64_t aNewVersion)
    64 {
    65   nsRefPtr<IDBVersionChangeEvent> event(new IDBVersionChangeEvent(aOwner));
    67   nsresult rv = event->InitEvent(aType, false, false);
    68   NS_ENSURE_SUCCESS(rv, nullptr);
    70   event->SetTrusted(true);
    72   event->mOldVersion = aOldVersion;
    73   event->mNewVersion = aNewVersion;
    75   return event.forget();
    76 }
    78 // static
    79 already_AddRefed<nsIRunnable>
    80 IDBVersionChangeEvent::CreateRunnableInternal(mozilla::dom::EventTarget* aTarget,
    81                                               const nsAString& aType,
    82                                               uint64_t aOldVersion,
    83                                               uint64_t aNewVersion)
    84 {
    85   nsRefPtr<Event> event =
    86     CreateInternal(aTarget, aType, aOldVersion, aNewVersion);
    87   NS_ENSURE_TRUE(event, nullptr);
    89   nsCOMPtr<nsIRunnable> runnable(new EventFiringRunnable(aTarget, event));
    90   return runnable.forget();
    91 }
    93 NS_IMPL_ADDREF_INHERITED(IDBVersionChangeEvent, Event)
    94 NS_IMPL_RELEASE_INHERITED(IDBVersionChangeEvent, Event)
    96 NS_INTERFACE_MAP_BEGIN(IDBVersionChangeEvent)
    97   NS_INTERFACE_MAP_ENTRY(IDBVersionChangeEvent)
    98 NS_INTERFACE_MAP_END_INHERITING(Event)

mercurial