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

Side by Side Diff: Source/modules/websockets/WebSocketDeflateFramer.cpp

Issue 14247036: Remove USE(ZLIB) guard. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase Created 7 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 ASSERT(m_framer); 68 ASSERT(m_framer);
69 } 69 }
70 70
71 String WebSocketExtensionDeflateFrame::handshakeString() 71 String WebSocketExtensionDeflateFrame::handshakeString()
72 { 72 {
73 return extensionToken(); // No parameter 73 return extensionToken(); // No parameter
74 } 74 }
75 75
76 bool WebSocketExtensionDeflateFrame::processResponse(const HashMap<String, Strin g>& serverParameters) 76 bool WebSocketExtensionDeflateFrame::processResponse(const HashMap<String, Strin g>& serverParameters)
77 { 77 {
78 #if USE(ZLIB)
79 if (m_responseProcessed) { 78 if (m_responseProcessed) {
80 m_failureReason = "Received duplicate deflate-frame response"; 79 m_failureReason = "Received duplicate deflate-frame response";
81 return false; 80 return false;
82 } 81 }
83 m_responseProcessed = true; 82 m_responseProcessed = true;
84 83
85 int expectedNumParameters = 0; 84 int expectedNumParameters = 0;
86 int windowBits = 15; 85 int windowBits = 15;
87 HashMap<String, String>::const_iterator parameter = serverParameters.find("m ax_window_bits"); 86 HashMap<String, String>::const_iterator parameter = serverParameters.find("m ax_window_bits");
88 if (parameter != serverParameters.end()) { 87 if (parameter != serverParameters.end()) {
(...skipping 16 matching lines...) Expand all
105 expectedNumParameters++; 104 expectedNumParameters++;
106 } 105 }
107 106
108 if (expectedNumParameters != serverParameters.size()) { 107 if (expectedNumParameters != serverParameters.size()) {
109 m_failureReason = "Received unexpected deflate-frame parameter"; 108 m_failureReason = "Received unexpected deflate-frame parameter";
110 return false; 109 return false;
111 } 110 }
112 111
113 m_framer->enableDeflate(windowBits, mode); 112 m_framer->enableDeflate(windowBits, mode);
114 return true; 113 return true;
115 #else
116 ASSERT_NOT_REACHED();
117 return false;
118 #endif
119 } 114 }
120 115
121 DeflateResultHolder::DeflateResultHolder(WebSocketDeflateFramer* framer) 116 DeflateResultHolder::DeflateResultHolder(WebSocketDeflateFramer* framer)
122 : m_framer(framer) 117 : m_framer(framer)
123 , m_succeeded(true) 118 , m_succeeded(true)
124 { 119 {
125 ASSERT(m_framer); 120 ASSERT(m_framer);
126 } 121 }
127 122
128 DeflateResultHolder::~DeflateResultHolder() 123 DeflateResultHolder::~DeflateResultHolder()
(...skipping 28 matching lines...) Expand all
157 WebSocketDeflateFramer::WebSocketDeflateFramer() 152 WebSocketDeflateFramer::WebSocketDeflateFramer()
158 : m_enabled(false) 153 : m_enabled(false)
159 { 154 {
160 } 155 }
161 156
162 PassOwnPtr<WebSocketExtensionProcessor> WebSocketDeflateFramer::createExtensionP rocessor() 157 PassOwnPtr<WebSocketExtensionProcessor> WebSocketDeflateFramer::createExtensionP rocessor()
163 { 158 {
164 return WebSocketExtensionDeflateFrame::create(this); 159 return WebSocketExtensionDeflateFrame::create(this);
165 } 160 }
166 161
167 bool WebSocketDeflateFramer::canDeflate() const
168 {
169 #if USE(ZLIB)
170 return true;
171 #else
172 return false;
173 #endif
174 }
175
176 #if USE(ZLIB)
177 void WebSocketDeflateFramer::enableDeflate(int windowBits, WebSocketDeflater::Co ntextTakeOverMode mode) 162 void WebSocketDeflateFramer::enableDeflate(int windowBits, WebSocketDeflater::Co ntextTakeOverMode mode)
178 { 163 {
179 m_deflater = WebSocketDeflater::create(windowBits, mode); 164 m_deflater = WebSocketDeflater::create(windowBits, mode);
180 m_inflater = WebSocketInflater::create(); 165 m_inflater = WebSocketInflater::create();
181 if (!m_deflater->initialize() || !m_inflater->initialize()) { 166 if (!m_deflater->initialize() || !m_inflater->initialize()) {
182 m_deflater.clear(); 167 m_deflater.clear();
183 m_inflater.clear(); 168 m_inflater.clear();
184 return; 169 return;
185 } 170 }
186 m_enabled = true; 171 m_enabled = true;
187 } 172 }
188 #endif
189 173
190 PassOwnPtr<DeflateResultHolder> WebSocketDeflateFramer::deflate(WebSocketFrame& frame) 174 PassOwnPtr<DeflateResultHolder> WebSocketDeflateFramer::deflate(WebSocketFrame& frame)
191 { 175 {
192 #if USE(ZLIB)
193 OwnPtr<DeflateResultHolder> result = DeflateResultHolder::create(this); 176 OwnPtr<DeflateResultHolder> result = DeflateResultHolder::create(this);
194 if (!enabled() || !WebSocketFrame::isNonControlOpCode(frame.opCode) || !fram e.payloadLength) 177 if (!enabled() || !WebSocketFrame::isNonControlOpCode(frame.opCode) || !fram e.payloadLength)
195 return result.release(); 178 return result.release();
196 if (!m_deflater->addBytes(frame.payload, frame.payloadLength) || !m_deflater ->finish()) { 179 if (!m_deflater->addBytes(frame.payload, frame.payloadLength) || !m_deflater ->finish()) {
197 result->fail("Failed to compress frame"); 180 result->fail("Failed to compress frame");
198 return result.release(); 181 return result.release();
199 } 182 }
200 frame.compress = true; 183 frame.compress = true;
201 frame.payload = m_deflater->data(); 184 frame.payload = m_deflater->data();
202 frame.payloadLength = m_deflater->size(); 185 frame.payloadLength = m_deflater->size();
203 return result.release(); 186 return result.release();
204 #else
205 return DeflateResultHolder::create(this);
206 #endif
207 } 187 }
208 188
209 void WebSocketDeflateFramer::resetDeflateContext() 189 void WebSocketDeflateFramer::resetDeflateContext()
210 { 190 {
211 #if USE(ZLIB)
212 if (m_deflater) 191 if (m_deflater)
213 m_deflater->reset(); 192 m_deflater->reset();
214 #endif
215 } 193 }
216 194
217 PassOwnPtr<InflateResultHolder> WebSocketDeflateFramer::inflate(WebSocketFrame& frame) 195 PassOwnPtr<InflateResultHolder> WebSocketDeflateFramer::inflate(WebSocketFrame& frame)
218 { 196 {
219 OwnPtr<InflateResultHolder> result = InflateResultHolder::create(this); 197 OwnPtr<InflateResultHolder> result = InflateResultHolder::create(this);
220 if (!enabled() && frame.compress) { 198 if (!enabled() && frame.compress) {
221 result->fail("Compressed bit must be 0 if no negotiated deflate-frame ex tension"); 199 result->fail("Compressed bit must be 0 if no negotiated deflate-frame ex tension");
222 return result.release(); 200 return result.release();
223 } 201 }
224 #if USE(ZLIB)
225 if (!frame.compress) 202 if (!frame.compress)
226 return result.release(); 203 return result.release();
227 if (!WebSocketFrame::isNonControlOpCode(frame.opCode)) { 204 if (!WebSocketFrame::isNonControlOpCode(frame.opCode)) {
228 result->fail("Received unexpected compressed frame"); 205 result->fail("Received unexpected compressed frame");
229 return result.release(); 206 return result.release();
230 } 207 }
231 if (!m_inflater->addBytes(frame.payload, frame.payloadLength) || !m_inflater ->finish()) { 208 if (!m_inflater->addBytes(frame.payload, frame.payloadLength) || !m_inflater ->finish()) {
232 result->fail("Failed to decompress frame"); 209 result->fail("Failed to decompress frame");
233 return result.release(); 210 return result.release();
234 } 211 }
235 frame.compress = false; 212 frame.compress = false;
236 frame.payload = m_inflater->data(); 213 frame.payload = m_inflater->data();
237 frame.payloadLength = m_inflater->size(); 214 frame.payloadLength = m_inflater->size();
238 return result.release(); 215 return result.release();
239 #else
240 return result.release();
241 #endif
242 } 216 }
243 217
244 void WebSocketDeflateFramer::resetInflateContext() 218 void WebSocketDeflateFramer::resetInflateContext()
245 { 219 {
246 #if USE(ZLIB)
247 if (m_inflater) 220 if (m_inflater)
248 m_inflater->reset(); 221 m_inflater->reset();
249 #endif
250 } 222 }
251 223
252 void WebSocketDeflateFramer::didFail() 224 void WebSocketDeflateFramer::didFail()
253 { 225 {
254 resetDeflateContext(); 226 resetDeflateContext();
255 resetInflateContext(); 227 resetInflateContext();
256 } 228 }
257 229
258 } // namespace WebCore 230 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/modules/websockets/WebSocketDeflateFramer.h ('k') | Source/modules/websockets/WebSocketDeflater.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698