void RenderWidgetHostViewEfl::DidOverscroll(
const ui::DidOverscrollParams& params) {
+ auto* web_contents_impl = static_cast<WebContentsImpl*>(&web_contents_);
+ if (auto* wcve =
+ static_cast<WebContentsViewEfl*>(web_contents_impl->GetView())) {
+ wcve->OnOverscrolled(params.accumulated_overscroll,
+ params.latest_overscroll_delta);
+ }
+
const gfx::Vector2dF& accumulated_overscroll = params.accumulated_overscroll;
const gfx::Vector2dF& latest_overscroll_delta =
params.latest_overscroll_delta;
return false;
}
+void WebContentsViewEfl::OnOverscrolled(
+ const gfx::Vector2dF& accumulated_overscroll,
+ const gfx::Vector2dF& latest_overscroll_delta) {
+ if (efl_delegate_)
+ efl_delegate_->OnOverscrolled(accumulated_overscroll,
+ latest_overscroll_delta);
+}
+
} // namespace content
bool UseKeyPadWithoutUserAction();
+ void OnOverscrolled(const gfx::Vector2dF& accumulated_overscroll,
+ const gfx::Vector2dF& latest_overscroll_delta);
+
private:
// Our optional, generic views wrapper.
std::unique_ptr<WebContentsViewDelegate> delegate_;
virtual void OrientationLock(device::mojom::ScreenOrientationLockType) = 0;
virtual void OrientationUnlock() = 0;
+
+ virtual void OnOverscrolled(
+ const gfx::Vector2dF& accumulated_overscroll,
+ const gfx::Vector2dF& latest_overscroll_delta) = 0;
};
} // namespace content
#include "base/strings/utf_string_conversions.h"
#include "browser/navigation_policy_handler_efl.h"
#include "browser/quota_permission_context_efl.h"
+#include "browser/selectpicker/popup_menu_item.h"
+#include "browser/selectpicker/popup_menu_item_private.h"
#include "browser/web_view_browser_message_filter.h"
+#include "browser/web_view_evas_handler.h"
#include "common/content_client_efl.h"
#include "common/render_messages_ewk.h"
#include "common/version_info.h"
#include "tizen/system_info.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/display/screen.h"
+#include "ui/gfx/geometry/vector2d_f.h"
#include "web_contents_delegate_efl.h"
#include "web_contents_efl_delegate_ewk.h"
#include "web_contents_view_efl_delegate_ewk.h"
-#include "browser/web_view_evas_handler.h"
-
-#include "browser/selectpicker/popup_menu_item.h"
-#include "browser/selectpicker/popup_menu_item_private.h"
#include <Ecore_Evas.h>
#include <Elementary.h>
#include <Eina.h>
web_contents_->ClosePage();
}
+void EWebView::OnOverscrolled(const gfx::Vector2dF& accumulated_overscroll,
+ const gfx::Vector2dF& latest_overscroll_delta) {
+ const gfx::Vector2dF old_overscroll =
+ accumulated_overscroll - latest_overscroll_delta;
+
+ if (latest_overscroll_delta.x() && !old_overscroll.x()) {
+ latest_overscroll_delta.x() < 0
+ ? SmartCallback<EWebViewCallbacks::OverscrolledLeft>().call()
+ : SmartCallback<EWebViewCallbacks::OverscrolledRight>().call();
+ }
+ if (latest_overscroll_delta.y() && !old_overscroll.y()) {
+ latest_overscroll_delta.y() < 0
+ ? SmartCallback<EWebViewCallbacks::OverscrolledTop>().call()
+ : SmartCallback<EWebViewCallbacks::OverscrolledBottom>().call();
+ }
+}
void SyncAcceptLanguages(const std::string& accept_languages);
+ void OnOverscrolled(const gfx::Vector2dF& accumulated_overscroll,
+ const gfx::Vector2dF& latest_overscroll_delta);
+
private:
void InitializeContent();
void SendDelayedMessages(content::RenderViewHost* render_view_host);
EdgeRight,
EdgeTop,
EdgeBottom,
+ OverscrolledLeft,
+ OverscrolledRight,
+ OverscrolledTop,
+ OverscrolledBottom,
TextStyleState,
TextSelectionMode,
SaveSessionData,
DECLARE_EWK_VIEW_CALLBACK(EdgeTop, "edge,top", void);
DECLARE_EWK_VIEW_CALLBACK(EdgeBottom, "edge,bottom", void);
DECLARE_EWK_VIEW_CALLBACK(EdgeRight, "edge,right", void);
+DECLARE_EWK_VIEW_CALLBACK(OverscrolledLeft, "overscrolled,left", void);
+DECLARE_EWK_VIEW_CALLBACK(OverscrolledRight, "overscrolled,right", void);
+DECLARE_EWK_VIEW_CALLBACK(OverscrolledTop, "overscrolled,top", void);
+DECLARE_EWK_VIEW_CALLBACK(OverscrolledBottom, "overscrolled,bottom", void);
DECLARE_EWK_VIEW_CALLBACK(TextStyleState, "text,style,state", _Ewk_Text_Style*);
DECLARE_EWK_VIEW_CALLBACK(SaveSessionData, "save,session,data", void);
DECLARE_EWK_VIEW_CALLBACK(UndoSize, "undo,size", size_t*);
// found in the LICENSE file.
#include "web_contents_view_efl_delegate_ewk.h"
-#include "ewk/efl_integration/private/webview_delegate_ewk.h"
#include "eweb_view.h"
+#include "ewk/efl_integration/private/webview_delegate_ewk.h"
WebContentsViewEflDelegateEwk::WebContentsViewEflDelegateEwk(EWebView* wv)
: web_view_(wv) {
void WebContentsViewEflDelegateEwk::OrientationUnlock() {
WebViewDelegateEwk::GetInstance().RequestHandleOrientationUnlock(web_view_);
}
+
+void WebContentsViewEflDelegateEwk::OnOverscrolled(
+ const gfx::Vector2dF& accumulated_overscroll,
+ const gfx::Vector2dF& latest_overscroll_delta) {
+ web_view_->OnOverscrolled(accumulated_overscroll, latest_overscroll_delta);
+}
virtual void OrientationUnlock() override;
private:
+ void OnOverscrolled(const gfx::Vector2dF& accumulated_overscroll,
+ const gfx::Vector2dF& latest_overscroll_delta) override;
+
EWebView* web_view_;
};