web_view_->OnMHTMLContentGet(mhtml_content, callback_id);
}
- void OnDidChangePageScaleRange(double min_scale, double max_scale) {
- if (web_view_)
- web_view_->DidChangePageScaleRange(min_scale, max_scale);
- }
-
void OnDidChangeMaxScrollOffset(int maxScrollX, int maxScrollY) {
if (web_view_)
web_view_->GetScrollDetector()->SetMaxScroll(maxScrollX, maxScrollY);
WebViewBrowserMessageFilterPrivate::OnMHTMLContentGet)
IPC_MESSAGE_FORWARD(EwkHostMsg_DidChangePageScaleFactor, private_,
WebViewBrowserMessageFilterPrivate::OnDidChangePageScaleFactor)
- IPC_MESSAGE_FORWARD(EwkHostMsg_DidChangePageScaleRange, private_,
- WebViewBrowserMessageFilterPrivate::OnDidChangePageScaleRange)
IPC_MESSAGE_FORWARD(EwkHostMsg_DidChangeMaxScrollOffset, private_,
WebViewBrowserMessageFilterPrivate::OnDidChangeMaxScrollOffset)
IPC_MESSAGE_FORWARD(EwkHostMsg_DidChangeScrollOffset, private_,
IPC_MESSAGE_ROUTED1(EwkHostMsg_DidChangePageScaleFactor,
double /* page scale factor */)
-IPC_MESSAGE_ROUTED2(EwkHostMsg_DidChangePageScaleRange,
- double, /* minimum page scale factor */
- double /* maximum page scale factor */)
-
IPC_MESSAGE_ROUTED1(EwkViewMsg_SetDrawsTransparentBackground,
bool /* enabled */)
progress_(0.0),
hit_test_completion_(false, false),
page_scale_factor_(1.0),
- min_page_scale_factor_(-1.0),
- max_page_scale_factor_(-1.0),
is_initialized_(false) {
}
void EWebView::SetScale(double scale_factor, int x, int y) {
RenderViewHost* render_view_host = web_contents_->GetRenderViewHost();
- //saving the scale value in the proxy variable before sending IPC
- page_scale_factor_ = std::min(std::max(scale_factor, min_page_scale_factor_),
- max_page_scale_factor_);
- GetWebContentsViewEfl()->SetPageScaleFactor(page_scale_factor_);
+ // Do not cache |scale_factor| here as it may be discarded by Blink's
+ // minimumPageScaleFactor and maximumPageScaleFactor.
+ // |scale_factor| is cached as responde to DidChangePageScaleFactor.
render_view_host->Send(new EwkViewMsg_Scale(render_view_host->GetRoutingID(), scale_factor, x, y));
}
}
void EWebView::GetPageScaleRange(double *min_scale, double *max_scale) {
+ RenderViewHost* render_view_host = web_contents_->GetRenderViewHost();
+ if (!render_view_host) {
+ if (min_scale)
+ *min_scale = -1.f;
+ if (max_scale)
+ *max_scale = -1.f;
+ return;
+ }
+
+ WebPreferences prefs = render_view_host->GetWebkitPreferences();
if (min_scale)
- *min_scale = min_page_scale_factor_;
+ *min_scale = prefs.default_minimum_page_scale_factor;
if (max_scale)
- *max_scale = max_page_scale_factor_;
-}
-
-void EWebView::DidChangePageScaleRange(double min_scale, double max_scale) {
- min_page_scale_factor_ = min_scale;
- max_page_scale_factor_ = max_scale;
+ *max_scale = prefs.default_maximum_page_scale_factor;
}
void EWebView::SetDrawsTransparentBackground(bool enabled) {
void JavaScriptPromptReply(const char* result);
void set_renderer_crashed();
void GetPageScaleRange(double *min_scale, double *max_scale);
- void DidChangePageScaleRange(double min_scale, double max_scale);
void SetDrawsTransparentBackground(bool enabled);
void GetSessionData(const char **data, unsigned *length) const;
bool RestoreFromSessionData(const char *data, unsigned length);
content::RenderView* render_view,
ContentRendererClientEfl* render_client)
: content::RenderViewObserver(render_view),
- cached_min_page_scale_factor_(-1.0),
- cached_max_page_scale_factor_(-1.0),
renderer_client_(render_client)
{
}
Send(new EwkHostMsg_ReadMHTMLData(render_view()->GetRoutingID(), content_string, callback_id));
}
-#if !defined(EWK_BRINGUP)
void RenderViewObserverEfl::DidChangePageScaleFactor()
{
blink::WebView* view = render_view()->GetWebView();
Send(new EwkHostMsg_DidChangePageScaleFactor(render_view()->GetRoutingID(), view->pageScaleFactor()));
}
-#endif
void RenderViewObserverEfl::DidFailLoad(blink::WebLocalFrame* frame,
const blink::WebURLError& error) {
void RenderViewObserverEfl::DidUpdateLayout()
{
- blink::WebView* view = render_view()->GetWebView();
- if (!view)
- return;
-
-#if !defined(EWK_BRINGUP)
- float min_scale = view->minimumPageScaleFactor();
- float max_scale = view->maximumPageScaleFactor();
-#else
- // TODO: (m42_2311) WebView has no minimumPageScaleFactor, maximumPageScaleFactor
- float min_scale = 1.0; //view->minimumPageScaleFactor();
- float max_scale = 5.0; //view->maximumPageScaleFactor();
-#endif
-
- // Checking for change in minimum and maximum page scale factors
- if (std::abs(cached_max_page_scale_factor_ - max_scale) < std::numeric_limits<float>::epsilon() &&
- std::abs(cached_min_page_scale_factor_ - min_scale) < std::numeric_limits<float>::epsilon())
- return;
-
- cached_max_page_scale_factor_ = max_scale;
- cached_min_page_scale_factor_ = min_scale;
- Send(new EwkHostMsg_DidChangePageScaleRange(render_view()->GetRoutingID(), min_scale, max_scale));
-
// Check if the timer is already running
if (check_contents_size_timer_.IsRunning())
return;
bool OnMessageReceived(const IPC::Message& message) override;
virtual void DidCreateDocumentElement(blink::WebLocalFrame* frame) override;
-#if !defined(EWK_BRINGUP)
virtual void DidChangePageScaleFactor() override;
-#endif
void DidFailLoad(blink::WebLocalFrame* frame,
const blink::WebURLError& error) override;
void DidFailProvisionalLoad(blink::WebLocalFrame* frame,
void OnSetViewMode(blink::WebViewMode view_mode);
void OnSetTextZoomFactor(float zoom_factor);
- float cached_min_page_scale_factor_;
- float cached_max_page_scale_factor_;
gfx::Size last_sent_contents_size_;
base::OneShotTimer check_contents_size_timer_;
return ewk_view_scale_get(web_view_);
}
+void Window::GetScaleRange(double* minScale, double* maxScale) const {
+ log_trace("%s", __PRETTY_FUNCTION__);
+ ewk_view_scale_range_get(web_view_, minScale, maxScale);
+}
+
void Window::SetScale(double scale) {
log_trace("%s", __PRETTY_FUNCTION__);
ewk_view_scale_set(web_view_, scale, 0, 0);
bool IsFormProfileEnabled() const;
bool IsPrivateBrowsingEnabled() const;
double GetScale() const;
+ void GetScaleRange(double* minScale, double* maxScale) const;
void SetScale(double);
void Exit() const;
Evas_Object* btn = elm_button_add(popup);
Evas_Object* slider = elm_slider_add(popup);
+ thiz->window_.GetScaleRange(&kMinViewScale, &kMaxViewScale);
elm_slider_min_max_set(slider, kMinViewScale, kMaxViewScale);
elm_slider_value_set(slider, thiz->window_.GetScale());
elm_slider_indicator_format_set(slider, "%1.2f");
const Evas_Coord centerY = 5;
ASSERT_TRUE(ewk_view_scale_set(GetEwkWebView(), scaleFactor, centerX, centerY));
- double currentScale = ewk_view_scale_get(GetEwkWebView());
- ASSERT_LT(abs(scaleFactor - currentScale), precision);
-
ecore_timer_add(0.5f, mainLoopQuit, this);
ASSERT_EQ(Success, EventLoopStart());
-
- currentScale = ewk_view_scale_get(GetEwkWebView());
+ double currentScale = ewk_view_scale_get(GetEwkWebView());
ASSERT_LT(abs(scaleFactor - currentScale), precision);
ASSERT_TRUE(ewk_view_scale_set(GetEwkWebView(), maxScale + 1, centerX, centerY));
+ ecore_timer_add(0.5f, mainLoopQuit, this);
+ ASSERT_EQ(Success, EventLoopStart());
currentScale = ewk_view_scale_get(GetEwkWebView());
ASSERT_LT(abs(maxScale - currentScale), precision);
// Now scale is set to max. Set overscale once again to make sure getter return correct value
ASSERT_TRUE(ewk_view_scale_set(GetEwkWebView(), maxScale + 1, centerX, centerY));
+ ecore_timer_add(0.5f, mainLoopQuit, this);
+ ASSERT_EQ(Success, EventLoopStart());
currentScale = ewk_view_scale_get(GetEwkWebView());
ASSERT_LT(abs(maxScale - currentScale), precision);
ASSERT_TRUE(ewk_view_scale_set(GetEwkWebView(), minScale - 1, centerX, centerY));
+ ecore_timer_add(0.5f, mainLoopQuit, this);
+ ASSERT_EQ(Success, EventLoopStart());
currentScale = ewk_view_scale_get(GetEwkWebView());
ASSERT_LT(abs(minScale - currentScale), precision);
}