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

Side by Side Diff: chrome/browser/chromeos/extensions/file_manager/event_router.cc

Issue 171513005: Do not pop up Files app, when the recovery tool is running. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_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/file_util.h" 8 #include "base/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 20 matching lines...) Expand all
31 #include "chrome/browser/profiles/profile.h" 31 #include "chrome/browser/profiles/profile.h"
32 #include "chrome/browser/profiles/profile_manager.h" 32 #include "chrome/browser/profiles/profile_manager.h"
33 #include "chrome/common/pref_names.h" 33 #include "chrome/common/pref_names.h"
34 #include "chromeos/login/login_state.h" 34 #include "chromeos/login/login_state.h"
35 #include "chromeos/network/network_handler.h" 35 #include "chromeos/network/network_handler.h"
36 #include "chromeos/network/network_state_handler.h" 36 #include "chromeos/network/network_state_handler.h"
37 #include "content/public/browser/browser_thread.h" 37 #include "content/public/browser/browser_thread.h"
38 #include "content/public/browser/notification_source.h" 38 #include "content/public/browser/notification_source.h"
39 #include "content/public/browser/render_process_host.h" 39 #include "content/public/browser/render_process_host.h"
40 #include "extensions/browser/event_router.h" 40 #include "extensions/browser/event_router.h"
41 #include "extensions/browser/extension_prefs.h"
41 #include "extensions/browser/extension_system.h" 42 #include "extensions/browser/extension_system.h"
42 #include "webkit/common/fileapi/file_system_types.h" 43 #include "webkit/common/fileapi/file_system_types.h"
43 #include "webkit/common/fileapi/file_system_util.h" 44 #include "webkit/common/fileapi/file_system_util.h"
44 45
45 using chromeos::disks::DiskMountManager; 46 using chromeos::disks::DiskMountManager;
46 using chromeos::NetworkHandler; 47 using chromeos::NetworkHandler;
47 using content::BrowserThread; 48 using content::BrowserThread;
48 using drive::DriveIntegrationService; 49 using drive::DriveIntegrationService;
49 using drive::DriveIntegrationServiceFactory; 50 using drive::DriveIntegrationServiceFactory;
50 51
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 // JavaScript does not have 64-bit integers. Instead we use double, which 114 // JavaScript does not have 64-bit integers. Instead we use double, which
114 // is in IEEE 754 formant and accurate up to 52-bits in JS, and in practice 115 // is in IEEE 754 formant and accurate up to 52-bits in JS, and in practice
115 // in C++. Larger values are rounded. 116 // in C++. Larger values are rounded.
116 status->processed.reset( 117 status->processed.reset(
117 new double(static_cast<double>(job_info.num_completed_bytes))); 118 new double(static_cast<double>(job_info.num_completed_bytes)));
118 status->total.reset( 119 status->total.reset(
119 new double(static_cast<double>(job_info.num_total_bytes))); 120 new double(static_cast<double>(job_info.num_total_bytes)));
120 } 121 }
121 122
122 // Checks for availability of the Google+ Photos app. 123 // Checks for availability of the Google+ Photos app.
124 // TODO(mtomasz): Replace with crbug.com/341902 solution.
123 bool IsGooglePhotosInstalled(Profile *profile) { 125 bool IsGooglePhotosInstalled(Profile *profile) {
124 ExtensionService* service = 126 ExtensionService* service =
125 extensions::ExtensionSystem::Get(profile)->extension_service(); 127 extensions::ExtensionSystem::Get(profile)->extension_service();
126 if (!service) 128 if (!service)
127 return false; 129 return false;
128 130
129 // Google+ Photos uses several ids for different channels. Therefore, all of 131 // Google+ Photos uses several ids for different channels. Therefore, all of
130 // them should be checked. 132 // them should be checked.
131 const std::string kGooglePlusPhotosIds[] = { 133 const std::string kGooglePlusPhotosIds[] = {
132 "ebpbnabdhheoknfklmpddcdijjkmklkp", // G+ Photos staging 134 "ebpbnabdhheoknfklmpddcdijjkmklkp", // G+ Photos staging
133 "efjnaogkjbogokcnohkmnjdojkikgobo", // G+ Photos prod 135 "efjnaogkjbogokcnohkmnjdojkikgobo", // G+ Photos prod
134 "ejegoaikibpmikoejfephaneibodccma" // G+ Photos dev 136 "ejegoaikibpmikoejfephaneibodccma" // G+ Photos dev
135 }; 137 };
136 138
137 for (size_t i = 0; i < arraysize(kGooglePlusPhotosIds); ++i) { 139 for (size_t i = 0; i < arraysize(kGooglePlusPhotosIds); ++i) {
138 if (service->GetExtensionById(kGooglePlusPhotosIds[i], 140 if (service->GetExtensionById(kGooglePlusPhotosIds[i],
139 false /* include_disable */) != NULL) 141 false /* include_disable */) != NULL)
140 return true; 142 return true;
141 } 143 }
142 144
143 return false; 145 return false;
144 } 146 }
145 147
148 // Checks if the Recovery Tool is running. This is a temporary solution.
149 // TODO(mtomasz): Replace with crbug.com/341902 solution.
150 bool IsRecoveryToolRunning(Profile* profile) {
151 ExtensionService* service =
152 extensions::ExtensionSystem::Get(profile)->extension_service();
153 if (!service)
154 return false;
155 extensions::ExtensionPrefs* extension_prefs = service->extension_prefs();
156 if (!extension_prefs)
157 return false;
158
159 const std::string kRecoveryToolIds[] = {
160 "kkebgepbbgbcmghedmmdfcbdcodlkngh", // Recovert tool staging
161 "jndclpdbaamdhonoechobihbbiimdgai" // Recovery tool prod
162 };
163
164 for (size_t i = 0; i < arraysize(kRecoveryToolIds); ++i) {
165 const std::string extension_id = kRecoveryToolIds[i];
166 if (service->GetExtensionById(extension_id, false /* include_disable */) !=
167 NULL) {
168 if (extension_prefs->IsExtensionRunning(extension_id))
169 return true;
170 }
171 }
172
173 return false;
174 }
175
146 // Sends an event named |event_name| with arguments |event_args| to extensions. 176 // Sends an event named |event_name| with arguments |event_args| to extensions.
147 void BroadcastEvent(Profile* profile, 177 void BroadcastEvent(Profile* profile,
148 const std::string& event_name, 178 const std::string& event_name,
149 scoped_ptr<base::ListValue> event_args) { 179 scoped_ptr<base::ListValue> event_args) {
150 extensions::ExtensionSystem::Get(profile)->event_router()-> 180 extensions::ExtensionSystem::Get(profile)->event_router()->
151 BroadcastEvent(make_scoped_ptr( 181 BroadcastEvent(make_scoped_ptr(
152 new extensions::Event(event_name, event_args.Pass()))); 182 new extensions::Event(event_name, event_args.Pass())));
153 } 183 }
154 184
155 file_browser_private::MountCompletedStatus 185 file_browser_private::MountCompletedStatus
(...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 const base::FilePath& mount_path) { 713 const base::FilePath& mount_path) {
684 // Do not attempt to open File Manager while the login is in progress or 714 // Do not attempt to open File Manager while the login is in progress or
685 // the screen is locked or running in kiosk app mode and make sure the file 715 // the screen is locked or running in kiosk app mode and make sure the file
686 // manager is opened only for the active user. 716 // manager is opened only for the active user.
687 if (chromeos::LoginDisplayHostImpl::default_host() || 717 if (chromeos::LoginDisplayHostImpl::default_host() ||
688 chromeos::ScreenLocker::default_screen_locker() || 718 chromeos::ScreenLocker::default_screen_locker() ||
689 chrome::IsRunningInForcedAppMode() || 719 chrome::IsRunningInForcedAppMode() ||
690 profile_ != ProfileManager::GetActiveUserProfile()) 720 profile_ != ProfileManager::GetActiveUserProfile())
691 return; 721 return;
692 722
723 // Do not pop-up the File Manager, if the recovery tool is running.
724 if (IsRecoveryToolRunning(profile_))
725 return;
726
693 // According to DCF (Design rule of Camera File system) by JEITA / CP-3461 727 // According to DCF (Design rule of Camera File system) by JEITA / CP-3461
694 // cameras should have pictures located in the DCIM root directory. 728 // cameras should have pictures located in the DCIM root directory.
695 const base::FilePath dcim_path = mount_path.Append( 729 const base::FilePath dcim_path = mount_path.Append(
696 FILE_PATH_LITERAL("DCIM")); 730 FILE_PATH_LITERAL("DCIM"));
697 731
698 // If there is no DCIM folder or an external photo importer is not available, 732 // If there is a DCIM folder and Google+ Photos is installed, then do not
699 // then launch Files.app. 733 // launch Files.app. Also, do not show Files app, if the recovery tool is
734 // running.
kinaba 2014/02/19 09:10:20 The comment "Also, do not show Files app, if the r
mtomasz 2014/02/19 09:37:48 Done.
700 DirectoryExistsOnUIThread( 735 DirectoryExistsOnUIThread(
701 dcim_path, 736 dcim_path,
702 IsGooglePhotosInstalled(profile_) ? 737 IsGooglePhotosInstalled(profile_)
703 base::Bind(&base::DoNothing) : 738 ? base::Bind(&base::DoNothing)
704 base::Bind(&util::OpenRemovableDrive, profile_, mount_path), 739 : base::Bind(&util::OpenRemovableDrive, profile_, mount_path),
705 base::Bind(&util::OpenRemovableDrive, profile_, mount_path)); 740 base::Bind(&util::OpenRemovableDrive, profile_, mount_path));
706 } 741 }
707 742
708 void EventRouter::DispatchDeviceEvent( 743 void EventRouter::DispatchDeviceEvent(
709 file_browser_private::DeviceEventType type, 744 file_browser_private::DeviceEventType type,
710 const std::string& device_path) { 745 const std::string& device_path) {
711 file_browser_private::DeviceEvent event; 746 file_browser_private::DeviceEvent event;
712 event.type = type; 747 event.type = type;
713 event.device_path = device_path; 748 event.device_path = device_path;
714 BroadcastEvent(profile_, 749 BroadcastEvent(profile_,
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
844 } 879 }
845 } 880 }
846 881
847 void EventRouter::OnOwnerEntryChanged(aura::Window* window) { 882 void EventRouter::OnOwnerEntryChanged(aura::Window* window) {
848 BroadcastEvent(profile_, 883 BroadcastEvent(profile_,
849 file_browser_private::OnDesktopChanged::kEventName, 884 file_browser_private::OnDesktopChanged::kEventName,
850 file_browser_private::OnDesktopChanged::Create()); 885 file_browser_private::OnDesktopChanged::Create());
851 } 886 }
852 887
853 } // namespace file_manager 888 } // namespace file_manager
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698