1a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// found in the LICENSE file. 4a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// 5a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// This file provides Drive specific API functions. 6a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 7a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_PRIVATE_API_DRIVE_H_ 8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_PRIVATE_API_DRIVE_H_ 9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/files/file.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/memory/scoped_ptr.h" 12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/chromeos/drive/file_errors.h" 13a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/chromeos/drive/file_system_interface.h" 14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/chromeos/extensions/file_manager/private_api_base.h" 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "chrome/browser/chromeos/file_manager/fileapi_util.h" 16a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 17a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace drive { 18a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)class FileCacheEntry; 19a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)class ResourceEntry; 20a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)struct SearchResultInfo; 21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 22a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace google_apis { 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass AuthService; 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 27424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)namespace extensions { 28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace api { 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace file_manager_private { 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct EntryProperties; 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace file_manager_private 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} // namespace api 34a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 35a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Retrieves property information for an entry and returns it as a dictionary. 36a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// On error, returns a dictionary with the key "error" set to the error number 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// (base::File::Error). 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass FileManagerPrivateGetEntryPropertiesFunction 39424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) : public LoggedAsyncExtensionFunction { 40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) public: 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.getEntryProperties", 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FILEMANAGERPRIVATE_GETENTRYPROPERTIES) 43a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FileManagerPrivateGetEntryPropertiesFunction(); 45a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 46a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) protected: 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~FileManagerPrivateGetEntryPropertiesFunction(); 48a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 49a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // AsyncExtensionFunction overrides. 50010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool RunAsync() OVERRIDE; 51a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 52a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) private: 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void CompleteGetEntryProperties( 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci size_t index, 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<api::file_manager_private::EntryProperties> properties, 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::File::Error error); 57a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch size_t processed_count_; 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<linked_ptr<api::file_manager_private::EntryProperties> > 600529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch properties_list_; 61a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}; 62a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Implements the chrome.fileManagerPrivate.pinDriveFile method. 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass FileManagerPrivatePinDriveFileFunction 65424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) : public LoggedAsyncExtensionFunction { 66a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) public: 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.pinDriveFile", 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FILEMANAGERPRIVATE_PINDRIVEFILE) 69a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 70a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) protected: 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~FileManagerPrivatePinDriveFileFunction() {} 72a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 73a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // AsyncExtensionFunction overrides. 74010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool RunAsync() OVERRIDE; 75a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 76a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) private: 77010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Callback for RunAsync(). 78a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) void OnPinStateSet(drive::FileError error); 79a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}; 80a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Implements the chrome.fileManagerPrivate.cancelFileTransfers method. 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass FileManagerPrivateCancelFileTransfersFunction 83424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) : public LoggedAsyncExtensionFunction { 84a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) public: 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.cancelFileTransfers", 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FILEMANAGERPRIVATE_CANCELFILETRANSFERS) 87a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 88a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) protected: 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~FileManagerPrivateCancelFileTransfersFunction() {} 90a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 91a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // AsyncExtensionFunction overrides. 92010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool RunAsync() OVERRIDE; 93a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}; 94a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass FileManagerPrivateSearchDriveFunction 96424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) : public LoggedAsyncExtensionFunction { 97a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) public: 98a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) typedef std::vector<drive::SearchResultInfo> SearchResultInfoList; 99a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.searchDrive", 1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FILEMANAGERPRIVATE_SEARCHDRIVE) 102a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 103a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) protected: 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~FileManagerPrivateSearchDriveFunction() {} 105a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 106010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool RunAsync() OVERRIDE; 107a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 108a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) private: 109a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // Callback for Search(). 110a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) void OnSearch(drive::FileError error, 11158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const GURL& next_link, 112a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) scoped_ptr<std::vector<drive::SearchResultInfo> > result_paths); 113a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 114a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Called when |result_paths| in OnSearch() are converted to a list of 115a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // entry definitions. 116a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void OnEntryDefinitionList( 117a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const GURL& next_link, 118a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr<SearchResultInfoList> search_result_info_list, 119a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr<file_manager::util::EntryDefinitionList> 120a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) entry_definition_list); 121a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}; 122a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 1231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Similar to FileManagerPrivateSearchDriveFunction but this one is used for 124424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// searching drive metadata which is stored locally. 1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass FileManagerPrivateSearchDriveMetadataFunction 126424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) : public LoggedAsyncExtensionFunction { 127a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) public: 1281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.searchDriveMetadata", 1291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FILEMANAGERPRIVATE_SEARCHDRIVEMETADATA) 130a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 131a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) protected: 1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~FileManagerPrivateSearchDriveMetadataFunction() {} 133a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 134010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool RunAsync() OVERRIDE; 135a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 136a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) private: 137a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // Callback for SearchMetadata(); 138a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) void OnSearchMetadata(drive::FileError error, 139a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) scoped_ptr<drive::MetadataSearchResultVector> results); 140a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 141a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Called when |results| in OnSearchMetadata() are converted to a list of 142a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // entry definitions. 143a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void OnEntryDefinitionList( 144a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr<drive::MetadataSearchResultVector> search_result_info_list, 145a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr<file_manager::util::EntryDefinitionList> 146a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) entry_definition_list); 147a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}; 148a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Implements the chrome.fileManagerPrivate.getDriveConnectionState method. 1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass FileManagerPrivateGetDriveConnectionStateFunction 1511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) : public ChromeSyncExtensionFunction { 152a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) public: 153a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) DECLARE_EXTENSION_FUNCTION( 1541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "fileManagerPrivate.getDriveConnectionState", 1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FILEMANAGERPRIVATE_GETDRIVECONNECTIONSTATE); 156a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 157a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) protected: 1581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~FileManagerPrivateGetDriveConnectionStateFunction() {} 159a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 1605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu virtual bool RunSync() OVERRIDE; 161a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}; 162a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Implements the chrome.fileManagerPrivate.requestAccessToken method. 1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass FileManagerPrivateRequestAccessTokenFunction 165424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) : public LoggedAsyncExtensionFunction { 166a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) public: 1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.requestAccessToken", 1681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FILEMANAGERPRIVATE_REQUESTACCESSTOKEN) 169a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 170a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) protected: 1711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~FileManagerPrivateRequestAccessTokenFunction() {} 172a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 173a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // AsyncExtensionFunction overrides. 174010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool RunAsync() OVERRIDE; 175a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 176a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // Callback with a cached auth token (if available) or a fetched one. 177a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) void OnAccessTokenFetched(google_apis::GDataErrorCode code, 178a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) const std::string& access_token); 179a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}; 180a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Implements the chrome.fileManagerPrivate.getShareUrl method. 1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass FileManagerPrivateGetShareUrlFunction 183424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) : public LoggedAsyncExtensionFunction { 184a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) public: 1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.getShareUrl", 1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FILEMANAGERPRIVATE_GETSHAREURL) 187a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 188a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) protected: 1891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~FileManagerPrivateGetShareUrlFunction() {} 190a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 191a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // AsyncExtensionFunction overrides. 192010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool RunAsync() OVERRIDE; 193a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 194a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // Callback with an url to the sharing dialog as |share_url|, called by 195a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // FileSystem::GetShareUrl. 196a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) void OnGetShareUrl(drive::FileError error, const GURL& share_url); 197a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}; 198a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Implements the chrome.fileManagerPrivate.requestDriveShare method. 2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass FileManagerPrivateRequestDriveShareFunction 20123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) : public LoggedAsyncExtensionFunction { 20223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) public: 2031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.requestDriveShare", 2041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FILEMANAGERPRIVATE_REQUESTDRIVESHARE); 20523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 20623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) protected: 2071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~FileManagerPrivateRequestDriveShareFunction() {} 208010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool RunAsync() OVERRIDE; 20923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 21023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) private: 21123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Called back after the drive file system operation is finished. 21223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) void OnAddPermission(drive::FileError error); 21323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}; 21423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 2151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Implements the chrome.fileManagerPrivate.getDownloadUrl method. 2161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass FileManagerPrivateGetDownloadUrlFunction 217116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : public LoggedAsyncExtensionFunction { 218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 2191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FileManagerPrivateGetDownloadUrlFunction(); 220116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 2211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DECLARE_EXTENSION_FUNCTION("fileManagerPrivate.getDownloadUrl", 2221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FILEMANAGERPRIVATE_GETDOWNLOADURL) 223116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 224116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch protected: 2251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~FileManagerPrivateGetDownloadUrlFunction(); 226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // AsyncExtensionFunction overrides. 228116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool RunAsync() OVERRIDE; 229116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 230116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void OnGetResourceEntry(drive::FileError error, 231116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<drive::ResourceEntry> entry); 232116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 233116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Callback with an |access_token|, called by 234116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // drive::DriveReadonlyTokenFetcher. 235116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void OnTokenFetched(google_apis::GDataErrorCode code, 236116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& access_token); 237116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 238116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 239116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch std::string download_url_; 240116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<google_apis::AuthService> auth_service_; 241116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 242116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 243424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} // namespace extensions 244a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 245a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_PRIVATE_API_DRIVE_H_ 246