chromium/chrome/browser/android/history/history_deletion_info.cc

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

#include "chrome/browser/android/history/history_deletion_info.h"

#include "base/android/jni_array.h"
#include "components/history/core/browser/history_types.h"

// Must come after all headers that specialize FromJniType() / ToJniType().
#include "chrome/android/chrome_jni_headers/HistoryDeletionInfo_jni.h"

using base::android::ScopedJavaLocalRef;

namespace {

history::DeletionInfo* ToDeletionInfo(jlong j_deletion_info) {
  return reinterpret_cast<history::DeletionInfo*>(j_deletion_info);
}

}  // namespace

ScopedJavaLocalRef<jobjectArray> JNI_HistoryDeletionInfo_GetDeletedURLs(
    JNIEnv* env,
    jlong history_deletion_info_ptr) {
  history::DeletionInfo* deletion_info =
      ToDeletionInfo(history_deletion_info_ptr);
  std::vector<std::string> deleted_urls;
  for (auto row : deletion_info->deleted_rows()) {
    deleted_urls.push_back(row.url().spec());
  }

  return base::android::ToJavaArrayOfStrings(env, deleted_urls);
}

jboolean JNI_HistoryDeletionInfo_IsTimeRangeValid(
    JNIEnv* env,
    jlong history_deletion_info_ptr) {
  history::DeletionInfo* deletion_info =
      ToDeletionInfo(history_deletion_info_ptr);
  return deletion_info->time_range().IsValid();
}

jboolean JNI_HistoryDeletionInfo_IsTimeRangeForAllTime(
    JNIEnv* env,
    jlong history_deletion_info_ptr) {
  history::DeletionInfo* deletion_info =
      ToDeletionInfo(history_deletion_info_ptr);
  return deletion_info->time_range().IsAllTime();
}

ScopedJavaLocalRef<jobject> CreateHistoryDeletionInfo(
    JNIEnv* env,
    const history::DeletionInfo* deletion_info) {
  return Java_HistoryDeletionInfo_create(
      env, reinterpret_cast<intptr_t>(deletion_info));
}