chromium/ios/web/navigation/serializable_user_data_manager_impl.h

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_WEB_NAVIGATION_SERIALIZABLE_USER_DATA_MANAGER_IMPL_H_
#define IOS_WEB_NAVIGATION_SERIALIZABLE_USER_DATA_MANAGER_IMPL_H_

#import "ios/web/public/session/serializable_user_data_manager.h"

namespace web {

class SerializableUserDataManagerImpl : public SerializableUserDataManager {
 public:
  SerializableUserDataManagerImpl();

  SerializableUserDataManagerImpl(const SerializableUserDataManagerImpl&) =
      delete;
  SerializableUserDataManagerImpl& operator=(
      const SerializableUserDataManagerImpl&) = delete;

  ~SerializableUserDataManagerImpl();

  // SerializableUserDataManager:
  void AddSerializableData(id<NSCoding> data, NSString* key) override;
  id<NSCoding> GetValueForSerializationKey(NSString* key) override;
  CRWSessionUserData* GetUserDataForSession() const override;
  void SetUserDataFromSession(CRWSessionUserData* data) override;

 private:
  // The object storing the user data.
  __strong CRWSessionUserData* data_;
};

}  // namespace web

#endif  // IOS_WEB_NAVIGATION_SERIALIZABLE_USER_DATA_MANAGER_IMPL_H_