// Copyright 2017 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_OPEN_FROM_CLIPBOARD_CLIPBOARD_RECENT_CONTENT_GENERIC_H_
#define COMPONENTS_OPEN_FROM_CLIPBOARD_CLIPBOARD_RECENT_CONTENT_GENERIC_H_

#include "base/macros.h"
#include "base/time/time.h"
#include "components/open_from_clipboard/clipboard_recent_content.h"
#include "url/gurl.h"

// An implementation of ClipboardRecentContent that uses
// ui/base/clipboard/clipboard.h
// and hence works on all platforms for which Clipboard is implemented.
// (This includes all platforms Chrome runs on except iOS.)
// Note that on some platforms Clipboard may not implement the necessary
// functions for this provider to function.  In those cases, it will not do
// anything.
class ClipboardRecentContentGeneric : public ClipboardRecentContent {
 public:
  explicit ClipboardRecentContentGeneric();

  // ClipboardRecentContent implementation.
  bool GetRecentURLFromClipboard(GURL* url) override;
  base::TimeDelta GetClipboardContentAge() const override;
  void SuppressClipboardContent() override;

 private:
  // Returns true if the URL is appropriate to be suggested.
  static bool IsAppropriateSuggestion(const GURL& url);

  DISALLOW_COPY_AND_ASSIGN(ClipboardRecentContentGeneric);
};

#endif  // COMPONENTS_OPEN_FROM_CLIPBOARD_CLIPBOARD_RECENT_CONTENT_GENERIC_H_
