// once per DesktopMediaList instance. It should not be called after
// StartUpdating(), and StartUpdating() should not be called until |callback|
// has been called.
- virtual void Update(UpdateCallback callback) = 0;
+ virtual void Update(UpdateCallback callback
+#if defined(ENABLE_WRT_JS)
+ ,
+ bool refresh_thumbnails = false
+#endif
+ ) = 0;
virtual int GetSourceCount() const = 0;
virtual const Source& GetSource(int index) const = 0;
Refresh(true);
}
-void DesktopMediaListBase::Update(UpdateCallback callback) {
+void DesktopMediaListBase::Update(UpdateCallback callback
+#if defined(ENABLE_WRT_JS)
+ ,
+ bool refresh_thumbnails
+#endif
+) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK(sources_.empty());
DCHECK(!refresh_callback_);
refresh_callback_ = std::move(callback);
+#if defined(ENABLE_WRT_JS)
+ Refresh(refresh_thumbnails);
+#else
Refresh(false);
+#endif
}
int DesktopMediaListBase::GetSourceCount() const {
void SetThumbnailSize(const gfx::Size& thumbnail_size) override;
void SetViewDialogWindowId(content::DesktopMediaID dialog_id) override;
void StartUpdating(DesktopMediaListObserver* observer) override;
- void Update(UpdateCallback callback) override;
+ void Update(UpdateCallback callback
+#if defined(ENABLE_WRT_JS)
+ ,
+ bool refresh_thumbnails
+#endif
+ ) override;
int GetSourceCount() const override;
const Source& GetSource(int index) const override;
DesktopMediaList::Type GetMediaListType() const override;
"//chrome/common:mojo_bindings",
"//chrome/common:mojo_bindings_blink",
"//content/common/*",
+ "//electron/shell/common:plugin",
"//extensions/common:mojom",
"//extensions/common:mojom_blink",
]
"shell/browser/osr/osr_web_contents_view.h",
"shell/browser/plugins/plugin_utils.cc",
"shell/browser/plugins/plugin_utils.h",
+ "shell/browser/printing/printing_utils.cc",
+ "shell/browser/printing/printing_utils.h",
"shell/browser/protocol_registry.cc",
"shell/browser/protocol_registry.h",
"shell/browser/relauncher.cc",
ElectronMainDelegate(const ElectronMainDelegate&) = delete;
ElectronMainDelegate& operator=(const ElectronMainDelegate&) = delete;
-#if !defined(ENABLE_WRT_JS)
- base::StringPiece GetBrowserV8SnapshotFilename() override;
-#endif
-
#if BUILDFLAG(IS_MAC)
void OverrideChildProcessPath();
void OverrideFrameworkBundlePath();
protected:
// content::ContentMainDelegate:
+#if !defined(ENABLE_WRT_JS)
std::string_view GetBrowserV8SnapshotFilename() override;
+#endif
std::optional<int> BasicStartupComplete() override;
void PreSandboxStartup() override;
void SandboxInitialized(const std::string& process_type) override;
#include "shell/common/crash_keys.h"
#include "third_party/crashpad/crashpad/client/crashpad_info.h" // nogncheck
#endif
+#endif
#if BUILDFLAG(IS_LINUX)
#include "base/containers/span.h"
base::OnceCallback<void(v8::Local<v8::Value>)> callback) {
std::move(callback).Run(v8::Array::New(isolate));
}
-#else
-scoped_refptr<UploadList> CreateCrashUploadList() {
-#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
- return base::MakeRefCounted<CrashUploadListCrashpad>();
#elif defined(ENABLE_WRT_JS)
v8::Local<v8::Value> GetUploadedReports(v8::Isolate* isolate) {
return v8::Undefined(isolate);
}
+#else
+scoped_refptr<UploadList> CreateCrashUploadList() {
+#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
+ return base::MakeRefCounted<CrashUploadListCrashpad>();
#else
base::FilePath crash_dir_path;
base::PathService::Get(electron::DIR_CRASH_DUMPS, &crash_dir_path);
#endif
namespace {
-#if BUILDFLAG(IS_LINUX)
+#if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_TIZEN)
// Private function in ui/base/x/x11_display_util.cc
base::flat_map<x11::RandR::Output, int> GetMonitors(
std::pair<uint32_t, uint32_t> version,
browser_context_ = browser_context;
web_contents->SetDelegate(this);
-#if BUILDFLAG(ENABLE_PRINTING)
+#if BUILDFLAG(ENABLE_PRINTING) && !defined(ENABLE_WRT_JS)
PrintViewManagerElectron::CreateForWebContents(web_contents.get());
#endif
}
return handle;
}
-#endif
// static
gin::Handle<WebContents> WebContents::CreateAndTake(
}
return handle;
}
+#endif
// static
WebContents* WebContents::From(content::WebContents* web_contents) {
#include "shell/common/gin_helper/pinnable.h"
#include "ui/base/models/image_model.h"
+#if BUILDFLAG(ENABLE_PRINTING)
+#if defined(ENABLE_WRT_JS)
+namespace printing {
+using CompletionCallback = base::OnceCallback<void(bool, const std::string&)>;
+}
+#else
+#include "shell/browser/printing/print_view_manager_electron.h"
+#endif
+#endif
+
#if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS)
#include "extensions/common/mojom/view_type.mojom-forward.h"
#include "base/task/cancelable_task_tracker.h"
#include "base/values.h"
#include "shell/browser/window_list_observer.h"
+#include "shell/common/gin_converters/login_item_settings_converter.h"
#include "shell/common/gin_helper/promise.h"
#if BUILDFLAG(IS_WIN)
} // namespace
+namespace electron {
// CertificateManagerModel is created on the UI thread. It needs a
// NSSCertDatabase handle (and on ChromeOS it needs to get the TPM status) which
// needs to be done on the IO thread.
if (cert_db)
std::move(split_callback.second).Run(cert_db);
}
+
+} //namespace electron
\ No newline at end of file
#include "base/memory/raw_ptr.h"
#include "net/cert/nss_cert_database.h"
+namespace electron {
+
// CertificateManagerModel provides the data to be displayed in the certificate
// manager dialog, and processes changes from the view.
class CertificateManagerModel {
bool is_user_db_available_;
};
+} // namespace electron
+
#endif // ELECTRON_SHELL_BROWSER_CERTIFICATE_MANAGER_MODEL_H_
std::unique_ptr<ElectronBrowserContext>(new_context);
return new_context;
}
-#endif
ElectronBrowserContext* ElectronBrowserContext::FromPath(
const base::FilePath& path,
std::unique_ptr<ElectronBrowserContext>(new_context);
return new_context;
}
+#endif
} // namespace electron
if (host == chrome::kChromeUIDevToolsHost) {
auto* browser_context = web_ui->GetWebContents()->GetBrowserContext();
return std::make_unique<DevToolsUI>(browser_context, web_ui);
+ } else if (host == chrome::kChromeUIAccessibilityHost) {
+ return std::make_unique<ElectronAccessibilityUI>(web_ui);
}
#endif
- if (host == chrome::kChromeUIAccessibilityHost)
- return std::make_unique<ElectronAccessibilityUI>(web_ui);
-
- return {};
+ return std::unique_ptr<content::WebUIController>();
}
} // namespace electron
gin::IsolateHolder::IsolateType::kUtility,
std::move(create_params),
gin::IsolateHolder::IsolateCreationMode::kNormal,
+#if defined(ENABLE_WRT_JS)
+ isolate,
+#endif
nullptr,
- nullptr,
- isolate};
+ nullptr};
}
#if defined(ENABLE_WRT_JS)
#include "base/memory/weak_ptr.h"
#include "base/scoped_observation.h"
#include "content/public/browser/web_contents_observer.h"
+#if defined(ENABLE_WRT_JS)
+#include "services/device/public/mojom/usb_device.mojom.h"
+#else
#include "services/device/public/mojom/usb_device.mojom-forward.h"
+#endif
#include "shell/browser/usb/usb_chooser_context.h"
#include "third_party/blink/public/mojom/usb/web_usb_service.mojom.h"
#include "url/origin.h"
#include "shell/common/electron_paths.h"
#include "wrt/src/common/application_data.h"
-void _register_electron_browser_desktop_capturer() {}
void _register_electron_browser_global_shortcut() {}
void _register_electron_browser_native_theme() {}
void _register_electron_browser_safe_storage() {}
class RendererClientBase;
// Helper class to forward the messages to the client.
-class ElectronRenderFrameObserver : private content::RenderFrameObserver {
+class ElectronRenderFrameObserver : public content::RenderFrameObserver {
public:
ElectronRenderFrameObserver(content::RenderFrame* frame,
RendererClientBase* renderer_client);
ElectronRenderFrameObserver(const ElectronRenderFrameObserver&) = delete;
ElectronRenderFrameObserver& operator=(const ElectronRenderFrameObserver&) =
delete;
+ void WillReleaseScriptContext(v8::Local<v8::Context> context,
+ int world_id) override;
private:
// content::RenderFrameObserver:
void DidClearWindowObject() override;
void DidInstallConditionalFeatures(v8::Local<v8::Context> context,
int world_id) override;
- void WillReleaseScriptContext(v8::Local<v8::Context> context,
- int world_id) override;
void OnDestruct() override;
void DidMeaningfulLayout(blink::WebMeaningfulLayout layout_type) override;
AllowAtomicsWaitMode atomics_wait_mode,
IsolateType isolate_type,
IsolateCreationMode isolate_creation_mode,
- v8::CreateHistogramCallback create_histogram_callback,
- v8::AddHistogramSampleCallback add_histogram_sample_callback,
-#if !defined(EWK_BRINGUP) // FIXME : m130 bringup
#if defined(ENABLE_WRT_JS)
- scoped_refptr<base::SingleThreadTaskRunner> low_priority_task_runner,
- v8::Isolate* isolate)
-#else
- scoped_refptr<base::SingleThreadTaskRunner> low_priority_task_runner)
-#endif
+ v8::Isolate* isolate,
#endif
+ v8::CreateHistogramCallback create_histogram_callback,
+ v8::AddHistogramSampleCallback add_histogram_sample_callback,
scoped_refptr<base::SingleThreadTaskRunner> user_visible_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> best_effort_task_runner)
: IsolateHolder(std::move(task_runner),
create_histogram_callback,
add_histogram_sample_callback),
isolate_creation_mode,
-#if !defined(EWK_BRINGUP) // FIXME : m130 bringup
#if defined(ENABLE_WRT_JS)
- std::move(low_priority_task_runner), isolate) {}
-#else
- std::move(low_priority_task_runner)) {}
-#endif
+ isolate,
#endif
std::move(user_visible_task_runner),
std::move(best_effort_task_runner)) {}
IsolateType isolate_type,
std::unique_ptr<v8::Isolate::CreateParams> params,
IsolateCreationMode isolate_creation_mode,
-#if !defined(EWK_BRINGUP) // FIXME : m130 bringup
#if defined(ENABLE_WRT_JS)
- scoped_refptr<base::SingleThreadTaskRunner> low_priority_task_runner,
- v8::Isolate* isolate)
-#else
- scoped_refptr<base::SingleThreadTaskRunner> low_priority_task_runner)
-#endif
+ v8::Isolate* isolate,
#endif
scoped_refptr<base::SingleThreadTaskRunner> user_visible_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> best_effort_task_runner)
AllowAtomicsWaitMode atomics_wait_mode,
IsolateType isolate_type,
IsolateCreationMode isolate_creation_mode = IsolateCreationMode::kNormal,
- v8::CreateHistogramCallback create_histogram_callback = nullptr,
- v8::AddHistogramSampleCallback add_histogram_sample_callback = nullptr,
-#if !defined(EWK_BRINGUP) // FIXME : m130 bringup
#if defined(ENABLE_WRT_JS)
- scoped_refptr<base::SingleThreadTaskRunner> low_priority_task_runner =
- nullptr,
- v8::Isolate* isolate = nullptr);
-#else
- scoped_refptr<base::SingleThreadTaskRunner> low_priority_task_runner =
-#endif
+ v8::Isolate* isolate = nullptr,
#endif
+ v8::CreateHistogramCallback create_histogram_callback = nullptr,
+ v8::AddHistogramSampleCallback add_histogram_sample_callback = nullptr,
scoped_refptr<base::SingleThreadTaskRunner> user_visible_task_runner =
nullptr,
scoped_refptr<base::SingleThreadTaskRunner> best_effort_task_runner =
IsolateType isolate_type,
std::unique_ptr<v8::Isolate::CreateParams> params,
IsolateCreationMode isolate_creation_mode = IsolateCreationMode::kNormal,
-#if !defined(EWK_BRINGUP) // FIXME : m130 bringup
#if defined(ENABLE_WRT_JS)
- scoped_refptr<base::SingleThreadTaskRunner> low_priority_task_runner =
- nullptr,
- v8::Isolate* isolate = nullptr);
-#else
- scoped_refptr<base::SingleThreadTaskRunner> low_priority_task_runner =
-#endif
+ v8::Isolate* isolate = nullptr,
#endif
scoped_refptr<base::SingleThreadTaskRunner> user_visible_task_runner =
nullptr,
%define __use_clang 0
%endif
-%define __enable_wrt_js 0
+%define __enable_wrt_js 1
%if 0%{?_disable_wrt_js}
%define __enable_wrt_js 0
%endif
V8PerIsolateData::V8ContextSnapshotMode::kTakeSnapshot
? gin::IsolateHolder::IsolateCreationMode::kCreateSnapshot
: gin::IsolateHolder::IsolateCreationMode::kNormal,
+#if defined(ENABLE_WRT_JS)
+ nullptr,
+#endif
create_histogram_callback,
add_histogram_sample_callback,
std::move(user_visible_task_runner),
import("//tizen_src/build/config/tizen_features.gni")
}
-
if (enable_rust) {
import("//build/rust/cargo_crate.gni")
import("//build/rust/rust_bindgen.gni")
if (enable_wrt_js) {
# Needed to build a nodejs-compatible boringssl.
all_sources += [
- "src/decrepit/evp/evp_do_all.c",
- "src/decrepit/xts/xts.c",
+ "decrepit/evp/evp_do_all.c",
+ "decrepit/xts/xts.c",
]
all_sources += [
- "src/decrepit/blowfish/blowfish.c",
- "src/decrepit/cfb/cfb.c",
- "src/decrepit/ripemd/internal.h",
- "src/decrepit/ripemd/ripemd.c",
+ "decrepit/blowfish/blowfish.c",
+ "decrepit/cfb/cfb.c",
+ "decrepit/ripemd/internal.h",
+ "decrepit/ripemd/ripemd.c",
]
}
new gin::PerIsolateData(isolate, params->array_buffer_allocator_shared.get(),
gin::IsolateHolder::kSingleThread,
base::SingleThreadTaskRunner::GetCurrentDefault(),
- nullptr);
+ nullptr, nullptr);
#endif
// Register the isolate on the platform before the isolate gets initialized,
wrapper->destructor.Get(data.GetIsolate());
v8::MicrotasksScope microtasks(
- data.GetIsolate(), v8::MicrotasksScope::kDoNotRunMicrotasks);
+ data.GetIsolate(), context->GetMicrotaskQueue(), v8::MicrotasksScope::kDoNotRunMicrotasks);
v8::TryCatch try_catch(data.GetIsolate());
v8::MaybeLocal<v8::Value> result =
preference_object_template = v8::ObjectTemplate::New(isolate);
auto getter = [](v8::Local<v8::Name> property,
- const v8::PropertyCallbackInfo<v8::Value>& info) {
+ const v8::PropertyCallbackInfo<v8::Value>& info) -> v8::Intercepted {
v8::Isolate* isolate = info.GetIsolate();
std::string key = *v8::String::Utf8Value(isolate, property);
if (key == kLengthKey) {
info.GetReturnValue().Set(WidgetPreferenceDB::Length());
- return;
+ return v8::Intercepted::kYes;;
}
if (std::find(kExcludeList.begin(), kExcludeList.end(), key)
!= kExcludeList.end())
- return;
+ return v8::Intercepted::kYes;;
if (!WidgetPreferenceDB::HasItem(key))
- return;
+ return v8::Intercepted::kYes;
std::string value;
if (WidgetPreferenceDB::GetItem(key, &value)) {
info.GetReturnValue().Set(
v8::String::NewFromUtf8(isolate, value.c_str()).ToLocalChecked());
- } else
+ return v8::Intercepted::kYes;
+ } else {
info.GetReturnValue().SetNull();
+ return v8::Intercepted::kNo;
+ }
};
auto setter = [](v8::Local<v8::Name> property,
v8::Local<v8::Value> value,
- const v8::PropertyCallbackInfo<v8::Value>& info) {
+ const v8::PropertyCallbackInfo<void>& info) -> v8::Intercepted {
v8::Isolate* isolate = info.GetIsolate();
std::string key = *v8::String::Utf8Value(isolate, property);
if (std::find(kExcludeList.begin(), kExcludeList.end(), key)
!= kExcludeList.end())
- return;
+ return v8::Intercepted::kYes;
v8::Local<v8::Value> oldvalue = v8::Null(isolate);
std::string oldvaluestr;
key, *v8::String::Utf8Value(isolate, value))) {
info.GetReturnValue().Set(value);
DispatchEvent(info.This(), property, oldvalue, value);
+ return v8::Intercepted::kYes;
}
+ return v8::Intercepted::kNo;
};
auto deleter = [](v8::Local<v8::Name> property,
- const v8::PropertyCallbackInfo<v8::Boolean>& info) {
+ const v8::PropertyCallbackInfo<v8::Boolean>& info) -> v8::Intercepted {
v8::Isolate* isolate = info.GetIsolate();
std::string key = *v8::String::Utf8Value(isolate, property);
if (!WidgetPreferenceDB::HasItem(key)) {
info.GetReturnValue().Set(false);
- return;
+ return v8::Intercepted::kYes;
}
v8::Local<v8::Value> oldvalue = v8::Null(isolate);
if (WidgetPreferenceDB::RemoveItem(key)) {
info.GetReturnValue().Set(true);
DispatchEvent(info.This(), property, oldvalue, v8::Null(isolate));
- } else
+ return v8::Intercepted::kYes;
+ } else {
info.GetReturnValue().Set(false);
+ return v8::Intercepted::kNo;
+ }
};
preference_object_template->SetHandler(v8::NamedPropertyHandlerConfiguration(
- getter, setter, nullptr, deleter, nullptr));
+ getter, setter, nullptr, deleter, nullptr, nullptr, nullptr));
preference_object_template->Set(
v8::String::NewFromUtf8(isolate, kKeyKey).ToLocalChecked(),
v8::HandleScope handle_scope(isolate);
v8::Context::Scope context_scope(context);
v8::MicrotasksScope microtasks_scope(
- isolate, v8::MicrotasksScope::kDoNotRunMicrotasks);
+ context, v8::MicrotasksScope::kDoNotRunMicrotasks);
v8::Local<v8::External> function_data = v8::External::New(isolate, this);
function_data_.Reset(isolate, function_data);
return GetObject(context, properties);
}
-void AccessorGetter(v8::Local<v8::Name> property,
- const v8::PropertyCallbackInfo<v8::Value>& info) {
+void AccessorGetter(const v8::FunctionCallbackInfo<v8::Value>& info) {
v8::Isolate* isolate = info.GetIsolate();
auto holder = LoadExtension(isolate, info.Data());
if (holder.IsEmpty())
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Value> value =
- holder.As<v8::Object>()->Get(context, property)
+ holder.As<v8::Object>()->Get(context, info[1])
.FromMaybe(v8::Local<v8::Value>::Cast(v8::Undefined(isolate)));
info.GetReturnValue().Set(value);
}
-void AccessorSetter(v8::Local<v8::Name> property, v8::Local<v8::Value> value,
- const v8::PropertyCallbackInfo<void>& info) {
+void AccessorSetter(const v8::FunctionCallbackInfo<v8::Value>& info) {
v8::Isolate* isolate = info.GetIsolate();
auto holder = LoadExtension(isolate, info.Data());
if (holder.IsEmpty())
v8::Local<v8::Context> context = isolate->GetCurrentContext();
if (!holder.As<v8::Object>()
- ->Set(context, property, value)
+ ->Set(context, info[1], info[0])
.FromMaybe(false)) {
LOG(ERROR) << "Fail to set property : "
- << *v8::String::Utf8Value(isolate, property);
+ << *v8::String::Utf8Value(isolate, info[1]);
}
}
.FromMaybe(false))
return false;
+
+ v8::Local<v8::Function> AccessorGetterFunction= v8::Function::New(context, AccessorGetter, data).FromMaybe(v8::Local<v8::Function>());
+ v8::Local<v8::Function> AccessorSetterFunction= v8::Function::New(context, AccessorSetter, data).FromMaybe(v8::Local<v8::Function>());
// FIXME(cmarcelo): ensure that trampoline is readonly.
- return value.As<v8::Object>()->SetAccessor(
- context,
+ value.As<v8::Object>()->SetAccessorProperty(
v8::String::NewFromUtf8(isolate, basename.c_str()).ToLocalChecked(),
- AccessorGetter, AccessorSetter, data)
- .FromMaybe(false);
+ AccessorGetterFunction, AccessorSetterFunction);
+
+ return true;
}
} // namespace
# Sets the number of internal fields on promise objects.
v8_promise_internal_field_count = 0
+ if (enable_wrt_js) {
+ v8_promise_internal_field_count = 1
+ }
# Sets the number of internal fields on array buffer objects.
v8_array_buffer_internal_field_count = 0
defines += [ "ENABLE_DISASSEMBLER" ]
}
if (enable_wrt_js) {
- v8_promise_internal_field_count = 1
v8_enable_javascript_promise_hooks = true
}
if (v8_log_builtins_block_count_input != "") {
* \param attribute The attributes of the property for which an accessor
* is added.
*/
-#if defined(ENABLE_WRT_JS)
- V8_DEPRECATED("Use SetNativeDataProperty without AccessControl instead")
- void SetNativeDataProperty(
- Local<String> name, AccessorGetterCallback getter,
- AccessorSetterCallback setter, Local<Value> data,
- PropertyAttribute attribute, AccessControl settings,
- SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect,
- SideEffectType setter_side_effect_type = SideEffectType::kHasSideEffect);
- V8_DEPRECATED("Use SetNativeDataProperty without AccessControl instead")
- void SetNativeDataProperty(
- Local<Name> name, AccessorNameGetterCallback getter,
- AccessorNameSetterCallback setter, Local<Value> data,
- PropertyAttribute attribute, AccessControl settings,
- SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect,
- SideEffectType setter_side_effect_type = SideEffectType::kHasSideEffect);
- V8_DEPRECATED("Use SetNativeDataProperty with Local<Name> instead")
- void SetNativeDataProperty(
- Local<String> name, AccessorGetterCallback getter,
- AccessorSetterCallback setter = nullptr,
- Local<Value> data = Local<Value>(), PropertyAttribute attribute = None,
- SideEffectType getter_side_effect_type = SideEffectType::kHasSideEffect,
- SideEffectType setter_side_effect_type = SideEffectType::kHasSideEffect);
-#endif
void SetNativeDataProperty(
Local<Name> name, AccessorNameGetterCallback getter,
AccessorNameSetterCallback setter = nullptr,
}
} // namespace
-#if defined(ENABLE_WRT_JS)
-void Template::SetNativeDataProperty(v8::Local<String> name,
- AccessorGetterCallback getter,
- AccessorSetterCallback setter,
- v8::Local<Value> data,
- PropertyAttribute attribute,
- v8::AccessControl settings,
- SideEffectType getter_side_effect_type,
- SideEffectType setter_side_effect_type) {
- TemplateSetAccessor(this, name, getter, setter, data, attribute, true, false,
- getter_side_effect_type, setter_side_effect_type);
-}
-
-void Template::SetNativeDataProperty(v8::Local<Name> name,
- AccessorNameGetterCallback getter,
- AccessorNameSetterCallback setter,
- v8::Local<Value> data,
- PropertyAttribute attribute,
- v8::AccessControl settings,
- SideEffectType getter_side_effect_type,
- SideEffectType setter_side_effect_type) {
- TemplateSetAccessor(this, name, getter, setter, data, attribute, true, false,
- getter_side_effect_type, setter_side_effect_type);
-}
-
-void Template::SetNativeDataProperty(v8::Local<String> name,
- AccessorGetterCallback getter,
- AccessorSetterCallback setter,
- v8::Local<Value> data,
- PropertyAttribute attribute,
- SideEffectType getter_side_effect_type,
- SideEffectType setter_side_effect_type) {
- TemplateSetAccessor(this, name, getter, setter, data, attribute, true, false,
- getter_side_effect_type, setter_side_effect_type);
-}
-#endif
-
void Template::SetNativeDataProperty(v8::Local<Name> name,
AccessorNameGetterCallback getter,
AccessorNameSetterCallback setter,
const char* location = "v8::Object::SetInternalField()";
if (!InternalFieldOK(obj, index, location)) return;
auto val = Utils::OpenDirectHandle(*value);
- i::DirectHandle<i::JSObject>::cast(obj)->SetEmbedderField(index, *val);
+ i::Cast<i::JSObject>(obj)->SetEmbedderField(index, *val);
}
/**
// static
std::unique_ptr<CppHeap> CppHeap::Create(v8::Platform* platform,
const CppHeapCreateParams& params) {
- return std::make_unique<internal::CppHeap>(platform, params.custom_spaces,
- params.marking_support,
- params.sweeping_support);
+ return std::make_unique<internal::CppHeap>(
+ platform ? platform : internal::V8::GetCurrentPlatform(),
+ params.custom_spaces, params.marking_support, params.sweeping_support);
}
cppgc::AllocationHandle& CppHeap::GetAllocationHandle() {
"//components/security_state/content",
"//components/services/language_detection/public/mojom",
"//components/upload_list",
+ "//electron/shell/common:mojo",
+ "//electron/shell/common:plugin",
"//electron/shell/services/node/public/mojom",
"//services/proxy_resolver:lib",
"//third_party/electron_node:node_lib",
}
sources = wrt_lib_sources + [
+ "//ash/style/rounded_rect_cutout_path_builder.cc",
+ "//ash/style/rounded_rect_cutout_path_builder.h",
"//electron/shell/browser/certificate_manager_model.cc",
"//electron/shell/browser/certificate_manager_model.h",
"//electron/shell/browser/lib/power_observer_linux.cc",
}
unused_electron_sources = [
- "shell/browser/api/electron_api_desktop_capturer.cc",
"shell/browser/api/electron_api_global_shortcut.cc",
"shell/browser/api/electron_api_native_theme.cc",
"shell/browser/api/electron_api_safe_storage.cc",
namespace api {
class SpellCheckClient : public blink::WebSpellCheckPanelHostClient,
- public blink::WebTextCheckClient,
- public base::SupportsWeakPtr<SpellCheckClient> {
+ public blink::WebTextCheckClient {
public:
SpellCheckClient(const std::string& language,
v8::Isolate* isolate,
#include <aul_proc_group.h>
#endif
-#if BUILDFLAG(USE_ALLOCATOR_SHIM)
+#if PA_BUILDFLAG(USE_ALLOCATOR_SHIM)
#include "tizen_src/chromium_impl/components/memory_system/initialize_util.h"
#endif
InvokedIn invoked_in) {
NativeWebRuntimeDelegateTV::GetInstance().PostEarlyInitialization();
WRTMainDelegate::PostEarlyInitialization(invoked_in);
-#if BUILDFLAG(USE_ALLOCATOR_SHIM)
+#if PA_BUILDFLAG(USE_ALLOCATOR_SHIM)
memory_system::InitializeMemorySystem(memory_system_);
#endif
return std::nullopt;
#include "wrt/src/app/wrt_main_delegate.h"
-#if BUILDFLAG(USE_ALLOCATOR_SHIM)
+#if PA_BUILDFLAG(USE_ALLOCATOR_SHIM)
#include "components/memory_system/memory_system.h"
#endif
content::ContentBrowserClient* CreateContentBrowserClient() override;
content::ContentRendererClient* CreateContentRendererClient() override;
-#if BUILDFLAG(USE_ALLOCATOR_SHIM)
+#if PA_BUILDFLAG(USE_ALLOCATOR_SHIM)
memory_system::MemorySystem memory_system_;
#endif
};
#include "wrt/src/app/wrt_main_delegate.h"
#endif
-#if BUILDFLAG(USE_ALLOCATOR_SHIM)
+#if PA_BUILDFLAG(USE_ALLOCATOR_SHIM)
#include "components/services/heap_profiling/public/cpp/profiling_client.h"
#endif
}
int WRTContentMain::Main(int argc, char** argv) {
-#if BUILDFLAG(USE_ALLOCATOR_SHIM)
+#if PA_BUILDFLAG(USE_ALLOCATOR_SHIM)
heap_profiling::InitTLSSlot();
#endif
auto* widget = widget_delegate_->widget();
gfx::Rect bounds = host->GetBoundsInPixels();
- views::Widget::InitParams params;
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ views::Widget::InitParams params(
+ views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET,
+ views::Widget::InitParams::TYPE_WINDOW);
params.bounds = bounds;
params.delegate = widget_delegate_.get();
- params.type = views::Widget::InitParams::TYPE_WINDOW;
params.native_widget = new WRTNativeWidget(widget, host);
params.parent = host->window();
params.should_show_after_init = true;
#include "wrt/src/browser/net/wrt_file_url_loader.h"
+#include <string_view>
+
#include "base/files/file.h"
#include "base/files/file_util.h"
#include "base/no_destructor.h"
-#include "base/strings/string_piece.h"
#include "base/strings/string_split.h"
#include "base/task/task_traits.h"
#include "base/task/thread_pool.h"
const std::string content_mime_type = content_info.type();
const std::string encoding_type = content_info.encoding();
- std::vector<base::StringPiece> meta_data = base::SplitStringPiece(
+ std::vector<std::string_view> meta_data = base::SplitStringPiece(
content_mime_type, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
std::string mime_type_value;
std::string charset_value;
mime_type_value = base::ToLowerASCII(*iter);
++iter;
}
- static constexpr base::StringPiece kCharsetTag("charset=");
+ static constexpr std::string_view kCharsetTag("charset=");
charset_value = "utf-8";
for (; iter != meta_data.cend(); ++iter) {
if (base::StartsWith(*iter, kCharsetTag,
}
std::string range_header;
net::HttpByteRange byte_range;
- if (request.headers.GetHeader(net::HttpRequestHeaders::kRange,
- &range_header)) {
+ if (request.headers.GetHeader(net::HttpRequestHeaders::kRange)) {
// Handle a simple Range header for a single range.
std::vector<net::HttpByteRange> ranges;
bool fail = false;
#include "electron/shell/browser/ui/file_dialog.h"
+#include "shell/common/gin_helper/dictionary.h"
+#include "shell/common/gin_helper/promise.h"
#include "base/notreached.h"
return content::RESULT_CODE_NORMAL_EXIT;
}
-#if BUILDFLAG(USE_ALLOCATOR_SHIM)
+#if PA_BUILDFLAG(USE_ALLOCATOR_SHIM)
void WRTBrowserMainParts::PostCreateThreads() {
extra_parts_profiling_.PostCreateThreads();
}
#include "base/allocator/buildflags.h"
#include "electron/shell/browser/electron_browser_main_parts.h"
-#if BUILDFLAG(USE_ALLOCATOR_SHIM)
+#if PA_BUILDFLAG(USE_ALLOCATOR_SHIM)
#include "tizen_src/ewk/efl_integration/browser/profiling_host/browser_main_extra_parts_profiling.h"
#endif
int PreCreateThreads() override;
int PreMainMessageLoopRun() override;
-#if BUILDFLAG(USE_ALLOCATOR_SHIM)
+#if PA_BUILDFLAG(USE_ALLOCATOR_SHIM)
void PostCreateThreads() override;
BrowserMainExtraPartsProfiling extra_parts_profiling_;
void WRTInspectableWebContentsView::ShowDevTools(bool activate) {
NOTIMPLEMENTED();
}
+void WRTInspectableWebContentsView::SetCornerRadii(const gfx::RoundedCornersF& corner_radii) {
+ NOTIMPLEMENTED();
+}
void WRTInspectableWebContentsView::CloseDevTools() {
NOTIMPLEMENTED();
gfx::NativeView GetNativeView() const override;
#endif
void ShowDevTools(bool activate) override;
+ void SetCornerRadii(const gfx::RoundedCornersF& corner_radii) override;
void CloseDevTools() override;
bool IsDevToolsViewShowing() override;
bool IsDevToolsViewFocused() override;
#include "content/public/browser/navigation_controller.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_view_host.h"
+#include "content/public/common/isolated_world_ids.h"
#include "electron/shell/browser/window_list.h"
#include "electron/shell/common/gin_helper/dictionary.h"
#include "electron/shell/common/options_switches.h"
content::WebContents::Getter GetWebContentsGetter(
content::WebContents* web_contents) {
// Use the FrameTreeNode ID to get the WebContents
- int frame_tree_node_id =
+ content::FrameTreeNodeId frame_tree_node_id =
web_contents->GetPrimaryMainFrame()->GetFrameTreeNodeId();
- if (frame_tree_node_id != content::RenderFrameHost::kNoFrameTreeNodeId) {
+ if (frame_tree_node_id) {
return base::BindRepeating(content::WebContents::FromFrameTreeNodeId,
frame_tree_node_id);
}
content::RenderFrameHost* rfh = web_contents->GetPrimaryMainFrame();
if (rfh) {
rfh->ExecuteJavaScriptWithUserGestureForTests(
- base::UTF8ToUTF16(kBackKeyEventScript), base::NullCallback());
+ base::UTF8ToUTF16(kBackKeyEventScript), base::NullCallback(),
+ content::ISOLATED_WORLD_ID_GLOBAL);
}
if (IsWearableProfile() && native_window->IsFullscreen()) {
auto* rfh = GetActiveNativeWindow()->GetRenderFrameHost();
rfh->ExecuteJavaScriptWithUserGestureForTests(
- base::UTF8ToUTF16(kMenuKeyEventScript), base::NullCallback());
+ base::UTF8ToUTF16(kMenuKeyEventScript), base::NullCallback(),
+ content::ISOLATED_WORLD_ID_GLOBAL);
}
WRTNativeWindow::WRTNativeWindow(const gin_helper::Dictionary& options,
auto* host = GetWindowTreeHost();
gfx::Rect bounds = host->window()->bounds();
- views::Widget::InitParams params;
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ views::Widget::InitParams params(
+ views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET,
+ views::Widget::InitParams::TYPE_WINDOW);
params.bounds = bounds;
params.delegate = this;
- params.type = views::Widget::InitParams::TYPE_WINDOW;
params.remove_standard_frame = !has_frame();
params.native_widget = new WRTNativeWidget(widget(), host);
params.parent = host->window();
}
web_contents_ = web_contents;
+
+ native_window_delegate->SetWebContents(this, web_contents);
+
OnRotation(rotation_degree);
auto window = native_window_delegate->GetTopWindow();
base::UTF8ToUTF16(kSoftKeyboardScript.c_str(), kSoftKeyboardScript.size(),
&js_script);
rfh->ExecuteJavaScriptWithUserGestureForTests(
- js_script, base::NullCallback());
+ js_script, base::NullCallback(), content::ISOLATED_WORLD_ID_GLOBAL);
}
void WRTNativeWindow::OnRotaryEvent(RotaryEventType type) {
base::UTF8ToUTF16(kRotaryEventScript.c_str(), kRotaryEventScript.size(),
&js_script);
rfh->ExecuteJavaScriptWithUserGestureForTests(
- js_script, base::NullCallback());
+ js_script, base::NullCallback(), content::ISOLATED_WORLD_ID_GLOBAL);
}
std::unique_ptr<views::NonClientFrameView>
virtual void Focus(WRTNativeWindow* native_window, bool focus) {}
virtual void OnConformantChange() {}
virtual void RemoveWidgetClient(WRTNativeWindow* native_window) {}
+ virtual void SetWebContents(WRTNativeWindow* native_window,
+ content::WebContents* web_contents) {}
// product specific
using ScreenOrientation = WRTNativeWindow::ScreenOrientation;
void WRTNativeWindowOffScreen::SetContentView(WRTNativeWindow* native_window,
views::View* view) {
- auto web_contents = native_window->GetWebContents();
+ NOTIMPLEMENTED();
+}
+
+void WRTNativeWindowOffScreen::SetWebContents(
+ WRTNativeWindow* native_window,
+ content::WebContents* web_contents) {
auto content_view = web_contents->GetNativeView();
- GetWindowTreeHost(native_window)->window()->AddChild(content_view);
+ auto parent_view = GetWindowTreeHost(native_window)->window();
+ if (!parent_view->Contains(content_view)) {
+ parent_view->AddChild(content_view);
+ }
+
content_view->Show();
std::ignore = GetEflMainLayout(native_window);
}
content::RenderWidgetHostViewAura* GetRenderWidgetHostView(
WRTNativeWindow* native_window);
Evas_Object* GetEflMainLayout(WRTNativeWindow* native_window);
+ void SetWebContents(WRTNativeWindow* native_window,
+ content::WebContents* web_contents) override;
#if BUILDFLAG(IS_TIZEN_TV)
void DidFinishNavigation() override;
return false;
}
- size_t written = base::WriteFile(path,
- reinterpret_cast<char*>(&*data.begin()), data.size());
+ std::string str_data(data.begin(), data.end());
+ size_t written = base::WriteFile(path, str_data);
if (written == data.size()) {
if (notification_set_image(noti, type, path.value().data()) ==
constexpr char kWRTProperty[] = "webruntime";
-void WRTGetter(v8::Local<v8::Name> property_name,
- const v8::PropertyCallbackInfo<v8::Value>& info) {
+void WRTGetter(const v8::FunctionCallbackInfo<v8::Value>& info) {
v8::Isolate* isolate = info.GetIsolate();
v8::Local<v8::Context> context = isolate->GetCurrentContext();
info.GetReturnValue().Set(value);
}
-void WRTSetter(v8::Local<v8::Name> property,
- v8::Local<v8::Value> value,
- const v8::PropertyCallbackInfo<void>& info) {
+void WRTSetter(const v8::FunctionCallbackInfo<v8::Value>& info) {
v8::Isolate* isolate = info.GetIsolate();
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Private> private_key = v8::Private::ForApi(
isolate, gin::StringToV8(isolate, kWRTProperty));
v8::Maybe<bool> result =
- info.This()->SetPrivate(context, private_key, value);
+ info.This()->SetPrivate(context, private_key, info[0]);
if (!result.IsJust() || !result.FromJust())
NOTREACHED();
}
v8::Isolate* isolate = context->GetIsolate();
v8::HandleScope handle_scope(isolate);
v8::Context::Scope context_scope(context);
- std::ignore = context->Global()->SetAccessor(
- context,
+
+ v8::Local<v8::Function> WRTGetter_local= v8::Function::New(context, WRTGetter).FromMaybe(v8::Local<v8::Function>());
+ v8::Local<v8::Function> WRTSetter_local = v8::Function::New(context, WRTSetter).FromMaybe(v8::Local<v8::Function>());
+ context->Global()->SetAccessorProperty(
gin::StringToV8(isolate, "WRT"),
- WRTGetter,
- WRTSetter);
+ WRTGetter_local,
+ WRTSetter_local);
}
// static
if (!focused_element.IsNull()) {
auto input_element = focused_element.DynamicTo<blink::WebInputElement>();
if (!input_element.IsNull())
- is_password_field = input_element.IsPasswordField();
+ is_password_field = input_element.IsTextField();
}
std::move(callback).Run(is_password_field);