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/extensions/api/sessions/sessions_api.h" | 5 #include "chrome/browser/extensions/api/sessions/sessions_api.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/i18n/rtl.h" | 9 #include "base/i18n/rtl.h" |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
435 results_ = Restore::Results::Create(*CreateSessionModelHelper( | 435 results_ = Restore::Results::Create(*CreateSessionModelHelper( |
436 base::Time::Now().ToTimeT(), | 436 base::Time::Now().ToTimeT(), |
437 scoped_ptr<tabs::Tab>(), | 437 scoped_ptr<tabs::Tab>(), |
438 window.Pass())); | 438 window.Pass())); |
439 return true; | 439 return true; |
440 } | 440 } |
441 | 441 |
442 bool SessionsRestoreFunction::RestoreMostRecentlyClosed(Browser* browser) { | 442 bool SessionsRestoreFunction::RestoreMostRecentlyClosed(Browser* browser) { |
443 TabRestoreService* tab_restore_service = | 443 TabRestoreService* tab_restore_service = |
444 TabRestoreServiceFactory::GetForProfile(GetProfile()); | 444 TabRestoreServiceFactory::GetForProfile(GetProfile()); |
445 chrome::HostDesktopType host_desktop_type = browser->host_desktop_type(); | 445 ui::HostDesktopType host_desktop_type = browser->host_desktop_type(); |
446 TabRestoreService::Entries entries = tab_restore_service->entries(); | 446 TabRestoreService::Entries entries = tab_restore_service->entries(); |
447 | 447 |
448 if (entries.empty()) { | 448 if (entries.empty()) { |
449 SetError(kNoRecentlyClosedSessionsError); | 449 SetError(kNoRecentlyClosedSessionsError); |
450 return false; | 450 return false; |
451 } | 451 } |
452 | 452 |
453 bool is_window = is_window_entry(entries.front()); | 453 bool is_window = is_window_entry(entries.front()); |
454 TabRestoreServiceDelegate* delegate = | 454 TabRestoreServiceDelegate* delegate = |
455 TabRestoreServiceDelegate::FindDelegateForWebContents( | 455 TabRestoreServiceDelegate::FindDelegateForWebContents( |
456 browser->tab_strip_model()->GetActiveWebContents()); | 456 browser->tab_strip_model()->GetActiveWebContents()); |
457 std::vector<content::WebContents*> contents = | 457 std::vector<content::WebContents*> contents = |
458 tab_restore_service->RestoreMostRecentEntry(delegate, host_desktop_type); | 458 tab_restore_service->RestoreMostRecentEntry(delegate, host_desktop_type); |
459 DCHECK(contents.size()); | 459 DCHECK(contents.size()); |
460 | 460 |
461 if (is_window) { | 461 if (is_window) { |
462 return SetResultRestoredWindow( | 462 return SetResultRestoredWindow( |
463 ExtensionTabUtil::GetWindowIdOfTab(contents[0])); | 463 ExtensionTabUtil::GetWindowIdOfTab(contents[0])); |
464 } | 464 } |
465 | 465 |
466 SetResultRestoredTab(contents[0]); | 466 SetResultRestoredTab(contents[0]); |
467 return true; | 467 return true; |
468 } | 468 } |
469 | 469 |
470 bool SessionsRestoreFunction::RestoreLocalSession(const SessionId& session_id, | 470 bool SessionsRestoreFunction::RestoreLocalSession(const SessionId& session_id, |
471 Browser* browser) { | 471 Browser* browser) { |
472 TabRestoreService* tab_restore_service = | 472 TabRestoreService* tab_restore_service = |
473 TabRestoreServiceFactory::GetForProfile(GetProfile()); | 473 TabRestoreServiceFactory::GetForProfile(GetProfile()); |
474 chrome::HostDesktopType host_desktop_type = browser->host_desktop_type(); | 474 ui::HostDesktopType host_desktop_type = browser->host_desktop_type(); |
475 TabRestoreService::Entries entries = tab_restore_service->entries(); | 475 TabRestoreService::Entries entries = tab_restore_service->entries(); |
476 | 476 |
477 if (entries.empty()) { | 477 if (entries.empty()) { |
478 SetInvalidIdError(session_id.ToString()); | 478 SetInvalidIdError(session_id.ToString()); |
479 return false; | 479 return false; |
480 } | 480 } |
481 | 481 |
482 // Check if the recently closed list contains an entry with the provided id. | 482 // Check if the recently closed list contains an entry with the provided id. |
483 bool is_window = false; | 483 bool is_window = false; |
484 for (TabRestoreService::Entries::iterator it = entries.begin(); | 484 for (TabRestoreService::Entries::iterator it = entries.begin(); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
554 windows.begin(); | 554 windows.begin(); |
555 while (window != windows.end() | 555 while (window != windows.end() |
556 && (*window)->window_id.id() != session_id.id()) { | 556 && (*window)->window_id.id() != session_id.id()) { |
557 ++window; | 557 ++window; |
558 } | 558 } |
559 if (window == windows.end()) { | 559 if (window == windows.end()) { |
560 SetInvalidIdError(session_id.ToString()); | 560 SetInvalidIdError(session_id.ToString()); |
561 return false; | 561 return false; |
562 } | 562 } |
563 | 563 |
564 chrome::HostDesktopType host_desktop_type = browser->host_desktop_type(); | 564 ui::HostDesktopType host_desktop_type = browser->host_desktop_type(); |
565 // Only restore one window at a time. | 565 // Only restore one window at a time. |
566 std::vector<Browser*> browsers = SessionRestore::RestoreForeignSessionWindows( | 566 std::vector<Browser*> browsers = SessionRestore::RestoreForeignSessionWindows( |
567 GetProfile(), host_desktop_type, window, window + 1); | 567 GetProfile(), host_desktop_type, window, window + 1); |
568 // Will always create one browser because we only restore one window per call. | 568 // Will always create one browser because we only restore one window per call. |
569 DCHECK_EQ(1u, browsers.size()); | 569 DCHECK_EQ(1u, browsers.size()); |
570 return SetResultRestoredWindow(ExtensionTabUtil::GetWindowId(browsers[0])); | 570 return SetResultRestoredWindow(ExtensionTabUtil::GetWindowId(browsers[0])); |
571 } | 571 } |
572 | 572 |
573 bool SessionsRestoreFunction::RunSync() { | 573 bool SessionsRestoreFunction::RunSync() { |
574 scoped_ptr<Restore::Params> params(Restore::Params::Create(*args_)); | 574 scoped_ptr<Restore::Params> params(Restore::Params::Create(*args_)); |
575 EXTENSION_FUNCTION_VALIDATE(params); | 575 EXTENSION_FUNCTION_VALIDATE(params); |
576 | 576 |
577 Browser* browser = chrome::FindBrowserWithProfile( | 577 Browser* browser = chrome::FindBrowserWithProfile( |
578 GetProfile(), chrome::HOST_DESKTOP_TYPE_NATIVE); | 578 GetProfile(), ui::HOST_DESKTOP_TYPE_NATIVE); |
579 if (!browser) { | 579 if (!browser) { |
580 SetError(kNoBrowserToRestoreSession); | 580 SetError(kNoBrowserToRestoreSession); |
581 return false; | 581 return false; |
582 } | 582 } |
583 | 583 |
584 if (GetProfile() != GetProfile()->GetOriginalProfile()) { | 584 if (GetProfile() != GetProfile()->GetOriginalProfile()) { |
585 SetError(kRestoreInIncognitoError); | 585 SetError(kRestoreInIncognitoError); |
586 return false; | 586 return false; |
587 } | 587 } |
588 | 588 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
650 return g_factory.Pointer(); | 650 return g_factory.Pointer(); |
651 } | 651 } |
652 | 652 |
653 void SessionsAPI::OnListenerAdded(const EventListenerInfo& details) { | 653 void SessionsAPI::OnListenerAdded(const EventListenerInfo& details) { |
654 sessions_event_router_.reset( | 654 sessions_event_router_.reset( |
655 new SessionsEventRouter(Profile::FromBrowserContext(browser_context_))); | 655 new SessionsEventRouter(Profile::FromBrowserContext(browser_context_))); |
656 EventRouter::Get(browser_context_)->UnregisterObserver(this); | 656 EventRouter::Get(browser_context_)->UnregisterObserver(this); |
657 } | 657 } |
658 | 658 |
659 } // namespace extensions | 659 } // namespace extensions |
OLD | NEW |