| Index: webkit/fileapi/webfilewriter_base.cc
|
| diff --git a/webkit/fileapi/webfilewriter_base.cc b/webkit/fileapi/webfilewriter_base.cc
|
| deleted file mode 100644
|
| index cd0bd7575999b7ce0e1f0935c553cfeb0d836518..0000000000000000000000000000000000000000
|
| --- a/webkit/fileapi/webfilewriter_base.cc
|
| +++ /dev/null
|
| @@ -1,154 +0,0 @@
|
| -// 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 "webkit/fileapi/webfilewriter_base.h"
|
| -
|
| -#include "base/logging.h"
|
| -#include "third_party/WebKit/Source/Platform/chromium/public/WebURL.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebFileError.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebFileWriterClient.h"
|
| -#include "webkit/fileapi/file_system_util.h"
|
| -
|
| -namespace fileapi {
|
| -
|
| -WebFileWriterBase::WebFileWriterBase(
|
| - const GURL& path, WebKit::WebFileWriterClient* client)
|
| - : path_(path),
|
| - client_(client),
|
| - operation_(kOperationNone),
|
| - cancel_state_(kCancelNotInProgress) {
|
| -}
|
| -
|
| -WebFileWriterBase::~WebFileWriterBase() {
|
| -}
|
| -
|
| -void WebFileWriterBase::truncate(long long length) {
|
| - DCHECK(kOperationNone == operation_);
|
| - DCHECK(kCancelNotInProgress == cancel_state_);
|
| - operation_ = kOperationTruncate;
|
| - DoTruncate(path_, length);
|
| -}
|
| -
|
| -void WebFileWriterBase::write(
|
| - long long position,
|
| - const WebKit::WebURL& blob_url) {
|
| - DCHECK(kOperationNone == operation_);
|
| - DCHECK(kCancelNotInProgress == cancel_state_);
|
| - operation_ = kOperationWrite;
|
| - DoWrite(path_, blob_url, position);
|
| -}
|
| -
|
| -// When we cancel a write/truncate, we always get back the result of the write
|
| -// before the result of the cancel, no matter what happens.
|
| -// So we'll get back either
|
| -// success [of the write/truncate, in a DidWrite(XXX, true)/DidSucceed() call]
|
| -// followed by failure [of the cancel]; or
|
| -// failure [of the write, either from cancel or other reasons] followed by
|
| -// the result of the cancel.
|
| -// In the write case, there could also be queued up non-terminal DidWrite calls
|
| -// before any of that comes back, but there will always be a terminal write
|
| -// response [success or failure] after them, followed by the cancel result, so
|
| -// we can ignore non-terminal write responses, take the terminal write success
|
| -// or the first failure as the last write response, then know that the next
|
| -// thing to come back is the cancel response. We only notify the
|
| -// AsyncFileWriterClient when it's all over.
|
| -void WebFileWriterBase::cancel() {
|
| - // Check for the cancel passing the previous operation's return in-flight.
|
| - if (kOperationWrite != operation_ && kOperationTruncate != operation_)
|
| - return;
|
| - if (kCancelNotInProgress != cancel_state_)
|
| - return;
|
| - cancel_state_ = kCancelSent;
|
| - DoCancel();
|
| -}
|
| -
|
| -void WebFileWriterBase::DidFinish(base::PlatformFileError error_code) {
|
| - if (error_code == base::PLATFORM_FILE_OK)
|
| - DidSucceed();
|
| - else
|
| - DidFail(error_code);
|
| -}
|
| -
|
| -void WebFileWriterBase::DidWrite(int64 bytes, bool complete) {
|
| - DCHECK(kOperationWrite == operation_);
|
| - switch (cancel_state_) {
|
| - case kCancelNotInProgress:
|
| - if (complete)
|
| - operation_ = kOperationNone;
|
| - client_->didWrite(bytes, complete);
|
| - break;
|
| - case kCancelSent:
|
| - // This is the success call of the write, which we'll eat, even though
|
| - // it succeeded before the cancel got there. We accepted the cancel call,
|
| - // so the write will eventually return an error.
|
| - if (complete)
|
| - cancel_state_ = kCancelReceivedWriteResponse;
|
| - break;
|
| - case kCancelReceivedWriteResponse:
|
| - default:
|
| - NOTREACHED();
|
| - }
|
| -}
|
| -
|
| -void WebFileWriterBase::DidSucceed() {
|
| - // Write never gets a DidSucceed call, so this is either a cancel or truncate
|
| - // response.
|
| - switch (cancel_state_) {
|
| - case kCancelNotInProgress:
|
| - // A truncate succeeded, with no complications.
|
| - DCHECK(kOperationTruncate == operation_);
|
| - operation_ = kOperationNone;
|
| - client_->didTruncate();
|
| - break;
|
| - case kCancelSent:
|
| - DCHECK(kOperationTruncate == operation_);
|
| - // This is the success call of the truncate, which we'll eat, even though
|
| - // it succeeded before the cancel got there. We accepted the cancel call,
|
| - // so the truncate will eventually return an error.
|
| - cancel_state_ = kCancelReceivedWriteResponse;
|
| - break;
|
| - case kCancelReceivedWriteResponse:
|
| - // This is the success of the cancel operation.
|
| - FinishCancel();
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - }
|
| -}
|
| -
|
| -void WebFileWriterBase::DidFail(base::PlatformFileError error_code) {
|
| - DCHECK(kOperationNone != operation_);
|
| - switch (cancel_state_) {
|
| - case kCancelNotInProgress:
|
| - // A write or truncate failed.
|
| - operation_ = kOperationNone;
|
| - client_->didFail(
|
| - PlatformFileErrorToWebFileError(error_code));
|
| - break;
|
| - case kCancelSent:
|
| - // This is the failure of a write or truncate; the next message should be
|
| - // the result of the cancel. We don't assume that it'll be a success, as
|
| - // the write/truncate could have failed for other reasons.
|
| - cancel_state_ = kCancelReceivedWriteResponse;
|
| - break;
|
| - case kCancelReceivedWriteResponse:
|
| - // The cancel reported failure, meaning that the write or truncate
|
| - // finished before the cancel got there. But we suppressed the
|
| - // write/truncate's response, and will now report that it was cancelled.
|
| - FinishCancel();
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - }
|
| -}
|
| -
|
| -void WebFileWriterBase::FinishCancel() {
|
| - DCHECK(kCancelReceivedWriteResponse == cancel_state_);
|
| - DCHECK(kOperationNone != operation_);
|
| - cancel_state_ = kCancelNotInProgress;
|
| - operation_ = kOperationNone;
|
| - client_->didFail(WebKit::WebFileErrorAbort);
|
| -}
|
| -
|
| -} // namespace fileapi
|
|
|