#include "grit/xwalk_application_resources.h"
#include "grit/xwalk_sysapps_resources.h"
#include "third_party/WebKit/public/platform/WebString.h"
+#include "third_party/WebKit/public/platform/WebURLRequest.h"
#include "third_party/WebKit/public/web/WebDocument.h"
#include "third_party/WebKit/public/web/WebSecurityPolicy.h"
#include "xwalk/application/common/constants.h"
#include "xwalk/application/renderer/application_native_module.h"
#include "xwalk/extensions/renderer/xwalk_js_module.h"
+#include "xwalk/runtime/common/xwalk_localized_error.h"
#if defined(OS_ANDROID)
#include "xwalk/runtime/renderer/android/xwalk_permission_client.h"
#include "xwalk/runtime/renderer/tizen/xwalk_content_renderer_client_tizen.h"
#endif
+#if defined(OS_TIZEN)
+#include "xwalk/runtime/renderer/tizen/xwalk_render_view_ext_tizen.h"
+#endif
+
namespace xwalk {
namespace {
content::RenderView* render_view) {
#if defined(OS_ANDROID)
XWalkRenderViewExt::RenderViewCreated(render_view);
+#elif defined(OS_TIZEN)
+ XWalkRenderViewExtTizen::RenderViewCreated(render_view);
#endif
}
#if defined(OS_ANDROID)
return false;
#else
- if (!xwalk_render_process_observer_->IsWarpMode())
+ if (!xwalk_render_process_observer_->IsWarpMode()
+#if defined(OS_TIZEN)
+ && !xwalk_render_process_observer_->IsCSPMode()
+#endif
+ )
return false;
GURL origin_url(frame->document().url());
GURL app_url(xwalk_render_process_observer_->app_url());
- if ((url.scheme() == app_url.scheme() &&
- url.host() == app_url.host()) ||
+#if defined(OS_TIZEN)
+ // if under CSP mode.
+ if (xwalk_render_process_observer_->IsCSPMode()) {
+ if (url.GetOrigin() != app_url.GetOrigin() &&
+ origin_url != first_party_for_cookies &&
+ first_party_for_cookies.GetOrigin() != app_url.GetOrigin() &&
+ !frame->document().securityOrigin().canRequest(url)) {
+ LOG(INFO) << "[BLOCK] allow-navigation: " << url.spec();
+ content::RenderThread::Get()->Send(new ViewMsg_OpenLinkExternal(url));
+ *new_url = GURL();
+ return true;
+ }
+ return false;
+ }
+#endif
+ // if under WARP mode.
+ if (url.GetOrigin() == app_url.GetOrigin() ||
frame->document().securityOrigin().canRequest(url)) {
LOG(INFO) << "[PASS] " << origin_url.spec() << " request " << url.spec();
return false;
}
LOG(INFO) << "[BLOCK] " << origin_url.spec() << " request " << url.spec();
-
#if defined(OS_TIZEN)
- if (origin_url.spec().empty())
+ if (url.GetOrigin() != app_url.GetOrigin() &&
+ origin_url != first_party_for_cookies &&
+ first_party_for_cookies.GetOrigin() != app_url.GetOrigin())
content::RenderThread::Get()->Send(new ViewMsg_OpenLinkExternal(url));
#endif
return true;
#endif
}
+
+void XWalkContentRendererClient::GetNavigationErrorStrings(
+ content::RenderView* render_view,
+ blink::WebFrame* frame,
+ const blink::WebURLRequest& failed_request,
+ const blink::WebURLError& error,
+ std::string* error_html,
+ base::string16* error_description) {
+ bool is_post = EqualsASCII(failed_request.httpMethod(), "POST");
+
+ // TODO(guangzhen): Check whether error_html is needed in xwalk runtime.
+
+ if (error_description) {
+ *error_description = LocalizedError::GetErrorDetails(error, is_post);
+ }
+}
+
} // namespace xwalk