blob: c16cfde49f10a87183c86ba2ce7b812c531b0751 [file] [log] [blame]
// Copyright 2018 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.
#import "ios/chrome/browser/ui/browser_view/browser_view_controller_helper.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
#include "components/bookmarks/browser/bookmark_model.h"
#include "ios/chrome/browser/bookmarks/bookmark_model_factory.h"
#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
#include "ios/chrome/browser/chrome_url_constants.h"
#import "ios/web/public/web_state/web_state.h"
namespace {
bookmarks::BookmarkModel* GetBookmarkModelForWebState(
web::WebState* web_state) {
if (!web_state)
return nullptr;
web::BrowserState* browser_state = web_state->GetBrowserState();
if (!browser_state)
return nullptr;
return ios::BookmarkModelFactory::GetForBrowserState(
ios::ChromeBrowserState::FromBrowserState(browser_state));
}
} // namespace
@implementation BrowserViewControllerHelper
- (BOOL)isToolbarLoading:(web::WebState*)webState {
// Please note, this notion of isLoading is slightly different from WebState's
// IsLoading().
return webState && webState->IsLoading() &&
!webState->GetLastCommittedURL().SchemeIs(kChromeUIScheme);
}
- (BOOL)isWebStateBookmarked:(web::WebState*)webState {
bookmarks::BookmarkModel* bookmarkModel =
GetBookmarkModelForWebState(webState);
return bookmarkModel &&
bookmarkModel->IsBookmarked(webState->GetLastCommittedURL());
}
- (BOOL)isWebStateBookmarkedByUser:(web::WebState*)webState {
bookmarks::BookmarkModel* bookmarkModel =
GetBookmarkModelForWebState(webState);
return bookmarkModel && bookmarkModel->GetMostRecentlyAddedUserNodeForURL(
webState->GetLastCommittedURL());
}
@end