| 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_misc.h" | 5 #include "chrome/browser/chromeos/extensions/file_manager/private_api_misc.h" |
| 6 | 6 |
| 7 #include "apps/shell_window.h" | 7 #include "apps/app_window.h" |
| 8 #include "apps/shell_window_registry.h" | 8 #include "apps/app_window_registry.h" |
| 9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
| 10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
| 11 #include "base/strings/utf_string_conversions.h" | 11 #include "base/strings/utf_string_conversions.h" |
| 12 #include "chrome/browser/browser_process.h" | 12 #include "chrome/browser/browser_process.h" |
| 13 #include "chrome/browser/chromeos/drive/file_system_util.h" | 13 #include "chrome/browser/chromeos/drive/file_system_util.h" |
| 14 #include "chrome/browser/chromeos/extensions/file_manager/event_router.h" | 14 #include "chrome/browser/chromeos/extensions/file_manager/event_router.h" |
| 15 #include "chrome/browser/chromeos/extensions/file_manager/file_browser_private_a
pi.h" | 15 #include "chrome/browser/chromeos/extensions/file_manager/file_browser_private_a
pi.h" |
| 16 #include "chrome/browser/chromeos/extensions/file_manager/private_api_util.h" | 16 #include "chrome/browser/chromeos/extensions/file_manager/private_api_util.h" |
| 17 #include "chrome/browser/chromeos/file_manager/app_installer.h" | 17 #include "chrome/browser/chromeos/file_manager/app_installer.h" |
| 18 #include "chrome/browser/chromeos/login/user_manager.h" | 18 #include "chrome/browser/chromeos/login/user_manager.h" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 36 #include "content/public/common/page_zoom.h" | 36 #include "content/public/common/page_zoom.h" |
| 37 #include "google_apis/drive/auth_service.h" | 37 #include "google_apis/drive/auth_service.h" |
| 38 #include "ui/base/webui/web_ui_util.h" | 38 #include "ui/base/webui/web_ui_util.h" |
| 39 #include "url/gurl.h" | 39 #include "url/gurl.h" |
| 40 | 40 |
| 41 namespace extensions { | 41 namespace extensions { |
| 42 | 42 |
| 43 namespace { | 43 namespace { |
| 44 const char kCWSScope[] = "https://www.googleapis.com/auth/chromewebstore"; | 44 const char kCWSScope[] = "https://www.googleapis.com/auth/chromewebstore"; |
| 45 | 45 |
| 46 // Obtains the current shell window. | 46 // Obtains the current app window. |
| 47 apps::ShellWindow* | 47 apps::AppWindow* GetCurrentAppWindow(ChromeSyncExtensionFunction* function) { |
| 48 GetCurrentShellWindow(ChromeSyncExtensionFunction* function) { | 48 apps::AppWindowRegistry* const app_window_registry = |
| 49 apps::ShellWindowRegistry* const shell_window_registry = | 49 apps::AppWindowRegistry::Get(function->GetProfile()); |
| 50 apps::ShellWindowRegistry::Get(function->GetProfile()); | |
| 51 content::WebContents* const contents = function->GetAssociatedWebContents(); | 50 content::WebContents* const contents = function->GetAssociatedWebContents(); |
| 52 content::RenderViewHost* const render_view_host = | 51 content::RenderViewHost* const render_view_host = |
| 53 contents ? contents->GetRenderViewHost() : NULL; | 52 contents ? contents->GetRenderViewHost() : NULL; |
| 54 return render_view_host ? | 53 return render_view_host ? app_window_registry->GetAppWindowForRenderViewHost( |
| 55 shell_window_registry->GetShellWindowForRenderViewHost(render_view_host) : | 54 render_view_host) |
| 56 NULL; | 55 : NULL; |
| 57 } | 56 } |
| 58 | 57 |
| 59 std::vector<linked_ptr<api::file_browser_private::ProfileInfo> > | 58 std::vector<linked_ptr<api::file_browser_private::ProfileInfo> > |
| 60 GetLoggedInProfileInfoList() { | 59 GetLoggedInProfileInfoList() { |
| 61 DCHECK(chromeos::UserManager::IsInitialized()); | 60 DCHECK(chromeos::UserManager::IsInitialized()); |
| 62 const std::vector<Profile*>& profiles = | 61 const std::vector<Profile*>& profiles = |
| 63 g_browser_process->profile_manager()->GetLoadedProfiles(); | 62 g_browser_process->profile_manager()->GetLoadedProfiles(); |
| 64 std::set<Profile*> original_profiles; | 63 std::set<Profile*> original_profiles; |
| 65 std::vector<linked_ptr<api::file_browser_private::ProfileInfo> > | 64 std::vector<linked_ptr<api::file_browser_private::ProfileInfo> > |
| 66 result_profiles; | 65 result_profiles; |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 366 SetResult(base::Value::CreateNullValue()); | 365 SetResult(base::Value::CreateNullValue()); |
| 367 SendResponse(false); | 366 SendResponse(false); |
| 368 } | 367 } |
| 369 } | 368 } |
| 370 | 369 |
| 371 bool FileBrowserPrivateGetProfilesFunction::RunImpl() { | 370 bool FileBrowserPrivateGetProfilesFunction::RunImpl() { |
| 372 const std::vector<linked_ptr<api::file_browser_private::ProfileInfo> >& | 371 const std::vector<linked_ptr<api::file_browser_private::ProfileInfo> >& |
| 373 profiles = GetLoggedInProfileInfoList(); | 372 profiles = GetLoggedInProfileInfoList(); |
| 374 | 373 |
| 375 // Obtains the display profile ID. | 374 // Obtains the display profile ID. |
| 376 apps::ShellWindow* const shell_window = GetCurrentShellWindow(this); | 375 apps::AppWindow* const app_window = GetCurrentAppWindow(this); |
| 377 chrome::MultiUserWindowManager* const window_manager = | 376 chrome::MultiUserWindowManager* const window_manager = |
| 378 chrome::MultiUserWindowManager::GetInstance(); | 377 chrome::MultiUserWindowManager::GetInstance(); |
| 379 const std::string current_profile_id = | 378 const std::string current_profile_id = |
| 380 multi_user_util::GetUserIDFromProfile(GetProfile()); | 379 multi_user_util::GetUserIDFromProfile(GetProfile()); |
| 381 const std::string display_profile_id = | 380 const std::string display_profile_id = |
| 382 window_manager && shell_window ? | 381 window_manager && app_window ? window_manager->GetUserPresentingWindow( |
| 383 window_manager->GetUserPresentingWindow(shell_window->GetNativeWindow()) : | 382 app_window->GetNativeWindow()) |
| 384 ""; | 383 : ""; |
| 385 | 384 |
| 386 results_ = api::file_browser_private::GetProfiles::Results::Create( | 385 results_ = api::file_browser_private::GetProfiles::Results::Create( |
| 387 profiles, | 386 profiles, |
| 388 current_profile_id, | 387 current_profile_id, |
| 389 display_profile_id.empty() ? current_profile_id : display_profile_id); | 388 display_profile_id.empty() ? current_profile_id : display_profile_id); |
| 390 return true; | 389 return true; |
| 391 } | 390 } |
| 392 | 391 |
| 393 bool FileBrowserPrivateVisitDesktopFunction::RunImpl() { | 392 bool FileBrowserPrivateVisitDesktopFunction::RunImpl() { |
| 394 using api::file_browser_private::VisitDesktop::Params; | 393 using api::file_browser_private::VisitDesktop::Params; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 412 if (profiles[i]->profile_id == params->profile_id) { | 411 if (profiles[i]->profile_id == params->profile_id) { |
| 413 logged_in = true; | 412 logged_in = true; |
| 414 break; | 413 break; |
| 415 } | 414 } |
| 416 } | 415 } |
| 417 if (!logged_in) { | 416 if (!logged_in) { |
| 418 SetError("The user is not logged-in now."); | 417 SetError("The user is not logged-in now."); |
| 419 return false; | 418 return false; |
| 420 } | 419 } |
| 421 | 420 |
| 422 // Look for the current shell window. | 421 // Look for the current app window. |
| 423 apps::ShellWindow* const shell_window = GetCurrentShellWindow(this); | 422 apps::AppWindow* const app_window = GetCurrentAppWindow(this); |
| 424 if (!shell_window) { | 423 if (!app_window) { |
| 425 SetError("Target window is not found."); | 424 SetError("Target window is not found."); |
| 426 return false; | 425 return false; |
| 427 } | 426 } |
| 428 | 427 |
| 429 // Observe owner changes of windows. | 428 // Observe owner changes of windows. |
| 430 file_manager::EventRouter* const event_router = | 429 file_manager::EventRouter* const event_router = |
| 431 file_manager::FileBrowserPrivateAPI::Get(GetProfile())->event_router(); | 430 file_manager::FileBrowserPrivateAPI::Get(GetProfile())->event_router(); |
| 432 event_router->RegisterMultiUserWindowManagerObserver(); | 431 event_router->RegisterMultiUserWindowManagerObserver(); |
| 433 | 432 |
| 434 // Move the window to the user's desktop. | 433 // Move the window to the user's desktop. |
| 435 window_manager->ShowWindowForUser( | 434 window_manager->ShowWindowForUser(app_window->GetNativeWindow(), |
| 436 shell_window->GetNativeWindow(), | 435 params->profile_id); |
| 437 params->profile_id); | |
| 438 | 436 |
| 439 // Check the result. | 437 // Check the result. |
| 440 if (!window_manager->IsWindowOnDesktopOfUser( | 438 if (!window_manager->IsWindowOnDesktopOfUser(app_window->GetNativeWindow(), |
| 441 shell_window->GetNativeWindow(), | 439 params->profile_id)) { |
| 442 params->profile_id)) { | |
| 443 SetError("The window cannot visit the desktop."); | 440 SetError("The window cannot visit the desktop."); |
| 444 return false; | 441 return false; |
| 445 } | 442 } |
| 446 | 443 |
| 447 return true; | 444 return true; |
| 448 } | 445 } |
| 449 | 446 |
| 450 } // namespace extensions | 447 } // namespace extensions |
| OLD | NEW |