blob: 7ca2cebed5f0910b8d957bdc2f1019d1a3016dd2 [file] [log] [blame]
// Copyright 2022 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/commerce/content/browser/web_contents_wrapper.h"
#include "base/strings/string_util.h"
#include "base/values.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/render_frame_host.h"
namespace commerce {
WebContentsWrapper::WebContentsWrapper(content::WebContents* web_contents,
int32_t js_world_id)
: web_contents_(web_contents), js_world_id_(js_world_id) {}
WebContentsWrapper::~WebContentsWrapper() = default;
const GURL& WebContentsWrapper::GetLastCommittedURL() const {
if (!web_contents_)
return GURL::EmptyGURL();
return web_contents_->GetLastCommittedURL();
}
const std::u16string& WebContentsWrapper::GetTitle() {
return web_contents_ ? web_contents_->GetTitle() : base::EmptyString16();
}
bool WebContentsWrapper::IsFirstLoadForNavigationFinished() {
return is_first_load_for_nav_finished_;
}
void WebContentsWrapper::SetIsFirstLoadForNavigationFinished(bool finished) {
is_first_load_for_nav_finished_ = finished;
}
bool WebContentsWrapper::IsOffTheRecord() {
if (!web_contents_ || !web_contents_->GetBrowserContext())
return false;
return web_contents_->GetBrowserContext()->IsOffTheRecord();
}
void WebContentsWrapper::RunJavascript(
const std::u16string& script,
base::OnceCallback<void(const base::Value)> callback) {
if (!web_contents_ || !web_contents_->GetPrimaryMainFrame()) {
std::move(callback).Run(base::Value());
return;
}
web_contents_->GetPrimaryMainFrame()->ExecuteJavaScriptInIsolatedWorld(
script, std::move(callback), js_world_id_);
}
ukm::SourceId WebContentsWrapper::GetPageUkmSourceId() {
if (!web_contents_ || !web_contents_->GetPrimaryMainFrame()) {
return ukm::kInvalidSourceId;
}
return web_contents_->GetPrimaryMainFrame()->GetPageUkmSourceId();
}
void WebContentsWrapper::ClearWebContentsPointer() {
web_contents_ = nullptr;
}
content::RenderFrameHost* WebContentsWrapper::GetPrimaryMainFrame() {
if (!web_contents_) {
return nullptr;
}
return web_contents_->GetPrimaryMainFrame();
}
} // namespace commerce