blob: 23162f2a0a859046f543c30ad6909d883887c87b [file] [log] [blame]
// Copyright 2015 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 "base/macros.h"
#include "components/contextual_search/common/contextual_search_js_api_service.mojom.h"
#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_frame_observer.h"
#include "gin/handle.h"
#include "gin/wrappable.h"
namespace blink {
class WebFrame;
namespace contextual_search {
// Wrapper for injecting Contextual Search JavaScript
// into a WebFrame.
class ContextualSearchWrapper : public gin::Wrappable<ContextualSearchWrapper>,
public content::RenderFrameObserver {
// Installs Contextual Search JavaScript.
static void Install(content::RenderFrame* render_frame);
// RenderFrameObserver implementation.
void OnDestruct() override;
// Required by gin::Wrappable.
static gin::WrapperInfo kWrapperInfo;
// Instantiate by calling Install.
explicit ContextualSearchWrapper(content::RenderFrame* render_frame);
~ContextualSearchWrapper() override;
// gin::Wrappable.
gin::ObjectTemplateBuilder GetObjectTemplateBuilder(
v8::Isolate* isolate) final;
// Called by JavaScript to set the caption , and indicate whether
// the caption provides an answer (e.g. an actual definition), rather than
// just general notification of what kind of answer may be available.
void SetCaption(const std::string& caption, bool does_answer);
// Helper function to ensure that this class has connected to the API service.
// Returns false if cannot connect.
bool EnsureServiceConnected();
// The service to notify when API calls are made.
mojom::ContextualSearchJsApiServicePtr contextual_search_js_api_service_;
} // namespace contextual_search