blob: 925b9e4caab5c1993d31dac0cf3c86ac9fdfaa5a [file]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ios/web/content/init/ios_content_browser_client.h"
#import "components/embedder_support/user_agent_utils.h"
#import "components/version_info/version_info.h"
#import "content/public/browser/browser_context.h"
#import "content/public/browser/devtools_manager_delegate.h"
#import "content/public/common/url_constants.h"
#import "content/public/common/user_agent.h"
#import "ios/web/content/init/ios_browser_main_parts.h"
namespace web {
bool IOSContentBrowserClient::IsHandledURL(const GURL& url) {
if (!url.is_valid()) {
return false;
}
static const char* const kProtocolList[] = {
url::kHttpScheme,
url::kHttpsScheme,
url::kWsScheme,
url::kWssScheme,
url::kBlobScheme,
url::kFileSystemScheme,
content::kChromeUIScheme,
content::kChromeUIUntrustedScheme,
content::kChromeDevToolsScheme,
url::kDataScheme,
url::kFileScheme,
};
for (const char* supported_protocol : kProtocolList) {
if (url.scheme_piece() == supported_protocol) {
return true;
}
}
return false;
}
std::unique_ptr<content::BrowserMainParts>
IOSContentBrowserClient::CreateBrowserMainParts(bool is_integration_test) {
return std::make_unique<IOSBrowserMainParts>();
}
std::string IOSContentBrowserClient::GetAcceptLangs(
content::BrowserContext* context) {
return "en-us,en";
}
std::string IOSContentBrowserClient::GetProduct() {
return version_info::GetProductNameAndVersionForUserAgent();
}
std::string IOSContentBrowserClient::GetUserAgent() {
return embedder_support::GetUserAgent();
}
std::string IOSContentBrowserClient::GetUserAgentBasedOnPolicy(
content::BrowserContext* context) {
return GetUserAgent();
}
std::string IOSContentBrowserClient::GetFullUserAgent() {
return embedder_support::GetFullUserAgent();
}
std::string IOSContentBrowserClient::GetReducedUserAgent() {
return embedder_support::GetReducedUserAgent();
}
blink::UserAgentMetadata IOSContentBrowserClient::GetUserAgentMetadata() {
blink::UserAgentMetadata metadata;
metadata.brand_version_list.emplace_back(version_info::GetProductName(),
"113");
metadata.brand_full_version_list.emplace_back(
version_info::GetProductName(), version_info::GetVersionNumber());
metadata.full_version = version_info::GetVersionNumber();
metadata.platform = "Unknown";
metadata.architecture = content::GetCpuArchitecture();
metadata.model = content::BuildModelInfo();
metadata.bitness = content::GetCpuBitness();
metadata.wow64 = content::IsWoW64();
return metadata;
}
bool IOSContentBrowserClient::IsSharedStorageAllowed(
content::BrowserContext* browser_context,
content::RenderFrameHost* rfh,
const url::Origin& top_frame_origin,
const url::Origin& accessing_origin) {
return true;
}
bool IOSContentBrowserClient::IsSharedStorageSelectURLAllowed(
content::BrowserContext* browser_context,
const url::Origin& top_frame_origin,
const url::Origin& accessing_origin) {
return true;
}
content::GeneratedCodeCacheSettings
IOSContentBrowserClient::GetGeneratedCodeCacheSettings(
content::BrowserContext* context) {
// If we pass 0 for size, disk_cache will pick a default size using the
// heuristics based on available disk size. These are implemented in
// disk_cache::PreferredCacheSize in net/disk_cache/cache_util.cc.
return content::GeneratedCodeCacheSettings(true, 0, context->GetPath());
}
std::unique_ptr<content::DevToolsManagerDelegate>
IOSContentBrowserClient::CreateDevToolsManagerDelegate() {
return std::make_unique<content::DevToolsManagerDelegate>();
}
} // namespace web