
* chore: bump chromium in DEPS to d5c9bf9e2a18fa508201a88e5803bec1d107b1ae * chore: bump chromium in DEPS to 45f1316afae33e52c92480b34bf4f7fe4a7db898 * update patches * WillCreateURLLoaderFactory now gets a ukm_source_id Refs:2346803
* ink_drop_visible_opacity -> GetInkDropVisibleOpacity Refs:2415368
* chore: bump chromium in DEPS to ddb5b6db5e35ab1a7b5adbd9f15373af6c35ea2a * 2418471: PDF Viewer update: Add missing aria-labels to various buttons.2418471
* update printing.patch given print settings mojoification Refs:2409467
* update patches * content::BluetoothChooser::Event -> content::BluetoothChooserEvent Refs:2387901
* set_ink_drop_base_color -> SetInkDropBaseColor Refs:2419388
* chore: bump chromium in DEPS to ecf7c9ee830d4d85f300b461a2fa13aa40c79a4c * update patches * gfx::ConvertPointToPixel -> gfx::ConvertPointToPixels Refs:2418568
* remove ContentSettingsObserver::AllowStorage() Refs:2401847
* service_manager::kCrashDumpSignal -> kCrashDumpSignal Refs:2417073
* chore: bump chromium in DEPS to abdb7ebe5f8c8328b8f435283df90d0a3ecff7bd * chore: bump chromium in DEPS to 2a7e138ab1066534ceb2622e8a9d2c8ebf574215 * chore: bump chromium in DEPS to ab1884e75ced904e4276851eb4e1ad89919ca93b * chore: bump chromium in DEPS to a12413902380dcc2a73ac74d582328280a8af686 * Fixup printing patch2428623
* Fixup OSR patch2415128
* Make ExtensionURLLoaderFactory always owned by its |receivers_|.2357523
* Add deprecated_default_sources_assignment_filter variable2416496
* Fixup patch indices * Remove several references to BrowserPlugin from content2401031
* Remove SurfaceEmbeddingTime and LocalSurfaceIdAllocation2415128
* Add DragOperation and AllowedDragOperations Mojo types2196167
* chore: bump chromium in DEPS to 378450342cf6aa160663d0ce3a178a11b570c25a * Fixup patch indices * Remove SurfaceEmbeddingTime and LocalSurfaceIdAllocation2415128
* Add DragOperation and AllowedDragOperations Mojo types2196167
* 2426564: Remove global sources assignment filter value2426564
* Fixup blink_local_frame.patch * [XProto] Remove a subset of ui/gfx/x/x11.h2430328
* Fixup patch indices * Remove several references to BrowserPlugin from content2401031
* Remove lossy ConvertSizeToPixel() methods2419534
* serial: Use USB driver name to disambiguate ports2413176
* Remove set_sources_filter import * Fix ModMask usage * [XProto] Remove usage of all Xlib headers2392140
* [XProto] Remove usage of Xlib Visuals2429933
* Skip Angle manifest file2425197
* Add whole src\third_party\angle\.git directory This directory is needed in order to properly generate gen/angle/angle_commit.h * [libvpx] Fix HighBD config on Windows ARM642437745
* update patches * fix: correct calling convention for Windows on Arm2440717
* Add third_party/angle/.git to the archive before adding the rest of the source * fixup source caching on Windows * Fixup erroneous close paren * fixup for goma issues * This should work * chore: bump chromium roll manually2435142
This landed the day after we paused roller-bot and may resolve the visibility test flakes that we're seeing. h/t to @jkleinsc for finding this with me. * chore: remove obsoleted cherry-pick fix for libvpx2437745
* chore: remove obsoleted cherry-pick libvpx patch2437745
* chore: re-export patches * chore: add tracer comment to visibility-stat-spec. The line numbers between the source and the CI runs don't seem to match up, so this temp tracer is to help track the source of that difference. * chore: bump chromium in DEPS to 7c2b8cc3b8638aee8abeb013042a6c1d15b2da6b * update patches * impl SortingLSH service Refs:2425327
* 2446525: [Flash] Remove some Flash APIs2446525
* 2440974: Reland "Delete service_manager/embedder/switches.h"2440974
* 2359402: Remove ContentBrowserClient::NonNetworkURLLoaderFactoryDeprecatedMap.2359402
* 2250506: Implement tabs.removeCSS2250506
* 2429143: Remove implicit-conversion-to-integer ConvertRectToPixel() methods.2429143
* 2444430: Remove DataElementType::kBlob2444430
* 2441964: Clean up WebView public API2441964
* 2357523: Make ExtensionURLLoaderFactory always owned by its |receivers_|.2357523
* 2461606: Use blink::mojom::PreferredColorScheme instead of blink::PreferredColorScheme2461606
* 2461235: a11y inspect reorg: move PropertyFilter struct to a new location2461235
* remove flash support * fix frame_host_manager patch * fix lint * remove flash info from docs * fix build * fix osr * chore: bump chromium in DEPS to 9269f9eb1d98d29564c2b2ab97f30c6e148c4e11 * fix visibilityState tests * 2463049: Replace all uses of web_pref::AutoplayPolicy with mojom::AutoplayPolicy2463049
* update patches * fix tests harder * 2414921: Add Group and Ungroup functions to Tabs extension API2414921
* more test fix * Remove all keyboard related usage of Xlib Refs:2436787
* fix linux build * 2453807: [XProto] Remove usage of Xlib error handling2453807
* lint * fixup! 2453807: [XProto] Remove usage of Xlib error handling * disable CalculateNativeWinOcclusion on win ci * remove UploadBlob from docs * Update appveyor.yml Co-authored-by: Andy Locascio <andy@slack-corp.com> Co-authored-by: John Kleinschmidt <jkleinsc@github.com> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> Co-authored-by: Jeremy Rose <nornagon@nornagon.net> Co-authored-by: Electron Bot <anonymous@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com> Co-authored-by: Jeremy Rose <jeremya@chromium.org>
90 lines
2.9 KiB
C++
90 lines
2.9 KiB
C++
// Copyright (c) 2014 GitHub, Inc.
|
|
// Use of this source code is governed by the MIT license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "shell/browser/ui/x/x_window_utils.h"
|
|
|
|
#include <memory>
|
|
|
|
#include "base/environment.h"
|
|
#include "base/strings/string_util.h"
|
|
#include "base/threading/thread_restrictions.h"
|
|
#include "dbus/bus.h"
|
|
#include "dbus/message.h"
|
|
#include "dbus/object_proxy.h"
|
|
#include "ui/base/x/x11_util.h"
|
|
#include "ui/gfx/x/x11_atom_cache.h"
|
|
#include "ui/gfx/x/xproto.h"
|
|
#include "ui/gfx/x/xproto_util.h"
|
|
|
|
namespace electron {
|
|
|
|
void SetWMSpecState(x11::Window window, bool enabled, x11::Atom state) {
|
|
ui::SendClientMessage(window, ui::GetX11RootWindow(),
|
|
gfx::GetAtom("_NET_WM_STATE"),
|
|
{enabled ? 1 : 0, static_cast<uint32_t>(state),
|
|
static_cast<uint32_t>(x11::Window::None), 1, 0});
|
|
}
|
|
|
|
void SetWindowType(x11::Window window, const std::string& type) {
|
|
std::string type_prefix = "_NET_WM_WINDOW_TYPE_";
|
|
x11::Atom window_type = gfx::GetAtom(type_prefix + base::ToUpperASCII(type));
|
|
ui::SetProperty(window, gfx::GetAtom("_NET_WM_WINDOW_TYPE"), x11::Atom::ATOM,
|
|
window_type);
|
|
}
|
|
|
|
bool ShouldUseGlobalMenuBar() {
|
|
base::ThreadRestrictions::ScopedAllowIO allow_io;
|
|
std::unique_ptr<base::Environment> env(base::Environment::Create());
|
|
if (env->HasVar("ELECTRON_FORCE_WINDOW_MENU_BAR"))
|
|
return false;
|
|
|
|
dbus::Bus::Options options;
|
|
scoped_refptr<dbus::Bus> bus(new dbus::Bus(options));
|
|
|
|
dbus::ObjectProxy* object_proxy =
|
|
bus->GetObjectProxy(DBUS_SERVICE_DBUS, dbus::ObjectPath(DBUS_PATH_DBUS));
|
|
dbus::MethodCall method_call(DBUS_INTERFACE_DBUS, "ListNames");
|
|
std::unique_ptr<dbus::Response> response(object_proxy->CallMethodAndBlock(
|
|
&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT));
|
|
if (!response) {
|
|
bus->ShutdownAndBlock();
|
|
return false;
|
|
}
|
|
|
|
dbus::MessageReader reader(response.get());
|
|
dbus::MessageReader array_reader(nullptr);
|
|
if (!reader.PopArray(&array_reader)) {
|
|
bus->ShutdownAndBlock();
|
|
return false;
|
|
}
|
|
while (array_reader.HasMoreData()) {
|
|
std::string name;
|
|
if (array_reader.PopString(&name) &&
|
|
name == "com.canonical.AppMenu.Registrar") {
|
|
bus->ShutdownAndBlock();
|
|
return true;
|
|
}
|
|
}
|
|
|
|
bus->ShutdownAndBlock();
|
|
return false;
|
|
}
|
|
|
|
void MoveWindowToForeground(x11::Window window) {
|
|
MoveWindowAbove(window, static_cast<x11::Window>(0));
|
|
}
|
|
|
|
void MoveWindowAbove(x11::Window window, x11::Window other_window) {
|
|
ui::SendClientMessage(window, ui::GetX11RootWindow(),
|
|
gfx::GetAtom("_NET_RESTACK_WINDOW"),
|
|
{2, static_cast<uint32_t>(other_window),
|
|
static_cast<uint32_t>(x11::StackMode::Above), 0, 0});
|
|
}
|
|
|
|
bool IsWindowValid(x11::Window window) {
|
|
auto* conn = x11::Connection::Get();
|
|
return conn->GetWindowAttributes({window}).Sync();
|
|
}
|
|
|
|
} // namespace electron
|