| // 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. |
| |
| #include "ios/chrome/browser/share_extension/share_extension_service.h" |
| |
| #include "components/bookmarks/browser/bookmark_model.h" |
| #include "components/reading_list/core/reading_list_model.h" |
| #include "ios/chrome/browser/share_extension/share_extension_item_receiver.h" |
| |
| #if !defined(__has_feature) || !__has_feature(objc_arc) |
| #error "This file requires ARC support." |
| #endif |
| |
| ShareExtensionService::ShareExtensionService( |
| bookmarks::BookmarkModel* bookmark_model, |
| ReadingListModel* reading_list_model) |
| : reading_list_model_(reading_list_model), |
| reading_list_model_loaded_(false), |
| bookmark_model_(bookmark_model), |
| bookmark_model_loaded_(false), |
| receiver_(nil) { |
| DCHECK(bookmark_model); |
| DCHECK(reading_list_model); |
| } |
| |
| ShareExtensionService::~ShareExtensionService() {} |
| |
| void ShareExtensionService::Initialize() { |
| bookmark_model_->AddObserver(this); |
| if (bookmark_model_->loaded()) { |
| bookmark_model_loaded_ = true; |
| this->AnyModelLoaded(); |
| } |
| reading_list_model_->AddObserver(this); |
| } |
| |
| void ShareExtensionService::Shutdown() { |
| reading_list_model_->RemoveObserver(this); |
| reading_list_model_loaded_ = false; |
| bookmark_model_->RemoveObserver(this); |
| bookmark_model_loaded_ = false; |
| [receiver_ shutdown]; |
| receiver_ = nil; |
| } |
| |
| void ShareExtensionService::ReadingListModelLoaded( |
| const ReadingListModel* model) { |
| reading_list_model_loaded_ = true; |
| this->AnyModelLoaded(); |
| } |
| |
| void ShareExtensionService::BookmarkModelLoaded(bookmarks::BookmarkModel* model, |
| bool ids_reassigned) { |
| bookmark_model_loaded_ = true; |
| this->AnyModelLoaded(); |
| } |
| |
| void ShareExtensionService::BookmarkModelChanged() {} |
| |
| void ShareExtensionService::AnyModelLoaded() { |
| if (reading_list_model_loaded_ && bookmark_model_loaded_) { |
| DCHECK(!receiver_); |
| receiver_ = [[ShareExtensionItemReceiver alloc] |
| initWithBookmarkModel:bookmark_model_ |
| readingListModel:reading_list_model_]; |
| } |
| } |