mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
- Add developer tools support (issue #127).
- Send title change notifications generated after page content is done loading. - Restore windows and bring to the front in BrowserWebViewDelegate::show(). git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@168 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
11
cef.gyp
11
cef.gyp
@ -244,6 +244,10 @@
|
|||||||
'../third_party/libxslt/libxslt.gyp:libxslt',
|
'../third_party/libxslt/libxslt.gyp:libxslt',
|
||||||
'../third_party/modp_b64/modp_b64.gyp:modp_b64',
|
'../third_party/modp_b64/modp_b64.gyp:modp_b64',
|
||||||
'../third_party/WebKit/Source/WebCore/WebCore.gyp/WebCore.gyp:webcore',
|
'../third_party/WebKit/Source/WebCore/WebCore.gyp/WebCore.gyp:webcore',
|
||||||
|
'../third_party/WebKit/WebKit/chromium/WebKit.gyp:concatenated_devtools_css',
|
||||||
|
'../third_party/WebKit/WebKit/chromium/WebKit.gyp:concatenated_devtools_js',
|
||||||
|
'../third_party/WebKit/WebKit/chromium/WebKit.gyp:devtools_html',
|
||||||
|
'../third_party/WebKit/WebKit/chromium/WebKit.gyp:inspector_resources',
|
||||||
'../third_party/WebKit/WebKit/chromium/WebKit.gyp:webkit',
|
'../third_party/WebKit/WebKit/chromium/WebKit.gyp:webkit',
|
||||||
'../third_party/zlib/zlib.gyp:zlib',
|
'../third_party/zlib/zlib.gyp:zlib',
|
||||||
'../ui/ui.gyp:ui_base',
|
'../ui/ui.gyp:ui_base',
|
||||||
@ -333,6 +337,7 @@
|
|||||||
'../breakpad/breakpad.gyp:breakpad_handler',
|
'../breakpad/breakpad.gyp:breakpad_handler',
|
||||||
],
|
],
|
||||||
'sources': [
|
'sources': [
|
||||||
|
'$(OutDir)/obj/global_intermediate/webkit/webkit_chromium_resources.rc',
|
||||||
'$(OutDir)/obj/global_intermediate/webkit/webkit_resources.rc',
|
'$(OutDir)/obj/global_intermediate/webkit/webkit_resources.rc',
|
||||||
'$(OutDir)/obj/global_intermediate/webkit/webkit_strings_en-US.rc',
|
'$(OutDir)/obj/global_intermediate/webkit/webkit_strings_en-US.rc',
|
||||||
'include/cef_types_win.h',
|
'include/cef_types_win.h',
|
||||||
@ -472,6 +477,12 @@
|
|||||||
'libcef/browser_appcache_system.h',
|
'libcef/browser_appcache_system.h',
|
||||||
'libcef/browser_database_system.cc',
|
'libcef/browser_database_system.cc',
|
||||||
'libcef/browser_database_system.h',
|
'libcef/browser_database_system.h',
|
||||||
|
'libcef/browser_devtools_agent.cc',
|
||||||
|
'libcef/browser_devtools_agent.h',
|
||||||
|
'libcef/browser_devtools_callargs.cc',
|
||||||
|
'libcef/browser_devtools_callargs.h',
|
||||||
|
'libcef/browser_devtools_client.cc',
|
||||||
|
'libcef/browser_devtools_client.h',
|
||||||
'libcef/browser_file_system.cc',
|
'libcef/browser_file_system.cc',
|
||||||
'libcef/browser_file_system.h',
|
'libcef/browser_file_system.h',
|
||||||
'libcef/browser_file_writer.cc',
|
'libcef/browser_file_writer.cc',
|
||||||
|
@ -441,6 +441,15 @@ public:
|
|||||||
// Change the zoom level to the specified value.
|
// Change the zoom level to the specified value.
|
||||||
/*--cef()--*/
|
/*--cef()--*/
|
||||||
virtual void SetZoomLevel(double zoomLevel) =0;
|
virtual void SetZoomLevel(double zoomLevel) =0;
|
||||||
|
|
||||||
|
// Open developer tools in its own window.
|
||||||
|
/*--cef()--*/
|
||||||
|
virtual void ShowDevTools() =0;
|
||||||
|
|
||||||
|
// Explicitly close the developer tools window if one exists for this browser
|
||||||
|
// instance.
|
||||||
|
/*--cef()--*/
|
||||||
|
virtual void CloseDevTools() =0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -1818,6 +1827,7 @@ public:
|
|||||||
accelerated_compositing_disabled = r.accelerated_compositing_disabled;
|
accelerated_compositing_disabled = r.accelerated_compositing_disabled;
|
||||||
accelerated_layers_disabled = r.accelerated_layers_disabled;
|
accelerated_layers_disabled = r.accelerated_layers_disabled;
|
||||||
accelerated_2d_canvas_disabled = r.accelerated_2d_canvas_disabled;
|
accelerated_2d_canvas_disabled = r.accelerated_2d_canvas_disabled;
|
||||||
|
developer_tools_disabled = r.developer_tools_disabled;
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
@ -263,6 +263,13 @@ typedef struct _cef_browser_t
|
|||||||
void (CEF_CALLBACK *set_zoom_level)(struct _cef_browser_t* self,
|
void (CEF_CALLBACK *set_zoom_level)(struct _cef_browser_t* self,
|
||||||
double zoomLevel);
|
double zoomLevel);
|
||||||
|
|
||||||
|
// Open developer tools in its own window.
|
||||||
|
void (CEF_CALLBACK *show_dev_tools)(struct _cef_browser_t* self);
|
||||||
|
|
||||||
|
// Explicitly close the developer tools window if one exists for this browser
|
||||||
|
// instance.
|
||||||
|
void (CEF_CALLBACK *close_dev_tools)(struct _cef_browser_t* self);
|
||||||
|
|
||||||
} cef_browser_t;
|
} cef_browser_t;
|
||||||
|
|
||||||
|
|
||||||
|
@ -233,6 +233,9 @@ typedef struct _cef_browser_settings_t
|
|||||||
|
|
||||||
// Set to true (1) to disable accelerated 2d canvas.
|
// Set to true (1) to disable accelerated 2d canvas.
|
||||||
bool accelerated_2d_canvas_disabled;
|
bool accelerated_2d_canvas_disabled;
|
||||||
|
|
||||||
|
// Set to true (1) to disable developer tools (WebKit inspector).
|
||||||
|
bool developer_tools_disabled;
|
||||||
} cef_browser_settings_t;
|
} cef_browser_settings_t;
|
||||||
|
|
||||||
// Define handler return value types. Returning RV_HANDLED indicates
|
// Define handler return value types. Returning RV_HANDLED indicates
|
||||||
|
162
libcef/browser_devtools_agent.cc
Normal file
162
libcef/browser_devtools_agent.cc
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
// Copyright (c) 2010 The Chromium 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 "browser_devtools_agent.h"
|
||||||
|
|
||||||
|
#include "base/message_loop.h"
|
||||||
|
#include "grit/webkit_chromium_resources.h"
|
||||||
|
#include "third_party/WebKit/WebKit/chromium/public/WebDevToolsAgent.h"
|
||||||
|
#include "third_party/WebKit/WebKit/chromium/public/WebView.h"
|
||||||
|
#include "browser_devtools_callargs.h"
|
||||||
|
#include "browser_devtools_client.h"
|
||||||
|
#include "webkit/glue/webkit_glue.h"
|
||||||
|
|
||||||
|
using WebKit::WebCString;
|
||||||
|
using WebKit::WebDevToolsAgent;
|
||||||
|
using WebKit::WebDevToolsMessageData;
|
||||||
|
using WebKit::WebString;
|
||||||
|
using WebKit::WebView;
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
class WebKitClientMessageLoopImpl
|
||||||
|
: public WebKit::WebDevToolsAgentClient::WebKitClientMessageLoop {
|
||||||
|
public:
|
||||||
|
WebKitClientMessageLoopImpl() : message_loop_(MessageLoop::current()) { }
|
||||||
|
virtual ~WebKitClientMessageLoopImpl() {
|
||||||
|
message_loop_ = NULL;
|
||||||
|
}
|
||||||
|
virtual void run() {
|
||||||
|
bool old_state = message_loop_->NestableTasksAllowed();
|
||||||
|
message_loop_->SetNestableTasksAllowed(true);
|
||||||
|
message_loop_->Run();
|
||||||
|
message_loop_->SetNestableTasksAllowed(old_state);
|
||||||
|
}
|
||||||
|
virtual void quitNow() {
|
||||||
|
message_loop_->QuitNow();
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
MessageLoop* message_loop_;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
// static
|
||||||
|
void BrowserDevToolsAgent::DispatchMessageLoop() {
|
||||||
|
MessageLoop* current = MessageLoop::current();
|
||||||
|
bool old_state = current->NestableTasksAllowed();
|
||||||
|
current->SetNestableTasksAllowed(true);
|
||||||
|
current->RunAllPending();
|
||||||
|
current->SetNestableTasksAllowed(old_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
BrowserDevToolsAgent::BrowserDevToolsAgent()
|
||||||
|
: ALLOW_THIS_IN_INITIALIZER_LIST(call_method_factory_(this)),
|
||||||
|
dev_tools_client_(NULL) {
|
||||||
|
static int dev_tools_agent_counter;
|
||||||
|
routing_id_ = ++dev_tools_agent_counter;
|
||||||
|
if (routing_id_ == 1)
|
||||||
|
WebDevToolsAgent::setMessageLoopDispatchHandler(
|
||||||
|
&BrowserDevToolsAgent::DispatchMessageLoop);
|
||||||
|
}
|
||||||
|
|
||||||
|
BrowserDevToolsAgent::~BrowserDevToolsAgent() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsAgent::SetWebView(WebKit::WebView* web_view) {
|
||||||
|
web_view_ = web_view;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsAgent::sendMessageToInspectorFrontend(
|
||||||
|
const WebString& data) {
|
||||||
|
if (dev_tools_client_)
|
||||||
|
dev_tools_client_->AsyncCall(BrowserDevToolsCallArgs(data));
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsAgent::runtimePropertyChanged(
|
||||||
|
const WebKit::WebString& name,
|
||||||
|
const WebKit::WebString& value) {
|
||||||
|
// TODO: Implement.
|
||||||
|
}
|
||||||
|
|
||||||
|
WebCString BrowserDevToolsAgent::debuggerScriptSource() {
|
||||||
|
base::StringPiece debuggerScriptjs =
|
||||||
|
webkit_glue::GetDataResource(IDR_DEVTOOLS_DEBUGGER_SCRIPT_JS);
|
||||||
|
return WebCString(debuggerScriptjs.data(), debuggerScriptjs.length());
|
||||||
|
}
|
||||||
|
|
||||||
|
WebKit::WebDevToolsAgentClient::WebKitClientMessageLoop*
|
||||||
|
BrowserDevToolsAgent::createClientMessageLoop() {
|
||||||
|
return new WebKitClientMessageLoopImpl();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsAgent::AsyncCall(const BrowserDevToolsCallArgs &args) {
|
||||||
|
MessageLoop::current()->PostDelayedTask(
|
||||||
|
FROM_HERE,
|
||||||
|
call_method_factory_.NewRunnableMethod(&BrowserDevToolsAgent::Call,
|
||||||
|
args),
|
||||||
|
0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsAgent::Call(const BrowserDevToolsCallArgs &args) {
|
||||||
|
WebDevToolsAgent* web_agent = GetWebAgent();
|
||||||
|
if (web_agent)
|
||||||
|
web_agent->dispatchOnInspectorBackend(args.data_);
|
||||||
|
if (BrowserDevToolsCallArgs::calls_count() == 1 && dev_tools_client_)
|
||||||
|
dev_tools_client_->all_messages_processed();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsAgent::DelayedFrontendLoaded() {
|
||||||
|
WebDevToolsAgent *web_agent = GetWebAgent();
|
||||||
|
if (web_agent)
|
||||||
|
web_agent->frontendLoaded();
|
||||||
|
}
|
||||||
|
|
||||||
|
WebDevToolsAgent* BrowserDevToolsAgent::GetWebAgent() {
|
||||||
|
if (!web_view_)
|
||||||
|
return NULL;
|
||||||
|
return web_view_->devToolsAgent();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsAgent::attach(BrowserDevToolsClient* client) {
|
||||||
|
DCHECK(!dev_tools_client_);
|
||||||
|
dev_tools_client_ = client;
|
||||||
|
WebDevToolsAgent *web_agent = GetWebAgent();
|
||||||
|
if (web_agent)
|
||||||
|
web_agent->attach();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsAgent::detach() {
|
||||||
|
DCHECK(dev_tools_client_);
|
||||||
|
WebDevToolsAgent* web_agent = GetWebAgent();
|
||||||
|
if (web_agent)
|
||||||
|
web_agent->detach();
|
||||||
|
dev_tools_client_ = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsAgent::frontendLoaded() {
|
||||||
|
MessageLoop::current()->PostDelayedTask(
|
||||||
|
FROM_HERE,
|
||||||
|
call_method_factory_.NewRunnableMethod(
|
||||||
|
&BrowserDevToolsAgent::DelayedFrontendLoaded),
|
||||||
|
0);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BrowserDevToolsAgent::setTimelineProfilingEnabled(bool enabled) {
|
||||||
|
WebDevToolsAgent* agent = GetWebAgent();
|
||||||
|
if (!agent)
|
||||||
|
return false;
|
||||||
|
agent->setTimelineProfilingEnabled(enabled);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BrowserDevToolsAgent::evaluateInWebInspector(
|
||||||
|
long call_id,
|
||||||
|
const std::string& script) {
|
||||||
|
WebDevToolsAgent* agent = GetWebAgent();
|
||||||
|
if (!agent)
|
||||||
|
return false;
|
||||||
|
agent->evaluateInWebInspector(call_id, WebString::fromUTF8(script));
|
||||||
|
return true;
|
||||||
|
}
|
68
libcef/browser_devtools_agent.h
Normal file
68
libcef/browser_devtools_agent.h
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
// Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
#ifndef _BROWSER_DEVTOOLS_AGENT_H
|
||||||
|
#define _BROWSER_DEVTOOLS_AGENT_H
|
||||||
|
|
||||||
|
#include "base/task.h"
|
||||||
|
|
||||||
|
#include "third_party/WebKit/WebKit/chromium/public/WebDevToolsAgentClient.h"
|
||||||
|
|
||||||
|
namespace WebKit {
|
||||||
|
|
||||||
|
class WebDevToolsAgent;
|
||||||
|
class WebView;
|
||||||
|
struct WebDevToolsMessageData;
|
||||||
|
|
||||||
|
} // namespace WebKit
|
||||||
|
|
||||||
|
class BrowserDevToolsCallArgs;
|
||||||
|
class BrowserDevToolsClient;
|
||||||
|
|
||||||
|
class BrowserDevToolsAgent : public WebKit::WebDevToolsAgentClient {
|
||||||
|
|
||||||
|
public:
|
||||||
|
BrowserDevToolsAgent();
|
||||||
|
virtual ~BrowserDevToolsAgent();
|
||||||
|
|
||||||
|
void SetWebView(WebKit::WebView* web_view);
|
||||||
|
|
||||||
|
// WebDevToolsAgentClient implementation.
|
||||||
|
virtual void sendMessageToInspectorFrontend(
|
||||||
|
const WebKit::WebString& data);
|
||||||
|
virtual int hostIdentifier() { return routing_id_; }
|
||||||
|
virtual void runtimePropertyChanged(const WebKit::WebString& name,
|
||||||
|
const WebKit::WebString& value);
|
||||||
|
virtual WebKit::WebCString debuggerScriptSource();
|
||||||
|
|
||||||
|
virtual WebKit::WebDevToolsAgentClient::WebKitClientMessageLoop*
|
||||||
|
createClientMessageLoop();
|
||||||
|
|
||||||
|
void AsyncCall(const BrowserDevToolsCallArgs& args);
|
||||||
|
|
||||||
|
void attach(BrowserDevToolsClient* client);
|
||||||
|
void detach();
|
||||||
|
void frontendLoaded();
|
||||||
|
|
||||||
|
bool evaluateInWebInspector(long call_id, const std::string& script);
|
||||||
|
bool setTimelineProfilingEnabled(bool enable);
|
||||||
|
|
||||||
|
BrowserDevToolsClient* client() { return dev_tools_client_; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
void Call(const BrowserDevToolsCallArgs& args);
|
||||||
|
void DelayedFrontendLoaded();
|
||||||
|
static void DispatchMessageLoop();
|
||||||
|
WebKit::WebDevToolsAgent* GetWebAgent();
|
||||||
|
|
||||||
|
ScopedRunnableMethodFactory<BrowserDevToolsAgent> call_method_factory_;
|
||||||
|
BrowserDevToolsClient* dev_tools_client_;
|
||||||
|
int routing_id_;
|
||||||
|
WebKit::WebDevToolsAgent* web_dev_tools_agent_;
|
||||||
|
WebKit::WebView* web_view_;
|
||||||
|
|
||||||
|
DISALLOW_COPY_AND_ASSIGN(BrowserDevToolsAgent);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _BROWSER_DEVTOOLS_AGENT_H
|
27
libcef/browser_devtools_callargs.cc
Normal file
27
libcef/browser_devtools_callargs.cc
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
// Copyright (c) 2010 The Chromium 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 "browser_devtools_callargs.h"
|
||||||
|
|
||||||
|
#include "base/logging.h"
|
||||||
|
|
||||||
|
// static
|
||||||
|
int BrowserDevToolsCallArgs::calls_count_ = 0;
|
||||||
|
|
||||||
|
BrowserDevToolsCallArgs::BrowserDevToolsCallArgs(
|
||||||
|
const WebKit::WebString& data)
|
||||||
|
: data_(data) {
|
||||||
|
++calls_count_;
|
||||||
|
}
|
||||||
|
|
||||||
|
BrowserDevToolsCallArgs::BrowserDevToolsCallArgs(
|
||||||
|
const BrowserDevToolsCallArgs& args)
|
||||||
|
: data_(args.data_) {
|
||||||
|
++calls_count_;
|
||||||
|
}
|
||||||
|
|
||||||
|
BrowserDevToolsCallArgs::~BrowserDevToolsCallArgs() {
|
||||||
|
--calls_count_;
|
||||||
|
DCHECK(calls_count_ >= 0);
|
||||||
|
}
|
28
libcef/browser_devtools_callargs.h
Normal file
28
libcef/browser_devtools_callargs.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
#ifndef _BROWSER_DEVTOOLS_CALLARGS_H
|
||||||
|
#define _BROWSER_DEVTOOLS_CALLARGS_H
|
||||||
|
|
||||||
|
#include "base/basictypes.h"
|
||||||
|
|
||||||
|
#include "third_party/WebKit/WebKit/chromium/public/WebString.h"
|
||||||
|
|
||||||
|
class BrowserDevToolsCallArgs {
|
||||||
|
public:
|
||||||
|
explicit BrowserDevToolsCallArgs(const WebKit::WebString& data);
|
||||||
|
|
||||||
|
BrowserDevToolsCallArgs(const BrowserDevToolsCallArgs& args);
|
||||||
|
|
||||||
|
~BrowserDevToolsCallArgs();
|
||||||
|
|
||||||
|
static int calls_count() { return calls_count_; }
|
||||||
|
|
||||||
|
WebKit::WebString data_;
|
||||||
|
|
||||||
|
private:
|
||||||
|
static int calls_count_;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _BROWSER_DEVTOOLS_CALLARGS_H
|
94
libcef/browser_devtools_client.cc
Normal file
94
libcef/browser_devtools_client.cc
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
// Copyright (c) 2010 The Chromium 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 "third_party/WebKit/WebKit/chromium/public/WebDevToolsAgent.h"
|
||||||
|
#include "third_party/WebKit/WebKit/chromium/public/WebDevToolsFrontend.h"
|
||||||
|
#include "third_party/WebKit/WebKit/chromium/public/WebFrame.h"
|
||||||
|
#include "third_party/WebKit/WebKit/chromium/public/WebString.h"
|
||||||
|
#include "third_party/WebKit/WebKit/chromium/public/WebScriptSource.h"
|
||||||
|
#include "third_party/WebKit/WebKit/chromium/public/WebView.h"
|
||||||
|
|
||||||
|
#undef LOG
|
||||||
|
#include "browser_devtools_agent.h"
|
||||||
|
#include "browser_devtools_callargs.h"
|
||||||
|
#include "browser_devtools_client.h"
|
||||||
|
#include "browser_impl.h"
|
||||||
|
|
||||||
|
#include "base/command_line.h"
|
||||||
|
#include "base/message_loop.h"
|
||||||
|
|
||||||
|
using WebKit::WebDevToolsAgent;
|
||||||
|
using WebKit::WebDevToolsFrontend;
|
||||||
|
using WebKit::WebDevToolsMessageData;
|
||||||
|
using WebKit::WebString;
|
||||||
|
using WebKit::WebView;
|
||||||
|
|
||||||
|
BrowserDevToolsClient::BrowserDevToolsClient(CefBrowserImpl* browser,
|
||||||
|
BrowserDevToolsAgent *agent)
|
||||||
|
: ALLOW_THIS_IN_INITIALIZER_LIST(call_method_factory_(this)),
|
||||||
|
browser_(browser),
|
||||||
|
dev_tools_agent_(agent),
|
||||||
|
web_view_(browser->GetWebView()) {
|
||||||
|
web_tools_frontend_.reset(WebDevToolsFrontend::create(web_view_, this,
|
||||||
|
WebString::fromUTF8("en-US")));
|
||||||
|
dev_tools_agent_->attach(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
BrowserDevToolsClient::~BrowserDevToolsClient() {
|
||||||
|
// It is a chance that page will be destroyed at detach step of
|
||||||
|
// dev_tools_agent_ and we should clean pending requests a bit earlier.
|
||||||
|
call_method_factory_.RevokeAll();
|
||||||
|
if (dev_tools_agent_)
|
||||||
|
dev_tools_agent_->detach();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsClient::sendFrontendLoaded() {
|
||||||
|
if (dev_tools_agent_)
|
||||||
|
dev_tools_agent_->frontendLoaded();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsClient::sendMessageToBackend(
|
||||||
|
const WebString& data) {
|
||||||
|
if (dev_tools_agent_)
|
||||||
|
dev_tools_agent_->AsyncCall(BrowserDevToolsCallArgs(data));
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsClient::sendDebuggerCommandToAgent(
|
||||||
|
const WebString& command) {
|
||||||
|
WebDevToolsAgent::executeDebuggerCommand(command, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsClient::activateWindow() {
|
||||||
|
NOTIMPLEMENTED();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsClient::closeWindow() {
|
||||||
|
NOTIMPLEMENTED();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsClient::dockWindow() {
|
||||||
|
NOTIMPLEMENTED();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsClient::undockWindow() {
|
||||||
|
NOTIMPLEMENTED();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsClient::AsyncCall(const BrowserDevToolsCallArgs &args) {
|
||||||
|
MessageLoop::current()->PostDelayedTask(FROM_HERE,
|
||||||
|
call_method_factory_.NewRunnableMethod(&BrowserDevToolsClient::Call,
|
||||||
|
args), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsClient::Call(const BrowserDevToolsCallArgs &args) {
|
||||||
|
web_tools_frontend_->dispatchOnInspectorFrontend(args.data_);
|
||||||
|
if (BrowserDevToolsCallArgs::calls_count() == 1)
|
||||||
|
all_messages_processed();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BrowserDevToolsClient::all_messages_processed() {
|
||||||
|
web_view_->mainFrame()->executeScript(WebKit::WebScriptSource(
|
||||||
|
WebString::fromUTF8("if (window.WebInspector && "
|
||||||
|
"WebInspector.queuesAreEmpty) WebInspector.queuesAreEmpty();")));
|
||||||
|
}
|
59
libcef/browser_devtools_client.h
Normal file
59
libcef/browser_devtools_client.h
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
// Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
#ifndef _BROWSER_DEVTOOLS_CLIENT_H
|
||||||
|
#define _BROWSER_DEVTOOLS_CLIENT_H
|
||||||
|
|
||||||
|
#include "base/scoped_ptr.h"
|
||||||
|
#include "base/task.h"
|
||||||
|
|
||||||
|
#include "third_party/WebKit/WebKit/chromium/public/WebDevToolsFrontendClient.h"
|
||||||
|
|
||||||
|
namespace WebKit {
|
||||||
|
|
||||||
|
class WebDevToolsFrontend;
|
||||||
|
struct WebDevToolsMessageData;
|
||||||
|
|
||||||
|
} // namespace WebKit
|
||||||
|
|
||||||
|
class BrowserDevToolsCallArgs;
|
||||||
|
class BrowserDevToolsAgent;
|
||||||
|
class CefBrowserImpl;
|
||||||
|
|
||||||
|
class BrowserDevToolsClient: public WebKit::WebDevToolsFrontendClient {
|
||||||
|
|
||||||
|
public:
|
||||||
|
BrowserDevToolsClient(CefBrowserImpl* browser,
|
||||||
|
BrowserDevToolsAgent* agent);
|
||||||
|
virtual ~BrowserDevToolsClient();
|
||||||
|
|
||||||
|
// WebDevToolsFrontendClient implementation
|
||||||
|
virtual void sendFrontendLoaded();
|
||||||
|
virtual void sendMessageToBackend(const WebKit::WebString& data);
|
||||||
|
virtual void sendDebuggerCommandToAgent(const WebKit::WebString& command);
|
||||||
|
|
||||||
|
virtual void activateWindow();
|
||||||
|
virtual void closeWindow();
|
||||||
|
virtual void dockWindow();
|
||||||
|
virtual void undockWindow();
|
||||||
|
|
||||||
|
void AsyncCall(const BrowserDevToolsCallArgs& args);
|
||||||
|
|
||||||
|
void all_messages_processed();
|
||||||
|
|
||||||
|
CefBrowserImpl* browser() { return browser_; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
void Call(const BrowserDevToolsCallArgs& args);
|
||||||
|
|
||||||
|
ScopedRunnableMethodFactory<BrowserDevToolsClient> call_method_factory_;
|
||||||
|
CefBrowserImpl* browser_;
|
||||||
|
BrowserDevToolsAgent* dev_tools_agent_;
|
||||||
|
WebKit::WebView* web_view_;
|
||||||
|
scoped_ptr<WebKit::WebDevToolsFrontend> web_tools_frontend_;
|
||||||
|
|
||||||
|
DISALLOW_COPY_AND_ASSIGN(BrowserDevToolsClient);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _BROWSER_DEVTOOLS_CLIENT_H
|
@ -10,6 +10,8 @@
|
|||||||
#include "request_impl.h"
|
#include "request_impl.h"
|
||||||
#include "stream_impl.h"
|
#include "stream_impl.h"
|
||||||
|
|
||||||
|
#include "base/file_path.h"
|
||||||
|
#include "base/path_service.h"
|
||||||
#include "base/synchronization/waitable_event.h"
|
#include "base/synchronization/waitable_event.h"
|
||||||
#include "base/utf_string_conversions.h"
|
#include "base/utf_string_conversions.h"
|
||||||
#include "third_party/WebKit/WebKit/chromium/public/WebDocument.h"
|
#include "third_party/WebKit/WebKit/chromium/public/WebDocument.h"
|
||||||
@ -232,6 +234,18 @@ void CefBrowserImpl::StopFinding(bool clearSelection)
|
|||||||
&CefBrowserImpl::UIT_StopFinding, clearSelection));
|
&CefBrowserImpl::UIT_StopFinding, clearSelection));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CefBrowserImpl::ShowDevTools()
|
||||||
|
{
|
||||||
|
CefThread::PostTask(CefThread::UI, FROM_HERE, NewRunnableMethod(this,
|
||||||
|
&CefBrowserImpl::UIT_ShowDevTools));
|
||||||
|
}
|
||||||
|
|
||||||
|
void CefBrowserImpl::CloseDevTools()
|
||||||
|
{
|
||||||
|
CefThread::PostTask(CefThread::UI, FROM_HERE, NewRunnableMethod(this,
|
||||||
|
&CefBrowserImpl::UIT_CloseDevTools));
|
||||||
|
}
|
||||||
|
|
||||||
CefRefPtr<CefFrame> CefBrowserImpl::GetCefFrame(WebFrame* frame)
|
CefRefPtr<CefFrame> CefBrowserImpl::GetCefFrame(WebFrame* frame)
|
||||||
{
|
{
|
||||||
CefRefPtr<CefFrame> cef_frame;
|
CefRefPtr<CefFrame> cef_frame;
|
||||||
@ -573,6 +587,12 @@ void CefBrowserImpl::UIT_DestroyBrowser()
|
|||||||
}
|
}
|
||||||
GetWebViewDelegate()->RevokeDragDrop();
|
GetWebViewDelegate()->RevokeDragDrop();
|
||||||
|
|
||||||
|
if (dev_tools_agent_.get()) {
|
||||||
|
BrowserDevToolsClient* client = dev_tools_agent_->client();
|
||||||
|
if (client)
|
||||||
|
client->browser()->UIT_DestroyBrowser();
|
||||||
|
}
|
||||||
|
|
||||||
// Clean up anything associated with the WebViewHost widget.
|
// Clean up anything associated with the WebViewHost widget.
|
||||||
GetWebViewHost()->webwidget()->close();
|
GetWebViewHost()->webwidget()->close();
|
||||||
webviewhost_.reset();
|
webviewhost_.reset();
|
||||||
@ -1171,6 +1191,38 @@ void CefBrowserImpl::UIT_SetZoomLevel(CefFrame* frame, double zoomLevel)
|
|||||||
frame->Release();
|
frame->Release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CefBrowserImpl::UIT_ShowDevTools()
|
||||||
|
{
|
||||||
|
REQUIRE_UIT();
|
||||||
|
|
||||||
|
if(!dev_tools_agent_.get())
|
||||||
|
return;
|
||||||
|
|
||||||
|
BrowserDevToolsClient* client = dev_tools_agent_->client();
|
||||||
|
if (!client) {
|
||||||
|
// Create the inspector window.
|
||||||
|
FilePath dir_exe;
|
||||||
|
PathService::Get(base::DIR_EXE, &dir_exe);
|
||||||
|
FilePath devtools_path =
|
||||||
|
dir_exe.AppendASCII("resources/inspector/devtools.html");
|
||||||
|
|
||||||
|
CefPopupFeatures features;
|
||||||
|
CefRefPtr<CefBrowserImpl> browser =
|
||||||
|
UIT_CreatePopupWindow(devtools_path.value(), features);
|
||||||
|
browser->CreateDevToolsClient(dev_tools_agent_.get());
|
||||||
|
browser->UIT_Show(WebKit::WebNavigationPolicyNewWindow);
|
||||||
|
} else {
|
||||||
|
// Give focus to the existing inspector window.
|
||||||
|
client->browser()->UIT_Show(WebKit::WebNavigationPolicyNewWindow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CefBrowserImpl::CreateDevToolsClient(BrowserDevToolsAgent *agent)
|
||||||
|
{
|
||||||
|
dev_tools_client_.reset(new BrowserDevToolsClient(this, agent));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// CefFrameImpl
|
// CefFrameImpl
|
||||||
|
|
||||||
bool CefFrameImpl::IsFocused()
|
bool CefFrameImpl::IsFocused()
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
#include "include/cef.h"
|
#include "include/cef.h"
|
||||||
|
|
||||||
#include "webview_host.h"
|
#include "webview_host.h"
|
||||||
|
#include "browser_devtools_agent.h"
|
||||||
|
#include "browser_devtools_client.h"
|
||||||
#include "browser_webview_delegate.h"
|
#include "browser_webview_delegate.h"
|
||||||
#include "browser_navigation_controller.h"
|
#include "browser_navigation_controller.h"
|
||||||
#include "cef_thread.h"
|
#include "cef_thread.h"
|
||||||
@ -65,6 +67,8 @@ public:
|
|||||||
virtual void StopFinding(bool clearSelection);
|
virtual void StopFinding(bool clearSelection);
|
||||||
virtual double GetZoomLevel();
|
virtual double GetZoomLevel();
|
||||||
virtual void SetZoomLevel(double zoomLevel);
|
virtual void SetZoomLevel(double zoomLevel);
|
||||||
|
virtual void ShowDevTools();
|
||||||
|
virtual void CloseDevTools();
|
||||||
|
|
||||||
// CefFrames are light-weight objects managed by the browser and loosely
|
// CefFrames are light-weight objects managed by the browser and loosely
|
||||||
// coupled to a WebFrame object by name. If a CefFrame object does not
|
// coupled to a WebFrame object by name. If a CefFrame object does not
|
||||||
@ -232,12 +236,17 @@ public:
|
|||||||
const WebKit::WebRect& selection_rect,
|
const WebKit::WebRect& selection_rect,
|
||||||
int active_match_ordinal, bool final_update);
|
int active_match_ordinal, bool final_update);
|
||||||
void UIT_SetZoomLevel(CefFrame* frame, double zoomLevel);
|
void UIT_SetZoomLevel(CefFrame* frame, double zoomLevel);
|
||||||
|
void UIT_ShowDevTools();
|
||||||
|
void UIT_CloseDevTools();
|
||||||
|
|
||||||
static bool ImplementsThreadSafeReferenceCounting() { return true; }
|
static bool ImplementsThreadSafeReferenceCounting() { return true; }
|
||||||
|
|
||||||
const CefBrowserSettings& settings() const { return settings_; }
|
const CefBrowserSettings& settings() const { return settings_; }
|
||||||
const FilePath& file_system_root() const { return file_system_root_.path(); }
|
const FilePath& file_system_root() const { return file_system_root_.path(); }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void CreateDevToolsClient(BrowserDevToolsAgent* agent);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
CefWindowInfo window_info_;
|
CefWindowInfo window_info_;
|
||||||
CefBrowserSettings settings_;
|
CefBrowserSettings settings_;
|
||||||
@ -250,6 +259,9 @@ protected:
|
|||||||
scoped_ptr<BrowserWebViewDelegate> popup_delegate_;
|
scoped_ptr<BrowserWebViewDelegate> popup_delegate_;
|
||||||
scoped_ptr<BrowserNavigationController> nav_controller_;
|
scoped_ptr<BrowserNavigationController> nav_controller_;
|
||||||
|
|
||||||
|
scoped_ptr<BrowserDevToolsAgent> dev_tools_agent_;
|
||||||
|
scoped_ptr<BrowserDevToolsClient> dev_tools_client_;
|
||||||
|
|
||||||
CefString title_;
|
CefString title_;
|
||||||
|
|
||||||
#if defined(OS_WIN)
|
#if defined(OS_WIN)
|
||||||
|
@ -42,15 +42,21 @@ void CefBrowserImpl::UIT_CreateBrowser(const CefString& url)
|
|||||||
// Add the new browser to the list maintained by the context
|
// Add the new browser to the list maintained by the context
|
||||||
_Context->AddBrowser(this);
|
_Context->AddBrowser(this);
|
||||||
|
|
||||||
|
if (!settings_.developer_tools_disabled)
|
||||||
|
dev_tools_agent_.reset(new BrowserDevToolsAgent());
|
||||||
|
|
||||||
WebPreferences prefs;
|
WebPreferences prefs;
|
||||||
BrowserToWebSettings(settings_, prefs);
|
BrowserToWebSettings(settings_, prefs);
|
||||||
|
|
||||||
// Create the webview host object
|
// Create the webview host object
|
||||||
webviewhost_.reset(
|
webviewhost_.reset(
|
||||||
WebViewHost::Create(window_info_.m_ParentWidget, gfx::Rect(),
|
WebViewHost::Create(window_info_.m_ParentWidget, gfx::Rect(),
|
||||||
delegate_.get(), NULL, prefs));
|
delegate_.get(), dev_tools_agent_.get(), prefs));
|
||||||
delegate_->RegisterDragDrop();
|
delegate_->RegisterDragDrop();
|
||||||
|
|
||||||
|
if (!settings_.developer_tools_disabled)
|
||||||
|
dev_tools_agent_->SetWebView(webviewhost_->webview());
|
||||||
|
|
||||||
window_info_.m_Widget = webviewhost_->view_handle();
|
window_info_.m_Widget = webviewhost_->view_handle();
|
||||||
|
|
||||||
if(handler_.get()) {
|
if(handler_.get()) {
|
||||||
@ -128,3 +134,14 @@ int CefBrowserImpl::UIT_GetPagesCount(WebKit::WebFrame* frame)
|
|||||||
NOTIMPLEMENTED();
|
NOTIMPLEMENTED();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CefBrowserImpl::UIT_CloseDevTools()
|
||||||
|
{
|
||||||
|
REQUIRE_UIT();
|
||||||
|
|
||||||
|
if(!dev_tools_agent_.get())
|
||||||
|
return;
|
||||||
|
|
||||||
|
// TODO(port): Add implementation.
|
||||||
|
NOTIMPLEMENTED();
|
||||||
|
}
|
||||||
|
@ -41,6 +41,9 @@ void CefBrowserImpl::UIT_CreateBrowser(const CefString& url)
|
|||||||
// Add the new browser to the list maintained by the context
|
// Add the new browser to the list maintained by the context
|
||||||
_Context->AddBrowser(this);
|
_Context->AddBrowser(this);
|
||||||
|
|
||||||
|
if (!settings_.developer_tools_disabled)
|
||||||
|
dev_tools_agent_.reset(new BrowserDevToolsAgent());
|
||||||
|
|
||||||
NSView* parentView = (NSView*)window_info_.m_ParentView;
|
NSView* parentView = (NSView*)window_info_.m_ParentView;
|
||||||
gfx::Rect contentRect(window_info_.m_x, window_info_.m_y,
|
gfx::Rect contentRect(window_info_.m_x, window_info_.m_y,
|
||||||
window_info_.m_nWidth, window_info_.m_nHeight);
|
window_info_.m_nWidth, window_info_.m_nHeight);
|
||||||
@ -51,9 +54,12 @@ void CefBrowserImpl::UIT_CreateBrowser(const CefString& url)
|
|||||||
// Create the webview host object
|
// Create the webview host object
|
||||||
webviewhost_.reset(
|
webviewhost_.reset(
|
||||||
WebViewHost::Create(parentView, contentRect, delegate_.get(),
|
WebViewHost::Create(parentView, contentRect, delegate_.get(),
|
||||||
NULL, prefs));
|
dev_tools_agent_.get(), prefs));
|
||||||
delegate_->RegisterDragDrop();
|
delegate_->RegisterDragDrop();
|
||||||
|
|
||||||
|
if (!settings_.developer_tools_disabled)
|
||||||
|
dev_tools_agent_->SetWebView(webviewhost_->webview());
|
||||||
|
|
||||||
BrowserWebView* browserView = (BrowserWebView*)webviewhost_->view_handle();
|
BrowserWebView* browserView = (BrowserWebView*)webviewhost_->view_handle();
|
||||||
browserView.browser = this;
|
browserView.browser = this;
|
||||||
window_info_.m_View = (void*)browserView;
|
window_info_.m_View = (void*)browserView;
|
||||||
@ -137,3 +143,14 @@ int CefBrowserImpl::UIT_GetPagesCount(WebKit::WebFrame* frame)
|
|||||||
NOTIMPLEMENTED();
|
NOTIMPLEMENTED();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CefBrowserImpl::UIT_CloseDevTools()
|
||||||
|
{
|
||||||
|
REQUIRE_UIT();
|
||||||
|
|
||||||
|
if(!dev_tools_agent_.get())
|
||||||
|
return;
|
||||||
|
|
||||||
|
// TODO(port): Add implementation.
|
||||||
|
NOTIMPLEMENTED();
|
||||||
|
}
|
||||||
|
@ -113,6 +113,9 @@ void CefBrowserImpl::UIT_CreateBrowser(const CefString& url)
|
|||||||
// procedure
|
// procedure
|
||||||
app::win::SetWindowUserData(window_info_.m_hWnd, this);
|
app::win::SetWindowUserData(window_info_.m_hWnd, this);
|
||||||
|
|
||||||
|
if (!settings_.developer_tools_disabled)
|
||||||
|
dev_tools_agent_.reset(new BrowserDevToolsAgent());
|
||||||
|
|
||||||
// Add a reference that will be released in UIT_DestroyBrowser().
|
// Add a reference that will be released in UIT_DestroyBrowser().
|
||||||
AddRef();
|
AddRef();
|
||||||
|
|
||||||
@ -125,7 +128,10 @@ void CefBrowserImpl::UIT_CreateBrowser(const CefString& url)
|
|||||||
// Create the webview host object
|
// Create the webview host object
|
||||||
webviewhost_.reset(
|
webviewhost_.reset(
|
||||||
WebViewHost::Create(window_info_.m_hWnd, gfx::Rect(), delegate_.get(),
|
WebViewHost::Create(window_info_.m_hWnd, gfx::Rect(), delegate_.get(),
|
||||||
NULL, prefs));
|
dev_tools_agent_.get(), prefs));
|
||||||
|
|
||||||
|
if (!settings_.developer_tools_disabled)
|
||||||
|
dev_tools_agent_->SetWebView(webviewhost_->webview());
|
||||||
|
|
||||||
if (!settings_.drag_drop_disabled)
|
if (!settings_.drag_drop_disabled)
|
||||||
delegate_->RegisterDragDrop();
|
delegate_->RegisterDragDrop();
|
||||||
@ -481,3 +487,15 @@ int CefBrowserImpl::UIT_GetPagesCount(WebKit::WebFrame* frame)
|
|||||||
|
|
||||||
return page_count;
|
return page_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CefBrowserImpl::UIT_CloseDevTools()
|
||||||
|
{
|
||||||
|
REQUIRE_UIT();
|
||||||
|
|
||||||
|
if(!dev_tools_agent_.get())
|
||||||
|
return;
|
||||||
|
|
||||||
|
BrowserDevToolsClient* client = dev_tools_agent_->client();
|
||||||
|
if (client)
|
||||||
|
PostMessage(client->browser()->GetMainWndHandle(), WM_CLOSE, 0, 0);
|
||||||
|
}
|
||||||
|
@ -91,7 +91,7 @@ void BrowserToWebSettings(const CefBrowserSettings& cef, WebPreferences& web)
|
|||||||
web.loads_images_automatically = !cef.image_load_disabled;
|
web.loads_images_automatically = !cef.image_load_disabled;
|
||||||
web.plugins_enabled = !cef.plugins_disabled;
|
web.plugins_enabled = !cef.plugins_disabled;
|
||||||
web.dom_paste_enabled = !cef.dom_paste_disabled;
|
web.dom_paste_enabled = !cef.dom_paste_disabled;
|
||||||
web.developer_extras_enabled = false;
|
web.developer_extras_enabled = !cef.developer_tools_disabled;
|
||||||
web.inspector_settings.clear();
|
web.inspector_settings.clear();
|
||||||
web.site_specific_quirks_enabled = !cef.site_specific_quirks_disabled;
|
web.site_specific_quirks_enabled = !cef.site_specific_quirks_disabled;
|
||||||
web.shrinks_standalone_images_to_fit = cef.shrink_standalone_images_to_fit;
|
web.shrinks_standalone_images_to_fit = cef.shrink_standalone_images_to_fit;
|
||||||
|
@ -754,7 +754,8 @@ void BrowserWebViewDelegate::didClearWindowObject(WebFrame* frame) {
|
|||||||
|
|
||||||
void BrowserWebViewDelegate::didReceiveTitle(
|
void BrowserWebViewDelegate::didReceiveTitle(
|
||||||
WebFrame* frame, const WebString& title) {
|
WebFrame* frame, const WebString& title) {
|
||||||
if (frame == top_loading_frame_ && is_main_content_) {
|
if (top_loading_frame_ == NULL ||
|
||||||
|
(frame == top_loading_frame_ && is_main_content_)) {
|
||||||
CefString titleStr = string16(title);
|
CefString titleStr = string16(title);
|
||||||
browser_->UIT_SetTitle(titleStr);
|
browser_->UIT_SetTitle(titleStr);
|
||||||
CefRefPtr<CefHandler> handler = browser_->GetHandler();
|
CefRefPtr<CefHandler> handler = browser_->GetHandler();
|
||||||
|
@ -58,8 +58,8 @@ WebWidget* BrowserWebViewDelegate::createPopupMenu(
|
|||||||
void BrowserWebViewDelegate::show(WebNavigationPolicy) {
|
void BrowserWebViewDelegate::show(WebNavigationPolicy) {
|
||||||
if (WebWidgetHost* host = GetWidgetHost()) {
|
if (WebWidgetHost* host = GetWidgetHost()) {
|
||||||
HWND root = GetAncestor(host->view_handle(), GA_ROOT);
|
HWND root = GetAncestor(host->view_handle(), GA_ROOT);
|
||||||
ShowWindow(root, SW_SHOW);
|
ShowWindow(root, SW_SHOWNORMAL);
|
||||||
UpdateWindow(root);
|
SetWindowPos(root, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,6 +257,25 @@ void CEF_CALLBACK browser_set_zoom_level(struct _cef_browser_t* self,
|
|||||||
return CefBrowserCppToC::Get(self)->SetZoomLevel(zoomLevel);
|
return CefBrowserCppToC::Get(self)->SetZoomLevel(zoomLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CEF_CALLBACK browser_show_dev_tools(struct _cef_browser_t* self)
|
||||||
|
{
|
||||||
|
DCHECK(self);
|
||||||
|
if(!self)
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
CefBrowserCppToC::Get(self)->ShowDevTools();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CEF_CALLBACK browser_close_dev_tools(struct _cef_browser_t* self)
|
||||||
|
{
|
||||||
|
DCHECK(self);
|
||||||
|
if(!self)
|
||||||
|
return;
|
||||||
|
|
||||||
|
CefBrowserCppToC::Get(self)->CloseDevTools();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// CONSTRUCTOR - Do not edit by hand.
|
// CONSTRUCTOR - Do not edit by hand.
|
||||||
|
|
||||||
@ -282,6 +301,8 @@ CefBrowserCppToC::CefBrowserCppToC(CefBrowser* cls)
|
|||||||
struct_.struct_.stop_finding = browser_stop_finding;
|
struct_.struct_.stop_finding = browser_stop_finding;
|
||||||
struct_.struct_.get_zoom_level = browser_get_zoom_level;
|
struct_.struct_.get_zoom_level = browser_get_zoom_level;
|
||||||
struct_.struct_.set_zoom_level = browser_set_zoom_level;
|
struct_.struct_.set_zoom_level = browser_set_zoom_level;
|
||||||
|
struct_.struct_.show_dev_tools = browser_show_dev_tools;
|
||||||
|
struct_.struct_.close_dev_tools = browser_close_dev_tools;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
|
@ -212,6 +212,22 @@ void CefBrowserCToCpp::SetZoomLevel(double zoomLevel)
|
|||||||
return struct_->set_zoom_level(struct_, zoomLevel);
|
return struct_->set_zoom_level(struct_, zoomLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CefBrowserCToCpp::ShowDevTools()
|
||||||
|
{
|
||||||
|
if (CEF_MEMBER_MISSING(struct_, show_dev_tools))
|
||||||
|
return;
|
||||||
|
|
||||||
|
struct_->show_dev_tools(struct_);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CefBrowserCToCpp::CloseDevTools()
|
||||||
|
{
|
||||||
|
if (CEF_MEMBER_MISSING(struct_, close_dev_tools))
|
||||||
|
return;
|
||||||
|
|
||||||
|
struct_->close_dev_tools(struct_);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
template<> long CefCToCpp<CefBrowserCToCpp, CefBrowser,
|
template<> long CefCToCpp<CefBrowserCToCpp, CefBrowser,
|
||||||
|
@ -51,6 +51,8 @@ public:
|
|||||||
virtual void StopFinding(bool clearSelection);
|
virtual void StopFinding(bool clearSelection);
|
||||||
virtual double GetZoomLevel();
|
virtual double GetZoomLevel();
|
||||||
virtual void SetZoomLevel(double zoomLevel);
|
virtual void SetZoomLevel(double zoomLevel);
|
||||||
|
virtual void ShowDevTools();
|
||||||
|
virtual void CloseDevTools();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // USING_CEF_SHARED
|
#endif // USING_CEF_SHARED
|
||||||
|
@ -84,6 +84,8 @@ BEGIN
|
|||||||
MENUITEM "Zoom In", ID_TESTS_ZOOM_IN
|
MENUITEM "Zoom In", ID_TESTS_ZOOM_IN
|
||||||
MENUITEM "Zoom Out", ID_TESTS_ZOOM_OUT
|
MENUITEM "Zoom Out", ID_TESTS_ZOOM_OUT
|
||||||
MENUITEM "Reset Zoom", ID_TESTS_ZOOM_RESET
|
MENUITEM "Reset Zoom", ID_TESTS_ZOOM_RESET
|
||||||
|
MENUITEM "Show Developer Tools", ID_TESTS_DEVTOOLS_SHOW
|
||||||
|
MENUITEM "Close Developer Tools", ID_TESTS_DEVTOOLS_CLOSE
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
|
|
||||||
|
@ -585,6 +585,14 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
if(browser.get())
|
if(browser.get())
|
||||||
browser->SetZoomLevel(0.0);
|
browser->SetZoomLevel(0.0);
|
||||||
return 0;
|
return 0;
|
||||||
|
case ID_TESTS_DEVTOOLS_SHOW:
|
||||||
|
if (browser.get())
|
||||||
|
browser->ShowDevTools();
|
||||||
|
return 0;
|
||||||
|
case ID_TESTS_DEVTOOLS_CLOSE:
|
||||||
|
if (browser.get())
|
||||||
|
browser->CloseDevTools();
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -45,6 +45,8 @@
|
|||||||
#define ID_TESTS_ZOOM_IN 32785
|
#define ID_TESTS_ZOOM_IN 32785
|
||||||
#define ID_TESTS_ZOOM_OUT 32786
|
#define ID_TESTS_ZOOM_OUT 32786
|
||||||
#define ID_TESTS_ZOOM_RESET 32787
|
#define ID_TESTS_ZOOM_RESET 32787
|
||||||
|
#define ID_TESTS_DEVTOOLS_SHOW 32788
|
||||||
|
#define ID_TESTS_DEVTOOLS_CLOSE 32789
|
||||||
#define IDC_STATIC -1
|
#define IDC_STATIC -1
|
||||||
#define IDS_LOGO 1000
|
#define IDS_LOGO 1000
|
||||||
#define IDS_UIPLUGIN 1001
|
#define IDS_UIPLUGIN 1001
|
||||||
@ -61,7 +63,7 @@
|
|||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NO_MFC 1
|
#define _APS_NO_MFC 1
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 130
|
#define _APS_NEXT_RESOURCE_VALUE 130
|
||||||
#define _APS_NEXT_COMMAND_VALUE 32788
|
#define _APS_NEXT_COMMAND_VALUE 32790
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1000
|
#define _APS_NEXT_CONTROL_VALUE 1000
|
||||||
#define _APS_NEXT_SYMED_VALUE 110
|
#define _APS_NEXT_SYMED_VALUE 110
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user