int active_match_ordinal,
bool final_update) {}
+#if defined(USE_EFL)
+ virtual void DidRenderFrame() {}
+#endif
+
#if defined(OS_ANDROID)
// Provides the rects of the current find-in-page matches.
// Sent as a reply to RequestFindMatchRects.
void RenderWidget::DidMeaningfulLayout(blink::WebMeaningfulLayout layout_type) {
if (layout_type == blink::WebMeaningfulLayout::kVisuallyNonEmpty) {
+#if defined(USE_EFL)
+ Send(new ViewHostMsg_DidFirstVisuallyNonEmptyPaint(routing_id_));
+#else
QueueMessage(new ViewHostMsg_DidFirstVisuallyNonEmptyPaint(routing_id_),
MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE);
+#endif
}
for (auto& observer : render_frames_)
DCHECK(evasgl_delegated_frame_host_);
evasgl_delegated_frame_host_->SwapDelegatedFrame(local_surface_id,
std::move(frame));
+ web_contents_.GetDelegate()->DidRenderFrame();
Invalidate(false);
}
web_view_(view),
is_fullscreen_(false),
web_contents_(view->web_contents()),
+ did_render_frame_(false),
+ did_first_visually_non_empty_paint_(false),
document_created_(false),
dialog_manager_(NULL),
weak_ptr_factory_(this) {
}
}
+void WebContentsDelegateEfl::DidRenderFrame() {
+ // Call FrameRendered callback when loading and first layout is finished.
+ if (!did_render_frame_ && did_first_visually_non_empty_paint_ &&
+ (web_view_->GetProgressValue() > 0.1)) {
+ did_first_visually_non_empty_paint_ = false;
+ did_render_frame_ = true;
+#if defined(USE_TTRACE)
+ TTRACE_WEB("WebContentsDelegateEfl::DidRenderFrame");
+#endif
+ LOG(INFO) << "WebContentsDelegateEfl::DidRenderFrame";
+
+ // "frame,rendered" message is triggered as soon as rendering of a frame
+ // is completed.
+ web_view_->SmartCallback<EWebViewCallbacks::FrameRendered>().call(0);
+ }
+}
+
JavaScriptDialogManager* WebContentsDelegateEfl::GetJavaScriptDialogManager(
WebContents* source) {
if (!dialog_manager_)
}
void WebContentsDelegateEfl::DidFirstVisuallyNonEmptyPaint() {
+ did_first_visually_non_empty_paint_ = true;
web_view_->SmartCallback<EWebViewCallbacks::LoadNonEmptyLayoutFinished>()
.call();
- web_view_->SmartCallback<EWebViewCallbacks::FrameRendered>().call(0);
+}
+
+void WebContentsDelegateEfl::DidStartLoading() {
+ did_render_frame_ = false;
}
void WebContentsDelegateEfl::OnGetContentSecurityPolicy(
int active_match_ordinal,
bool final_update) override;
+ void DidRenderFrame() override;
+
void RequestCertificateConfirm(
WebContents* web_contents,
int cert_error,
Ewk_CSP_Header_Type header_type);
void DidFirstVisuallyNonEmptyPaint() override;
+ void DidStartLoading() override;
bool OnMessageReceived(const IPC::Message& message) override;
void OnPrintedMetafileReceived(const DidPrintPagesParams& params);
bool is_fullscreen_;
WebContents& web_contents_;
+ bool did_render_frame_;
+ bool did_first_visually_non_empty_paint_;
+
struct ContentSecurityPolicy {
ContentSecurityPolicy(const std::string& p, Ewk_CSP_Header_Type type)
: policy(p), header_type(type) {}