12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- // Copyright 2013 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 "android_webview/renderer/aw_content_settings_client.h"
- #include "content/public/common/url_constants.h"
- #include "content/public/renderer/render_frame.h"
- #include "third_party/blink/public/common/web_preferences/web_preferences.h"
- #include "third_party/blink/public/platform/web_url.h"
- #include "third_party/blink/public/web/web_local_frame.h"
- #include "url/gurl.h"
- namespace android_webview {
- namespace {
- bool AllowMixedContent(const blink::WebURL& url) {
- // We treat non-standard schemes as "secure" in the WebView to allow them to
- // be used for request interception.
- // TODO(benm): Tighten this restriction by requiring embedders to register
- // their custom schemes? See b/9420953.
- GURL gurl(url);
- return !gurl.IsStandard();
- }
- } // namespace
- AwContentSettingsClient::AwContentSettingsClient(
- content::RenderFrame* render_frame)
- : content::RenderFrameObserver(render_frame) {
- render_frame->GetWebFrame()->SetContentSettingsClient(this);
- }
- AwContentSettingsClient::~AwContentSettingsClient() {
- }
- bool AwContentSettingsClient::AllowImage(bool enabled_per_settings,
- const blink::WebURL& image_url) {
- if (ShouldAllowlistForContentSettings()) {
- return true;
- }
- return blink::WebContentSettingsClient::AllowImage(enabled_per_settings,
- image_url);
- }
- bool AwContentSettingsClient::AllowScript(bool enabled_per_settings) {
- if (ShouldAllowlistForContentSettings()) {
- return true;
- }
- return blink::WebContentSettingsClient::AllowScript(enabled_per_settings);
- }
- bool AwContentSettingsClient::AllowRunningInsecureContent(
- bool enabled_per_settings,
- const blink::WebURL& url) {
- return enabled_per_settings ? true : AllowMixedContent(url);
- }
- bool AwContentSettingsClient::ShouldAutoupgradeMixedContent() {
- return render_frame()->GetBlinkPreferences().allow_mixed_content_upgrades;
- }
- void AwContentSettingsClient::OnDestruct() {
- delete this;
- }
- bool AwContentSettingsClient::ShouldAllowlistForContentSettings() const {
- return render_frame()->GetWebFrame()->GetDocument().Url().GetString() ==
- content::kUnreachableWebDataURL;
- }
- } // namespace android_webview
|