Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(635)

Side by Side Diff: ppapi/thunk/ppb_url_loader_thunk.cc

Issue 9235003: Enhance the PPAPI enter tracking. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix build Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ppapi/thunk/ppb_graphics_2d_thunk.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ppapi/c/pp_completion_callback.h" 5 #include "ppapi/c/pp_completion_callback.h"
6 #include "ppapi/c/pp_errors.h" 6 #include "ppapi/c/pp_errors.h"
7 #include "ppapi/thunk/common.h" 7 #include "ppapi/thunk/common.h"
8 #include "ppapi/thunk/enter.h" 8 #include "ppapi/thunk/enter.h"
9 #include "ppapi/thunk/thunk.h" 9 #include "ppapi/thunk/thunk.h"
10 #include "ppapi/thunk/ppb_url_loader_api.h" 10 #include "ppapi/thunk/ppb_url_loader_api.h"
11 #include "ppapi/thunk/resource_creation_api.h" 11 #include "ppapi/thunk/resource_creation_api.h"
12 12
13 namespace ppapi { 13 namespace ppapi {
14 namespace thunk { 14 namespace thunk {
15 15
16 namespace { 16 namespace {
17 17
18 typedef EnterResource<PPB_URLLoader_API> EnterURLLoader;
19
18 PP_Resource Create(PP_Instance instance) { 20 PP_Resource Create(PP_Instance instance) {
19 EnterFunction<ResourceCreationAPI> enter(instance, true); 21 EnterResourceCreation enter(instance);
20 if (enter.failed()) 22 if (enter.failed())
21 return 0; 23 return 0;
22 return enter.functions()->CreateURLLoader(instance); 24 return enter.functions()->CreateURLLoader(instance);
23 } 25 }
24 26
25 PP_Bool IsURLLoader(PP_Resource resource) { 27 PP_Bool IsURLLoader(PP_Resource resource) {
26 EnterResource<PPB_URLLoader_API> enter(resource, false); 28 EnterURLLoader enter(resource, false);
27 return PP_FromBool(enter.succeeded()); 29 return PP_FromBool(enter.succeeded());
28 } 30 }
29 31
30 int32_t Open(PP_Resource loader, 32 int32_t Open(PP_Resource loader,
31 PP_Resource request_id, 33 PP_Resource request_id,
32 PP_CompletionCallback callback) { 34 PP_CompletionCallback callback) {
33 EnterResource<PPB_URLLoader_API> enter(loader, true); 35 EnterURLLoader enter(loader, callback, true);
34 if (enter.failed()) 36 if (enter.failed())
35 return MayForceCallback(callback, PP_ERROR_BADRESOURCE); 37 return enter.retval();
36 int32_t result = enter.object()->Open(request_id, callback); 38 return enter.SetResult(enter.object()->Open(request_id, callback));
37 return MayForceCallback(callback, result);
38 } 39 }
39 40
40 int32_t FollowRedirect(PP_Resource loader, 41 int32_t FollowRedirect(PP_Resource loader,
41 PP_CompletionCallback callback) { 42 PP_CompletionCallback callback) {
42 EnterResource<PPB_URLLoader_API> enter(loader, true); 43 EnterURLLoader enter(loader, callback, true);
43 if (enter.failed()) 44 if (enter.failed())
44 return MayForceCallback(callback, PP_ERROR_BADRESOURCE); 45 return enter.retval();
45 int32_t result = enter.object()->FollowRedirect(callback); 46 return enter.SetResult(enter.object()->FollowRedirect(callback));
46 return MayForceCallback(callback, result);
47 } 47 }
48 48
49 PP_Bool GetUploadProgress(PP_Resource loader, 49 PP_Bool GetUploadProgress(PP_Resource loader,
50 int64_t* bytes_sent, 50 int64_t* bytes_sent,
51 int64_t* total_bytes_to_be_sent) { 51 int64_t* total_bytes_to_be_sent) {
52 EnterResource<PPB_URLLoader_API> enter(loader, true); 52 EnterURLLoader enter(loader, true);
53 if (enter.failed()) { 53 if (enter.failed()) {
54 *bytes_sent = 0; 54 *bytes_sent = 0;
55 *total_bytes_to_be_sent = 0; 55 *total_bytes_to_be_sent = 0;
56 return PP_FALSE; 56 return PP_FALSE;
57 } 57 }
58 return enter.object()->GetUploadProgress(bytes_sent, 58 return enter.object()->GetUploadProgress(bytes_sent,
59 total_bytes_to_be_sent); 59 total_bytes_to_be_sent);
60 } 60 }
61 61
62 PP_Bool GetDownloadProgress(PP_Resource loader, 62 PP_Bool GetDownloadProgress(PP_Resource loader,
63 int64_t* bytes_received, 63 int64_t* bytes_received,
64 int64_t* total_bytes_to_be_received) { 64 int64_t* total_bytes_to_be_received) {
65 EnterResource<PPB_URLLoader_API> enter(loader, true); 65 EnterURLLoader enter(loader, true);
66 if (enter.failed()) { 66 if (enter.failed()) {
67 *bytes_received = 0; 67 *bytes_received = 0;
68 *total_bytes_to_be_received = 0; 68 *total_bytes_to_be_received = 0;
69 return PP_FALSE; 69 return PP_FALSE;
70 } 70 }
71 return enter.object()->GetDownloadProgress(bytes_received, 71 return enter.object()->GetDownloadProgress(bytes_received,
72 total_bytes_to_be_received); 72 total_bytes_to_be_received);
73 } 73 }
74 74
75 PP_Resource GetResponseInfo(PP_Resource loader) { 75 PP_Resource GetResponseInfo(PP_Resource loader) {
76 EnterResource<PPB_URLLoader_API> enter(loader, true); 76 EnterURLLoader enter(loader, true);
77 if (enter.failed()) 77 if (enter.failed())
78 return 0; 78 return 0;
79 return enter.object()->GetResponseInfo(); 79 return enter.object()->GetResponseInfo();
80 } 80 }
81 81
82 int32_t ReadResponseBody(PP_Resource loader, 82 int32_t ReadResponseBody(PP_Resource loader,
83 void* buffer, 83 void* buffer,
84 int32_t bytes_to_read, 84 int32_t bytes_to_read,
85 PP_CompletionCallback callback) { 85 PP_CompletionCallback callback) {
86 EnterResource<PPB_URLLoader_API> enter(loader, true); 86 EnterURLLoader enter(loader, callback, true);
87 if (enter.failed()) 87 if (enter.failed())
88 return MayForceCallback(callback, PP_ERROR_BADRESOURCE); 88 return enter.retval();
89 int32_t result = enter.object()->ReadResponseBody(buffer, bytes_to_read, 89 return enter.SetResult(enter.object()->ReadResponseBody(buffer, bytes_to_read,
90 callback); 90 callback));
91 return MayForceCallback(callback, result);
92 } 91 }
93 92
94 int32_t FinishStreamingToFile(PP_Resource loader, 93 int32_t FinishStreamingToFile(PP_Resource loader,
95 PP_CompletionCallback callback) { 94 PP_CompletionCallback callback) {
96 EnterResource<PPB_URLLoader_API> enter(loader, true); 95 EnterURLLoader enter(loader, callback, true);
97 if (enter.failed()) 96 if (enter.failed())
98 return MayForceCallback(callback, PP_ERROR_BADRESOURCE); 97 return enter.retval();
99 int32_t result = enter.object()->FinishStreamingToFile(callback); 98 return enter.SetResult(enter.object()->FinishStreamingToFile(callback));
100 return MayForceCallback(callback, result);
101 } 99 }
102 100
103 void Close(PP_Resource loader) { 101 void Close(PP_Resource loader) {
104 EnterResource<PPB_URLLoader_API> enter(loader, true); 102 EnterURLLoader enter(loader, true);
105 if (enter.succeeded()) 103 if (enter.succeeded())
106 enter.object()->Close(); 104 enter.object()->Close();
107 } 105 }
108 106
109 void GrantUniversalAccess(PP_Resource loader) { 107 void GrantUniversalAccess(PP_Resource loader) {
110 EnterResource<PPB_URLLoader_API> enter(loader, true); 108 EnterURLLoader enter(loader, true);
111 if (enter.succeeded()) 109 if (enter.succeeded())
112 enter.object()->GrantUniversalAccess(); 110 enter.object()->GrantUniversalAccess();
113 } 111 }
114 112
115 void SetStatusCallback(PP_Resource loader, 113 void SetStatusCallback(PP_Resource loader,
116 PP_URLLoaderTrusted_StatusCallback cb) { 114 PP_URLLoaderTrusted_StatusCallback cb) {
117 EnterResource<PPB_URLLoader_API> enter(loader, true); 115 EnterURLLoader enter(loader, true);
118 if (enter.succeeded()) 116 if (enter.succeeded())
119 enter.object()->SetStatusCallback(cb); 117 enter.object()->SetStatusCallback(cb);
120 } 118 }
121 119
122 const PPB_URLLoader g_ppb_urlloader_thunk = { 120 const PPB_URLLoader g_ppb_urlloader_thunk = {
123 &Create, 121 &Create,
124 &IsURLLoader, 122 &IsURLLoader,
125 &Open, 123 &Open,
126 &FollowRedirect, 124 &FollowRedirect,
127 &GetUploadProgress, 125 &GetUploadProgress,
(...skipping 14 matching lines...) Expand all
142 const PPB_URLLoader_1_0* GetPPB_URLLoader_1_0_Thunk() { 140 const PPB_URLLoader_1_0* GetPPB_URLLoader_1_0_Thunk() {
143 return &g_ppb_urlloader_thunk; 141 return &g_ppb_urlloader_thunk;
144 } 142 }
145 143
146 const PPB_URLLoaderTrusted_0_3* GetPPB_URLLoaderTrusted_0_3_Thunk() { 144 const PPB_URLLoaderTrusted_0_3* GetPPB_URLLoaderTrusted_0_3_Thunk() {
147 return &g_ppb_urlloader_trusted_thunk; 145 return &g_ppb_urlloader_trusted_thunk;
148 } 146 }
149 147
150 } // namespace thunk 148 } // namespace thunk
151 } // namespace ppapi 149 } // namespace ppapi
OLDNEW
« no previous file with comments | « ppapi/thunk/ppb_graphics_2d_thunk.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698