1// Copyright 2014 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. 4 5#ifndef CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_REQUEST_VALUE_H_ 6#define CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_REQUEST_VALUE_H_ 7 8#include <string> 9 10#include "base/memory/scoped_ptr.h" 11#include "chrome/common/extensions/api/file_system_provider_internal.h" 12 13namespace chromeos { 14namespace file_system_provider { 15 16// Holds a parsed value returned by a providing extension. Each accessor can 17// return NULL in case the requested value type is not available. It is used 18// to pass values of success callbacks. 19class RequestValue { 20 public: 21 // Creates an empty value. Use static methods to create a value holding a 22 // proper content. 23 RequestValue(); 24 25 virtual ~RequestValue(); 26 27 static scoped_ptr<RequestValue> CreateForUnmountSuccess( 28 scoped_ptr<extensions::api::file_system_provider_internal:: 29 UnmountRequestedSuccess::Params> params); 30 31 static scoped_ptr<RequestValue> CreateForGetMetadataSuccess( 32 scoped_ptr<extensions::api::file_system_provider_internal:: 33 GetMetadataRequestedSuccess::Params> params); 34 35 static scoped_ptr<RequestValue> CreateForReadDirectorySuccess( 36 scoped_ptr<extensions::api::file_system_provider_internal:: 37 ReadDirectoryRequestedSuccess::Params> params); 38 39 static scoped_ptr<RequestValue> CreateForReadFileSuccess( 40 scoped_ptr<extensions::api::file_system_provider_internal:: 41 ReadFileRequestedSuccess::Params> params); 42 43 static scoped_ptr<RequestValue> CreateForOperationSuccess( 44 scoped_ptr<extensions::api::file_system_provider_internal:: 45 OperationRequestedSuccess::Params> params); 46 47 static scoped_ptr<RequestValue> CreateForOperationError( 48 scoped_ptr<extensions::api::file_system_provider_internal:: 49 OperationRequestedError::Params> params); 50 51 static scoped_ptr<RequestValue> CreateForTesting(const std::string& params); 52 53 const extensions::api::file_system_provider_internal:: 54 UnmountRequestedSuccess::Params* 55 unmount_success_params() const { 56 return unmount_success_params_.get(); 57 } 58 59 const extensions::api::file_system_provider_internal:: 60 GetMetadataRequestedSuccess::Params* 61 get_metadata_success_params() const { 62 return get_metadata_success_params_.get(); 63 } 64 65 const extensions::api::file_system_provider_internal:: 66 ReadDirectoryRequestedSuccess::Params* 67 read_directory_success_params() const { 68 return read_directory_success_params_.get(); 69 } 70 71 const extensions::api::file_system_provider_internal:: 72 ReadFileRequestedSuccess::Params* 73 read_file_success_params() const { 74 return read_file_success_params_.get(); 75 } 76 77 const extensions::api::file_system_provider_internal:: 78 OperationRequestedSuccess::Params* 79 operation_success_params() const { 80 return operation_success_params_.get(); 81 } 82 83 const extensions::api::file_system_provider_internal:: 84 OperationRequestedError::Params* 85 operation_error_params() const { 86 return operation_error_params_.get(); 87 } 88 89 const std::string* testing_params() const { return testing_params_.get(); } 90 91 private: 92 scoped_ptr<extensions::api::file_system_provider_internal:: 93 UnmountRequestedSuccess::Params> unmount_success_params_; 94 scoped_ptr<extensions::api::file_system_provider_internal:: 95 GetMetadataRequestedSuccess::Params> 96 get_metadata_success_params_; 97 scoped_ptr<extensions::api::file_system_provider_internal:: 98 ReadDirectoryRequestedSuccess::Params> 99 read_directory_success_params_; 100 scoped_ptr<extensions::api::file_system_provider_internal:: 101 ReadFileRequestedSuccess::Params> read_file_success_params_; 102 scoped_ptr<extensions::api::file_system_provider_internal:: 103 OperationRequestedSuccess::Params> operation_success_params_; 104 scoped_ptr<extensions::api::file_system_provider_internal:: 105 OperationRequestedError::Params> operation_error_params_; 106 scoped_ptr<std::string> testing_params_; 107 108 DISALLOW_COPY_AND_ASSIGN(RequestValue); 109}; 110 111} // namespace file_system_provider 112} // namespace chromeos 113 114#endif // CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_REQUEST_VALUE_H_ 115