| Index: chrome/browser/sessions/session_restore_android.cc
|
| diff --git a/chrome/browser/sessions/session_restore_android.cc b/chrome/browser/sessions/session_restore_android.cc
|
| index e283e88b70f6ec0fa3ef89b0057350d039fe2ec3..e2f257382607496586bd126fef5b21a72f79107a 100644
|
| --- a/chrome/browser/sessions/session_restore_android.cc
|
| +++ b/chrome/browser/sessions/session_restore_android.cc
|
| @@ -6,14 +6,36 @@
|
|
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/sessions/session_types.h"
|
| -#include "webkit/glue/window_open_disposition.h"
|
| +#include "chrome/browser/ui/browser.h"
|
| +#include "chrome/browser/ui/browser_finder.h"
|
| +#include "chrome/browser/ui/android/tab_model/tab_model.h"
|
| +#include "chrome/browser/ui/android/tab_model/tab_model_list.h"
|
| +#include "content/public/browser/navigation_controller.h"
|
| +#include "content/public/browser/web_contents.h"
|
| +#include "ipc/ipc_message.h"
|
|
|
| // static
|
| +// The android implementation does not do anything "foreign session" specific.
|
| +// We use it to restore tabs from "recently closed" too.
|
| void SessionRestore::RestoreForeignSessionTab(
|
| - content::WebContents* source_web_contents,
|
| + content::WebContents* web_contents,
|
| const SessionTab& session_tab,
|
| WindowOpenDisposition disposition) {
|
| - NOTIMPLEMENTED() << "TODO(yfriedman, dtrainor): Upstream this.";
|
| + DCHECK(session_tab.navigations.size() > 0);
|
| + content::BrowserContext* context = web_contents->GetBrowserContext();
|
| + Profile* profile = Profile::FromBrowserContext(context);
|
| + TabModel* tab_model = TabModelList::GetTabModelWithProfile(profile);
|
| + DCHECK(tab_model);
|
| + std::vector<content::NavigationEntry*> entries;
|
| + TabNavigation::CreateNavigationEntriesFromTabNavigations(
|
| + profile, session_tab.navigations, &entries);
|
| + content::WebContents* new_web_contents = content::WebContents::Create(
|
| + context, NULL, MSG_ROUTING_NONE, 0, 0);
|
| + int selected_index = session_tab.normalized_navigation_index();
|
| + new_web_contents->GetController().Restore(selected_index,
|
| + true, /* from_last_session */
|
| + &entries);
|
| + tab_model->CreateTab(new_web_contents);
|
| }
|
|
|
| // static
|
|
|