dom/file/AsyncHelper.cpp

branch
TOR_BUG_9701
changeset 10
ac0c01689b40
equal deleted inserted replaced
-1:000000000000 0:91d19bf9e7a9
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 file,
5 * You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7 #include "AsyncHelper.h"
8
9 #include "nsIRequestObserver.h"
10
11 #include "nsNetUtil.h"
12
13 #include "FileService.h"
14
15 USING_FILE_NAMESPACE
16
17 NS_IMPL_ISUPPORTS(AsyncHelper, nsIRunnable, nsIRequest)
18
19 nsresult
20 AsyncHelper::AsyncWork(nsIRequestObserver* aObserver, nsISupports* aCtxt)
21 {
22 nsresult rv;
23
24 if (aObserver) {
25 // build proxy for observer events
26 rv = NS_NewRequestObserverProxy(getter_AddRefs(mObserver), aObserver, aCtxt);
27 NS_ENSURE_SUCCESS(rv, rv);
28 }
29
30 FileService* service = FileService::GetOrCreate();
31 NS_ENSURE_TRUE(service, NS_ERROR_FAILURE);
32
33 nsIEventTarget* target = service->StreamTransportTarget();
34
35 rv = target->Dispatch(this, NS_DISPATCH_NORMAL);
36 NS_ENSURE_SUCCESS(rv, rv);
37
38 return NS_OK;
39 }
40
41 NS_IMETHODIMP
42 AsyncHelper::Run()
43 {
44 NS_ASSERTION(!NS_IsMainThread(), "Wrong thread!");
45
46 if (mObserver) {
47 mObserver->OnStartRequest(this, nullptr);
48 }
49
50 mStatus = DoStreamWork(mStream);
51
52 if (mObserver) {
53 mObserver->OnStopRequest(this, nullptr, mStatus);
54 }
55
56 return NS_OK;
57 }
58
59 NS_IMETHODIMP
60 AsyncHelper::GetName(nsACString& aName)
61 {
62 NS_WARNING("Shouldn't be called!");
63 return NS_ERROR_NOT_IMPLEMENTED;
64 }
65
66 NS_IMETHODIMP
67 AsyncHelper::IsPending(bool* _retval)
68 {
69 NS_WARNING("Shouldn't be called!");
70 return NS_ERROR_NOT_IMPLEMENTED;
71 }
72
73 NS_IMETHODIMP
74 AsyncHelper::GetStatus(nsresult* aStatus)
75 {
76 *aStatus = mStatus;
77 return NS_OK;
78 }
79
80 NS_IMETHODIMP
81 AsyncHelper::Cancel(nsresult aStatus)
82 {
83 return NS_OK;
84 }
85
86 NS_IMETHODIMP
87 AsyncHelper::Suspend()
88 {
89 NS_WARNING("Shouldn't be called!");
90 return NS_ERROR_NOT_IMPLEMENTED;
91 }
92
93 NS_IMETHODIMP
94 AsyncHelper::Resume()
95 {
96 NS_WARNING("Shouldn't be called!");
97 return NS_ERROR_NOT_IMPLEMENTED;
98 }
99
100 NS_IMETHODIMP
101 AsyncHelper::GetLoadGroup(nsILoadGroup** aLoadGroup)
102 {
103 NS_WARNING("Shouldn't be called!");
104 return NS_ERROR_NOT_IMPLEMENTED;
105 }
106
107 NS_IMETHODIMP
108 AsyncHelper::SetLoadGroup(nsILoadGroup* aLoadGroup)
109 {
110 NS_WARNING("Shouldn't be called!");
111 return NS_ERROR_NOT_IMPLEMENTED;
112 }
113
114 NS_IMETHODIMP
115 AsyncHelper::GetLoadFlags(nsLoadFlags* aLoadFlags)
116 {
117 NS_WARNING("Shouldn't be called!");
118 return NS_ERROR_NOT_IMPLEMENTED;
119 }
120
121 NS_IMETHODIMP
122 AsyncHelper::SetLoadFlags(nsLoadFlags aLoadFlags)
123 {
124 NS_WARNING("Shouldn't be called!");
125 return NS_ERROR_NOT_IMPLEMENTED;
126 }

mercurial