Allow script to request durable storage permission (chrome side)
[chromium-blink-merge.git] / ppapi / shared_impl / file_io_state_manager.cc
blobc705f84da3a31f552e18623f9d89ddc6928dc128
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
3 // found in the LICENSE file.
5 #include "ppapi/shared_impl/file_io_state_manager.h"
7 #include "base/logging.h"
8 #include "ppapi/c/pp_errors.h"
10 namespace ppapi {
12 FileIOStateManager::FileIOStateManager()
13 : num_pending_ops_(0), pending_op_(OPERATION_NONE), file_open_(false) {}
15 FileIOStateManager::~FileIOStateManager() {}
17 void FileIOStateManager::SetOpenSucceed() { file_open_ = true; }
19 int32_t FileIOStateManager::CheckOperationState(OperationType new_op,
20 bool should_be_open) {
21 if (should_be_open) {
22 if (!file_open_)
23 return PP_ERROR_FAILED;
24 } else {
25 if (file_open_)
26 return PP_ERROR_FAILED;
29 if (pending_op_ != OPERATION_NONE &&
30 (pending_op_ != new_op || pending_op_ == OPERATION_EXCLUSIVE))
31 return PP_ERROR_INPROGRESS;
33 return PP_OK;
36 void FileIOStateManager::SetPendingOperation(OperationType new_op) {
37 DCHECK(pending_op_ == OPERATION_NONE ||
38 (pending_op_ != OPERATION_EXCLUSIVE && pending_op_ == new_op));
39 pending_op_ = new_op;
40 num_pending_ops_++;
43 void FileIOStateManager::SetOperationFinished() {
44 DCHECK_GT(num_pending_ops_, 0);
45 if (--num_pending_ops_ == 0)
46 pending_op_ = OPERATION_NONE;
49 } // namespace ppapi