12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_DRIVE_RESOURCE_ENTRY_CONVERSION_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_DRIVE_RESOURCE_ENTRY_CONVERSION_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 8424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include <string> 9424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/files/file.h" 11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace google_apis { 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class ChangeResource; 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class FileResource; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace drive { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class ResourceEntry; 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Converts a google_apis::ChangeResource into a drive::ResourceEntry. 22424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// If the conversion succeeded, return true and sets the result to |out_entry|. 23424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// |out_parent_resource_id| will be set to the resource ID of the parent entry. 24424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// If failed, it returns false and keeps output arguments untouched. 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// 263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Every entry is guaranteed to have one parent resource ID in ResourceMetadata. 273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// This requirement is needed to represent contents in Drive as a file system 283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// tree, and achieved as follows: 293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// 303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// 1) Entries without parents are allowed on drive.google.com. These entries are 313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// collected to "drive/other", and have "drive/other" as the parent. 323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// 333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// 2) Entries with multiple parents are allowed on drive.google.com. For these 343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// entries, the first parent is chosen. 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)bool ConvertChangeResourceToResourceEntry( 36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const google_apis::ChangeResource& input, 37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ResourceEntry* out_entry, 38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string* out_parent_resource_id); 39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Converts a google_apis::FileResource into a drive::ResourceEntry. 41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Also see the comment for ConvertChangeResourceToResourceEntry above. 42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)bool ConvertFileResourceToResourceEntry( 43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const google_apis::FileResource& input, 44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ResourceEntry* out_entry, 45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string* out_parent_resource_id); 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 47a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Converts the resource entry to the platform file info. 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void ConvertResourceEntryToFileInfo(const ResourceEntry& entry, 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::File::Info* file_info); 50a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace drive 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_DRIVE_RESOURCE_ENTRY_CONVERSION_H_ 54