// Copyright 2014 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 MOJO_SERVICES_NETWORK_COOKIE_STORE_IMPL_H_
#define MOJO_SERVICES_NETWORK_COOKIE_STORE_IMPL_H_

#include "base/macros.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
#include "mojo/services/network/public/interfaces/cookie_store.mojom.h"
#include "mojo/shell/public/cpp/message_loop_ref.h"
#include "url/gurl.h"

namespace mojo {
class NetworkContext;

class CookieStoreImpl : public CookieStore {
 public:
  CookieStoreImpl(NetworkContext* context,
                  const GURL& origin,
                  scoped_ptr<mojo::MessageLoopRef> app_refcount,
                  InterfaceRequest<CookieStore> request);
  ~CookieStoreImpl() override;

 private:
  // CookieStore methods:
  void Get(const String& url, const Callback<void(String)>& callback) override;
  void Set(const String& url,
           const String& cookie,
           const Callback<void(bool)>& callback) override;

  NetworkContext* context_;
  GURL origin_;
  scoped_ptr<mojo::MessageLoopRef> app_refcount_;
  StrongBinding<CookieStore> binding_;

  DISALLOW_COPY_AND_ASSIGN(CookieStoreImpl);
};

}  // namespace mojo

#endif  // MOJO_SERVICES_NETWORK_COOKIE_STORE_IMPL_H_