15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sessions/in_memory_tab_restore_service.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#include <vector> 83240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/profiles/profile.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sessions/tab_restore_service_factory.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)InMemoryTabRestoreService::InMemoryTabRestoreService( 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile, 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabRestoreService::TimeFactory* time_factory) 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : helper_(this, NULL, profile, time_factory) { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)InMemoryTabRestoreService::~InMemoryTabRestoreService() {} 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void InMemoryTabRestoreService::AddObserver( 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabRestoreServiceObserver* observer) { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_.AddObserver(observer); 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void InMemoryTabRestoreService::RemoveObserver( 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabRestoreServiceObserver* observer) { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_.RemoveObserver(observer); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void InMemoryTabRestoreService::CreateHistoricalTab( 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::WebContents* contents, 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int index) { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_.CreateHistoricalTab(contents, index); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void InMemoryTabRestoreService::BrowserClosing( 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabRestoreServiceDelegate* delegate) { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_.BrowserClosing(delegate); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void InMemoryTabRestoreService::BrowserClosed( 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabRestoreServiceDelegate* delegate) { 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_.BrowserClosed(delegate); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void InMemoryTabRestoreService::ClearEntries() { 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_.ClearEntries(); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const TabRestoreService::Entries& InMemoryTabRestoreService::entries() const { 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return helper_.entries(); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 553240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdochstd::vector<content::WebContents*> 563240926e260ce088908e02ac07a6cf7b0c0cbf44Ben MurdochInMemoryTabRestoreService::RestoreMostRecentEntry( 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TabRestoreServiceDelegate* delegate, 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::HostDesktopType host_desktop_type) { 593240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch return helper_.RestoreMostRecentEntry(delegate, host_desktop_type); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TabRestoreService::Tab* InMemoryTabRestoreService::RemoveTabEntryById( 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionID::id_type id) { 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return helper_.RemoveTabEntryById(id); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 673240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdochstd::vector<content::WebContents*> InMemoryTabRestoreService::RestoreEntryById( 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabRestoreServiceDelegate* delegate, 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionID::id_type id, 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::HostDesktopType host_desktop_type, 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WindowOpenDisposition disposition) { 723240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch return helper_.RestoreEntryById(delegate, id, host_desktop_type, disposition); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void InMemoryTabRestoreService::LoadTabsFromLastSession() { 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Do nothing. This relies on tab persistence which is implemented in Java on 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the application side on Android. 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool InMemoryTabRestoreService::IsLoaded() const { 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // See comment above. 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void InMemoryTabRestoreService::DeleteLastSession() { 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // See comment above. 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void InMemoryTabRestoreService::Shutdown() { 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 92a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)KeyedService* TabRestoreServiceFactory::BuildServiceInstanceFor( 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::BrowserContext* profile) const { 94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return new InMemoryTabRestoreService(static_cast<Profile*>(profile), NULL); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 96