mirror of
https://github.com/ONLYOFFICE/desktop-sdk.git
synced 2026-02-10 18:15:05 +08:00
.
This commit is contained in:
@ -88,9 +88,5 @@ SOURCES += \
|
||||
\
|
||||
$$CEF_SRC_PATH/tests/shared/browser/main_message_loop_external_pump_win.cc \
|
||||
$$CEF_SRC_PATH/tests/shared/browser/resource_util_win.cc \
|
||||
$$CEF_SRC_PATH/tests/shared/browser/util_win.cc
|
||||
|
||||
!desktop_sdk_html {
|
||||
SOURCES += \
|
||||
$$CEF_SRC_PATH/tests/shared/browser/util_win.cc \
|
||||
$$CEF_SRC_PATH/tests/cefclient/browser/browser_window_std_win.cc
|
||||
}
|
||||
|
||||
@ -144,10 +144,6 @@ void RootWindowGtk::Show(ShowMode mode) {
|
||||
|
||||
// Show the GTK window.
|
||||
gtk_widget_show_all(window_);
|
||||
|
||||
#ifdef ASC_HIDE_WINDOW
|
||||
gtk_widget_hide(window_);
|
||||
#endif
|
||||
|
||||
if (mode == ShowMinimized)
|
||||
MinimizeWindow(GTK_WINDOW(window_));
|
||||
|
||||
@ -198,10 +198,9 @@ void RootWindowWin::Show(ShowMode mode) {
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#ifndef ASC_HIDE_WINDOW
|
||||
|
||||
ShowWindow(hwnd_, nCmdShow);
|
||||
UpdateWindow(hwnd_);
|
||||
#endif
|
||||
}
|
||||
|
||||
void RootWindowWin::Hide() {
|
||||
|
||||
@ -5,8 +5,6 @@ TARGET = HtmlFileInternal
|
||||
CONFIG += app_bundle
|
||||
TEMPLATE = app
|
||||
|
||||
#DEFINES += ASC_HIDE_WINDOW
|
||||
|
||||
CORE_ROOT_DIR = $$PWD/../../../core
|
||||
PWD_ROOT_DIR = $$PWD
|
||||
include($$CORE_ROOT_DIR/Common/base.pri)
|
||||
@ -23,6 +21,8 @@ core_linux {
|
||||
include($$CORE_ROOT_DIR/DesktopEditor/Qt_build/graphics/project/graphics.pri)
|
||||
}
|
||||
|
||||
DESTDIR=$$CORE_BUILDS_LIBRARIES_PATH
|
||||
|
||||
INCLUDEPATH += \
|
||||
$$CORE_ROOT_DIR/DesktopEditor/agg-2.4/include \
|
||||
$$CORE_ROOT_DIR/DesktopEditor/freetype-2.5.2/include
|
||||
@ -34,25 +34,18 @@ HEADERS += \
|
||||
SOURCES += \
|
||||
$$PWD/src/client_renderer_wrapper.cpp
|
||||
|
||||
CONFIG += desktop_sdk_html
|
||||
|
||||
DESTDIR = $$PWD/core_build/linux_64/debug
|
||||
SOURCES += \
|
||||
$$PWD/src/main.cpp
|
||||
|
||||
win32 {
|
||||
include($$CORE_ROOT_DIR/../desktop-sdk/ChromiumBasedEditors/lib/AscDocumentsCore_windows.pri)
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/src/main_windows.cpp
|
||||
}
|
||||
linux-g++ | linux-g++-64 | linux-g++-32 {
|
||||
include($$CORE_ROOT_DIR/../desktop-sdk/ChromiumBasedEditors/lib/AscDocumentsCore_linux.pri)
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/src/main_linux.cpp
|
||||
|
||||
CONFIG += link_pkgconfig c++11
|
||||
PKGCONFIG += glib-2.0 gdk-2.0 gtkglext-1.0 atk cairo gtk+-unix-print-2.0
|
||||
LIBS += -lcurl -lz
|
||||
CONFIG += link_pkgconfig c++11
|
||||
PKGCONFIG += glib-2.0 gdk-2.0 gtkglext-1.0 atk cairo gtk+-unix-print-2.0
|
||||
LIBS += -lcurl -lz
|
||||
|
||||
#CONFIG += build_for_centos6
|
||||
|
||||
|
||||
@ -49,7 +49,7 @@
|
||||
#include "../../../ChromiumBasedEditors/lib/src/filedownloader.h"
|
||||
|
||||
//#define ASC_HTML_FILE_INTERNAL_LOG
|
||||
#include <iostream>
|
||||
|
||||
namespace asc_client_renderer
|
||||
{
|
||||
class CAscEditorNativeV8Handler : public CefV8Handler
|
||||
@ -154,7 +154,7 @@ public:
|
||||
CefString& exception) OVERRIDE
|
||||
{
|
||||
if (name == "InitSDK")
|
||||
{std::cout << "InitSDK" << std::endl;
|
||||
{
|
||||
std::string sDivId = "editor_sdk";
|
||||
CefRefPtr<CefV8Value> val = *arguments.begin();
|
||||
if (val->IsValid() && val->IsString())
|
||||
@ -169,7 +169,7 @@ public:
|
||||
return true;
|
||||
}
|
||||
else if (name == "OpenEmptyDocument")
|
||||
{std::cout << "OpenEmptyDocument" << std::endl;
|
||||
{
|
||||
std::string sEmptyDocument = "DOCY;v5;36996;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";
|
||||
sEmptyDocument += "AAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAICAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAADAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAABAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAUCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAGAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAABwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAkCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAIAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAoCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAMAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAnAQAAAEEAAAAMwAwAAIKAAAATABpAG4AZQBkAAkBAAAABAMEAAAAYQAxAAsEAAAAYwAAAAUAAAAABhsAAAAJBg8AAAAKBaCGAQALAQENBQAAAAAbBgAAAAAHSwAAAAMEAAAAAAAAAAU4AAAAAAkAAAAAAQACBAEAAAABCQAAAAABAAIEAAAAAAIJAAAAAAEAAgQBAAAAAwkAAAAAAQACBAAAAAAGAAAAAA8AAAAAEAYAAAACBgAAAAAR4gMAAABBAAAAAQEAAAAAAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAAAQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAE8AAAABAQAAAAICAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED2dnZAgYAAAAAAE8AAAABAQAAAAMCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED2dnZAgYAAAAAAE8AAAABAQAAAAQCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDpqamAgYAAAAAAE8AAAABAQAAAAUCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDpqamAgYAAAAAAE8AAAABAQAAAAYCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDpqamAgYAAAAAAE8AAAABAQAAAAcCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDpqamAgYAAAAAAEEAAAABAQAAAAkCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAIAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACwIAAAAAAxIAAAABBgAAAAAJBgAA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";
|
||||
sEmptyDocument += "AAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPy29sCBgAAAAAATwAAAAEBAAAABAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPZlZQCBgAAAAAATwAAAAEBAAAABQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPZlZQCBgAAAAAATwAAAAEBAAAABgIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPZlZQCBgAAAAAATwAAAAEBAAAABwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPZlZQCBgAAAAAAQQAAAAEBAAAACQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAgCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAALAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACgIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAwCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAACyBAAAAQQAAAAzADMAAiAAAABMAGkAbgBlAGQAIAAtACAAQQBjAGMAZQBuAHQAIAAzAAkBAAAABAMEAAAAYQAxAAsEAAAAYwAAAAUAAAAABhsAAAAJBg8AAAAKBaCGAQALAQENBQAAAAAbBgAAAAAHSwAAAAMEAAAAAAAAAAU4AAAAAAkAAAAAAQACBAEAAAABCQAAAAABAAIEAAAAAAIJAAAAAAEAAgQBAAAAAwkAAAAAAQACBAAAAAAGAAAAAA8AAAAAEAYAAAACBgAAAAAR4gMAAABBAAAAAQEAAAAAAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAAAQIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAE8AAAABAQAAAAICAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED6vHdAgYAAAAAAE8AAAABAQAAAAMCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAED6vHdAgYAAAAAAE8AAAABAQAAAAQCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDwtabAgYAAAAAAE8AAAABAQAAAAUCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDwtabAgYAAAAAAE8AAAABAQAAAAYCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDwtabAgYAAAAAAE8AAAABAQAAAAcCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGFAAAAAEGCAAAAAABAAEDwtabAgYAAAAAAEEAAAABAQAAAAkCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAIAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAoCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAMAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAsgQAAAEEAAAAMwA0AAIgAAAATABpAG4AZQBkACAALQAgAEEAYwBjAGUAbgB0ACAANAAJAQAAAAQDBAAAAGEAMQALBAAAAGMAAAAFAAAAAAYbAAAACQYPAAAACgWghgEACwEBDQUAAAAAGwYAAAAAB0sAAAADBAAAAAAAAAAFOAAAAAAJAAAAAAEAAgQBAAAAAQkAAAAAAQACBAAAAAACCQAAAAABAAIEAQAAAAMJAAAAAAEAAgQAAAAABgAAAAAPAAAAABAGAAAAAgYAAAAAEeIDAAAAQQAAAAEBAAAAAAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAECAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABPAAAAAQEAAAACAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA+Xf7AIGAAAAAABPAAAAAQEAAAADAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA+Xf7AIGAAAAAABPAAAAAQEAAAAEAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA7KhxwIGAAAAAABPAAAAAQEAAAAFAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA7KhxwIGAAAAAABPAAAAAQEAAAAGAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA7KhxwIGAAAAAABPAAAAAQEAAAAHAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABhQAAAABBggAAAAAAQABA7KhxwIGAAAAAABBAAAAAQEAAAAJAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAACAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAAEEAAAABAQAAAAsCAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAAKAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAAQQAAAAEBAAAADAIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYGAAAAAgYAAAAAALIEAAABBAAAADMANQACIAAAAEwAaQBuAGUAZAAgAC0AIABBAGMAYwBlAG4AdAAgADUACQEAAAAEAwQAAABhADEACwQAAABjAAAABQAAAAAGGwAAAAkGDwAAAAoFoIYBAAsBAQ0FAAAAABsGAAAAAAdLAAAAAwQAAAAAAAAABTgAAAAACQAAAAABAAIEAQAAAAEJAAAAAAEAAgQAAAAAAgkAAAAAAQACBAEAAAADCQAAAAABAAIEAAAAAAYAAAAADwAAAAAQBgAAAAIGAAAAABHiAwAAAEEAAAABAQAAAAACAAAAAAMSAAAAAQYAAAAACQYAAAAAGwYAAAAABAoAAAAFAAAAAAYAAAAABQAAAAAGBgAAAAIGAAAAAABBAAAAAQEAAAABAgAAAAADEgAAAAEGAAAAAAkGAAAAABsGAAAAAAQKAAAABQAAAAAGAAAAAAUAAAAABgYAAAACBgAAAAAATwAAAAEBAAAAAgIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAAAAQYIAAAAAAEAAQPa7vMCBgAAAAAATwAAAAEBAAAAAwIAAAAAAxIAAAABBgAAAAAJBgAAAAAbBgAAAAAECgAAAAUAAAAABgAAAAAFAAAAAAYUAAA";
|
||||
@ -188,7 +188,7 @@ public:
|
||||
return true;
|
||||
}
|
||||
else if (name == "SetDestinationDocumentPath")
|
||||
{std::cout << "SetDestinationDocumentPath" << std::endl;
|
||||
{
|
||||
CefRefPtr<CefV8Value> val = *arguments.begin();
|
||||
if (val->IsValid() && val->IsString())
|
||||
{
|
||||
@ -199,7 +199,7 @@ public:
|
||||
return true;
|
||||
}
|
||||
else if (name == "GetImageUrl")
|
||||
{std::cout << "GetImageUrl" << std::endl;
|
||||
{
|
||||
std::vector<CefRefPtr<CefV8Value> >::const_iterator iter = arguments.begin();
|
||||
|
||||
std::wstring sUrl = (*iter)->GetStringValue().ToWString(); ++iter;
|
||||
@ -237,7 +237,7 @@ public:
|
||||
return true;
|
||||
}
|
||||
else if (name == "SaveDocument")
|
||||
{std::cout << "SaveDocument" << std::endl;
|
||||
{
|
||||
if (arguments.size() > 0)
|
||||
{
|
||||
CefRefPtr<CefV8Value> val = *arguments.begin();
|
||||
@ -269,7 +269,7 @@ public:
|
||||
return true;
|
||||
}
|
||||
else if (name == "Exit")
|
||||
{std::cout << "Exit" << std::endl;
|
||||
{
|
||||
#ifdef ASC_HTML_FILE_INTERNAL_LOG
|
||||
std::string sLog = U_TO_UTF8((NSFile::GetProcessDirectory())) + "/convert.log";
|
||||
FILE* f = fopen(sLog.c_str(), "a+");
|
||||
@ -285,7 +285,7 @@ public:
|
||||
return true;
|
||||
}
|
||||
else if (name == "AddHtml")
|
||||
{std::cout << "AddHtml" << std::endl;
|
||||
{
|
||||
#ifdef ASC_HTML_FILE_INTERNAL_LOG
|
||||
std::string sLog = U_TO_UTF8((NSFile::GetProcessDirectory())) + "/convert.log";
|
||||
FILE* f = fopen(sLog.c_str(), "a+");
|
||||
@ -393,7 +393,6 @@ class ClientRenderDelegate : public client::ClientAppRenderer::Delegate {
|
||||
CefRefPtr<CefFrame> frame,
|
||||
CefRefPtr<CefV8Context> context) OVERRIDE {
|
||||
|
||||
std::cout << "OnContextCreated\n";
|
||||
message_router_->OnContextCreated(browser, frame, context);
|
||||
|
||||
// add AscEditorNative
|
||||
|
||||
@ -57,47 +57,29 @@
|
||||
class CGlobalHtmlFileParams
|
||||
{
|
||||
public:
|
||||
std::vector<std::wstring> sSdkPath;
|
||||
std::wstring sDstPath;
|
||||
std::vector<std::wstring> arFiles;
|
||||
std::vector<std::wstring> sSdkPath;
|
||||
std::wstring sDstPath;
|
||||
std::vector<std::wstring> arFiles;
|
||||
|
||||
bool m_bIsRunned;
|
||||
CefRefPtr<client::ClientHandler> m_client;
|
||||
|
||||
public:
|
||||
CGlobalHtmlFileParams()
|
||||
{
|
||||
m_bIsRunned = true;
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class CRenderHandler : public CefRenderHandler
|
||||
class CHtmlRenderHandler : public CefRenderHandler
|
||||
{
|
||||
public:
|
||||
CRenderHandler() {}
|
||||
CHtmlRenderHandler() {}
|
||||
|
||||
// FrameListener interface
|
||||
public:
|
||||
///
|
||||
// Called to retrieve the view rectangle which is relative to screen
|
||||
// coordinates. Return true if the rectangle was provided.
|
||||
///
|
||||
/*--cef()--*/
|
||||
public:
|
||||
virtual bool GetViewRect(CefRefPtr<CefBrowser> browser, CefRect& rect)
|
||||
{
|
||||
rect = CefRect(0, 0, 1000, 1000);
|
||||
return true;
|
||||
}
|
||||
|
||||
///
|
||||
// Called when an element should be painted. Pixel values passed to this
|
||||
// method are scaled relative to view coordinates based on the value of
|
||||
// CefScreenInfo.device_scale_factor returned from GetScreenInfo. |type|
|
||||
// indicates whether the element is the view or the popup widget. |buffer|
|
||||
// contains the pixel data for the whole image. |dirtyRects| contains the set
|
||||
// of rectangles in pixel coordinates that need to be repainted. |buffer| will
|
||||
// be |width|*|height|*4 bytes in size and represents a BGRA image with an
|
||||
// upper-left origin.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void OnPaint(CefRefPtr<CefBrowser> browser,
|
||||
PaintElementType type,
|
||||
const RectList& dirtyRects,
|
||||
@ -109,7 +91,7 @@ public:
|
||||
}
|
||||
|
||||
public:
|
||||
IMPLEMENT_REFCOUNTING(CRenderHandler);
|
||||
IMPLEMENT_REFCOUNTING(CHtmlRenderHandler);
|
||||
|
||||
};
|
||||
|
||||
@ -122,14 +104,14 @@ private:
|
||||
public:
|
||||
CGlobalHtmlFileParams* m_global;
|
||||
|
||||
CefRefPtr<CRenderHandler> m_render;
|
||||
CefRefPtr<CHtmlRenderHandler> m_render;
|
||||
CefRefPtr<CefBrowser> m_browser;
|
||||
|
||||
public:
|
||||
CHtmlClientHandler(std::string sUrl, CGlobalHtmlFileParams* params) : client::ClientHandler(this, true, sUrl)
|
||||
CHtmlClientHandler(CGlobalHtmlFileParams* params) : client::ClientHandler(this, true, "html_file")
|
||||
{
|
||||
m_global = params;
|
||||
m_render = new CRenderHandler();
|
||||
m_render = new CHtmlRenderHandler();
|
||||
}
|
||||
|
||||
virtual CefRefPtr<CefRenderHandler> GetRenderHandler()
|
||||
@ -137,8 +119,12 @@ public:
|
||||
return m_render;
|
||||
}
|
||||
|
||||
void Init(const std::vector<std::wstring>& arSdks, const std::vector<std::wstring>& arFiles, const std::wstring& sDestinationFile)
|
||||
void Init()
|
||||
{
|
||||
std::vector<std::wstring>& arSdks = m_global->sSdkPath;
|
||||
std::vector<std::wstring>& arFiles = m_global->arFiles;
|
||||
std::wstring& sDestinationFile = m_global->sDstPath;
|
||||
|
||||
m_sCachePath = sDestinationFile;
|
||||
std::wstring sUniquePath = NSFile::CFileBinary::CreateTempFileWithUniqueName(NSFile::CFileBinary::GetTempPath(), L"HTML");
|
||||
|
||||
@ -302,15 +288,12 @@ window.onload = function ()\
|
||||
CefRefPtr<CefProcessMessage> message)
|
||||
{
|
||||
CEF_REQUIRE_UI_THREAD();
|
||||
std::cout << "main:Exit" << std::endl;
|
||||
|
||||
// Check for messages from the client renderer.
|
||||
std::string message_name = message->GetName();
|
||||
if (message_name == "Exit")
|
||||
{
|
||||
m_global->m_bIsRunned = false;
|
||||
m_browser->GetHost()->CloseBrowser(true);
|
||||
client::MainMessageLoop::Get()->Quit();
|
||||
this->Exit();
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -338,40 +321,41 @@ window.onload = function ()\
|
||||
{
|
||||
CEF_REQUIRE_UI_THREAD();
|
||||
|
||||
std::cout << "renderer:crash" << std::endl;
|
||||
m_global->m_bIsRunned = false;
|
||||
this->Exit();
|
||||
}
|
||||
|
||||
void Exit()
|
||||
{
|
||||
if (m_browser && m_browser->GetHost())
|
||||
m_browser->GetHost()->CloseBrowser(true);
|
||||
client::MainMessageLoop::Get()->Quit();
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
// Called when the browser is created.
|
||||
virtual void OnBrowserCreated(CefRefPtr<CefBrowser> browser)
|
||||
{
|
||||
std::cout << "CDelegate::OnBrowserCreated" << std::endl;
|
||||
m_browser = browser;
|
||||
}
|
||||
|
||||
// Called when the browser is closing.
|
||||
virtual void OnBrowserClosing(CefRefPtr<CefBrowser> browser)
|
||||
{
|
||||
std::cout << "CDelegate::OnBrowserClosing" << std::endl;
|
||||
}
|
||||
|
||||
// Called when the browser has been closed.
|
||||
virtual void OnBrowserClosed(CefRefPtr<CefBrowser> browser)
|
||||
{
|
||||
std::cout << "CDelegate::OnBrowserClosed" << std::endl;
|
||||
}
|
||||
|
||||
// Set the window URL address.
|
||||
virtual void OnSetAddress(const std::string& url)
|
||||
{
|
||||
std::cout << "CDelegate::OnSetAddress" << std::endl;
|
||||
}
|
||||
|
||||
// Set the window title.
|
||||
virtual void OnSetTitle(const std::string& title)
|
||||
{
|
||||
std::cout << "CDelegate::OnSetTitle" << std::endl;
|
||||
}
|
||||
|
||||
// Set the Favicon image.
|
||||
@ -380,7 +364,6 @@ window.onload = function ()\
|
||||
// Set fullscreen mode.
|
||||
virtual void OnSetFullscreen(bool fullscreen)
|
||||
{
|
||||
std::cout << "CDelegate::OnSetFullscreen" << std::endl;
|
||||
}
|
||||
|
||||
// Set the loading state.
|
||||
@ -388,14 +371,12 @@ window.onload = function ()\
|
||||
bool canGoBack,
|
||||
bool canGoForward)
|
||||
{
|
||||
std::cout << "CDelegate::OnSetLoadingState" << std::endl;
|
||||
}
|
||||
|
||||
// Set the draggable regions.
|
||||
virtual void OnSetDraggableRegions(
|
||||
const std::vector<CefDraggableRegion>& regions)
|
||||
{
|
||||
std::cout << "CDelegate::OnSetDraggableRegions" << std::endl;
|
||||
}
|
||||
|
||||
// Set focus to the next/previous control.
|
||||
|
||||
@ -30,8 +30,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <string>
|
||||
#include <stdio.h>
|
||||
#include "../../../core/DesktopEditor/common/File.h"
|
||||
#include "../../../core/DesktopEditor/common/Directory.h"
|
||||
#include "./src/clienthandler.h"
|
||||
@ -39,153 +37,37 @@
|
||||
|
||||
#include "../../../core/DesktopEditor/xml/include/xmlutils.h"
|
||||
|
||||
//#define ASC_HTML_FILE_INTERNAL_LOG
|
||||
|
||||
#include "src/client_app.h"
|
||||
#include "src/clienthandler.h"
|
||||
#include "tests/shared/common/client_switches.h"
|
||||
#include "tests/cefclient/browser/main_context_impl.h"
|
||||
#include "tests/cefclient/browser/main_message_loop_multithreaded_win.h"
|
||||
#include "tests/shared/browser/main_message_loop_std.h"
|
||||
|
||||
class CGlobalHtmlFileParams
|
||||
{
|
||||
public:
|
||||
std::vector<std::wstring> sSdkPath;
|
||||
std::wstring sDstPath;
|
||||
std::vector<std::wstring> arFiles;
|
||||
|
||||
client::RootWindowManager* m_pManager;
|
||||
|
||||
public:
|
||||
CGlobalHtmlFileParams()
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
CGlobalHtmlFileParams* g_globalParams;
|
||||
|
||||
#if 1
|
||||
#include "tests/cefclient/browser/browser_window_std_win.h"
|
||||
#include "tests/cefclient/browser/client_handler_std.h"
|
||||
// подменяем функции окна
|
||||
#ifdef _LINUX
|
||||
void TerminationSignalHandler(int signatl) {
|
||||
LOG(ERROR) << "Received termination signal: " << signatl;
|
||||
((CHtmlClientHandler*)g_globalParams->m_client.get())->Exit();
|
||||
}
|
||||
|
||||
namespace client {
|
||||
#include <sys/prctl.h>
|
||||
|
||||
BrowserWindowStdWin::BrowserWindowStdWin(Delegate* delegate,
|
||||
const std::string& startup_url)
|
||||
: BrowserWindow(delegate) {
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
::prctl(PR_SET_PDEATHSIG, SIGHUP);
|
||||
std::wstring sXml;
|
||||
|
||||
if (startup_url == "asc_html_file_internal")
|
||||
for (int i = 0; i < argc && i < 2; ++i)
|
||||
{
|
||||
client_handler_ = new CHtmlClientHandler(this, startup_url, g_globalParams->m_pManager);
|
||||
((CHtmlClientHandler*)(client_handler_.operator ->()))->Init(g_globalParams->sSdkPath, g_globalParams->arFiles, g_globalParams->sDstPath);
|
||||
std::string sXmlA(argv[i]);
|
||||
|
||||
if (0 == sXmlA.find("<html>"))
|
||||
{
|
||||
sXml = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)sXmlA.c_str(), (LONG)sXmlA.length());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
client_handler_ = new ClientHandlerStd(this, startup_url);
|
||||
}
|
||||
}
|
||||
|
||||
void BrowserWindowStdWin::CreateBrowser(
|
||||
ClientWindowHandle parent_handle,
|
||||
const CefRect& rect,
|
||||
const CefBrowserSettings& settings,
|
||||
CefRefPtr<CefRequestContext> request_context) {
|
||||
REQUIRE_MAIN_THREAD();
|
||||
|
||||
CefWindowInfo window_info;
|
||||
RECT wnd_rect = {rect.x, rect.y, rect.x + rect.width, rect.y + rect.height};
|
||||
window_info.SetAsChild(parent_handle, wnd_rect);
|
||||
|
||||
if ("asc_html_file_internal" == client_handler_->startup_url())
|
||||
{
|
||||
CefBrowserHost::CreateBrowser(window_info, client_handler_,
|
||||
((CHtmlClientHandler*)(client_handler_.operator ->()))->GetUrl(),
|
||||
settings, request_context);
|
||||
}
|
||||
else
|
||||
{
|
||||
CefBrowserHost::CreateBrowser(window_info, client_handler_,
|
||||
client_handler_->startup_url(),
|
||||
settings, request_context);
|
||||
}
|
||||
}
|
||||
|
||||
void BrowserWindowStdWin::GetPopupConfig(CefWindowHandle temp_handle,
|
||||
CefWindowInfo& windowInfo,
|
||||
CefRefPtr<CefClient>& client,
|
||||
CefBrowserSettings& settings) {
|
||||
// Note: This method may be called on any thread.
|
||||
// The window will be properly sized after the browser is created.
|
||||
windowInfo.SetAsChild(temp_handle, RECT());
|
||||
client = client_handler_;
|
||||
}
|
||||
|
||||
void BrowserWindowStdWin::ShowPopup(ClientWindowHandle parent_handle,
|
||||
int x, int y, size_t width, size_t height) {
|
||||
REQUIRE_MAIN_THREAD();
|
||||
|
||||
HWND hwnd = GetWindowHandle();
|
||||
if (hwnd) {
|
||||
SetParent(hwnd, parent_handle);
|
||||
SetWindowPos(hwnd, NULL, x, y,
|
||||
static_cast<int>(width), static_cast<int>(height),
|
||||
SWP_NOZORDER);
|
||||
ShowWindow(hwnd, SW_SHOW);
|
||||
}
|
||||
}
|
||||
|
||||
void BrowserWindowStdWin::Show() {
|
||||
REQUIRE_MAIN_THREAD();
|
||||
|
||||
#if 0
|
||||
HWND hwnd = GetWindowHandle();
|
||||
if (hwnd && !::IsWindowVisible(hwnd))
|
||||
ShowWindow(hwnd, SW_SHOW);
|
||||
#endif
|
||||
}
|
||||
|
||||
void BrowserWindowStdWin::Hide() {
|
||||
REQUIRE_MAIN_THREAD();
|
||||
|
||||
HWND hwnd = GetWindowHandle();
|
||||
if (hwnd) {
|
||||
// When the frame window is minimized set the browser window size to 0x0 to
|
||||
// reduce resource usage.
|
||||
SetWindowPos(hwnd, NULL,
|
||||
0, 0, 0, 0, SWP_NOZORDER | SWP_NOMOVE | SWP_NOACTIVATE);
|
||||
}
|
||||
}
|
||||
|
||||
void BrowserWindowStdWin::SetBounds(int x, int y, size_t width, size_t height) {
|
||||
REQUIRE_MAIN_THREAD();
|
||||
|
||||
HWND hwnd = GetWindowHandle();
|
||||
if (hwnd) {
|
||||
// Set the browser window bounds.
|
||||
SetWindowPos(hwnd, NULL, x, y,
|
||||
static_cast<int>(width), static_cast<int>(height),
|
||||
SWP_NOZORDER);
|
||||
}
|
||||
}
|
||||
|
||||
void BrowserWindowStdWin::SetFocus(bool focus) {
|
||||
REQUIRE_MAIN_THREAD();
|
||||
|
||||
if (browser_)
|
||||
browser_->GetHost()->SetFocus(focus);
|
||||
}
|
||||
|
||||
ClientWindowHandle BrowserWindowStdWin::GetWindowHandle() const {
|
||||
REQUIRE_MAIN_THREAD();
|
||||
|
||||
if (browser_)
|
||||
return browser_->GetHost()->GetWindowHandle();
|
||||
return NULL;
|
||||
}
|
||||
} // namespace client
|
||||
#endif
|
||||
#else
|
||||
|
||||
int APIENTRY wWinMain(HINSTANCE hInstance,
|
||||
HINSTANCE hPrevInstance,
|
||||
@ -193,6 +75,7 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
|
||||
int nCmdShow)
|
||||
{
|
||||
std::wstring sXml(lpCmdLine);
|
||||
#endif
|
||||
|
||||
bool bIsChromiumSubprocess = true;
|
||||
if (0 == sXml.find(L"<html>"))
|
||||
@ -243,16 +126,20 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Enable High-DPI support on Windows 7 or newer.
|
||||
CefEnableHighDPISupport();
|
||||
|
||||
#ifdef _LINUX
|
||||
CefMainArgs main_args(argc, argv);
|
||||
#else
|
||||
CefMainArgs main_args(hInstance);
|
||||
|
||||
void* sandbox_info = NULL;
|
||||
#endif
|
||||
|
||||
// Parse command-line arguments.
|
||||
CefRefPtr<CefCommandLine> command_line = CefCommandLine::CreateCommandLine();
|
||||
|
||||
#ifdef _LINUX
|
||||
command_line->InitFromArgv(argc, argv);
|
||||
#else
|
||||
command_line->InitFromString(::GetCommandLineW());
|
||||
#endif
|
||||
|
||||
// Create a ClientApp of the correct type.
|
||||
CefRefPtr<CefApp> app;
|
||||
@ -265,9 +152,9 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
|
||||
app = new CAscClientAppOther();
|
||||
|
||||
// Execute the secondary process, if any.
|
||||
int exit_code = CefExecuteProcess(main_args, app, sandbox_info);
|
||||
int exit_code = CefExecuteProcess(main_args, app, NULL);
|
||||
if (exit_code >= 0)
|
||||
return exit_code;
|
||||
return exit_code;
|
||||
|
||||
// Create the main context object.
|
||||
scoped_ptr<client::MainContextImpl> context(new client::MainContextImpl(command_line, true));
|
||||
@ -275,6 +162,7 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
|
||||
CefSettings settings;
|
||||
|
||||
settings.no_sandbox = true;
|
||||
settings.windowless_rendering_enabled = true;
|
||||
|
||||
std::wstring sCachePath = g_globalParams->sDstPath;
|
||||
if (NSDirectory::Exists(sCachePath))
|
||||
@ -293,38 +181,36 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
|
||||
// Populate the settings based on command line arguments.
|
||||
context->PopulateSettings(&settings);
|
||||
|
||||
// Create the main message loop object.
|
||||
scoped_ptr<client::MainMessageLoop> message_loop;
|
||||
if (settings.multi_threaded_message_loop)
|
||||
message_loop.reset(new client::MainMessageLoopMultithreadedWin);
|
||||
else
|
||||
message_loop.reset(new client::MainMessageLoopStd);
|
||||
|
||||
// Initialize CEF.
|
||||
context->Initialize(main_args, settings, app, sandbox_info);
|
||||
context->Initialize(main_args, settings, app, NULL);
|
||||
|
||||
CefRefPtr<CefCookieManager> manager = CefCookieManager::GetGlobalManager(NULL);
|
||||
manager->SetStoragePath(sCachePath, true, NULL);
|
||||
manager = NULL;
|
||||
|
||||
g_globalParams->m_pManager = context->GetRootWindowManager();
|
||||
#ifdef _LINUX
|
||||
// Install a signal handler so we clean up after ourselves.
|
||||
signal(SIGINT, TerminationSignalHandler);
|
||||
signal(SIGTERM, TerminationSignalHandler);
|
||||
#endif
|
||||
|
||||
// Create the first window.
|
||||
context->GetRootWindowManager()->CreateRootWindow(
|
||||
false, // Show controls.
|
||||
settings.windowless_rendering_enabled ? true : false,
|
||||
CefRect(), // Use default system size.
|
||||
"asc_html_file_internal"); // Use default URL.
|
||||
CefRefPtr<CHtmlClientHandler> client_handler = new CHtmlClientHandler(g_globalParams);
|
||||
client_handler->Init();
|
||||
|
||||
// Run the message loop. This will block until Quit() is called by the
|
||||
// RootWindowManager after all windows have been destroyed.
|
||||
int result = message_loop->Run();
|
||||
CefWindowInfo window_info;
|
||||
window_info.SetAsWindowless(NULL);
|
||||
|
||||
CefRefPtr<CefRequestContext> request_context;
|
||||
CefBrowserSettings browser_settings;
|
||||
browser_settings.plugins = STATE_DISABLED;
|
||||
CefBrowserHost::CreateBrowser(window_info, client_handler.get(), client_handler->GetUrl(), browser_settings, request_context);
|
||||
|
||||
scoped_ptr<client::MainMessageLoop> message_loop;
|
||||
message_loop.reset(new client::MainMessageLoopStd);
|
||||
message_loop->Run();
|
||||
|
||||
// Shut down CEF.
|
||||
context->Shutdown();
|
||||
|
||||
// Release objects in reverse order of creation.
|
||||
message_loop.reset();
|
||||
context.reset();
|
||||
|
||||
if (!sCachePath.empty())
|
||||
@ -332,5 +218,5 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
|
||||
|
||||
RELEASEOBJECT(g_globalParams);
|
||||
|
||||
return result;
|
||||
return 0;
|
||||
}
|
||||
@ -1,442 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2017
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string>
|
||||
|
||||
#include "../../../core/DesktopEditor/common/File.h"
|
||||
#include "../../../core/DesktopEditor/common/Directory.h"
|
||||
#include "./src/clienthandler.h"
|
||||
#include "./src/client_app.h"
|
||||
|
||||
#include "../../../core/DesktopEditor/xml/include/xmlutils.h"
|
||||
|
||||
//#define ASC_HTML_FILE_INTERNAL_LOG
|
||||
|
||||
#include "src/client_app.h"
|
||||
#include "src/clienthandler.h"
|
||||
#include "tests/shared/common/client_switches.h"
|
||||
#include "tests/cefclient/browser/main_context_impl.h"
|
||||
#include "tests/shared/browser/main_message_loop_std.h"
|
||||
|
||||
CGlobalHtmlFileParams* g_globalParams;
|
||||
|
||||
#if 0
|
||||
#include "tests/cefclient/browser/browser_window_std_gtk.h"
|
||||
#include "tests/cefclient/browser/client_handler_std.h"
|
||||
// подменяем функции окна
|
||||
|
||||
namespace client {
|
||||
|
||||
namespace {
|
||||
|
||||
::Window GetXWindowForWidget(GtkWidget* widget) {
|
||||
// The GTK window must be visible before we can retrieve the XID.
|
||||
::Window xwindow = GDK_WINDOW_XID(gtk_widget_get_window(widget));
|
||||
DCHECK(xwindow);
|
||||
return xwindow;
|
||||
}
|
||||
|
||||
void SetXWindowVisible(::Window xwindow, bool visible) {
|
||||
::Display* xdisplay = cef_get_xdisplay();
|
||||
|
||||
// Retrieve the atoms required by the below XChangeProperty call.
|
||||
const char* kAtoms[] = {
|
||||
"_NET_WM_STATE",
|
||||
"ATOM",
|
||||
"_NET_WM_STATE_HIDDEN"
|
||||
};
|
||||
Atom atoms[3];
|
||||
int result = XInternAtoms(xdisplay, const_cast<char**>(kAtoms), 3, false,
|
||||
atoms);
|
||||
if (!result)
|
||||
NOTREACHED();
|
||||
|
||||
if (!visible) {
|
||||
// Set the hidden property state value.
|
||||
scoped_ptr<Atom[]> data(new Atom[1]);
|
||||
data[0] = atoms[2];
|
||||
|
||||
XChangeProperty(xdisplay,
|
||||
xwindow,
|
||||
atoms[0], // name
|
||||
atoms[1], // type
|
||||
32, // size in bits of items in 'value'
|
||||
PropModeReplace,
|
||||
reinterpret_cast<const unsigned char*>(data.get()),
|
||||
1); // num items
|
||||
} else {
|
||||
// Set an empty array of property state values.
|
||||
XChangeProperty(xdisplay,
|
||||
xwindow,
|
||||
atoms[0], // name
|
||||
atoms[1], // type
|
||||
32, // size in bits of items in 'value'
|
||||
PropModeReplace,
|
||||
NULL,
|
||||
0); // num items
|
||||
}
|
||||
}
|
||||
|
||||
void SetXWindowBounds(::Window xwindow,
|
||||
int x, int y, size_t width, size_t height) {
|
||||
::Display* xdisplay = cef_get_xdisplay();
|
||||
XWindowChanges changes = {0};
|
||||
changes.x = x;
|
||||
changes.y = y;
|
||||
changes.width = static_cast<int>(width);
|
||||
changes.height = static_cast<int>(height);
|
||||
XConfigureWindow(xdisplay, xwindow,
|
||||
CWX | CWY | CWHeight | CWWidth, &changes);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
BrowserWindowStdGtk::BrowserWindowStdGtk(Delegate* delegate,
|
||||
const std::string& startup_url)
|
||||
: BrowserWindow(delegate) {
|
||||
if (startup_url == "asc_html_file_internal")
|
||||
{
|
||||
client_handler_ = new CHtmlClientHandler(this, startup_url, g_globalParams->m_pManager);
|
||||
((CHtmlClientHandler*)(client_handler_.operator ->()))->Init(g_globalParams->sSdkPath, g_globalParams->arFiles, g_globalParams->sDstPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
client_handler_ = new ClientHandlerStd(this, startup_url);
|
||||
}
|
||||
}
|
||||
|
||||
void BrowserWindowStdGtk::CreateBrowser(
|
||||
ClientWindowHandle parent_handle,
|
||||
const CefRect& rect,
|
||||
const CefBrowserSettings& settings,
|
||||
CefRefPtr<CefRequestContext> request_context) {
|
||||
REQUIRE_MAIN_THREAD();
|
||||
|
||||
CefWindowInfo window_info;
|
||||
window_info.SetAsChild(GetXWindowForWidget(parent_handle), rect);
|
||||
|
||||
if ("asc_html_file_internal" == client_handler_->startup_url())
|
||||
{
|
||||
CefBrowserHost::CreateBrowser(window_info, client_handler_,
|
||||
((CHtmlClientHandler*)(client_handler_.operator ->()))->GetUrl(),
|
||||
settings, request_context);
|
||||
}
|
||||
else
|
||||
{
|
||||
CefBrowserHost::CreateBrowser(window_info, client_handler_,
|
||||
client_handler_->startup_url(),
|
||||
settings, request_context);
|
||||
}
|
||||
}
|
||||
|
||||
void BrowserWindowStdGtk::GetPopupConfig(CefWindowHandle temp_handle,
|
||||
CefWindowInfo& windowInfo,
|
||||
CefRefPtr<CefClient>& client,
|
||||
CefBrowserSettings& settings) {
|
||||
// Note: This method may be called on any thread.
|
||||
// The window will be properly sized after the browser is created.
|
||||
windowInfo.SetAsChild(temp_handle, CefRect());
|
||||
client = client_handler_;
|
||||
}
|
||||
|
||||
void BrowserWindowStdGtk::ShowPopup(ClientWindowHandle parent_handle,
|
||||
int x, int y, size_t width, size_t height) {
|
||||
REQUIRE_MAIN_THREAD();
|
||||
|
||||
if (browser_) {
|
||||
::Window parent_xwindow = GetXWindowForWidget(parent_handle);
|
||||
::Display* xdisplay = cef_get_xdisplay();
|
||||
::Window xwindow = browser_->GetHost()->GetWindowHandle();
|
||||
DCHECK(xwindow);
|
||||
|
||||
XReparentWindow(xdisplay, xwindow, parent_xwindow, x, y);
|
||||
|
||||
SetXWindowBounds(xwindow, x, y, width, height);
|
||||
SetXWindowVisible(xwindow, true);
|
||||
}
|
||||
}
|
||||
|
||||
void BrowserWindowStdGtk::Show() {
|
||||
REQUIRE_MAIN_THREAD();
|
||||
|
||||
if (browser_) {
|
||||
::Window xwindow = browser_->GetHost()->GetWindowHandle();
|
||||
DCHECK(xwindow);
|
||||
#if 0
|
||||
SetXWindowVisible(xwindow, true);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void BrowserWindowStdGtk::Hide() {
|
||||
REQUIRE_MAIN_THREAD();
|
||||
|
||||
if (browser_) {
|
||||
::Window xwindow = browser_->GetHost()->GetWindowHandle();
|
||||
DCHECK(xwindow);
|
||||
SetXWindowVisible(xwindow, false);
|
||||
}
|
||||
}
|
||||
|
||||
void BrowserWindowStdGtk::SetBounds(int x, int y, size_t width, size_t height) {
|
||||
REQUIRE_MAIN_THREAD();
|
||||
|
||||
if (browser_) {
|
||||
::Window xwindow = browser_->GetHost()->GetWindowHandle();
|
||||
DCHECK(xwindow);
|
||||
SetXWindowBounds(xwindow, x, y, width, height);
|
||||
}
|
||||
}
|
||||
|
||||
void BrowserWindowStdGtk::SetFocus(bool focus) {
|
||||
REQUIRE_MAIN_THREAD();
|
||||
|
||||
if (browser_)
|
||||
browser_->GetHost()->SetFocus(focus);
|
||||
}
|
||||
|
||||
ClientWindowHandle BrowserWindowStdGtk::GetWindowHandle() const {
|
||||
REQUIRE_MAIN_THREAD();
|
||||
|
||||
// There is no GtkWidget* representation of this object.
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
} // namespace client
|
||||
#endif
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN64) ||defined(_WIN32_WCE)
|
||||
|
||||
#include "windows.h"
|
||||
#include "winbase.h"
|
||||
|
||||
#else
|
||||
|
||||
#include <pthread.h>
|
||||
#include <signal.h>
|
||||
#include "time.h"
|
||||
|
||||
#endif
|
||||
|
||||
namespace NSThreads
|
||||
{
|
||||
static void Sleep(int nMilliseconds)
|
||||
{
|
||||
#if defined(_WIN32) || defined(_WIN64) || defined(_WIN32_WCE)
|
||||
::Sleep((DWORD)nMilliseconds);
|
||||
#else
|
||||
struct timespec tim, tim2;
|
||||
tim.tv_sec = nMilliseconds / 1000;
|
||||
tim.tv_nsec = (nMilliseconds % 1000) * 1000000;
|
||||
|
||||
::nanosleep(&tim , &tim2);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void TerminationSignalHandler(int signatl) {
|
||||
LOG(ERROR) << "Received termination signal: " << signatl;
|
||||
client::MainContext::Get()->GetRootWindowManager()->CloseAllWindows(true);
|
||||
}
|
||||
#include <iostream>
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
//::prctl(PR_SET_PDEATHSIG, SIGHUP);
|
||||
std::cout << "main!!!" << std::endl;
|
||||
std::wstring sXml;
|
||||
|
||||
for (int i = 0; i < argc && i < 2; ++i)
|
||||
{
|
||||
std::string sXmlA(argv[i]);
|
||||
|
||||
if (0 == sXmlA.find("<html>"))
|
||||
{
|
||||
sXml = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)sXmlA.c_str(), (LONG)sXmlA.length());
|
||||
}
|
||||
}
|
||||
|
||||
bool bIsChromiumSubprocess = true;
|
||||
if (0 == sXml.find(L"<html>"))
|
||||
bIsChromiumSubprocess = false;
|
||||
|
||||
g_globalParams = new CGlobalHtmlFileParams();
|
||||
|
||||
if (!bIsChromiumSubprocess)
|
||||
{
|
||||
XmlUtils::CXmlNode oNode;
|
||||
if (!oNode.FromXmlFile(sXml.substr(6)))
|
||||
return 1;
|
||||
|
||||
XmlUtils::CXmlNodes oNodesSdkPath;
|
||||
if (!oNode.GetNodes(L"sdk", oNodesSdkPath))
|
||||
return 1;
|
||||
|
||||
XmlUtils::CXmlNode oNodeDstPath;
|
||||
if (!oNode.GetNode(L"destination", oNodeDstPath))
|
||||
return 1;
|
||||
|
||||
int nCountSdks = oNodesSdkPath.GetCount();
|
||||
for (int i = 0; i < nCountSdks; ++i)
|
||||
{
|
||||
XmlUtils::CXmlNode _node;
|
||||
oNodesSdkPath.GetAt(i, _node);
|
||||
|
||||
g_globalParams->sSdkPath.push_back(_node.GetText());
|
||||
}
|
||||
|
||||
g_globalParams->sDstPath = oNodeDstPath.GetText();
|
||||
|
||||
XmlUtils::CXmlNodes oNodesFiles;
|
||||
if (!oNode.GetNodes(L"file", oNodesFiles))
|
||||
return 1;
|
||||
|
||||
int nCountFiles = oNodesFiles.GetCount();
|
||||
for (int i = 0; i < nCountFiles; ++i)
|
||||
{
|
||||
XmlUtils::CXmlNode oNodeF;
|
||||
if (oNodesFiles.GetAt(i, oNodeF))
|
||||
{
|
||||
g_globalParams->arFiles.push_back(oNodeF.GetText());
|
||||
}
|
||||
}
|
||||
|
||||
if (0 == g_globalParams->arFiles.size())
|
||||
return 1;
|
||||
}
|
||||
|
||||
CefMainArgs main_args(argc, argv);
|
||||
|
||||
// Parse command-line arguments.
|
||||
CefRefPtr<CefCommandLine> command_line = CefCommandLine::CreateCommandLine();
|
||||
command_line->InitFromArgv(argc, argv);
|
||||
|
||||
// Create a ClientApp of the correct type.
|
||||
CefRefPtr<CefApp> app;
|
||||
client::ClientApp::ProcessType process_type = client::ClientApp::GetProcessType(command_line);
|
||||
if (process_type == client::ClientApp::BrowserProcess)
|
||||
app = new CAscClientAppBrowser();
|
||||
else if (process_type == client::ClientApp::RendererProcess || process_type == client::ClientApp::ZygoteProcess)
|
||||
app = new CAscClientAppRenderer();
|
||||
else if (process_type == client::ClientApp::OtherProcess)
|
||||
app = new CAscClientAppOther();
|
||||
|
||||
// Execute the secondary process, if any.
|
||||
int exit_code = CefExecuteProcess(main_args, app, NULL);
|
||||
if (exit_code >= 0)
|
||||
return exit_code;
|
||||
|
||||
// Create the main context object.
|
||||
scoped_ptr<client::MainContextImpl> context(new client::MainContextImpl(command_line, true));
|
||||
|
||||
CefSettings settings;
|
||||
|
||||
settings.no_sandbox = true;
|
||||
settings.windowless_rendering_enabled = true;
|
||||
|
||||
std::wstring sCachePath = g_globalParams->sDstPath;
|
||||
if (NSDirectory::Exists(sCachePath))
|
||||
{
|
||||
sCachePath += L"data";
|
||||
NSDirectory::CreateDirectory(sCachePath);
|
||||
|
||||
cef_string_t _cache;
|
||||
memset(&_cache, 0, sizeof(_cache));
|
||||
cef_string_from_wide(sCachePath.c_str(), sCachePath.length(), &_cache);
|
||||
settings.cache_path = _cache;
|
||||
}
|
||||
else
|
||||
sCachePath = L"";
|
||||
|
||||
// Populate the settings based on command line arguments.
|
||||
context->PopulateSettings(&settings);
|
||||
|
||||
// Initialize CEF.
|
||||
context->Initialize(main_args, settings, app, NULL);
|
||||
|
||||
CefRefPtr<CefCookieManager> manager = CefCookieManager::GetGlobalManager(NULL);
|
||||
manager->SetStoragePath(sCachePath, true, NULL);
|
||||
manager = NULL;
|
||||
|
||||
// Install a signal handler so we clean up after ourselves.
|
||||
signal(SIGINT, TerminationSignalHandler);
|
||||
signal(SIGTERM, TerminationSignalHandler);
|
||||
|
||||
/*
|
||||
// Create the first window.
|
||||
context->GetRootWindowManager()->CreateRootWindow(
|
||||
false, // Show controls.
|
||||
settings.windowless_rendering_enabled ? true : false,
|
||||
CefRect(), // Use default system size.
|
||||
"asc_html_file_internal"); // Use default URL.
|
||||
|
||||
// Run the message loop. This will block until Quit() is called by the
|
||||
// RootWindowManager after all windows have been destroyed.
|
||||
int result = message_loop->Run();
|
||||
*/
|
||||
|
||||
CefRefPtr<CHtmlClientHandler> client_handler_ = new CHtmlClientHandler("asc_html_file_internal", g_globalParams);
|
||||
client_handler_->Init(g_globalParams->sSdkPath, g_globalParams->arFiles, g_globalParams->sDstPath);
|
||||
|
||||
CefWindowInfo window_info;
|
||||
window_info.SetAsWindowless(NULL);
|
||||
|
||||
// Create the browser asynchronously.
|
||||
CefString sUrl = client_handler_->GetUrl();
|
||||
CefRefPtr<CefRequestContext> request_context;
|
||||
CefBrowserSettings _settings;
|
||||
CefBrowserHost::CreateBrowser(window_info, client_handler_.get(), sUrl, _settings, request_context);
|
||||
|
||||
scoped_ptr<client::MainMessageLoop> message_loop;
|
||||
message_loop.reset(new client::MainMessageLoopStd);
|
||||
message_loop->Run();
|
||||
/*
|
||||
while (g_globalParams->m_bIsRunned)
|
||||
{
|
||||
CefDoMessageLoopWork();
|
||||
::NSThreads::Sleep(40);
|
||||
}
|
||||
*/
|
||||
|
||||
// Shut down CEF.
|
||||
context->Shutdown();
|
||||
context.reset();
|
||||
|
||||
if (!sCachePath.empty())
|
||||
NSDirectory::DeleteDirectory(sCachePath);
|
||||
|
||||
RELEASEOBJECT(g_globalParams);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user