Chromium Code Reviews| 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 "chrome/browser/browser_process.h" | 7 #include "chrome/browser/browser_process.h" |
| 8 #include "chrome/browser/chromeos/drive/drive_integration_service.h" | 8 #include "chrome/browser/chromeos/drive/drive_integration_service.h" |
| 9 #include "chrome/browser/chromeos/extensions/file_manager/private_api_util.h" | 9 #include "chrome/browser/chromeos/extensions/file_manager/private_api_util.h" |
| 10 #include "chrome/browser/chromeos/file_manager/file_tasks.h" | 10 #include "chrome/browser/chromeos/file_manager/file_tasks.h" |
| 11 #include "chrome/browser/chromeos/file_manager/fileapi_util.h" | 11 #include "chrome/browser/chromeos/file_manager/fileapi_util.h" |
| 12 #include "chrome/browser/chromeos/file_manager/url_util.h" | 12 #include "chrome/browser/chromeos/file_manager/url_util.h" |
| 13 #include "chrome/browser/chromeos/fileapi/file_system_backend.h" | 13 #include "chrome/browser/chromeos/fileapi/file_system_backend.h" |
| 14 #include "chrome/browser/chromeos/profiles/profile_helper.h" | 14 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
| 15 #include "chrome/browser/drive/drive_app_registry.h" | 15 #include "chrome/browser/drive/drive_app_registry.h" |
| 16 #include "chrome/browser/drive/event_logger.h" | 16 #include "chrome/browser/drive/event_logger.h" |
| 17 #include "chrome/browser/profiles/profile.h" | 17 #include "chrome/browser/profiles/profile.h" |
| 18 #include "chrome/browser/profiles/profile_manager.h" | 18 #include "chrome/browser/profiles/profile_manager.h" |
| 19 #include "chrome/common/extensions/api/file_browser_private.h" | 19 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" |
| 20 #include "chrome/browser/signin/signin_manager_factory.h" | |
| 21 #include "components/signin/core/browser/profile_oauth2_token_service.h" | |
| 22 #include "components/signin/core/browser/signin_manager.h" | |
| 20 #include "content/public/browser/browser_thread.h" | 23 #include "content/public/browser/browser_thread.h" |
| 24 #include "google_apis/drive/auth_service.h" | |
| 21 #include "webkit/common/fileapi/file_system_info.h" | 25 #include "webkit/common/fileapi/file_system_info.h" |
| 22 #include "webkit/common/fileapi/file_system_util.h" | 26 #include "webkit/common/fileapi/file_system_util.h" |
| 23 | 27 |
| 24 using content::BrowserThread; | 28 using content::BrowserThread; |
| 25 | 29 |
| 26 using file_manager::util::EntryDefinition; | 30 using file_manager::util::EntryDefinition; |
| 27 using file_manager::util::EntryDefinitionCallback; | 31 using file_manager::util::EntryDefinitionCallback; |
| 28 using file_manager::util::EntryDefinitionList; | 32 using file_manager::util::EntryDefinitionList; |
| 29 using file_manager::util::EntryDefinitionListCallback; | 33 using file_manager::util::EntryDefinitionListCallback; |
| 30 using file_manager::util::FileDefinition; | 34 using file_manager::util::FileDefinition; |
| (...skipping 849 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 880 base::Bind(&FileBrowserPrivateRequestDriveShareFunction::OnAddPermission, | 884 base::Bind(&FileBrowserPrivateRequestDriveShareFunction::OnAddPermission, |
| 881 this)); | 885 this)); |
| 882 return true; | 886 return true; |
| 883 } | 887 } |
| 884 | 888 |
| 885 void FileBrowserPrivateRequestDriveShareFunction::OnAddPermission( | 889 void FileBrowserPrivateRequestDriveShareFunction::OnAddPermission( |
| 886 drive::FileError error) { | 890 drive::FileError error) { |
| 887 SendResponse(error == drive::FILE_ERROR_OK); | 891 SendResponse(error == drive::FILE_ERROR_OK); |
| 888 } | 892 } |
| 889 | 893 |
| 894 FileBrowserPrivateGetDownloadUrlFunction:: | |
| 895 FileBrowserPrivateGetDownloadUrlFunction() { | |
| 896 } | |
| 897 | |
| 898 FileBrowserPrivateGetDownloadUrlFunction:: | |
| 899 ~FileBrowserPrivateGetDownloadUrlFunction() { | |
| 900 } | |
| 901 | |
| 902 bool FileBrowserPrivateGetDownloadUrlFunction::RunAsync() { | |
| 903 using extensions::api::file_browser_private::GetShareUrl::Params; | |
| 904 const scoped_ptr<Params> params(Params::Create(*args_)); | |
| 905 EXTENSION_FUNCTION_VALIDATE(params); | |
| 906 | |
| 907 // Start getting the file info. | |
| 908 drive::FileSystemInterface* const file_system = | |
| 909 drive::util::GetFileSystemByProfile(GetProfile()); | |
| 910 if (!file_system) { | |
| 911 // |file_system| is NULL if Drive is disabled or not mounted. | |
| 912 return false; | |
| 913 } | |
| 914 | |
| 915 const base::FilePath path = file_manager::util::GetLocalPathFromURL( | |
| 916 render_view_host(), GetProfile(), GURL(params->url)); | |
| 917 DCHECK(drive::util::IsUnderDriveMountPoint(path)); | |
| 918 base::FilePath file_path = drive::util::ExtractDrivePath(path); | |
| 919 | |
| 920 file_system->GetResourceEntry( | |
| 921 file_path, | |
| 922 base::Bind(&FileBrowserPrivateGetDownloadUrlFunction::OnGetResourceEntry, | |
| 923 this)); | |
| 924 return true; | |
| 925 } | |
| 926 | |
| 927 void FileBrowserPrivateGetDownloadUrlFunction::OnGetResourceEntry( | |
| 928 drive::FileError error, | |
| 929 scoped_ptr<drive::ResourceEntry> entry) { | |
| 930 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
| 931 | |
| 932 if (error != drive::FILE_ERROR_OK) { | |
| 933 SetError("Download Url for this item is not available."); | |
| 934 SendResponse(false); | |
| 935 return; | |
| 936 } | |
| 937 | |
| 938 download_url_ = | |
| 939 std::string("https://www.googledrive.com/host/" + entry->resource_id()); | |
|
kinaba
2014/07/14 04:22:22
std::string() is not necessary.
What about using
yoshiki
2014/07/15 15:17:20
Done.
| |
| 940 | |
| 941 ProfileOAuth2TokenService* oauth2_token_service = | |
| 942 ProfileOAuth2TokenServiceFactory::GetForProfile(GetProfile()); | |
| 943 SigninManagerBase* signin_manager = | |
| 944 SigninManagerFactory::GetForProfile(GetProfile()); | |
| 945 const std::string& account_id = signin_manager->GetAuthenticatedAccountId(); | |
| 946 std::vector<std::string> scopes; | |
| 947 scopes.push_back("https://www.googleapis.com/auth/drive.readonly"); | |
| 948 | |
| 949 auth_service_.reset( | |
| 950 new google_apis::AuthService(oauth2_token_service, | |
| 951 account_id, | |
| 952 g_browser_process->system_request_context(), | |
|
hashimoto
2014/07/14 04:46:35
How about getting a RequestContext from Profile in
yoshiki
2014/07/15 15:17:20
Thanks for information. Done.
| |
| 953 scopes)); | |
| 954 auth_service_->StartAuthentication(base::Bind( | |
| 955 &FileBrowserPrivateGetDownloadUrlFunction::OnTokenFetched, this)); | |
| 956 } | |
| 957 | |
| 958 void FileBrowserPrivateGetDownloadUrlFunction::OnTokenFetched( | |
| 959 google_apis::GDataErrorCode code, | |
| 960 const std::string& access_token) { | |
| 961 if (code != google_apis::HTTP_SUCCESS) { | |
| 962 SetError("Not able to fetch the token."); | |
| 963 SendResponse(false); | |
| 964 return; | |
| 965 } | |
| 966 | |
| 967 const std::string url = download_url_ + "?access_token=" + access_token; | |
| 968 SetResult(new base::StringValue(url)); | |
| 969 | |
| 970 SendResponse(true); | |
| 971 } | |
| 972 | |
| 890 } // namespace extensions | 973 } // namespace extensions |
| OLD | NEW |