Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(182)

Side by Side Diff: chrome/browser/chromeos/extensions/file_browser_event_router.cc

Issue 10834115: Drive: Mount/Unmount GoogleDrive on Files App when the file system is mounted/unmounted. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_browser_event_router.h" 5 #include "chrome/browser/chromeos/extensions/file_browser_event_router.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/json/json_writer.h" 8 #include "base/json/json_writer.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 if (iter == file_watchers_.end()) 219 if (iter == file_watchers_.end())
220 return; 220 return;
221 // Remove the renderer process for this watch. 221 // Remove the renderer process for this watch.
222 iter->second->RemoveExtension(extension_id); 222 iter->second->RemoveExtension(extension_id);
223 if (iter->second->GetRefCount() == 0) { 223 if (iter->second->GetRefCount() == 0) {
224 delete iter->second; 224 delete iter->second;
225 file_watchers_.erase(iter); 225 file_watchers_.erase(iter);
226 } 226 }
227 } 227 }
228 228
229 void FileBrowserEventRouter::MountGData(
230 const base::Callback<void(bool)>& callback) {
satorux1 2012/08/01 20:59:01 add DCHECK(BrowserThread::CurrentlyOn(BrowserThrea
yoshiki 2012/08/01 22:23:39 Done.
231 gdata::GDataSystemService* system_service =
232 gdata::GDataSystemServiceFactory::GetForProfile(profile_);
233 if (system_service) {
234 system_service->docs_service()->Authenticate(
235 base::Bind(&FileBrowserEventRouter::OnGDataAuthentication,
236 this,
237 callback));
238 }
239 }
240
241 void FileBrowserEventRouter::OnGDataAuthentication(
242 const base::Callback<void(bool)>& callback,
243 gdata::GDataErrorCode error,
244 const std::string& token) {
satorux1 2012/08/01 20:59:01 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::U
yoshiki 2012/08/01 22:23:39 Done.
245 chromeos::MountError error_code;
246 // For the file manager to work offline, GDATA_NO_CONNECTION is allowed.
247 if (error == gdata::HTTP_SUCCESS || error == gdata::GDATA_NO_CONNECTION)
248 error_code = chromeos::MOUNT_ERROR_NONE;
249 else
250 error_code = chromeos::MOUNT_ERROR_NOT_AUTHENTICATED;
251
252 // Pass back the gdata mount point path as source path.
253 const std::string& gdata_path = gdata::util::GetGDataMountPointPathAsString();
254 DiskMountManager::MountPointInfo mount_info(
255 gdata_path,
256 gdata_path,
257 chromeos::MOUNT_TYPE_GDATA,
258 chromeos::disks::MOUNT_CONDITION_NONE);
259
260 // Raise mount event.
261 MountCompleted(DiskMountManager::MOUNTING, error_code, mount_info);
262
263 if (!callback.is_null())
264 callback.Run(true);
265 }
266
229 void FileBrowserEventRouter::HandleRemoteUpdateRequestOnUIThread(bool start) { 267 void FileBrowserEventRouter::HandleRemoteUpdateRequestOnUIThread(bool start) {
230 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 268 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
231 269
232 gdata::GDataFileSystemInterface* file_system = GetRemoteFileSystem(); 270 gdata::GDataFileSystemInterface* file_system = GetRemoteFileSystem();
233 DCHECK(file_system); 271 DCHECK(file_system);
234 272
235 if (start) { 273 if (start) {
236 file_system->CheckForUpdates(); 274 file_system->CheckForUpdates();
237 if (num_remote_update_requests_ == 0) 275 if (num_remote_update_requests_ == 0)
238 file_system->StartUpdates(); 276 file_system->StartUpdates();
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 args.Append(base::Value::CreateIntegerValue(num_accumulated_entries)); 447 args.Append(base::Value::CreateIntegerValue(num_accumulated_entries));
410 std::string args_json; 448 std::string args_json;
411 base::JSONWriter::Write(&args, &args_json); 449 base::JSONWriter::Write(&args, &args_json);
412 450
413 profile_->GetExtensionEventRouter()->DispatchEventToExtension( 451 profile_->GetExtensionEventRouter()->DispatchEventToExtension(
414 std::string(kFileBrowserDomain), 452 std::string(kFileBrowserDomain),
415 extensions::event_names::kOnDocumentFeedFetched, args_json, 453 extensions::event_names::kOnDocumentFeedFetched, args_json,
416 NULL, GURL()); 454 NULL, GURL());
417 } 455 }
418 456
457 void FileBrowserEventRouter::OnFileSystemMounted() {
458 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
459 MountGData(base::Callback<void(bool)>()); // Callback does nothing.
460 }
461
462 void FileBrowserEventRouter::OnFileSystemUnmounting() {
463 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
464
465 // Raise a MountCompleted event to notify the File Manager.
466 const std::string& gdata_path = gdata::util::GetGDataMountPointPathAsString();
467 DiskMountManager::MountPointInfo mount_info(
468 gdata_path,
469 gdata_path,
470 chromeos::MOUNT_TYPE_GDATA,
471 chromeos::disks::MOUNT_CONDITION_NONE);
472 MountCompleted(DiskMountManager::UNMOUNTING, chromeos::MOUNT_ERROR_NONE,
473 mount_info);
474 }
475
419 void FileBrowserEventRouter::OnAuthenticationFailed() { 476 void FileBrowserEventRouter::OnAuthenticationFailed() {
420 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 477 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
421 478
422 // Raise a MountCompleted event to notify the File Manager. 479 // Raise a MountCompleted event to notify the File Manager.
423 const std::string& gdata_path = gdata::util::GetGDataMountPointPathAsString(); 480 const std::string& gdata_path = gdata::util::GetGDataMountPointPathAsString();
424 DiskMountManager::MountPointInfo mount_info( 481 DiskMountManager::MountPointInfo mount_info(
425 gdata_path, 482 gdata_path,
426 gdata_path, 483 gdata_path,
427 chromeos::MOUNT_TYPE_GDATA, 484 chromeos::MOUNT_TYPE_GDATA,
428 chromeos::disks::MOUNT_CONDITION_NONE); 485 chromeos::disks::MOUNT_CONDITION_NONE);
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 return scoped_refptr<RefcountedProfileKeyedService>( 869 return scoped_refptr<RefcountedProfileKeyedService>(
813 new FileBrowserEventRouter(profile)); 870 new FileBrowserEventRouter(profile));
814 } 871 }
815 872
816 bool FileBrowserEventRouterFactory::ServiceHasOwnInstanceInIncognito() { 873 bool FileBrowserEventRouterFactory::ServiceHasOwnInstanceInIncognito() {
817 // Explicitly and always allow this router in guest login mode. see 874 // Explicitly and always allow this router in guest login mode. see
818 // chrome/browser/profiles/profile_keyed_base_factory.h comment 875 // chrome/browser/profiles/profile_keyed_base_factory.h comment
819 // for the details. 876 // for the details.
820 return true; 877 return true;
821 } 878 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698