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/android/foreign_session_helper.h" | 5 #include "chrome/browser/android/foreign_session_helper.h" |
6 | 6 |
7 #include <jni.h> | 7 #include <jni.h> |
8 | 8 |
9 #include "base/android/jni_string.h" | 9 #include "base/android/jni_string.h" |
10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 if (!service || !service->ShouldPushChanges()) | 43 if (!service || !service->ShouldPushChanges()) |
44 return NULL; | 44 return NULL; |
45 | 45 |
46 return service->GetOpenTabsUIDelegate(); | 46 return service->GetOpenTabsUIDelegate(); |
47 } | 47 } |
48 | 48 |
49 bool ShouldSkipTab(const SessionTab& session_tab) { | 49 bool ShouldSkipTab(const SessionTab& session_tab) { |
50 if (session_tab.navigations.empty()) | 50 if (session_tab.navigations.empty()) |
51 return true; | 51 return true; |
52 | 52 |
53 int selected_index = session_tab.current_navigation_index; | 53 int selected_index = session_tab.normalized_navigation_index(); |
54 if (selected_index < 0 || | |
55 selected_index >= static_cast<int>(session_tab.navigations.size())) | |
56 return true; | |
57 | |
58 const ::sessions::SerializedNavigationEntry& current_navigation = | 54 const ::sessions::SerializedNavigationEntry& current_navigation = |
59 session_tab.navigations.at(selected_index); | 55 session_tab.navigations.at(selected_index); |
60 | 56 |
61 if (current_navigation.virtual_url().is_empty()) | 57 if (current_navigation.virtual_url().is_empty()) |
62 return true; | 58 return true; |
63 | 59 |
64 return false; | 60 return false; |
65 } | 61 } |
66 | 62 |
67 bool ShouldSkipWindow(const SessionWindow& window) { | 63 bool ShouldSkipWindow(const SessionWindow& window) { |
(...skipping 20 matching lines...) Expand all Loading... |
88 JNIEnv* env, | 84 JNIEnv* env, |
89 const SessionWindow& window, | 85 const SessionWindow& window, |
90 ScopedJavaLocalRef<jobject>& j_window) { | 86 ScopedJavaLocalRef<jobject>& j_window) { |
91 for (std::vector<SessionTab*>::const_iterator tab_it = window.tabs.begin(); | 87 for (std::vector<SessionTab*>::const_iterator tab_it = window.tabs.begin(); |
92 tab_it != window.tabs.end(); ++tab_it) { | 88 tab_it != window.tabs.end(); ++tab_it) { |
93 const SessionTab &session_tab = **tab_it; | 89 const SessionTab &session_tab = **tab_it; |
94 | 90 |
95 if (ShouldSkipTab(session_tab)) | 91 if (ShouldSkipTab(session_tab)) |
96 continue; | 92 continue; |
97 | 93 |
98 int selected_index = session_tab.current_navigation_index; | 94 int selected_index = session_tab.normalized_navigation_index(); |
99 DCHECK(selected_index >= 0); | 95 DCHECK(selected_index >= 0); |
100 DCHECK(selected_index < static_cast<int>(session_tab.navigations.size())); | 96 DCHECK(selected_index < static_cast<int>(session_tab.navigations.size())); |
101 | 97 |
102 const ::sessions::SerializedNavigationEntry& current_navigation = | 98 const ::sessions::SerializedNavigationEntry& current_navigation = |
103 session_tab.navigations.at(selected_index); | 99 session_tab.navigations.at(selected_index); |
104 | 100 |
105 GURL tab_url = current_navigation.virtual_url(); | 101 GURL tab_url = current_navigation.virtual_url(); |
106 | 102 |
107 Java_ForeignSessionHelper_pushTab( | 103 Java_ForeignSessionHelper_pushTab( |
108 env, j_window.obj(), | 104 env, j_window.obj(), |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 jstring session_tag) { | 289 jstring session_tag) { |
294 OpenTabsUIDelegate* open_tabs = GetOpenTabsUIDelegate(profile_); | 290 OpenTabsUIDelegate* open_tabs = GetOpenTabsUIDelegate(profile_); |
295 if (open_tabs) | 291 if (open_tabs) |
296 open_tabs->DeleteForeignSession(ConvertJavaStringToUTF8(env, session_tag)); | 292 open_tabs->DeleteForeignSession(ConvertJavaStringToUTF8(env, session_tag)); |
297 } | 293 } |
298 | 294 |
299 // static | 295 // static |
300 bool ForeignSessionHelper::RegisterForeignSessionHelper(JNIEnv* env) { | 296 bool ForeignSessionHelper::RegisterForeignSessionHelper(JNIEnv* env) { |
301 return RegisterNativesImpl(env); | 297 return RegisterNativesImpl(env); |
302 } | 298 } |
OLD | NEW |