blob: ff5836ee033c040c5ecdf5eca20a395f13500dbe [file] [log] [blame]
// Copyright 2016 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 "components/reading_list/ios/reading_list_model_bridge_observer.h"
#include "components/reading_list/core/reading_list_entry.h"
#include "components/reading_list/core/reading_list_model.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
ReadingListModelBridge::ReadingListModelBridge(
id<ReadingListModelBridgeObserver> observer,
ReadingListModel* model)
: observer_(observer), model_(model) {
DCHECK(model);
model_->AddObserver(this);
}
ReadingListModelBridge::~ReadingListModelBridge() {
if (model_) {
model_->RemoveObserver(this);
}
}
void ReadingListModelBridge::ReadingListModelLoaded(
const ReadingListModel* model) {
[observer_ readingListModelLoaded:model];
}
void ReadingListModelBridge::ReadingListModelBeingShutdown(
const ReadingListModel* model) {
if ([observer_
respondsToSelector:@selector(readingListModelBeingShutdown:)]) {
[observer_ readingListModelBeingShutdown:model];
}
}
void ReadingListModelBridge::ReadingListModelBeingDeleted(
const ReadingListModel* model) {
if ([observer_ respondsToSelector:@selector(readingListModelBeingDeleted:)]) {
[observer_ readingListModelBeingDeleted:model];
}
model_ = nullptr;
}
void ReadingListModelBridge::ReadingListWillRemoveEntry(
const ReadingListModel* model,
const GURL& url) {
if ([observer_
respondsToSelector:@selector(readingListModel:willRemoveEntry:)]) {
[observer_ readingListModel:model willRemoveEntry:url];
}
}
void ReadingListModelBridge::ReadingListWillAddEntry(
const ReadingListModel* model,
const ReadingListEntry& entry) {
if ([observer_
respondsToSelector:@selector(readingListModel:willAddEntry:)]) {
[observer_ readingListModel:model willAddEntry:entry];
}
}
void ReadingListModelBridge::ReadingListDidAddEntry(
const ReadingListModel* model,
const GURL& url,
reading_list::EntrySource source) {
if ([observer_ respondsToSelector:@selector(readingListModel:
didAddEntry:
entrySource:)]) {
[observer_ readingListModel:model didAddEntry:url entrySource:source];
}
}
void ReadingListModelBridge::ReadingListDidApplyChanges(
ReadingListModel* model) {
[observer_ readingListModelDidApplyChanges:model];
}
void ReadingListModelBridge::ReadingListModelBeganBatchUpdates(
const ReadingListModel* model) {
if ([observer_
respondsToSelector:@selector(readingListModelBeganBatchUpdates:)]) {
[observer_ readingListModelBeganBatchUpdates:model];
}
}
void ReadingListModelBridge::ReadingListModelCompletedBatchUpdates(
const ReadingListModel* model) {
if ([observer_
respondsToSelector:@selector(
readingListModelCompletedBatchUpdates:)]) {
[observer_ readingListModelCompletedBatchUpdates:model];
}
}
void ReadingListModelBridge::ReadingListWillMoveEntry(
const ReadingListModel* model,
const GURL& url) {
if ([observer_
respondsToSelector:@selector(readingListModel:willMoveEntry:)]) {
[observer_ readingListModel:model willMoveEntry:url];
}
}
void ReadingListModelBridge::ReadingListWillUpdateEntry(
const ReadingListModel* model,
const GURL& url) {
if ([observer_
respondsToSelector:@selector(readingListModel:willUpdateEntry:)]) {
[observer_ readingListModel:model willUpdateEntry:url];
}
}