OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/event_router.h" | 5 #include "chrome/browser/chromeos/extensions/file_manager/event_router.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "base/prefs/pref_change_registrar.h" | 10 #include "base/prefs/pref_change_registrar.h" |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
262 return "SecurityError"; | 262 return "SecurityError"; |
263 case base::File::FILE_ERROR_NO_SPACE: | 263 case base::File::FILE_ERROR_NO_SPACE: |
264 return "QuotaExceededError"; | 264 return "QuotaExceededError"; |
265 case base::File::FILE_ERROR_INVALID_URL: | 265 case base::File::FILE_ERROR_INVALID_URL: |
266 return "EncodingError"; | 266 return "EncodingError"; |
267 default: | 267 default: |
268 return "InvalidModificationError"; | 268 return "InvalidModificationError"; |
269 } | 269 } |
270 } | 270 } |
271 | 271 |
272 void GrantAccessForAddedProfileToRunningInstance(Profile* added_profile, | |
273 Profile* running_profile) { | |
274 extensions::ProcessManager* const process_manager = | |
275 extensions::ExtensionSystem::Get(running_profile)->process_manager(); | |
276 if (!process_manager) | |
277 return; | |
278 | |
279 extensions::ExtensionHost* const extension_host = | |
280 process_manager->GetBackgroundHostForExtension(kFileManagerAppId); | |
281 if (!extension_host || !extension_host->render_process_host()) | |
282 return; | |
283 | |
284 const int id = extension_host->render_process_host()->GetID(); | |
285 file_manager::util::SetupProfileFileAccessPermissions(id, added_profile); | |
286 } | |
287 | |
272 // Checks if we should send a progress event or not according to the | 288 // Checks if we should send a progress event or not according to the |
273 // |last_time| of sending an event. If |always| is true, the function always | 289 // |last_time| of sending an event. If |always| is true, the function always |
274 // returns true. If the function returns true, the function also updates | 290 // returns true. If the function returns true, the function also updates |
275 // |last_time|. | 291 // |last_time|. |
276 bool ShouldSendProgressEvent(bool always, base::Time* last_time) { | 292 bool ShouldSendProgressEvent(bool always, base::Time* last_time) { |
277 const base::Time now = base::Time::Now(); | 293 const base::Time now = base::Time::Now(); |
278 const int64 delta = (now - *last_time).InMilliseconds(); | 294 const int64 delta = (now - *last_time).InMilliseconds(); |
279 // delta < 0 may rarely happen if system clock is synced and rewinded. | 295 // delta < 0 may rarely happen if system clock is synced and rewinded. |
280 // To be conservative, we don't skip in that case. | 296 // To be conservative, we don't skip in that case. |
281 if (!always && 0 <= delta && delta < kProgressEventFrequencyInMilliseconds) { | 297 if (!always && 0 <= delta && delta < kProgressEventFrequencyInMilliseconds) { |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
457 } | 473 } |
458 | 474 |
459 pref_change_registrar_->Init(profile_->GetPrefs()); | 475 pref_change_registrar_->Init(profile_->GetPrefs()); |
460 base::Closure callback = | 476 base::Closure callback = |
461 base::Bind(&EventRouter::OnFileManagerPrefsChanged, | 477 base::Bind(&EventRouter::OnFileManagerPrefsChanged, |
462 weak_factory_.GetWeakPtr()); | 478 weak_factory_.GetWeakPtr()); |
463 pref_change_registrar_->Add(prefs::kDisableDriveOverCellular, callback); | 479 pref_change_registrar_->Add(prefs::kDisableDriveOverCellular, callback); |
464 pref_change_registrar_->Add(prefs::kDisableDriveHostedFiles, callback); | 480 pref_change_registrar_->Add(prefs::kDisableDriveHostedFiles, callback); |
465 pref_change_registrar_->Add(prefs::kDisableDrive, callback); | 481 pref_change_registrar_->Add(prefs::kDisableDrive, callback); |
466 pref_change_registrar_->Add(prefs::kUse24HourClock, callback); | 482 pref_change_registrar_->Add(prefs::kUse24HourClock, callback); |
483 | |
484 notification_registrar_.Add(this, | |
485 chrome::NOTIFICATION_PROFILE_ADDED, | |
486 content::NotificationService::AllSources()); | |
467 } | 487 } |
468 | 488 |
469 // File watch setup routines. | 489 // File watch setup routines. |
470 void EventRouter::AddFileWatch(const base::FilePath& local_path, | 490 void EventRouter::AddFileWatch(const base::FilePath& local_path, |
471 const base::FilePath& virtual_path, | 491 const base::FilePath& virtual_path, |
472 const std::string& extension_id, | 492 const std::string& extension_id, |
473 const BoolCallback& callback) { | 493 const BoolCallback& callback) { |
474 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 494 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
475 DCHECK(!callback.is_null()); | 495 DCHECK(!callback.is_null()); |
476 | 496 |
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
929 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 949 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
930 // Do nothing. | 950 // Do nothing. |
931 } | 951 } |
932 | 952 |
933 void EventRouter::OnFormatCompleted(const std::string& device_path, | 953 void EventRouter::OnFormatCompleted(const std::string& device_path, |
934 bool success) { | 954 bool success) { |
935 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 955 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
936 // Do nothing. | 956 // Do nothing. |
937 } | 957 } |
938 | 958 |
959 void EventRouter::Observe(int type, | |
960 const content::NotificationSource& source, | |
961 const content::NotificationDetails& details) { | |
962 if (type == chrome::NOTIFICATION_PROFILE_ADDED) { | |
963 Profile* const added_profile = content::Source<Profile>(source).ptr(); | |
964 if (!added_profile->IsOffTheRecord()) | |
965 GrantAccessForAddedProfileToRunningInstance(added_profile, profile_); | |
966 | |
967 BroadcastEvent(profile_, | |
968 file_browser_private::OnProfileAdded::kEventName, | |
fukino
2014/09/11 05:00:16
I think there is no listener for onProfileAdded ev
iseki
2014/09/11 05:15:52
It can be removed.
| |
969 file_browser_private::OnProfileAdded::Create()); | |
970 } | |
971 } | |
972 | |
939 } // namespace file_manager | 973 } // namespace file_manager |
OLD | NEW |