mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2024-12-26 17:42:35 +01:00
e9bf3cdb98
This change adds basic Chrome runtime implementations for CefBrowserContext and CefBrowserPlatformDelegate. A Chrome browser window with default frame and styling can now be created using CefBrowserHost::CreateBrowser and some CefClient callbacks will be triggered via the WebContentsObserver implementation in CefBrowserHostImpl. Any additional browser windows created via the Chrome UI will be unmanaged by CEF. The application message loop will block until all browser windows have been closed by the user.
51 lines
1.7 KiB
C++
51 lines
1.7 KiB
C++
// Copyright (c) 2014 The Chromium Embedded Framework 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 "tests/cefsimple/simple_handler.h"
|
|
|
|
#if defined(CEF_X11)
|
|
#include <X11/Xatom.h>
|
|
#include <X11/Xlib.h>
|
|
#endif
|
|
|
|
#include <string>
|
|
|
|
#include "include/base/cef_logging.h"
|
|
#include "include/cef_browser.h"
|
|
|
|
void SimpleHandler::PlatformTitleChange(CefRefPtr<CefBrowser> browser,
|
|
const CefString& title) {
|
|
std::string titleStr(title);
|
|
|
|
#if defined(CEF_X11)
|
|
// Retrieve the X11 display shared with Chromium.
|
|
::Display* display = cef_get_xdisplay();
|
|
DCHECK(display);
|
|
|
|
// Retrieve the X11 window handle for the browser.
|
|
::Window window = browser->GetHost()->GetWindowHandle();
|
|
if (window == kNullWindowHandle)
|
|
return;
|
|
|
|
// Retrieve the atoms required by the below XChangeProperty call.
|
|
const char* kAtoms[] = {"_NET_WM_NAME", "UTF8_STRING"};
|
|
Atom atoms[2];
|
|
int result =
|
|
XInternAtoms(display, const_cast<char**>(kAtoms), 2, false, atoms);
|
|
if (!result)
|
|
NOTREACHED();
|
|
|
|
// Set the window title.
|
|
XChangeProperty(display, window, atoms[0], atoms[1], 8, PropModeReplace,
|
|
reinterpret_cast<const unsigned char*>(titleStr.c_str()),
|
|
titleStr.size());
|
|
|
|
// TODO(erg): This is technically wrong. So XStoreName and friends expect
|
|
// this in Host Portable Character Encoding instead of UTF-8, which I believe
|
|
// is Compound Text. This shouldn't matter 90% of the time since this is the
|
|
// fallback to the UTF8 property above.
|
|
XStoreName(display, browser->GetHost()->GetWindowHandle(), titleStr.c_str());
|
|
#endif // defined(CEF_X11)
|
|
}
|