blob: 26833a53e6e5357805ea4660ab498bca36330bfd [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ios/chrome/browser/sessions/ios_chrome_tab_restore_service_client.h"
#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
#include "ios/chrome/browser/chrome_url_constants.h"
#include "ios/public/provider/chrome/browser/chrome_browser_provider.h"
#include "ios/public/provider/chrome/browser/sessions/live_tab_context_provider.h"
#include "ios/web/public/web_thread.h"
#include "url/gurl.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
IOSChromeTabRestoreServiceClient::IOSChromeTabRestoreServiceClient(
ios::ChromeBrowserState* browser_state)
: browser_state_(browser_state) {}
IOSChromeTabRestoreServiceClient::~IOSChromeTabRestoreServiceClient() {}
sessions::LiveTabContext*
IOSChromeTabRestoreServiceClient::CreateLiveTabContext(
const std::string& app_name) {
return ios::GetChromeBrowserProvider()->GetLiveTabContextProvider()->Create(
browser_state_);
}
sessions::LiveTabContext*
IOSChromeTabRestoreServiceClient::FindLiveTabContextForTab(
const sessions::LiveTab* tab) {
return ios::GetChromeBrowserProvider()
->GetLiveTabContextProvider()
->FindContextForTab(tab);
}
sessions::LiveTabContext*
IOSChromeTabRestoreServiceClient::FindLiveTabContextWithID(
SessionID::id_type desired_id) {
return ios::GetChromeBrowserProvider()
->GetLiveTabContextProvider()
->FindContextWithID(desired_id);
}
bool IOSChromeTabRestoreServiceClient::ShouldTrackURLForRestore(
const GURL& url) {
// NOTE: In the //chrome client, chrome://quit and chrome://restart are
// blacklisted from being tracked to avoid entering infinite loops. However,
// iOS intentionally does not support those URLs, so there is no need to
// blacklist them here.
return url.is_valid();
}
std::string IOSChromeTabRestoreServiceClient::GetExtensionAppIDForTab(
sessions::LiveTab* tab) {
return std::string();
}
base::SequencedWorkerPool* IOSChromeTabRestoreServiceClient::GetBlockingPool() {
DCHECK_CURRENTLY_ON(web::WebThread::UI);
return web::WebThread::GetBlockingPool();
}
base::FilePath IOSChromeTabRestoreServiceClient::GetPathToSaveTo() {
// Note that this will return a different path in incognito from normal mode.
// In this case, that shouldn't be an issue because the tab restore service
// is not used in incognito mode.
return browser_state_->GetStatePath();
}
GURL IOSChromeTabRestoreServiceClient::GetNewTabURL() {
return GURL(kChromeUINewTabURL);
}
bool IOSChromeTabRestoreServiceClient::HasLastSession() {
return false;
}
void IOSChromeTabRestoreServiceClient::GetLastSession(
const sessions::GetLastSessionCallback& callback,
base::CancelableTaskTracker* tracker) {
NOTREACHED();
}