| Index: ios/chrome/browser/tabs/tab_model_list.mm
|
| diff --git a/ios/chrome/browser/tabs/tab_model_list.mm b/ios/chrome/browser/tabs/tab_model_list.mm
|
| index b95622321673fe6d636a45fac038d046872e07fc..eba1a08aa3b647abb4f18687a63e17ef8823d0d3 100644
|
| --- a/ios/chrome/browser/tabs/tab_model_list.mm
|
| +++ b/ios/chrome/browser/tabs/tab_model_list.mm
|
| @@ -7,7 +7,9 @@
|
| #include "base/logging.h"
|
| #include "base/macros.h"
|
| #include "base/supports_user_data.h"
|
| +#include "ios/chrome/browser/application_context.h"
|
| #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
|
| +#include "ios/chrome/browser/browser_state/chrome_browser_state_manager.h"
|
| #import "ios/chrome/browser/tabs/tab_model.h"
|
|
|
| #if !defined(__has_feature) || !__has_feature(objc_arc)
|
| @@ -85,3 +87,45 @@ NSArray<TabModel*>* GetTabModelsForChromeBrowserState(
|
| TabModelList::GetForBrowserState(browser_state, false);
|
| return tab_model_list ? [tab_model_list->tab_models() allObjects] : nil;
|
| }
|
| +
|
| +TabModel* GetLastActiveTabModelForChromeBrowserState(
|
| + ios::ChromeBrowserState* browser_state) {
|
| + TabModelList* tab_model_list =
|
| + TabModelList::GetForBrowserState(browser_state, false);
|
| + if (!tab_model_list || [tab_model_list->tab_models() count] == 0u)
|
| + return nil;
|
| +
|
| + // There is currently no way to mark a TabModel as active. Assert that there
|
| + // is only one TabModel associated with |browser_state| until it is possible
|
| + // to mark a TabModel as active.
|
| + DCHECK_EQ([tab_model_list->tab_models() count], 1u);
|
| + return [tab_model_list->tab_models() anyObject];
|
| +}
|
| +
|
| +bool IsOffTheRecordSessionActive() {
|
| + std::vector<ios::ChromeBrowserState*> browser_states =
|
| + GetApplicationContext()
|
| + ->GetChromeBrowserStateManager()
|
| + ->GetLoadedBrowserStates();
|
| +
|
| + for (ios::ChromeBrowserState* browser_state : browser_states) {
|
| + DCHECK(!browser_state->IsOffTheRecord());
|
| + if (!browser_state->HasOffTheRecordChromeBrowserState())
|
| + continue;
|
| +
|
| + ios::ChromeBrowserState* otr_browser_state =
|
| + browser_state->GetOffTheRecordChromeBrowserState();
|
| +
|
| + TabModelList* tab_model_list =
|
| + TabModelList::GetForBrowserState(otr_browser_state, false);
|
| + if (!tab_model_list)
|
| + continue;
|
| +
|
| + for (TabModel* tab_model in tab_model_list->tab_models()) {
|
| + if (![tab_model isEmpty])
|
| + return true;
|
| + }
|
| + }
|
| +
|
| + return false;
|
| +}
|
|
|