blob: b48a6bc3eb246755dd6687d3048d69e961303e7e [file] [log] [blame]
// Copyright 2019 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.
#ifndef COMPONENTS_SEND_TAB_TO_SELF_IOS_SEND_TAB_TO_SELF_MODEL_BRIDGE_OBSERVER_H_
#define COMPONENTS_SEND_TAB_TO_SELF_IOS_SEND_TAB_TO_SELF_MODEL_BRIDGE_OBSERVER_H_
#import <Foundation/Foundation.h>
#include "base/macros.h"
#include "components/send_tab_to_self/send_tab_to_self_model.h"
#include "components/send_tab_to_self/send_tab_to_self_model_observer.h"
// Protocol forwarding all Send Tab To Self Model Observer methods in
// Objective-C.
@protocol SendTabToSelfModelBridgeObserver <NSObject>
@required
- (void)sendTabToSelfModelLoaded:(send_tab_to_self::SendTabToSelfModel*)model;
- (void)sendTabToSelfModel:(send_tab_to_self::SendTabToSelfModel*)model
didAddEntriesRemotely:
(const std::vector<const send_tab_to_self::SendTabToSelfEntry*>&)
new_entries;
// The Entry has already been deleted at this point and the guid cannot be used
// to access the old entry via SendTabToSelfModel::GetEntryByGUID.
- (void)sendTabToSelfModel:(send_tab_to_self::SendTabToSelfModel*)model
didRemoveEntriesRemotely:(const std::vector<std::string>&)guids;
@end
namespace send_tab_to_self {
// Observer for the Send Tab To Self model that translates all the callbacks to
// Objective-C calls.
class SendTabToSelfModelBridge : public SendTabToSelfModelObserver {
public:
// It is required that |model| should be non-null. If |observer| is nil this
// class will result in all no-ops.
explicit SendTabToSelfModelBridge(
id<SendTabToSelfModelBridgeObserver> observer,
SendTabToSelfModel* model);
~SendTabToSelfModelBridge() override;
private:
void SendTabToSelfModelLoaded() override;
void EntriesAddedRemotely(
const std::vector<const SendTabToSelfEntry*>&) override;
void EntriesRemovedRemotely(const std::vector<std::string>&) override;
__weak id<SendTabToSelfModelBridgeObserver> observer_;
SendTabToSelfModel* model_; // weak
DISALLOW_COPY_AND_ASSIGN(SendTabToSelfModelBridge);
};
} // namespace send_tab_to_self
#endif // COMPONENTS_SEND_TAB_TO_SELF_IOS_SEND_TAB_TO_SELF_MODEL_BRIDGE_OBSERVER_H_