| // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "net/base/upload_element_reader.h" | 
 |  | 
 | #include "base/logging.h" | 
 | #include "net/base/net_errors.h" | 
 | #include "net/base/upload_bytes_element_reader.h" | 
 | #include "net/base/upload_element.h" | 
 | #include "net/base/upload_file_element_reader.h" | 
 |  | 
 | namespace net { | 
 |  | 
 | // static | 
 | UploadElementReader* UploadElementReader::Create(const UploadElement& element) { | 
 |   UploadElementReader* reader = NULL; | 
 |   switch (element.type()) { | 
 |     case UploadElement::TYPE_BYTES: | 
 |       reader = new UploadBytesElementReader(element.bytes(), | 
 |                                             element.bytes_length()); | 
 |       break; | 
 |     case UploadElement::TYPE_FILE: | 
 |       reader = new UploadFileElementReader( | 
 |           element.file_path(), | 
 |           element.file_range_offset(), | 
 |           element.file_range_length(), | 
 |           element.expected_file_modification_time()); | 
 |       break; | 
 |   } | 
 |   DCHECK(reader); | 
 |   return reader; | 
 | } | 
 |  | 
 | int UploadElementReader::InitSync() { | 
 |   NOTREACHED() << "This instance does not support InitSync()."; | 
 |   return ERR_NOT_IMPLEMENTED; | 
 | } | 
 |  | 
 | bool UploadElementReader::IsInMemory() const { | 
 |   return false; | 
 | } | 
 |  | 
 | }  // namespace net |