Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(440)

Side by Side Diff: ui/base/x/x11_util.cc

Issue 291093012: Fix some views unittests on desktop Linux. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: docs Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This file defines utility functions for X11 (Linux only). This code has been 5 // This file defines utility functions for X11 (Linux only). This code has been
6 // ported from XCB since we can't use XCB on Ubuntu while its 32-bit support 6 // ported from XCB since we can't use XCB on Ubuntu while its 32-bit support
7 // remains woefully incomplete. 7 // remains woefully incomplete.
8 8
9 #include "ui/base/x/x11_util.h" 9 #include "ui/base/x/x11_util.h"
10 10
(...skipping 1174 matching lines...) Expand 10 before | Expand all | Expand 10 after
1185 } 1185 }
1186 1186
1187 void SetDefaultX11ErrorHandlers() { 1187 void SetDefaultX11ErrorHandlers() {
1188 SetX11ErrorHandlers(NULL, NULL); 1188 SetX11ErrorHandlers(NULL, NULL);
1189 } 1189 }
1190 1190
1191 bool IsX11WindowFullScreen(XID window) { 1191 bool IsX11WindowFullScreen(XID window) {
1192 // If _NET_WM_STATE_FULLSCREEN is in _NET_SUPPORTED, use the presence or 1192 // If _NET_WM_STATE_FULLSCREEN is in _NET_SUPPORTED, use the presence or
1193 // absence of _NET_WM_STATE_FULLSCREEN in _NET_WM_STATE to determine 1193 // absence of _NET_WM_STATE_FULLSCREEN in _NET_WM_STATE to determine
1194 // whether we're fullscreen. 1194 // whether we're fullscreen.
1195 std::vector<Atom> supported_atoms; 1195 Atom fullscreen_atom = GetAtom("_NET_WM_STATE_FULLSCREEN");
1196 if (GetAtomArrayProperty(GetX11RootWindow(), 1196 if (WmSupportsHint(fullscreen_atom)) {
1197 "_NET_SUPPORTED", 1197 std::vector<Atom> atom_properties;
1198 &supported_atoms)) { 1198 if (GetAtomArrayProperty(window,
1199 Atom atom = GetAtom("_NET_WM_STATE_FULLSCREEN"); 1199 "_NET_WM_STATE",
1200 1200 &atom_properties)) {
1201 if (std::find(supported_atoms.begin(), supported_atoms.end(), atom) 1201 return std::find(atom_properties.begin(),
1202 != supported_atoms.end()) { 1202 atom_properties.end(),
1203 std::vector<Atom> atom_properties; 1203 fullscreen_atom) !=
1204 if (GetAtomArrayProperty(window, 1204 atom_properties.end();
1205 "_NET_WM_STATE",
1206 &atom_properties)) {
1207 return std::find(atom_properties.begin(), atom_properties.end(), atom)
1208 != atom_properties.end();
1209 }
1210 } 1205 }
1211 } 1206 }
1212 1207
1213 gfx::Rect window_rect; 1208 gfx::Rect window_rect;
1214 if (!ui::GetWindowRect(window, &window_rect)) 1209 if (!ui::GetWindowRect(window, &window_rect))
1215 return false; 1210 return false;
1216 1211
1217 // We can't use gfx::Screen here because we don't have an aura::Window. So 1212 // We can't use gfx::Screen here because we don't have an aura::Window. So
1218 // instead just look at the size of the default display. 1213 // instead just look at the size of the default display.
1219 // 1214 //
1220 // TODO(erg): Actually doing this correctly would require pulling out xrandr, 1215 // TODO(erg): Actually doing this correctly would require pulling out xrandr,
1221 // which we don't even do in the desktop screen yet. 1216 // which we don't even do in the desktop screen yet.
1222 ::XDisplay* display = gfx::GetXDisplay(); 1217 ::XDisplay* display = gfx::GetXDisplay();
1223 ::Screen* screen = DefaultScreenOfDisplay(display); 1218 ::Screen* screen = DefaultScreenOfDisplay(display);
1224 int width = WidthOfScreen(screen); 1219 int width = WidthOfScreen(screen);
1225 int height = HeightOfScreen(screen); 1220 int height = HeightOfScreen(screen);
1226 return window_rect.size() == gfx::Size(width, height); 1221 return window_rect.size() == gfx::Size(width, height);
1227 } 1222 }
1228 1223
1224 bool WmSupportsHint(Atom atom) {
1225 std::vector<Atom> supported_atoms;
1226 if (!GetAtomArrayProperty(GetX11RootWindow(),
1227 "_NET_SUPPORTED",
1228 &supported_atoms)) {
1229 return false;
1230 }
1231
1232 return std::find(supported_atoms.begin(), supported_atoms.end(), atom) !=
1233 supported_atoms.end();
1234 }
1235
1229 const unsigned char* XRefcountedMemory::front() const { 1236 const unsigned char* XRefcountedMemory::front() const {
1230 return x11_data_; 1237 return x11_data_;
1231 } 1238 }
1232 1239
1233 size_t XRefcountedMemory::size() const { 1240 size_t XRefcountedMemory::size() const {
1234 return length_; 1241 return length_;
1235 } 1242 }
1236 1243
1237 XRefcountedMemory::~XRefcountedMemory() { 1244 XRefcountedMemory::~XRefcountedMemory() {
1238 XFree(x11_data_); 1245 XFree(x11_data_);
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
1371 << "request_code " << static_cast<int>(error_event.request_code) << ", " 1378 << "request_code " << static_cast<int>(error_event.request_code) << ", "
1372 << "minor_code " << static_cast<int>(error_event.minor_code) 1379 << "minor_code " << static_cast<int>(error_event.minor_code)
1373 << " (" << request_str << ")"; 1380 << " (" << request_str << ")";
1374 } 1381 }
1375 1382
1376 // ---------------------------------------------------------------------------- 1383 // ----------------------------------------------------------------------------
1377 // End of x11_util_internal.h 1384 // End of x11_util_internal.h
1378 1385
1379 1386
1380 } // namespace ui 1387 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698