Reland "Remove blink::WebFileUtilities, and connect to the FileUtilitiesHost directly."
This is a reland of 8360f4d1a1
Original change's description:
> Remove blink::WebFileUtilities, and connect to the FileUtilitiesHost directly.
>
> This requires moving the mojom definition into Blink, but removes the
> similar function from the C++ Blink API and dramatically shrinks the
> LOC here.
>
> Bug: 835337
> Change-Id: I3d64c3a2f6439ec6c121417c28787c50af3838bb
> Reviewed-on: https://chromium-review.googlesource.com/1020378
> Commit-Queue: Jeremy Roman <jbroman@chromium.org>
> Reviewed-by: Kentaro Hara <haraken@chromium.org>
> Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> Reviewed-by: John Abd-El-Malek <jam@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#554023}
Bug: 835337
Tbr: haraken@chromium.org,jam@chromium.org,dcheng@chromium.org
No-Presubmit: true
Change-Id: I0db3c58ee9a4230003b9c609a5ed5f4331f1f012
Reviewed-on: https://chromium-review.googlesource.com/1030574
Commit-Queue: Jeremy Roman <jbroman@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Jeremy Roman <jbroman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#554108}
This commit is contained in:
content
browser
common
ppapi_plugin
public
renderer
BUILD.gnrenderer_blink_platform_impl.ccrenderer_blink_platform_impl.hwebfileutilities_impl.ccwebfileutilities_impl.h
test
third_party/blink
public
renderer
@@ -20,7 +20,7 @@ FileUtilitiesHostImpl::~FileUtilitiesHostImpl() = default;
|
||||
|
||||
void FileUtilitiesHostImpl::Create(
|
||||
int process_id,
|
||||
content::mojom::FileUtilitiesHostRequest request) {
|
||||
blink::mojom::FileUtilitiesHostRequest request) {
|
||||
mojo::MakeStrongBinding(std::make_unique<FileUtilitiesHostImpl>(process_id),
|
||||
std::move(request));
|
||||
}
|
||||
|
@@ -5,17 +5,17 @@
|
||||
#ifndef CONTENT_BROWSER_RENDERER_HOST_FILE_UTILITIES_HOST_IMPL_H_
|
||||
#define CONTENT_BROWSER_RENDERER_HOST_FILE_UTILITIES_HOST_IMPL_H_
|
||||
|
||||
#include "content/common/file_utilities.mojom.h"
|
||||
#include "third_party/blink/public/mojom/file/file_utilities.mojom.h"
|
||||
|
||||
namespace content {
|
||||
|
||||
class FileUtilitiesHostImpl : public content::mojom::FileUtilitiesHost {
|
||||
class FileUtilitiesHostImpl : public blink::mojom::FileUtilitiesHost {
|
||||
public:
|
||||
explicit FileUtilitiesHostImpl(int process_id);
|
||||
~FileUtilitiesHostImpl() override;
|
||||
|
||||
static void Create(int process_id,
|
||||
content::mojom::FileUtilitiesHostRequest request);
|
||||
blink::mojom::FileUtilitiesHostRequest request);
|
||||
|
||||
private:
|
||||
// blink::mojom::FileUtilitiesHost implementation.
|
||||
|
@@ -541,7 +541,6 @@ mojom("mojo_bindings") {
|
||||
"child_control.mojom",
|
||||
"child_memory_coordinator.mojom",
|
||||
"field_trial_recorder.mojom",
|
||||
"file_utilities.mojom",
|
||||
"frame.mojom",
|
||||
"frame_sink_provider.mojom",
|
||||
"histogram_fetcher.mojom",
|
||||
|
@@ -146,11 +146,6 @@ blink::WebClipboard* PpapiBlinkPlatformImpl::Clipboard() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
blink::WebFileUtilities* PpapiBlinkPlatformImpl::GetFileUtilities() {
|
||||
NOTREACHED();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
blink::WebSandboxSupport* PpapiBlinkPlatformImpl::GetSandboxSupport() {
|
||||
#if !defined(OS_ANDROID) && !defined(OS_WIN)
|
||||
return sandbox_support_.get();
|
||||
|
@@ -26,7 +26,6 @@ class PpapiBlinkPlatformImpl : public BlinkPlatformImpl {
|
||||
// BlinkPlatformImpl methods:
|
||||
blink::WebThread* CurrentThread() override;
|
||||
blink::WebClipboard* Clipboard() override;
|
||||
blink::WebFileUtilities* GetFileUtilities() override;
|
||||
blink::WebSandboxSupport* GetSandboxSupport() override;
|
||||
virtual bool sandboxEnabled();
|
||||
unsigned long long VisitedLinkHash(const char* canonicalURL,
|
||||
|
@@ -34,6 +34,7 @@
|
||||
"blink::mojom::BlobRegistry",
|
||||
"blink::mojom::BroadcastChannelProvider",
|
||||
"blink::mojom::ClipboardHost",
|
||||
"blink::mojom::FileUtilitiesHost",
|
||||
"blink::mojom::LockManager",
|
||||
"blink::mojom::Hyphenation",
|
||||
"blink::mojom::MimeRegistry",
|
||||
@@ -43,7 +44,6 @@
|
||||
"content::mojom::AppCacheBackend",
|
||||
"content::mojom::ClipboardHost",
|
||||
"content::mojom::FieldTrialRecorder",
|
||||
"content::mojom::FileUtilitiesHost",
|
||||
"content::mojom::FrameSinkProvider",
|
||||
"content::mojom::MediaStreamTrackMetricsHost",
|
||||
"content::mojom::MemoryCoordinatorHandle",
|
||||
|
@@ -456,8 +456,6 @@ target(link_target_type, "renderer") {
|
||||
"web_ui_extension.h",
|
||||
"web_ui_extension_data.cc",
|
||||
"web_ui_extension_data.h",
|
||||
"webfileutilities_impl.cc",
|
||||
"webfileutilities_impl.h",
|
||||
"webgraphicscontext3d_provider_impl.cc",
|
||||
"webgraphicscontext3d_provider_impl.h",
|
||||
"webpublicsuffixlist_impl.cc",
|
||||
|
@@ -75,7 +75,6 @@
|
||||
#include "content/renderer/render_thread_impl.h"
|
||||
#include "content/renderer/storage_util.h"
|
||||
#include "content/renderer/web_database_observer_impl.h"
|
||||
#include "content/renderer/webfileutilities_impl.h"
|
||||
#include "content/renderer/webgraphicscontext3d_provider_impl.h"
|
||||
#include "content/renderer/webpublicsuffixlist_impl.h"
|
||||
#include "content/renderer/worker_thread_registry.h"
|
||||
@@ -233,21 +232,6 @@ gpu::ContextType ToGpuContextType(blink::Platform::ContextType type) {
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
class RendererBlinkPlatformImpl::FileUtilities : public WebFileUtilitiesImpl {
|
||||
public:
|
||||
explicit FileUtilities(
|
||||
scoped_refptr<mojom::ThreadSafeFileUtilitiesHostPtr> host)
|
||||
: file_utilities_host_(std::move(host)) {}
|
||||
bool GetFileInfo(const WebString& path, WebFileInfo& result) override;
|
||||
|
||||
private:
|
||||
mojom::FileUtilitiesHost& GetFileUtilitiesHost() {
|
||||
return **file_utilities_host_;
|
||||
}
|
||||
|
||||
scoped_refptr<mojom::ThreadSafeFileUtilitiesHostPtr> file_utilities_host_;
|
||||
};
|
||||
|
||||
#if !defined(OS_ANDROID) && !defined(OS_WIN) && !defined(OS_FUCHSIA)
|
||||
class RendererBlinkPlatformImpl::SandboxSupport
|
||||
: public blink::WebSandboxSupport {
|
||||
@@ -326,9 +310,6 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
|
||||
|
||||
GetInterfaceProvider()->GetInterface(
|
||||
mojo::MakeRequest(&web_database_host_info_));
|
||||
|
||||
GetInterfaceProvider()->GetInterface(
|
||||
mojo::MakeRequest(&file_utilities_host_info_));
|
||||
}
|
||||
|
||||
RendererBlinkPlatformImpl::~RendererBlinkPlatformImpl() {
|
||||
@@ -432,18 +413,6 @@ blink::WebClipboard* RendererBlinkPlatformImpl::Clipboard() {
|
||||
return BlinkPlatformImpl::Clipboard();
|
||||
}
|
||||
|
||||
blink::WebFileUtilities* RendererBlinkPlatformImpl::GetFileUtilities() {
|
||||
if (!file_utilities_) {
|
||||
file_utilities_.reset(
|
||||
new FileUtilities(mojom::ThreadSafeFileUtilitiesHostPtr::Create(
|
||||
std::move(file_utilities_host_info_),
|
||||
base::CreateSequencedTaskRunnerWithTraits(
|
||||
{base::WithBaseSyncPrimitives()}))));
|
||||
file_utilities_->set_sandbox_enabled(sandboxEnabled());
|
||||
}
|
||||
return file_utilities_.get();
|
||||
}
|
||||
|
||||
blink::WebSandboxSupport* RendererBlinkPlatformImpl::GetSandboxSupport() {
|
||||
#if defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_FUCHSIA)
|
||||
// These platforms do not require sandbox support.
|
||||
@@ -629,22 +598,6 @@ WebString RendererBlinkPlatformImpl::FileSystemCreateOriginIdentifier(
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
bool RendererBlinkPlatformImpl::FileUtilities::GetFileInfo(
|
||||
const WebString& path,
|
||||
WebFileInfo& web_file_info) {
|
||||
base::Optional<base::File::Info> file_info;
|
||||
if (!GetFileUtilitiesHost().GetFileInfo(blink::WebStringToFilePath(path),
|
||||
&file_info) ||
|
||||
!file_info) {
|
||||
return false;
|
||||
}
|
||||
FileInfoToWebFileInfo(file_info.value(), &web_file_info);
|
||||
web_file_info.platform_path = path;
|
||||
return true;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#if defined(OS_MACOSX)
|
||||
|
||||
bool RendererBlinkPlatformImpl::SandboxSupport::LoadFont(CTFontRef src_font,
|
||||
|
@@ -19,7 +19,6 @@
|
||||
#include "cc/blink/web_compositor_support_impl.h"
|
||||
#include "content/child/blink_platform_impl.h"
|
||||
#include "content/common/content_export.h"
|
||||
#include "content/common/file_utilities.mojom.h"
|
||||
#include "content/common/possibly_associated_interface_ptr.h"
|
||||
#include "content/renderer/origin_trials/web_trial_token_validator_impl.h"
|
||||
#include "content/renderer/top_level_blame_context.h"
|
||||
@@ -78,7 +77,6 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
|
||||
}
|
||||
// Platform methods:
|
||||
blink::WebClipboard* Clipboard() override;
|
||||
blink::WebFileUtilities* GetFileUtilities() override;
|
||||
blink::WebSandboxSupport* GetSandboxSupport() override;
|
||||
blink::WebCookieJar* CookieJar() override;
|
||||
blink::WebThemeEngine* ThemeEngine() override;
|
||||
@@ -292,9 +290,6 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
|
||||
std::unique_ptr<blink::WebThread> main_thread_;
|
||||
std::unique_ptr<service_manager::Connector> connector_;
|
||||
|
||||
class FileUtilities;
|
||||
std::unique_ptr<FileUtilities> file_utilities_;
|
||||
|
||||
#if !defined(OS_ANDROID) && !defined(OS_WIN) && !defined(OS_FUCHSIA)
|
||||
class SandboxSupport;
|
||||
std::unique_ptr<SandboxSupport> sandbox_support_;
|
||||
@@ -340,8 +335,6 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
|
||||
blink::mojom::WebDatabaseHostPtrInfo web_database_host_info_;
|
||||
scoped_refptr<blink::mojom::ThreadSafeWebDatabaseHostPtr> web_database_host_;
|
||||
|
||||
mojom::FileUtilitiesHostPtrInfo file_utilities_host_info_;
|
||||
|
||||
scoped_refptr<NotificationDispatcher> notification_dispatcher_;
|
||||
|
||||
THREAD_CHECKER(main_thread_checker_);
|
||||
|
@@ -1,42 +0,0 @@
|
||||
// Copyright 2014 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 "content/renderer/webfileutilities_impl.h"
|
||||
|
||||
#include "base/files/file_path.h"
|
||||
#include "base/files/file_util.h"
|
||||
#include "base/logging.h"
|
||||
#include "content/renderer/file_info_util.h"
|
||||
#include "net/base/filename_util.h"
|
||||
#include "third_party/blink/public/platform/file_path_conversion.h"
|
||||
#include "third_party/blink/public/platform/web_file_info.h"
|
||||
#include "third_party/blink/public/platform/web_string.h"
|
||||
#include "third_party/blink/public/platform/web_url.h"
|
||||
|
||||
using blink::WebString;
|
||||
|
||||
namespace content {
|
||||
|
||||
WebFileUtilitiesImpl::WebFileUtilitiesImpl()
|
||||
: sandbox_enabled_(true) {
|
||||
}
|
||||
|
||||
WebFileUtilitiesImpl::~WebFileUtilitiesImpl() = default;
|
||||
|
||||
bool WebFileUtilitiesImpl::GetFileInfo(const WebString& path,
|
||||
blink::WebFileInfo& web_file_info) {
|
||||
if (sandbox_enabled_) {
|
||||
NOTREACHED();
|
||||
return false;
|
||||
}
|
||||
base::File::Info file_info;
|
||||
if (!base::GetFileInfo(blink::WebStringToFilePath(path), &file_info))
|
||||
return false;
|
||||
|
||||
FileInfoToWebFileInfo(file_info, &web_file_info);
|
||||
web_file_info.platform_path = path;
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace content
|
@@ -1,33 +0,0 @@
|
||||
// Copyright 2014 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.
|
||||
|
||||
#ifndef CONTENT_RENDERER_WEBFILEUTILITIES_IMPL_H_
|
||||
#define CONTENT_RENDERER_WEBFILEUTILITIES_IMPL_H_
|
||||
|
||||
#include "content/common/content_export.h"
|
||||
#include "third_party/blink/public/platform/web_file_info.h"
|
||||
#include "third_party/blink/public/platform/web_file_utilities.h"
|
||||
|
||||
namespace content {
|
||||
|
||||
class CONTENT_EXPORT WebFileUtilitiesImpl : public blink::WebFileUtilities {
|
||||
public:
|
||||
WebFileUtilitiesImpl();
|
||||
virtual ~WebFileUtilitiesImpl();
|
||||
|
||||
// WebFileUtilities methods:
|
||||
bool GetFileInfo(const blink::WebString& path,
|
||||
blink::WebFileInfo& result) override;
|
||||
|
||||
void set_sandbox_enabled(bool sandbox_enabled) {
|
||||
sandbox_enabled_ = sandbox_enabled;
|
||||
}
|
||||
|
||||
protected:
|
||||
bool sandbox_enabled_;
|
||||
};
|
||||
|
||||
} // namespace content
|
||||
|
||||
#endif // CONTENT_RENDERER_WEBFILEUTILITIES_IMPL_H_
|
@@ -179,8 +179,6 @@ TestBlinkWebUnitTestSupport::TestBlinkWebUnitTestSupport()
|
||||
// Initialize libraries for media.
|
||||
media::InitializeMediaLibrary();
|
||||
|
||||
file_utilities_.set_sandbox_enabled(false);
|
||||
|
||||
if (!file_system_root_.CreateUniqueTempDir()) {
|
||||
LOG(WARNING) << "Failed to create a temp dir for the filesystem."
|
||||
"FileSystem feature will be disabled.";
|
||||
@@ -209,10 +207,6 @@ blink::WebClipboard* TestBlinkWebUnitTestSupport::Clipboard() {
|
||||
return mock_clipboard_.get();
|
||||
}
|
||||
|
||||
blink::WebFileUtilities* TestBlinkWebUnitTestSupport::GetFileUtilities() {
|
||||
return &file_utilities_;
|
||||
}
|
||||
|
||||
blink::WebIDBFactory* TestBlinkWebUnitTestSupport::IdbFactory() {
|
||||
NOTREACHED() <<
|
||||
"IndexedDB cannot be tested with in-process harnesses.";
|
||||
|
@@ -14,7 +14,6 @@
|
||||
#include "build/build_config.h"
|
||||
#include "cc/blink/web_compositor_support_impl.h"
|
||||
#include "content/child/blink_platform_impl.h"
|
||||
#include "content/renderer/webfileutilities_impl.h"
|
||||
#include "content/test/mock_webblob_registry_impl.h"
|
||||
#include "content/test/mock_webclipboard_impl.h"
|
||||
#include "third_party/blink/public/platform/web_url_loader_mock_factory.h"
|
||||
@@ -35,7 +34,6 @@ class TestBlinkWebUnitTestSupport : public BlinkPlatformImpl {
|
||||
|
||||
blink::WebBlobRegistry* GetBlobRegistry() override;
|
||||
blink::WebClipboard* Clipboard() override;
|
||||
blink::WebFileUtilities* GetFileUtilities() override;
|
||||
blink::WebIDBFactory* IdbFactory() override;
|
||||
|
||||
std::unique_ptr<blink::WebURLLoaderFactory> CreateDefaultURLLoaderFactory()
|
||||
@@ -74,7 +72,6 @@ class TestBlinkWebUnitTestSupport : public BlinkPlatformImpl {
|
||||
private:
|
||||
MockWebBlobRegistryImpl blob_registry_;
|
||||
std::unique_ptr<MockWebClipboardImpl> mock_clipboard_;
|
||||
WebFileUtilitiesImpl file_utilities_;
|
||||
base::ScopedTempDir file_system_root_;
|
||||
std::unique_ptr<blink::WebURLLoaderMockFactory> url_loader_factory_;
|
||||
cc_blink::WebCompositorSupportImpl compositor_support_;
|
||||
|
1
third_party/blink/public/mojom/BUILD.gn
vendored
1
third_party/blink/public/mojom/BUILD.gn
vendored
@@ -18,6 +18,7 @@ mojom("mojom_platform") {
|
||||
"clipboard/clipboard.mojom",
|
||||
"color_chooser/color_chooser.mojom",
|
||||
"feature_policy/feature_policy.mojom",
|
||||
"file/file_utilities.mojom",
|
||||
"leak_detector/leak_detector.mojom",
|
||||
"loader/prefetch_url_loader_service.mojom",
|
||||
"net/ip_address_space.mojom",
|
||||
|
2
third_party/blink/public/mojom/file/OWNERS
vendored
Normal file
2
third_party/blink/public/mojom/file/OWNERS
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
per-file *.mojom=set noparent
|
||||
per-file *.mojom=file://ipc/SECURITY_OWNERS
|
2
content/common/file_utilities.mojom → third_party/blink/public/mojom/file/file_utilities.mojom
vendored
2
content/common/file_utilities.mojom → third_party/blink/public/mojom/file/file_utilities.mojom
vendored
@@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
module content.mojom;
|
||||
module blink.mojom;
|
||||
|
||||
import "mojo/public/mojom/base/file_info.mojom";
|
||||
import "mojo/public/mojom/base/file_path.mojom";
|
4
third_party/blink/public/platform/platform.h
vendored
4
third_party/blink/public/platform/platform.h
vendored
@@ -101,7 +101,6 @@ class WebDatabaseObserver;
|
||||
class WebPlatformEventListener;
|
||||
class WebFallbackThemeEngine;
|
||||
class WebFileSystem;
|
||||
class WebFileUtilities;
|
||||
class WebGestureCurve;
|
||||
class WebGraphicsContext3DProvider;
|
||||
class WebIDBFactory;
|
||||
@@ -167,9 +166,6 @@ class BLINK_PLATFORM_EXPORT Platform {
|
||||
// Must return non-null.
|
||||
virtual WebClipboard* Clipboard();
|
||||
|
||||
// Must return non-null.
|
||||
virtual WebFileUtilities* GetFileUtilities() { return nullptr; }
|
||||
|
||||
// May return null if sandbox support is not necessary
|
||||
virtual WebSandboxSupport* GetSandboxSupport() { return nullptr; }
|
||||
|
||||
|
@@ -1,51 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2010 Google Inc. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following disclaimer
|
||||
* in the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* * Neither the name of Google Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_FILE_UTILITIES_H_
|
||||
#define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_FILE_UTILITIES_H_
|
||||
|
||||
namespace blink {
|
||||
|
||||
class WebString;
|
||||
struct WebFileInfo;
|
||||
|
||||
class WebFileUtilities {
|
||||
public:
|
||||
virtual bool GetFileInfo(const WebString& path, WebFileInfo& result) {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected:
|
||||
~WebFileUtilities() = default;
|
||||
};
|
||||
|
||||
} // namespace blink
|
||||
|
||||
#endif
|
@@ -30,11 +30,15 @@
|
||||
|
||||
#include "third_party/blink/renderer/platform/file_metadata.h"
|
||||
|
||||
#include "base/optional.h"
|
||||
#include "net/base/filename_util.h"
|
||||
#include "third_party/blink/public/mojom/file/file_utilities.mojom-blink.h"
|
||||
#include "third_party/blink/public/platform/file_path_conversion.h"
|
||||
#include "third_party/blink/public/platform/interface_provider.h"
|
||||
#include "third_party/blink/public/platform/platform.h"
|
||||
#include "third_party/blink/public/platform/web_file_info.h"
|
||||
#include "third_party/blink/public/platform/web_file_utilities.h"
|
||||
#include "third_party/blink/renderer/platform/wtf/std_lib_extras.h"
|
||||
#include "third_party/blink/renderer/platform/wtf/thread_specific.h"
|
||||
#include "url/gurl.h"
|
||||
|
||||
namespace blink {
|
||||
@@ -56,13 +60,26 @@ bool GetFileModificationTime(const String& path, double& result) {
|
||||
}
|
||||
|
||||
bool GetFileMetadata(const String& path, FileMetadata& metadata) {
|
||||
WebFileInfo web_file_info;
|
||||
if (!Platform::Current()->GetFileUtilities()->GetFileInfo(path,
|
||||
web_file_info))
|
||||
DEFINE_THREAD_SAFE_STATIC_LOCAL(
|
||||
ThreadSpecific<mojom::blink::FileUtilitiesHostPtr>, thread_specific_host,
|
||||
());
|
||||
auto& host = *thread_specific_host;
|
||||
if (!host) {
|
||||
Platform::Current()->GetInterfaceProvider()->GetInterface(
|
||||
mojo::MakeRequest(&host));
|
||||
}
|
||||
|
||||
base::Optional<base::File::Info> file_info;
|
||||
if (!host->GetFileInfo(WebStringToFilePath(path), &file_info) || !file_info)
|
||||
return false;
|
||||
metadata.modification_time = web_file_info.modification_time;
|
||||
metadata.length = web_file_info.length;
|
||||
metadata.type = static_cast<FileMetadata::Type>(web_file_info.type);
|
||||
|
||||
// Blink now expects NaN as uninitialized/null Date.
|
||||
metadata.modification_time = file_info->last_modified.is_null()
|
||||
? std::numeric_limits<double>::quiet_NaN()
|
||||
: file_info->last_modified.ToJsTime();
|
||||
metadata.length = file_info->size;
|
||||
metadata.type = file_info->is_directory ? FileMetadata::kTypeDirectory
|
||||
: FileMetadata::kTypeFile;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@@ -3,6 +3,7 @@
|
||||
# found in the LICENSE file.
|
||||
|
||||
typemaps = [
|
||||
"//mojo/public/cpp/base/file_info.typemap",
|
||||
"//mojo/public/cpp/base/file_path.typemap",
|
||||
"//mojo/common/values.typemap",
|
||||
"//third_party/blink/renderer/core/messaging/blink_cloneable_message.typemap",
|
||||
|
@@ -174,10 +174,6 @@ WebClipboard* TestingPlatformSupport::Clipboard() {
|
||||
return old_platform_ ? old_platform_->Clipboard() : nullptr;
|
||||
}
|
||||
|
||||
WebFileUtilities* TestingPlatformSupport::GetFileUtilities() {
|
||||
return old_platform_ ? old_platform_->GetFileUtilities() : nullptr;
|
||||
}
|
||||
|
||||
WebIDBFactory* TestingPlatformSupport::IdbFactory() {
|
||||
return old_platform_ ? old_platform_->IdbFactory() : nullptr;
|
||||
}
|
||||
|
@@ -96,7 +96,6 @@ class TestingPlatformSupport : public Platform {
|
||||
WebThread* CurrentThread() override;
|
||||
WebBlobRegistry* GetBlobRegistry() override;
|
||||
WebClipboard* Clipboard() override;
|
||||
WebFileUtilities* GetFileUtilities() override;
|
||||
WebIDBFactory* IdbFactory() override;
|
||||
WebURLLoaderMockFactory* GetURLLoaderMockFactory() override;
|
||||
std::unique_ptr<blink::WebURLLoaderFactory> CreateDefaultURLLoaderFactory()
|
||||
|
Reference in New Issue
Block a user