| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/extensions/file_manager/private_api_drive.h" | 5 #include "chrome/browser/chromeos/extensions/file_manager/private_api_drive.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <set> | 8 #include <set> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 class SingleEntryPropertiesGetterForDrive { | 165 class SingleEntryPropertiesGetterForDrive { |
| 166 public: | 166 public: |
| 167 typedef base::Callback<void(scoped_ptr<EntryProperties> properties, | 167 typedef base::Callback<void(scoped_ptr<EntryProperties> properties, |
| 168 base::File::Error error)> ResultCallback; | 168 base::File::Error error)> ResultCallback; |
| 169 | 169 |
| 170 // Creates an instance and starts the process. | 170 // Creates an instance and starts the process. |
| 171 static void Start(const base::FilePath local_path, | 171 static void Start(const base::FilePath local_path, |
| 172 const std::set<EntryPropertyName>& names, | 172 const std::set<EntryPropertyName>& names, |
| 173 Profile* const profile, | 173 Profile* const profile, |
| 174 const ResultCallback& callback) { | 174 const ResultCallback& callback) { |
| 175 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 175 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 176 | 176 |
| 177 SingleEntryPropertiesGetterForDrive* instance = | 177 SingleEntryPropertiesGetterForDrive* instance = |
| 178 new SingleEntryPropertiesGetterForDrive(local_path, names, profile, | 178 new SingleEntryPropertiesGetterForDrive(local_path, names, profile, |
| 179 callback); | 179 callback); |
| 180 instance->StartProcess(); | 180 instance->StartProcess(); |
| 181 | 181 |
| 182 // The instance will be destroyed by itself. | 182 // The instance will be destroyed by itself. |
| 183 } | 183 } |
| 184 | 184 |
| 185 virtual ~SingleEntryPropertiesGetterForDrive() {} | 185 virtual ~SingleEntryPropertiesGetterForDrive() {} |
| 186 | 186 |
| 187 private: | 187 private: |
| 188 SingleEntryPropertiesGetterForDrive( | 188 SingleEntryPropertiesGetterForDrive( |
| 189 const base::FilePath local_path, | 189 const base::FilePath local_path, |
| 190 const std::set<EntryPropertyName>& /* names */, | 190 const std::set<EntryPropertyName>& /* names */, |
| 191 Profile* const profile, | 191 Profile* const profile, |
| 192 const ResultCallback& callback) | 192 const ResultCallback& callback) |
| 193 : callback_(callback), | 193 : callback_(callback), |
| 194 local_path_(local_path), | 194 local_path_(local_path), |
| 195 running_profile_(profile), | 195 running_profile_(profile), |
| 196 properties_(new EntryProperties), | 196 properties_(new EntryProperties), |
| 197 file_owner_profile_(NULL), | 197 file_owner_profile_(NULL), |
| 198 weak_ptr_factory_(this) { | 198 weak_ptr_factory_(this) { |
| 199 DCHECK(!callback_.is_null()); | 199 DCHECK(!callback_.is_null()); |
| 200 DCHECK(profile); | 200 DCHECK(profile); |
| 201 } | 201 } |
| 202 | 202 |
| 203 void StartProcess() { | 203 void StartProcess() { |
| 204 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 204 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 205 | 205 |
| 206 file_path_ = drive::util::ExtractDrivePath(local_path_); | 206 file_path_ = drive::util::ExtractDrivePath(local_path_); |
| 207 file_owner_profile_ = drive::util::ExtractProfileFromPath(local_path_); | 207 file_owner_profile_ = drive::util::ExtractProfileFromPath(local_path_); |
| 208 | 208 |
| 209 if (!file_owner_profile_ || | 209 if (!file_owner_profile_ || |
| 210 !g_browser_process->profile_manager()->IsValidProfile( | 210 !g_browser_process->profile_manager()->IsValidProfile( |
| 211 file_owner_profile_)) { | 211 file_owner_profile_)) { |
| 212 CompleteGetEntryProperties(drive::FILE_ERROR_FAILED); | 212 CompleteGetEntryProperties(drive::FILE_ERROR_FAILED); |
| 213 return; | 213 return; |
| 214 } | 214 } |
| 215 | 215 |
| 216 // Start getting the file info. | 216 // Start getting the file info. |
| 217 drive::FileSystemInterface* const file_system = | 217 drive::FileSystemInterface* const file_system = |
| 218 drive::util::GetFileSystemByProfile(file_owner_profile_); | 218 drive::util::GetFileSystemByProfile(file_owner_profile_); |
| 219 if (!file_system) { | 219 if (!file_system) { |
| 220 // |file_system| is NULL if Drive is disabled or not mounted. | 220 // |file_system| is NULL if Drive is disabled or not mounted. |
| 221 CompleteGetEntryProperties(drive::FILE_ERROR_FAILED); | 221 CompleteGetEntryProperties(drive::FILE_ERROR_FAILED); |
| 222 return; | 222 return; |
| 223 } | 223 } |
| 224 | 224 |
| 225 file_system->GetResourceEntry( | 225 file_system->GetResourceEntry( |
| 226 file_path_, | 226 file_path_, |
| 227 base::Bind(&SingleEntryPropertiesGetterForDrive::OnGetFileInfo, | 227 base::Bind(&SingleEntryPropertiesGetterForDrive::OnGetFileInfo, |
| 228 weak_ptr_factory_.GetWeakPtr())); | 228 weak_ptr_factory_.GetWeakPtr())); |
| 229 } | 229 } |
| 230 | 230 |
| 231 void OnGetFileInfo(drive::FileError error, | 231 void OnGetFileInfo(drive::FileError error, |
| 232 scoped_ptr<drive::ResourceEntry> entry) { | 232 scoped_ptr<drive::ResourceEntry> entry) { |
| 233 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 233 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 234 | 234 |
| 235 if (error != drive::FILE_ERROR_OK) { | 235 if (error != drive::FILE_ERROR_OK) { |
| 236 CompleteGetEntryProperties(error); | 236 CompleteGetEntryProperties(error); |
| 237 return; | 237 return; |
| 238 } | 238 } |
| 239 | 239 |
| 240 DCHECK(entry); | 240 DCHECK(entry); |
| 241 owner_resource_entry_.swap(entry); | 241 owner_resource_entry_.swap(entry); |
| 242 | 242 |
| 243 if (running_profile_->IsSameProfile(file_owner_profile_)) { | 243 if (running_profile_->IsSameProfile(file_owner_profile_)) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 254 return; | 254 return; |
| 255 } | 255 } |
| 256 file_system->GetPathFromResourceId( | 256 file_system->GetPathFromResourceId( |
| 257 owner_resource_entry_->resource_id(), | 257 owner_resource_entry_->resource_id(), |
| 258 base::Bind(&SingleEntryPropertiesGetterForDrive::OnGetRunningPath, | 258 base::Bind(&SingleEntryPropertiesGetterForDrive::OnGetRunningPath, |
| 259 weak_ptr_factory_.GetWeakPtr())); | 259 weak_ptr_factory_.GetWeakPtr())); |
| 260 } | 260 } |
| 261 | 261 |
| 262 void OnGetRunningPath(drive::FileError error, | 262 void OnGetRunningPath(drive::FileError error, |
| 263 const base::FilePath& file_path) { | 263 const base::FilePath& file_path) { |
| 264 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 264 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 265 | 265 |
| 266 if (error != drive::FILE_ERROR_OK) { | 266 if (error != drive::FILE_ERROR_OK) { |
| 267 // The running profile does not know the file. | 267 // The running profile does not know the file. |
| 268 StartParseFileInfo(false); | 268 StartParseFileInfo(false); |
| 269 return; | 269 return; |
| 270 } | 270 } |
| 271 | 271 |
| 272 drive::FileSystemInterface* const file_system = | 272 drive::FileSystemInterface* const file_system = |
| 273 drive::util::GetFileSystemByProfile(running_profile_); | 273 drive::util::GetFileSystemByProfile(running_profile_); |
| 274 if (!file_system) { | 274 if (!file_system) { |
| 275 // The drive is disable for the running profile. | 275 // The drive is disable for the running profile. |
| 276 StartParseFileInfo(false); | 276 StartParseFileInfo(false); |
| 277 return; | 277 return; |
| 278 } | 278 } |
| 279 | 279 |
| 280 file_system->GetResourceEntry( | 280 file_system->GetResourceEntry( |
| 281 file_path, | 281 file_path, |
| 282 base::Bind(&SingleEntryPropertiesGetterForDrive::OnGetShareInfo, | 282 base::Bind(&SingleEntryPropertiesGetterForDrive::OnGetShareInfo, |
| 283 weak_ptr_factory_.GetWeakPtr())); | 283 weak_ptr_factory_.GetWeakPtr())); |
| 284 } | 284 } |
| 285 | 285 |
| 286 void OnGetShareInfo(drive::FileError error, | 286 void OnGetShareInfo(drive::FileError error, |
| 287 scoped_ptr<drive::ResourceEntry> entry) { | 287 scoped_ptr<drive::ResourceEntry> entry) { |
| 288 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 288 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 289 | 289 |
| 290 if (error != drive::FILE_ERROR_OK) { | 290 if (error != drive::FILE_ERROR_OK) { |
| 291 CompleteGetEntryProperties(error); | 291 CompleteGetEntryProperties(error); |
| 292 return; | 292 return; |
| 293 } | 293 } |
| 294 | 294 |
| 295 DCHECK(entry.get()); | 295 DCHECK(entry.get()); |
| 296 StartParseFileInfo(entry->shared_with_me()); | 296 StartParseFileInfo(entry->shared_with_me()); |
| 297 } | 297 } |
| 298 | 298 |
| 299 void StartParseFileInfo(bool shared_with_me) { | 299 void StartParseFileInfo(bool shared_with_me) { |
| 300 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 300 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 301 | 301 |
| 302 FillEntryPropertiesValueForDrive( | 302 FillEntryPropertiesValueForDrive( |
| 303 *owner_resource_entry_, shared_with_me, properties_.get()); | 303 *owner_resource_entry_, shared_with_me, properties_.get()); |
| 304 | 304 |
| 305 drive::FileSystemInterface* const file_system = | 305 drive::FileSystemInterface* const file_system = |
| 306 drive::util::GetFileSystemByProfile(file_owner_profile_); | 306 drive::util::GetFileSystemByProfile(file_owner_profile_); |
| 307 drive::DriveAppRegistry* const app_registry = | 307 drive::DriveAppRegistry* const app_registry = |
| 308 drive::util::GetDriveAppRegistryByProfile(file_owner_profile_); | 308 drive::util::GetDriveAppRegistryByProfile(file_owner_profile_); |
| 309 if (!file_system || !app_registry) { | 309 if (!file_system || !app_registry) { |
| 310 // |file_system| or |app_registry| is NULL if Drive is disabled. | 310 // |file_system| or |app_registry| is NULL if Drive is disabled. |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 345 app_info.document_icons, drive::util::kPreferredIconSize); | 345 app_info.document_icons, drive::util::kPreferredIconSize); |
| 346 properties_->custom_icon_url.reset(new std::string(doc_icon.spec())); | 346 properties_->custom_icon_url.reset(new std::string(doc_icon.spec())); |
| 347 } | 347 } |
| 348 } | 348 } |
| 349 } | 349 } |
| 350 | 350 |
| 351 CompleteGetEntryProperties(drive::FILE_ERROR_OK); | 351 CompleteGetEntryProperties(drive::FILE_ERROR_OK); |
| 352 } | 352 } |
| 353 | 353 |
| 354 void CompleteGetEntryProperties(drive::FileError error) { | 354 void CompleteGetEntryProperties(drive::FileError error) { |
| 355 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 355 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 356 DCHECK(!callback_.is_null()); | 356 DCHECK(!callback_.is_null()); |
| 357 | 357 |
| 358 callback_.Run(properties_.Pass(), drive::FileErrorToBaseFileError(error)); | 358 callback_.Run(properties_.Pass(), drive::FileErrorToBaseFileError(error)); |
| 359 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE, this); | 359 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE, this); |
| 360 } | 360 } |
| 361 | 361 |
| 362 // Given parameters. | 362 // Given parameters. |
| 363 const ResultCallback callback_; | 363 const ResultCallback callback_; |
| 364 const base::FilePath local_path_; | 364 const base::FilePath local_path_; |
| 365 Profile* const running_profile_; | 365 Profile* const running_profile_; |
| 366 | 366 |
| 367 // Values used in the process. | 367 // Values used in the process. |
| 368 scoped_ptr<EntryProperties> properties_; | 368 scoped_ptr<EntryProperties> properties_; |
| 369 Profile* file_owner_profile_; | 369 Profile* file_owner_profile_; |
| 370 base::FilePath file_path_; | 370 base::FilePath file_path_; |
| 371 scoped_ptr<drive::ResourceEntry> owner_resource_entry_; | 371 scoped_ptr<drive::ResourceEntry> owner_resource_entry_; |
| 372 | 372 |
| 373 base::WeakPtrFactory<SingleEntryPropertiesGetterForDrive> weak_ptr_factory_; | 373 base::WeakPtrFactory<SingleEntryPropertiesGetterForDrive> weak_ptr_factory_; |
| 374 }; // class SingleEntryPropertiesGetterForDrive | 374 }; // class SingleEntryPropertiesGetterForDrive |
| 375 | 375 |
| 376 class SingleEntryPropertiesGetterForFileSystemProvider { | 376 class SingleEntryPropertiesGetterForFileSystemProvider { |
| 377 public: | 377 public: |
| 378 typedef base::Callback<void(scoped_ptr<EntryProperties> properties, | 378 typedef base::Callback<void(scoped_ptr<EntryProperties> properties, |
| 379 base::File::Error error)> ResultCallback; | 379 base::File::Error error)> ResultCallback; |
| 380 | 380 |
| 381 // Creates an instance and starts the process. | 381 // Creates an instance and starts the process. |
| 382 static void Start(const storage::FileSystemURL file_system_url, | 382 static void Start(const storage::FileSystemURL file_system_url, |
| 383 const std::set<EntryPropertyName>& names, | 383 const std::set<EntryPropertyName>& names, |
| 384 const ResultCallback& callback) { | 384 const ResultCallback& callback) { |
| 385 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 385 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 386 | 386 |
| 387 SingleEntryPropertiesGetterForFileSystemProvider* instance = | 387 SingleEntryPropertiesGetterForFileSystemProvider* instance = |
| 388 new SingleEntryPropertiesGetterForFileSystemProvider(file_system_url, | 388 new SingleEntryPropertiesGetterForFileSystemProvider(file_system_url, |
| 389 names, callback); | 389 names, callback); |
| 390 instance->StartProcess(); | 390 instance->StartProcess(); |
| 391 | 391 |
| 392 // The instance will be destroyed by itself. | 392 // The instance will be destroyed by itself. |
| 393 } | 393 } |
| 394 | 394 |
| 395 virtual ~SingleEntryPropertiesGetterForFileSystemProvider() {} | 395 virtual ~SingleEntryPropertiesGetterForFileSystemProvider() {} |
| 396 | 396 |
| 397 private: | 397 private: |
| 398 SingleEntryPropertiesGetterForFileSystemProvider( | 398 SingleEntryPropertiesGetterForFileSystemProvider( |
| 399 const storage::FileSystemURL& file_system_url, | 399 const storage::FileSystemURL& file_system_url, |
| 400 const std::set<EntryPropertyName>& names, | 400 const std::set<EntryPropertyName>& names, |
| 401 const ResultCallback& callback) | 401 const ResultCallback& callback) |
| 402 : callback_(callback), | 402 : callback_(callback), |
| 403 file_system_url_(file_system_url), | 403 file_system_url_(file_system_url), |
| 404 names_(names), | 404 names_(names), |
| 405 properties_(new EntryProperties), | 405 properties_(new EntryProperties), |
| 406 weak_ptr_factory_(this) { | 406 weak_ptr_factory_(this) { |
| 407 DCHECK(!callback_.is_null()); | 407 DCHECK(!callback_.is_null()); |
| 408 } | 408 } |
| 409 | 409 |
| 410 void StartProcess() { | 410 void StartProcess() { |
| 411 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 411 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 412 | 412 |
| 413 FileSystemURLParser parser(file_system_url_); | 413 FileSystemURLParser parser(file_system_url_); |
| 414 if (!parser.Parse()) { | 414 if (!parser.Parse()) { |
| 415 CompleteGetEntryProperties(base::File::FILE_ERROR_NOT_FOUND); | 415 CompleteGetEntryProperties(base::File::FILE_ERROR_NOT_FOUND); |
| 416 return; | 416 return; |
| 417 } | 417 } |
| 418 | 418 |
| 419 ProvidedFileSystemInterface::MetadataFieldMask field_mask = | 419 ProvidedFileSystemInterface::MetadataFieldMask field_mask = |
| 420 ProvidedFileSystemInterface::METADATA_FIELD_DEFAULT; | 420 ProvidedFileSystemInterface::METADATA_FIELD_DEFAULT; |
| 421 // TODO(mtomasz): Add other fields. All of them should be requested on | 421 // TODO(mtomasz): Add other fields. All of them should be requested on |
| 422 // demand. crbug.com/413161. | 422 // demand. crbug.com/413161. |
| 423 if (names_.find( | 423 if (names_.find( |
| 424 api::file_manager_private::ENTRY_PROPERTY_NAME_THUMBNAILURL) != | 424 api::file_manager_private::ENTRY_PROPERTY_NAME_THUMBNAILURL) != |
| 425 names_.end()) | 425 names_.end()) |
| 426 field_mask |= ProvidedFileSystemInterface::METADATA_FIELD_THUMBNAIL; | 426 field_mask |= ProvidedFileSystemInterface::METADATA_FIELD_THUMBNAIL; |
| 427 | 427 |
| 428 parser.file_system()->GetMetadata( | 428 parser.file_system()->GetMetadata( |
| 429 parser.file_path(), field_mask, | 429 parser.file_path(), field_mask, |
| 430 base::Bind(&SingleEntryPropertiesGetterForFileSystemProvider:: | 430 base::Bind(&SingleEntryPropertiesGetterForFileSystemProvider:: |
| 431 OnGetMetadataCompleted, | 431 OnGetMetadataCompleted, |
| 432 weak_ptr_factory_.GetWeakPtr())); | 432 weak_ptr_factory_.GetWeakPtr())); |
| 433 } | 433 } |
| 434 | 434 |
| 435 void OnGetMetadataCompleted(scoped_ptr<EntryMetadata> metadata, | 435 void OnGetMetadataCompleted(scoped_ptr<EntryMetadata> metadata, |
| 436 base::File::Error result) { | 436 base::File::Error result) { |
| 437 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 437 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 438 | 438 |
| 439 if (result != base::File::FILE_OK) { | 439 if (result != base::File::FILE_OK) { |
| 440 CompleteGetEntryProperties(result); | 440 CompleteGetEntryProperties(result); |
| 441 return; | 441 return; |
| 442 } | 442 } |
| 443 | 443 |
| 444 properties_->size.reset(new double(metadata->size)); | 444 properties_->size.reset(new double(metadata->size)); |
| 445 properties_->modification_time.reset( | 445 properties_->modification_time.reset( |
| 446 new double(metadata->modification_time.ToJsTime())); | 446 new double(metadata->modification_time.ToJsTime())); |
| 447 | 447 |
| 448 if (!metadata->thumbnail.empty()) | 448 if (!metadata->thumbnail.empty()) |
| 449 properties_->thumbnail_url.reset(new std::string(metadata->thumbnail)); | 449 properties_->thumbnail_url.reset(new std::string(metadata->thumbnail)); |
| 450 | 450 |
| 451 CompleteGetEntryProperties(base::File::FILE_OK); | 451 CompleteGetEntryProperties(base::File::FILE_OK); |
| 452 } | 452 } |
| 453 | 453 |
| 454 void CompleteGetEntryProperties(base::File::Error result) { | 454 void CompleteGetEntryProperties(base::File::Error result) { |
| 455 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 455 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 456 DCHECK(!callback_.is_null()); | 456 DCHECK(!callback_.is_null()); |
| 457 | 457 |
| 458 callback_.Run(properties_.Pass(), result); | 458 callback_.Run(properties_.Pass(), result); |
| 459 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE, this); | 459 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE, this); |
| 460 } | 460 } |
| 461 | 461 |
| 462 // Given parameters. | 462 // Given parameters. |
| 463 const ResultCallback callback_; | 463 const ResultCallback callback_; |
| 464 const storage::FileSystemURL file_system_url_; | 464 const storage::FileSystemURL file_system_url_; |
| 465 const std::set<EntryPropertyName> names_; | 465 const std::set<EntryPropertyName> names_; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 476 FileManagerPrivateGetEntryPropertiesFunction:: | 476 FileManagerPrivateGetEntryPropertiesFunction:: |
| 477 FileManagerPrivateGetEntryPropertiesFunction() | 477 FileManagerPrivateGetEntryPropertiesFunction() |
| 478 : processed_count_(0) { | 478 : processed_count_(0) { |
| 479 } | 479 } |
| 480 | 480 |
| 481 FileManagerPrivateGetEntryPropertiesFunction:: | 481 FileManagerPrivateGetEntryPropertiesFunction:: |
| 482 ~FileManagerPrivateGetEntryPropertiesFunction() { | 482 ~FileManagerPrivateGetEntryPropertiesFunction() { |
| 483 } | 483 } |
| 484 | 484 |
| 485 bool FileManagerPrivateGetEntryPropertiesFunction::RunAsync() { | 485 bool FileManagerPrivateGetEntryPropertiesFunction::RunAsync() { |
| 486 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 486 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 487 | 487 |
| 488 using api::file_manager_private::GetEntryProperties::Params; | 488 using api::file_manager_private::GetEntryProperties::Params; |
| 489 const scoped_ptr<Params> params(Params::Create(*args_)); | 489 const scoped_ptr<Params> params(Params::Create(*args_)); |
| 490 EXTENSION_FUNCTION_VALIDATE(params); | 490 EXTENSION_FUNCTION_VALIDATE(params); |
| 491 | 491 |
| 492 scoped_refptr<storage::FileSystemContext> file_system_context = | 492 scoped_refptr<storage::FileSystemContext> file_system_context = |
| 493 file_manager::util::GetFileSystemContextForRenderViewHost( | 493 file_manager::util::GetFileSystemContextForRenderViewHost( |
| 494 GetProfile(), render_view_host()); | 494 GetProfile(), render_view_host()); |
| 495 | 495 |
| 496 properties_list_.resize(params->file_urls.size()); | 496 properties_list_.resize(params->file_urls.size()); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 526 } | 526 } |
| 527 | 527 |
| 528 return true; | 528 return true; |
| 529 } | 529 } |
| 530 | 530 |
| 531 void FileManagerPrivateGetEntryPropertiesFunction::CompleteGetEntryProperties( | 531 void FileManagerPrivateGetEntryPropertiesFunction::CompleteGetEntryProperties( |
| 532 size_t index, | 532 size_t index, |
| 533 const storage::FileSystemURL& url, | 533 const storage::FileSystemURL& url, |
| 534 scoped_ptr<EntryProperties> properties, | 534 scoped_ptr<EntryProperties> properties, |
| 535 base::File::Error error) { | 535 base::File::Error error) { |
| 536 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 536 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 537 DCHECK(0 <= processed_count_ && processed_count_ < properties_list_.size()); | 537 DCHECK(0 <= processed_count_ && processed_count_ < properties_list_.size()); |
| 538 | 538 |
| 539 properties_list_[index] = make_linked_ptr(properties.release()); | 539 properties_list_[index] = make_linked_ptr(properties.release()); |
| 540 if (error == base::File::FILE_OK) { | 540 if (error == base::File::FILE_OK) { |
| 541 properties_list_[index]->external_file_url.reset( | 541 properties_list_[index]->external_file_url.reset( |
| 542 new std::string(chromeos::FileSystemURLToExternalFileURL(url).spec())); | 542 new std::string(chromeos::FileSystemURLToExternalFileURL(url).spec())); |
| 543 } | 543 } |
| 544 | 544 |
| 545 processed_count_++; | 545 processed_count_++; |
| 546 if (processed_count_ < properties_list_.size()) | 546 if (processed_count_ < properties_list_.size()) |
| 547 return; | 547 return; |
| 548 | 548 |
| 549 results_ = extensions::api::file_manager_private::GetEntryProperties:: | 549 results_ = extensions::api::file_manager_private::GetEntryProperties:: |
| 550 Results::Create(properties_list_); | 550 Results::Create(properties_list_); |
| 551 SendResponse(true); | 551 SendResponse(true); |
| 552 } | 552 } |
| 553 | 553 |
| 554 bool FileManagerPrivatePinDriveFileFunction::RunAsync() { | 554 bool FileManagerPrivatePinDriveFileFunction::RunAsync() { |
| 555 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 555 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 556 | 556 |
| 557 using extensions::api::file_manager_private::PinDriveFile::Params; | 557 using extensions::api::file_manager_private::PinDriveFile::Params; |
| 558 const scoped_ptr<Params> params(Params::Create(*args_)); | 558 const scoped_ptr<Params> params(Params::Create(*args_)); |
| 559 EXTENSION_FUNCTION_VALIDATE(params); | 559 EXTENSION_FUNCTION_VALIDATE(params); |
| 560 | 560 |
| 561 drive::FileSystemInterface* const file_system = | 561 drive::FileSystemInterface* const file_system = |
| 562 drive::util::GetFileSystemByProfile(GetProfile()); | 562 drive::util::GetFileSystemByProfile(GetProfile()); |
| 563 if (!file_system) // |file_system| is NULL if Drive is disabled. | 563 if (!file_system) // |file_system| is NULL if Drive is disabled. |
| 564 return false; | 564 return false; |
| 565 | 565 |
| 566 const base::FilePath drive_path = | 566 const base::FilePath drive_path = |
| 567 drive::util::ExtractDrivePath(file_manager::util::GetLocalPathFromURL( | 567 drive::util::ExtractDrivePath(file_manager::util::GetLocalPathFromURL( |
| 568 render_view_host(), GetProfile(), GURL(params->file_url))); | 568 render_view_host(), GetProfile(), GURL(params->file_url))); |
| 569 if (params->pin) { | 569 if (params->pin) { |
| 570 file_system->Pin(drive_path, | 570 file_system->Pin(drive_path, |
| 571 base::Bind(&FileManagerPrivatePinDriveFileFunction:: | 571 base::Bind(&FileManagerPrivatePinDriveFileFunction:: |
| 572 OnPinStateSet, this)); | 572 OnPinStateSet, this)); |
| 573 } else { | 573 } else { |
| 574 file_system->Unpin(drive_path, | 574 file_system->Unpin(drive_path, |
| 575 base::Bind(&FileManagerPrivatePinDriveFileFunction:: | 575 base::Bind(&FileManagerPrivatePinDriveFileFunction:: |
| 576 OnPinStateSet, this)); | 576 OnPinStateSet, this)); |
| 577 } | 577 } |
| 578 return true; | 578 return true; |
| 579 } | 579 } |
| 580 | 580 |
| 581 void FileManagerPrivatePinDriveFileFunction:: | 581 void FileManagerPrivatePinDriveFileFunction:: |
| 582 OnPinStateSet(drive::FileError error) { | 582 OnPinStateSet(drive::FileError error) { |
| 583 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 583 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 584 | 584 |
| 585 if (error == drive::FILE_ERROR_OK) { | 585 if (error == drive::FILE_ERROR_OK) { |
| 586 SendResponse(true); | 586 SendResponse(true); |
| 587 } else { | 587 } else { |
| 588 SetError(drive::FileErrorToString(error)); | 588 SetError(drive::FileErrorToString(error)); |
| 589 SendResponse(false); | 589 SendResponse(false); |
| 590 } | 590 } |
| 591 } | 591 } |
| 592 | 592 |
| 593 bool FileManagerPrivateCancelFileTransfersFunction::RunAsync() { | 593 bool FileManagerPrivateCancelFileTransfersFunction::RunAsync() { |
| (...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1018 file_system->GetResourceEntry( | 1018 file_system->GetResourceEntry( |
| 1019 file_path, | 1019 file_path, |
| 1020 base::Bind(&FileManagerPrivateGetDownloadUrlFunction::OnGetResourceEntry, | 1020 base::Bind(&FileManagerPrivateGetDownloadUrlFunction::OnGetResourceEntry, |
| 1021 this)); | 1021 this)); |
| 1022 return true; | 1022 return true; |
| 1023 } | 1023 } |
| 1024 | 1024 |
| 1025 void FileManagerPrivateGetDownloadUrlFunction::OnGetResourceEntry( | 1025 void FileManagerPrivateGetDownloadUrlFunction::OnGetResourceEntry( |
| 1026 drive::FileError error, | 1026 drive::FileError error, |
| 1027 scoped_ptr<drive::ResourceEntry> entry) { | 1027 scoped_ptr<drive::ResourceEntry> entry) { |
| 1028 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1028 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 1029 | 1029 |
| 1030 if (error != drive::FILE_ERROR_OK) { | 1030 if (error != drive::FILE_ERROR_OK) { |
| 1031 SetError("Download Url for this item is not available."); | 1031 SetError("Download Url for this item is not available."); |
| 1032 SetResult(new base::StringValue("")); // Intentionally returns a blank. | 1032 SetResult(new base::StringValue("")); // Intentionally returns a blank. |
| 1033 SendResponse(false); | 1033 SendResponse(false); |
| 1034 return; | 1034 return; |
| 1035 } | 1035 } |
| 1036 | 1036 |
| 1037 download_url_ = | 1037 download_url_ = |
| 1038 google_apis::DriveApiUrlGenerator::kBaseDownloadUrlForProduction + | 1038 google_apis::DriveApiUrlGenerator::kBaseDownloadUrlForProduction + |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1065 return; | 1065 return; |
| 1066 } | 1066 } |
| 1067 | 1067 |
| 1068 const std::string url = download_url_ + "?access_token=" + access_token; | 1068 const std::string url = download_url_ + "?access_token=" + access_token; |
| 1069 SetResult(new base::StringValue(url)); | 1069 SetResult(new base::StringValue(url)); |
| 1070 | 1070 |
| 1071 SendResponse(true); | 1071 SendResponse(true); |
| 1072 } | 1072 } |
| 1073 | 1073 |
| 1074 } // namespace extensions | 1074 } // namespace extensions |
| OLD | NEW |