views: Initial docked devtools implementation.
This commit is contained in:
parent
4048d491f0
commit
e574bf6d0f
5 changed files with 138 additions and 56 deletions
|
@ -56,8 +56,6 @@
|
||||||
'browser/inspectable_web_contents_view.h',
|
'browser/inspectable_web_contents_view.h',
|
||||||
'browser/inspectable_web_contents_view_mac.h',
|
'browser/inspectable_web_contents_view_mac.h',
|
||||||
'browser/inspectable_web_contents_view_mac.mm',
|
'browser/inspectable_web_contents_view_mac.mm',
|
||||||
'browser/linux/inspectable_web_contents_view_linux.h',
|
|
||||||
'browser/linux/inspectable_web_contents_view_linux.cc',
|
|
||||||
'browser/mac/bry_application.h',
|
'browser/mac/bry_application.h',
|
||||||
'browser/mac/bry_application.mm',
|
'browser/mac/bry_application.mm',
|
||||||
'browser/mac/bry_inspectable_web_contents_view.h',
|
'browser/mac/bry_inspectable_web_contents_view.h',
|
||||||
|
@ -75,6 +73,8 @@
|
||||||
'browser/linux/notification_presenter_linux.cc',
|
'browser/linux/notification_presenter_linux.cc',
|
||||||
'browser/url_request_context_getter.cc',
|
'browser/url_request_context_getter.cc',
|
||||||
'browser/url_request_context_getter.h',
|
'browser/url_request_context_getter.h',
|
||||||
|
'browser/views/inspectable_web_contents_view_views.h',
|
||||||
|
'browser/views/inspectable_web_contents_view_views.cc',
|
||||||
'browser/views/views_delegate.cc',
|
'browser/views/views_delegate.cc',
|
||||||
'browser/views/views_delegate.h',
|
'browser/views/views_delegate.h',
|
||||||
'browser/win/devtools_window.cc',
|
'browser/win/devtools_window.cc',
|
||||||
|
|
|
@ -5,14 +5,28 @@
|
||||||
|
|
||||||
class DevToolsContentsResizingStrategy;
|
class DevToolsContentsResizingStrategy;
|
||||||
|
|
||||||
|
#if defined(TOOLKIT_VIEWS)
|
||||||
|
namespace views {
|
||||||
|
class View;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace brightray {
|
namespace brightray {
|
||||||
|
|
||||||
class InspectableWebContentsView {
|
class InspectableWebContentsView {
|
||||||
public:
|
public:
|
||||||
virtual ~InspectableWebContentsView() {}
|
virtual ~InspectableWebContentsView() {}
|
||||||
|
|
||||||
virtual gfx::NativeView GetNativeView() const = 0;
|
#if defined(TOOLKIT_VIEWS)
|
||||||
|
// Returns the container control, which has devtools view attached.
|
||||||
|
virtual views::View* GetView() = 0;
|
||||||
|
|
||||||
|
// Returns the web view control, which can be used by the
|
||||||
|
// GetInitiallyFocusedView() to set initial focus to web view.
|
||||||
|
virtual views::View* GetWebView() = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
virtual gfx::NativeView GetNativeView() const = 0;
|
||||||
virtual void ShowDevTools() = 0;
|
virtual void ShowDevTools() = 0;
|
||||||
// Hide the DevTools view.
|
// Hide the DevTools view.
|
||||||
virtual void CloseDevTools() = 0;
|
virtual void CloseDevTools() = 0;
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
#include "browser/linux/inspectable_web_contents_view_linux.h"
|
|
||||||
|
|
||||||
#include "base/strings/stringprintf.h"
|
|
||||||
#include "browser/browser_client.h"
|
|
||||||
#include "browser/inspectable_web_contents_impl.h"
|
|
||||||
|
|
||||||
#include "content/public/browser/web_contents_view.h"
|
|
||||||
|
|
||||||
namespace brightray {
|
|
||||||
|
|
||||||
InspectableWebContentsView* CreateInspectableContentsView(
|
|
||||||
InspectableWebContentsImpl* inspectable_web_contents) {
|
|
||||||
return new InspectableWebContentsViewLinux(inspectable_web_contents);
|
|
||||||
}
|
|
||||||
|
|
||||||
InspectableWebContentsViewLinux::InspectableWebContentsViewLinux(
|
|
||||||
InspectableWebContentsImpl* inspectable_web_contents)
|
|
||||||
: inspectable_web_contents_(inspectable_web_contents) {
|
|
||||||
}
|
|
||||||
|
|
||||||
InspectableWebContentsViewLinux::~InspectableWebContentsViewLinux() {
|
|
||||||
}
|
|
||||||
|
|
||||||
gfx::NativeView InspectableWebContentsViewLinux::GetNativeView() const {
|
|
||||||
auto web_contents = inspectable_web_contents_->GetWebContents();
|
|
||||||
return web_contents->GetView()->GetNativeView();
|
|
||||||
}
|
|
||||||
|
|
||||||
void InspectableWebContentsViewLinux::ShowDevTools() {
|
|
||||||
}
|
|
||||||
|
|
||||||
void InspectableWebContentsViewLinux::CloseDevTools() {
|
|
||||||
}
|
|
||||||
|
|
||||||
bool InspectableWebContentsViewLinux::IsDevToolsViewShowing() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void InspectableWebContentsViewLinux::SetIsDocked(bool docked) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void InspectableWebContentsViewLinux::SetContentsResizingStrategy(
|
|
||||||
const DevToolsContentsResizingStrategy& strategy) {
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace brightray
|
|
|
@ -0,0 +1,98 @@
|
||||||
|
#include "browser/views/inspectable_web_contents_view_views.h"
|
||||||
|
|
||||||
|
#include "browser/inspectable_web_contents_impl.h"
|
||||||
|
|
||||||
|
#include "content/public/browser/web_contents_view.h"
|
||||||
|
#include "ui/views/controls/webview/webview.h"
|
||||||
|
|
||||||
|
namespace brightray {
|
||||||
|
|
||||||
|
InspectableWebContentsView* CreateInspectableContentsView(
|
||||||
|
InspectableWebContentsImpl* inspectable_web_contents) {
|
||||||
|
return new InspectableWebContentsViewViews(inspectable_web_contents);
|
||||||
|
}
|
||||||
|
|
||||||
|
InspectableWebContentsViewViews::InspectableWebContentsViewViews(
|
||||||
|
InspectableWebContentsImpl* inspectable_web_contents)
|
||||||
|
: inspectable_web_contents_(inspectable_web_contents),
|
||||||
|
contents_web_view_(new views::WebView(NULL)),
|
||||||
|
devtools_web_view_(new views::WebView(NULL)) {
|
||||||
|
set_owned_by_client();
|
||||||
|
|
||||||
|
devtools_web_view_->SetVisible(false);
|
||||||
|
contents_web_view_->SetWebContents(inspectable_web_contents_->GetWebContents());
|
||||||
|
AddChildView(devtools_web_view_);
|
||||||
|
AddChildView(contents_web_view_);
|
||||||
|
}
|
||||||
|
|
||||||
|
InspectableWebContentsViewViews::~InspectableWebContentsViewViews() {
|
||||||
|
}
|
||||||
|
|
||||||
|
views::View* InspectableWebContentsViewViews::GetView() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
views::View* InspectableWebContentsViewViews::GetWebView() {
|
||||||
|
return contents_web_view_;
|
||||||
|
}
|
||||||
|
|
||||||
|
gfx::NativeView InspectableWebContentsViewViews::GetNativeView() const {
|
||||||
|
return inspectable_web_contents_->GetWebContents()->GetView()->GetNativeView();
|
||||||
|
}
|
||||||
|
|
||||||
|
void InspectableWebContentsViewViews::ShowDevTools() {
|
||||||
|
if (devtools_web_view_->visible())
|
||||||
|
return;
|
||||||
|
|
||||||
|
devtools_web_view_->SetVisible(true);
|
||||||
|
devtools_web_view_->SetWebContents(inspectable_web_contents_->devtools_web_contents());
|
||||||
|
Layout();
|
||||||
|
}
|
||||||
|
|
||||||
|
void InspectableWebContentsViewViews::CloseDevTools() {
|
||||||
|
if (!devtools_web_view_->visible())
|
||||||
|
return;
|
||||||
|
|
||||||
|
devtools_web_view_->SetVisible(false);
|
||||||
|
devtools_web_view_->SetWebContents(NULL);
|
||||||
|
Layout();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool InspectableWebContentsViewViews::IsDevToolsViewShowing() {
|
||||||
|
return devtools_web_view_->visible();
|
||||||
|
}
|
||||||
|
|
||||||
|
void InspectableWebContentsViewViews::SetIsDocked(bool docked) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void InspectableWebContentsViewViews::SetContentsResizingStrategy(
|
||||||
|
const DevToolsContentsResizingStrategy& strategy) {
|
||||||
|
strategy_.CopyFrom(strategy);
|
||||||
|
Layout();
|
||||||
|
}
|
||||||
|
|
||||||
|
void InspectableWebContentsViewViews::Layout() {
|
||||||
|
if (!devtools_web_view_->visible()) {
|
||||||
|
contents_web_view_->SetBoundsRect(GetContentsBounds());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
gfx::Size container_size(width(), height());
|
||||||
|
gfx::Rect old_devtools_bounds(devtools_web_view_->bounds());
|
||||||
|
gfx::Rect old_contents_bounds(contents_web_view_->bounds());
|
||||||
|
gfx::Rect new_devtools_bounds;
|
||||||
|
gfx::Rect new_contents_bounds;
|
||||||
|
ApplyDevToolsContentsResizingStrategy(strategy_, container_size,
|
||||||
|
old_devtools_bounds, old_contents_bounds,
|
||||||
|
&new_devtools_bounds, &new_contents_bounds);
|
||||||
|
|
||||||
|
// DevTools cares about the specific position, so we have to compensate RTL
|
||||||
|
// layout here.
|
||||||
|
new_devtools_bounds.set_x(GetMirroredXForRect(new_devtools_bounds));
|
||||||
|
new_contents_bounds.set_x(GetMirroredXForRect(new_contents_bounds));
|
||||||
|
|
||||||
|
devtools_web_view_->SetBoundsRect(new_devtools_bounds);
|
||||||
|
contents_web_view_->SetBoundsRect(new_contents_bounds);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace brightray
|
|
@ -1,21 +1,31 @@
|
||||||
#ifndef BRIGHTRAY_BROWSER_LINUX_INSPECTABLE_WEB_CONTENTS_VIEW_LINUX_H_
|
#ifndef BROWSER_VIEWS_INSPECTABLE_WEB_CONTENTS_VIEW_VIEWS_H_
|
||||||
#define BRIGHTRAY_BROWSER_LINUX_INSPECTABLE_WEB_CONTENTS_VIEW_LINUX_H_
|
#define BROWSER_VIEWS_INSPECTABLE_WEB_CONTENTS_VIEW_VIEWS_H_
|
||||||
|
|
||||||
#include "browser/devtools_contents_resizing_strategy.h"
|
#include "browser/devtools_contents_resizing_strategy.h"
|
||||||
#include "browser/inspectable_web_contents_view.h"
|
#include "browser/inspectable_web_contents_view.h"
|
||||||
|
|
||||||
#include "base/compiler_specific.h"
|
#include "base/compiler_specific.h"
|
||||||
|
#include "ui/views/view.h"
|
||||||
|
|
||||||
|
namespace views {
|
||||||
|
class WebView;
|
||||||
|
class Widget;
|
||||||
|
}
|
||||||
|
|
||||||
namespace brightray {
|
namespace brightray {
|
||||||
|
|
||||||
class InspectableWebContentsImpl;
|
class InspectableWebContentsImpl;
|
||||||
|
|
||||||
class InspectableWebContentsViewLinux : public InspectableWebContentsView {
|
class InspectableWebContentsViewViews : public InspectableWebContentsView,
|
||||||
|
public views::View {
|
||||||
public:
|
public:
|
||||||
explicit InspectableWebContentsViewLinux(
|
explicit InspectableWebContentsViewViews(
|
||||||
InspectableWebContentsImpl* inspectable_web_contents_impl);
|
InspectableWebContentsImpl* inspectable_web_contents_impl);
|
||||||
~InspectableWebContentsViewLinux();
|
~InspectableWebContentsViewViews();
|
||||||
|
|
||||||
|
// InspectableWebContentsView:
|
||||||
|
virtual views::View* GetView() OVERRIDE;
|
||||||
|
virtual views::View* GetWebView() OVERRIDE;
|
||||||
virtual gfx::NativeView GetNativeView() const OVERRIDE;
|
virtual gfx::NativeView GetNativeView() const OVERRIDE;
|
||||||
virtual void ShowDevTools() OVERRIDE;
|
virtual void ShowDevTools() OVERRIDE;
|
||||||
virtual void CloseDevTools() OVERRIDE;
|
virtual void CloseDevTools() OVERRIDE;
|
||||||
|
@ -29,14 +39,20 @@ class InspectableWebContentsViewLinux : public InspectableWebContentsView {
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// views::View:
|
||||||
|
virtual void Layout() OVERRIDE;
|
||||||
|
|
||||||
// Owns us.
|
// Owns us.
|
||||||
InspectableWebContentsImpl* inspectable_web_contents_;
|
InspectableWebContentsImpl* inspectable_web_contents_;
|
||||||
|
|
||||||
|
views::WebView* contents_web_view_;
|
||||||
|
views::WebView* devtools_web_view_;
|
||||||
|
|
||||||
DevToolsContentsResizingStrategy strategy_;
|
DevToolsContentsResizingStrategy strategy_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(InspectableWebContentsViewLinux);
|
DISALLOW_COPY_AND_ASSIGN(InspectableWebContentsViewViews);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace brightray
|
} // namespace brightray
|
||||||
|
|
||||||
#endif
|
#endif // BROWSER_VIEWS_INSPECTABLE_WEB_CONTENTS_VIEW_VIEWS_H_
|
Loading…
Add table
Reference in a new issue