// 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.

#include "chrome/browser/ssl/insecure_sensitive_input_driver.h"

#include <utility>

#include "chrome/browser/ssl/insecure_sensitive_input_driver_factory.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"

InsecureSensitiveInputDriver::InsecureSensitiveInputDriver(
    content::RenderFrameHost* render_frame_host)
    : render_frame_host_(render_frame_host) {}

InsecureSensitiveInputDriver::~InsecureSensitiveInputDriver() {}

void InsecureSensitiveInputDriver::BindInsecureInputServiceRequest(
    blink::mojom::InsecureInputServiceRequest request) {
  insecure_input_bindings_.AddBinding(this, std::move(request));
}

void InsecureSensitiveInputDriver::DidEditFieldInInsecureContext() {
  InsecureSensitiveInputDriverFactory* parent =
      InsecureSensitiveInputDriverFactory::GetOrCreateForWebContents(
          content::WebContents::FromRenderFrameHost(render_frame_host_));
  parent->DidEditFieldInInsecureContext();
}
