brightray::InspectableWebContents* inspectable_web_contents,
const mate::Dictionary& options,
NativeWindow* parent)
- : NativeWindow(inspectable_web_contents, options, parent) {
-// options.Get(switches::kTitle, &title_);
+ : NativeWindow(inspectable_web_contents, options, parent),
+ fullscreenable_(true) {
+ options.Get(options::kTitle, &title_);
+ window_ = efl::WindowFactory::GetHostWindow(web_contents());
- // Create Host window via elf::WindowFactory
- window_ = efl::WindowFactory::GetHostWindow(web_contents_);
DCHECK(window_);
- gfx::Size size = gfx::Size(kDefaultWindowWidthDip, kDefaultWindowHeightDip);
-
evas_object_smart_callback_add(window_, "delete,request",
OnWindowDeleteRequest, this);
+ evas_object_resize(window_, kDefaultWindowWidthDip,
+ kDefaultWindowHeightDip);
- evas_object_resize(window_, size.width(), size.height());
-
- // Add a new box to the parent.
Evas_Object* box = elm_box_add(window_);
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(window_, box);
evas_object_show(box);
- // Add view at the end of the pack list.
- Evas_Object* view = static_cast<Evas_Object*>(web_contents_->GetNativeView());
- evas_object_size_hint_align_set(view, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(view, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_box_pack_end(box, view);
+ web_view_ = static_cast<Evas_Object*>(web_contents()->GetNativeView());
+ evas_object_size_hint_align_set(web_view_, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(web_view_, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_box_pack_end(box, web_view_);
- web_contents_->Focus();
+ web_contents()->Focus();
}
void NativeWindowEfl::Close() {
if(window_)
evas_object_del(window_);
window_ = nullptr;
+
+ CloseContents(web_contents());
}
void NativeWindowEfl::CloseImmediately() {
NOTIMPLEMENTED();
+ if(window_)
+ evas_object_del(window_);
+ window_ = nullptr;
+ NotifyWindowClosed();
}
void NativeWindowEfl::Focus(bool focus) {
- NOTIMPLEMENTED();
+ elm_object_focus_set(window_, focus);
}
bool NativeWindowEfl::IsFocused() {
- NOTIMPLEMENTED();
- return true;
+ return elm_object_focus_get(window_);
}
void NativeWindowEfl::Show() {
+ if (!window_ || !web_view_)
+ LOG(ERROR) << "There's no available window or webview.";
evas_object_show(window_);
}
}
void NativeWindowEfl::SetFullScreenable(bool fullscreenable) {
- NOTIMPLEMENTED();
+ fullscreenable_ = fullscreenable;
}
bool NativeWindowEfl::IsFullScreenable() {
- NOTIMPLEMENTED();
- return true;
+ return fullscreenable_;
}
void NativeWindowEfl::SetClosable(bool closable) {
// static
void NativeWindowEfl::OnWindowDeleteRequest(void* data, Evas_Object*, void*) {
NativeWindowEfl* thiz = static_cast<NativeWindowEfl*>(data);
+ thiz->web_contents()->Close();
if(!elm_win_autodel_get(thiz->window_))
thiz->Close();
- thiz->window_ = nullptr;
- thiz->web_contents_->Close();
}
// static
#include "browser/inspectable_web_contents_impl.h"
#include "content/browser/web_contents/web_contents_impl.h"
+#include "efl/window_factory.h"
+#include "ui/gfx/geometry/size.h"
namespace brightray {
+InspectableWebContentsView* CreateInspectableContentsView(InspectableWebContentsImpl* inspectable_web_contents) {
+ return new InspectableWebContentsViewEfl(inspectable_web_contents);
+}
+
InspectableWebContentsViewEfl::InspectableWebContentsViewEfl(
InspectableWebContentsImpl* inspectable_web_contents)
- : inspectable_web_contents_(inspectable_web_contents) {
+ : inspectable_web_contents_(inspectable_web_contents),
+ devtools_visible_(false) {
content::WebContentsImpl* web_contents_impl = static_cast<
content::WebContentsImpl*>(inspectable_web_contents->GetWebContents());
web_contents_view_ = static_cast<content::WebContentsViewEfl*>(
}
gfx::NativeView InspectableWebContentsViewEfl::GetNativeView() const {
- if(web_contents_view_)
- return web_contents_view_->GetNativeView();
+ return inspectable_web_contents_->GetWebContents()->GetNativeView();
}
void InspectableWebContentsViewEfl::ShowDevTools() {
- NOTIMPLEMENTED();
+ if (devtools_visible_)
+ return;
}
void InspectableWebContentsViewEfl::CloseDevTools() {
- NOTIMPLEMENTED();
+ if (devtools_visible_)
+ return;
}
bool InspectableWebContentsViewEfl::IsDevToolsViewShowing() {
+ return devtools_visible_;
+}
+
+bool InspectableWebContentsViewEfl::IsDevToolsViewFocused() {
NOTIMPLEMENTED();
return false;
}
NOTIMPLEMENTED();
}
-InspectableWebContentsView* CreateInspectableContentsView(
- InspectableWebContentsImpl* inspectable_web_contents) {
- return nullptr;
+void InspectableWebContentsViewEfl::SetTitle(const base::string16& title) {
+ NOTIMPLEMENTED();
}
} // namespace brightray
~InspectableWebContentsViewEfl();
// InspectableWebContentsView:
- virtual gfx::NativeView GetNativeView() const override;
- virtual void ShowDevTools() override;
- virtual void CloseDevTools() override;
- virtual bool IsDevToolsViewShowing() override;
- virtual void SetIsDocked(bool docked) override;
- virtual void SetContentsResizingStrategy(
+ gfx::NativeView GetNativeView() const override;
+ void ShowDevTools() override;
+ void CloseDevTools() override;
+ bool IsDevToolsViewShowing() override;
+ bool IsDevToolsViewFocused() override;
+ void SetIsDocked(bool docked) override;
+ void SetContentsResizingStrategy(
const DevToolsContentsResizingStrategy& strategy) override;
+ void SetTitle(const base::string16& title) override;
InspectableWebContentsImpl* inspectable_web_contents() {
return inspectable_web_contents_;
// Owns us.
InspectableWebContentsImpl* inspectable_web_contents_;
+ bool devtools_visible_;
content::WebContentsViewEfl* web_contents_view_;
DISALLOW_COPY_AND_ASSIGN(InspectableWebContentsViewEfl);