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

Side by Side Diff: mojo/dart/embedder/io/filter.cc

Issue 1786473004: Rolls Dart runtime forward. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: whitespace Created 4 years, 9 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
« no previous file with comments | « mojo/dart/embedder/io/filter.h ('k') | mojo/dart/embedder/io/filter_patch.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "mojo/dart/embedder/io/filter.h" 5 #include "mojo/dart/embedder/io/filter.h"
6 6
7 namespace mojo { 7 namespace mojo {
8 namespace dart { 8 namespace dart {
9 9
10 const int kZLibFlagUseGZipHeader = 16; 10 const int kZLibFlagUseGZipHeader = 16;
11 const int kZLibFlagAcceptAnyHeader = 32; 11 const int kZLibFlagAcceptAnyHeader = 32;
12 12
13 static const int kFilterPointerNativeField = 0; 13 static const int kFilterPointerNativeField = 0;
14 14
15 Dart_Handle Filter::SetFilterPointerNativeField(Dart_Handle filter, 15 static void DeleteFilter(
16 Filter* filter_pointer) { 16 void* isolate_data,
17 return Dart_SetNativeInstanceField( 17 Dart_WeakPersistentHandle handle,
18 void* filter_pointer) {
19 Filter* filter = reinterpret_cast<Filter*>(filter_pointer);
20 delete filter;
21 }
22
23 Dart_Handle Filter::SetFilterAndCreateFinalizer(Dart_Handle filter,
24 Filter* filter_pointer,
25 intptr_t size) {
26 Dart_Handle err = Dart_SetNativeInstanceField(
18 filter, 27 filter,
19 kFilterPointerNativeField, 28 kFilterPointerNativeField,
20 reinterpret_cast<intptr_t>(filter_pointer)); 29 reinterpret_cast<intptr_t>(filter_pointer));
30 if (Dart_IsError(err)) {
31 return err;
32 }
33 Dart_NewWeakPersistentHandle(filter,
34 reinterpret_cast<void*>(filter_pointer),
35 size,
36 DeleteFilter);
37 return err;
21 } 38 }
22 39
23 40 Dart_Handle Filter::GetFilterNativeField(Dart_Handle filter,
24 Dart_Handle Filter::GetFilterPointerNativeField(Dart_Handle filter, 41 Filter** filter_pointer) {
25 Filter** filter_pointer) {
26 return Dart_GetNativeInstanceField( 42 return Dart_GetNativeInstanceField(
27 filter, 43 filter,
28 kFilterPointerNativeField, 44 kFilterPointerNativeField,
29 reinterpret_cast<intptr_t*>(filter_pointer)); 45 reinterpret_cast<intptr_t*>(filter_pointer));
30 } 46 }
31 47
32
33 ZLibDeflateFilter::~ZLibDeflateFilter() { 48 ZLibDeflateFilter::~ZLibDeflateFilter() {
34 delete[] dictionary_; 49 delete[] dictionary_;
35 delete[] current_buffer_; 50 delete[] current_buffer_;
36 if (initialized()) deflateEnd(&stream_); 51 if (initialized()) {
52 deflateEnd(&stream_);
53 }
37 } 54 }
38 55
39
40 bool ZLibDeflateFilter::Init() { 56 bool ZLibDeflateFilter::Init() {
41 int window_bits = window_bits_; 57 int window_bits = window_bits_;
42 if (raw_) { 58 if (raw_) {
43 window_bits = -window_bits; 59 window_bits = -window_bits;
44 } else if (gzip_) { 60 } else if (gzip_) {
45 window_bits += kZLibFlagUseGZipHeader; 61 window_bits += kZLibFlagUseGZipHeader;
46 } 62 }
47 stream_.next_in = Z_NULL; 63 stream_.next_in = Z_NULL;
48 stream_.zalloc = Z_NULL; 64 stream_.zalloc = Z_NULL;
49 stream_.zfree = Z_NULL; 65 stream_.zfree = Z_NULL;
50 stream_.opaque = Z_NULL; 66 stream_.opaque = Z_NULL;
51 int result = deflateInit2(&stream_, level_, Z_DEFLATED, window_bits, 67 int result = deflateInit2(&stream_, level_, Z_DEFLATED, window_bits,
52 mem_level_, strategy_); 68 mem_level_, strategy_);
53 if (result != Z_OK) { 69 if (result != Z_OK) {
54 return false; 70 return false;
55 } 71 }
56 if (dictionary_ != NULL && !gzip_ && !raw_) { 72 if ((dictionary_ != NULL) && !gzip_ && !raw_) {
57 result = deflateSetDictionary(&stream_, dictionary_, dictionary_length_); 73 result = deflateSetDictionary(&stream_, dictionary_, dictionary_length_);
58 delete[] dictionary_; 74 delete[] dictionary_;
59 dictionary_ = NULL; 75 dictionary_ = NULL;
60 if (result != Z_OK) { 76 if (result != Z_OK) {
61 return false; 77 return false;
62 } 78 }
63 } 79 }
64 set_initialized(true); 80 set_initialized(true);
65 return true; 81 return true;
66 } 82 }
67 83
68
69 bool ZLibDeflateFilter::Process(uint8_t* data, intptr_t length) { 84 bool ZLibDeflateFilter::Process(uint8_t* data, intptr_t length) {
70 if (current_buffer_ != NULL) return false; 85 if (current_buffer_ != NULL) {
86 return false;
87 }
71 stream_.avail_in = length; 88 stream_.avail_in = length;
72 stream_.next_in = current_buffer_ = data; 89 stream_.next_in = current_buffer_ = data;
73 return true; 90 return true;
74 } 91 }
75 92
76 intptr_t ZLibDeflateFilter::Processed(uint8_t* buffer, 93 intptr_t ZLibDeflateFilter::Processed(uint8_t* buffer,
77 intptr_t length, 94 intptr_t length,
78 bool flush, 95 bool flush,
79 bool end) { 96 bool end) {
80 stream_.avail_out = length; 97 stream_.avail_out = length;
(...skipping 15 matching lines...) Expand all
96 case Z_STREAM_ERROR: 113 case Z_STREAM_ERROR:
97 error = true; 114 error = true;
98 } 115 }
99 116
100 delete[] current_buffer_; 117 delete[] current_buffer_;
101 current_buffer_ = NULL; 118 current_buffer_ = NULL;
102 // Either 0 Byte processed or error 119 // Either 0 Byte processed or error
103 return error ? -1 : 0; 120 return error ? -1 : 0;
104 } 121 }
105 122
106
107 ZLibInflateFilter::~ZLibInflateFilter() { 123 ZLibInflateFilter::~ZLibInflateFilter() {
108 delete[] dictionary_; 124 delete[] dictionary_;
109 delete[] current_buffer_; 125 delete[] current_buffer_;
110 if (initialized()) inflateEnd(&stream_); 126 if (initialized()) {
127 inflateEnd(&stream_);
128 }
111 } 129 }
112 130
113
114 bool ZLibInflateFilter::Init() { 131 bool ZLibInflateFilter::Init() {
115 int window_bits = raw_ ? 132 int window_bits = raw_ ?
116 -window_bits_ : 133 -window_bits_ :
117 window_bits_ | kZLibFlagAcceptAnyHeader; 134 window_bits_ | kZLibFlagAcceptAnyHeader;
118 135
119 stream_.next_in = Z_NULL; 136 stream_.next_in = Z_NULL;
120 stream_.avail_in = 0; 137 stream_.avail_in = 0;
121 stream_.zalloc = Z_NULL; 138 stream_.zalloc = Z_NULL;
122 stream_.zfree = Z_NULL; 139 stream_.zfree = Z_NULL;
123 stream_.opaque = Z_NULL; 140 stream_.opaque = Z_NULL;
124 int result = inflateInit2(&stream_, window_bits); 141 int result = inflateInit2(&stream_, window_bits);
125 if (result != Z_OK) { 142 if (result != Z_OK) {
126 return false; 143 return false;
127 } 144 }
128 set_initialized(true); 145 set_initialized(true);
129 return true; 146 return true;
130 } 147 }
131 148
132
133 bool ZLibInflateFilter::Process(uint8_t* data, intptr_t length) { 149 bool ZLibInflateFilter::Process(uint8_t* data, intptr_t length) {
134 if (current_buffer_ != NULL) return false; 150 if (current_buffer_ != NULL) {
151 return false;
152 }
135 stream_.avail_in = length; 153 stream_.avail_in = length;
136 stream_.next_in = current_buffer_ = data; 154 stream_.next_in = current_buffer_ = data;
137 return true; 155 return true;
138 } 156 }
139 157
140
141 intptr_t ZLibInflateFilter::Processed(uint8_t* buffer, 158 intptr_t ZLibInflateFilter::Processed(uint8_t* buffer,
142 intptr_t length, 159 intptr_t length,
143 bool flush, 160 bool flush,
144 bool end) { 161 bool end) {
145 stream_.avail_out = length; 162 stream_.avail_out = length;
146 stream_.next_out = buffer; 163 stream_.next_out = buffer;
147 bool error = false; 164 bool error = false;
148 int v; 165 int v;
149 switch (v = inflate(&stream_, 166 switch (v = inflate(&stream_,
150 end ? Z_FINISH : flush ? Z_SYNC_FLUSH : Z_NO_FLUSH)) { 167 end ? Z_FINISH : flush ? Z_SYNC_FLUSH : Z_NO_FLUSH)) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 } 199 }
183 200
184 delete[] current_buffer_; 201 delete[] current_buffer_;
185 current_buffer_ = NULL; 202 current_buffer_ = NULL;
186 // Either 0 Byte processed or error 203 // Either 0 Byte processed or error
187 return error ? -1 : 0; 204 return error ? -1 : 0;
188 } 205 }
189 206
190 } // namespace dart 207 } // namespace dart
191 } // namespace mojo 208 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/dart/embedder/io/filter.h ('k') | mojo/dart/embedder/io/filter_patch.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698