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

#include "components/omnibox/browser/test_location_bar_model.h"

#include "base/strings/utf_string_conversions.h"
#include "ui/base/ui_base_features.h"

#if defined(TOOLKIT_VIEWS)
#include "components/omnibox/browser/vector_icons.h"  // nogncheck
#endif

TestLocationBarModel::TestLocationBarModel()
    : security_level_(security_state::NONE),
#if defined(TOOLKIT_VIEWS)
      icon_(&(features::IsRoundedIconsEnabled() ? omnibox::kInfoIcon
                                                : omnibox::kHttpOldIcon)),
#endif
      should_display_url_(true) {
}

TestLocationBarModel::~TestLocationBarModel() = default;

std::u16string TestLocationBarModel::GetFormattedFullURL() const {
  if (!formatted_full_url_)
    return base::UTF8ToUTF16(url_.spec());

  return *formatted_full_url_;
}

std::u16string TestLocationBarModel::GetURLForDisplay() const {
  if (!url_for_display_)
    return base::UTF8ToUTF16(url_.spec());

  return *url_for_display_;
}

GURL TestLocationBarModel::GetURL() const {
  return url_;
}

bool TestLocationBarModel::IsContextualTasksPage() const {
  return is_contextual_tasks_page_;
}

GURL TestLocationBarModel::GetContextualTasksInnerFrameURL() const {
  return GURL();
}

security_state::SecurityLevel TestLocationBarModel::GetSecurityLevel() const {
  return security_level_;
}

net::CertStatus TestLocationBarModel::GetCertStatus() const {
  return cert_status_;
}

metrics::OmniboxEventProto::PageClassification
TestLocationBarModel::GetPageClassification(bool is_prefetch) const {
  return page_classification_;
}

metrics::OmniboxEventProto::PageClassification
TestLocationBarModel::GetOmniboxComposeboxPageClassification() const {
  return page_classification_;
}

const gfx::VectorIcon& TestLocationBarModel::GetVectorIcon() const {
  return *icon_;
}

std::u16string TestLocationBarModel::GetSecureDisplayText() const {
  return secure_display_text_;
}

std::u16string TestLocationBarModel::GetSecureAccessibilityText() const {
  return secure_accessibility_text_;
}

bool TestLocationBarModel::ShouldDisplayURL() const {
  return should_display_url_;
}

bool TestLocationBarModel::IsOfflinePage() const {
  return offline_page_;
}

bool TestLocationBarModel::ShouldPreventElision() const {
  return should_prevent_elision_;
}
