From 3a51af92707b9c600d06a404c9db8f07fcd50959 Mon Sep 17 00:00:00 2001 From: Eurogiciel-BOT Date: Wed, 20 Aug 2014 12:23:42 +0000 Subject: [PATCH] Upstream version 9.37.193.0 Upstream commit-id 868397f443d0425f38abb88487798e7949d0f138 Change-Id: Ic80a08c8e53d59a5b15c17b490203e8940d55a99 Signed-off-by: Eurogiciel-BOT --- packaging/crosswalk.spec | 2 +- src/xwalk/VERSION | 2 +- .../res/{values-v17 => values-v14}/theme.xml | 0 src/xwalk/app/tools/android/customize.py | 2 +- src/xwalk/app/tools/android/make_apk.py | 4 +- src/xwalk/app/tools/android/make_apk_test.py | 8 +- .../application/common/installer/signature_data.cc | 20 + .../application/common/installer/signature_data.h | 6 +- .../common/xwalk_application_common.gypi | 1 + src/xwalk/packaging/crosswalk.spec | 2 +- .../core/internal/XWalkLaunchScreenManager.java | 12 +- .../xwalk/core/internal/XWalkUIClientInternal.java | 24 +- .../org/xwalk/core/internal/XWalkViewInternal.java | 4 +- .../renderer_host/xwalk_render_view_host_ext.cc | 2 +- .../renderer_host/xwalk_render_view_host_ext.h | 2 +- .../browser/android/xwalk_dev_tools_server.cc | 14 +- ...me_resource_dispatcher_host_delegate_android.cc | 3 +- ...ime_resource_dispatcher_host_delegate_android.h | 3 +- src/xwalk/runtime/browser/ui/native_app_window.cc | 3 + src/xwalk/runtime/browser/ui/native_app_window.h | 1 + .../renderer/android/xwalk_permission_client.cc | 6 +- .../renderer/android/xwalk_permission_client.h | 7 +- .../renderer/android/xwalk_render_view_ext.cc | 6 +- .../renderer/android/xwalk_render_view_ext.h | 2 +- src/xwalk/runtime/renderer/isolated_file_system.cc | 13 +- .../xwview/test/ShouldOverrideUrlLoadingTest.java | 573 +++++++++++++++++++++ .../xwalk/core/xwview/test/TestHelperBridge.java | 51 ++ .../xwalk/core/xwview/test/XWalkViewTestBase.java | 34 ++ .../core/xwview/test/util/CommonResources.java | 18 + .../runtime/client/test/NativeFileSystemTest.java | 1 - .../client/embedded/test/NativeFileSystemTest.java | 1 - src/xwalk/tools/lint.py | 4 + src/xwalk/tools/utils.py | 5 + 33 files changed, 780 insertions(+), 56 deletions(-) rename src/xwalk/app/android/app_template/res/{values-v17 => values-v14}/theme.xml (100%) create mode 100644 src/xwalk/application/common/installer/signature_data.cc create mode 100644 src/xwalk/test/android/core/javatests/src/org/xwalk/core/xwview/test/ShouldOverrideUrlLoadingTest.java diff --git a/packaging/crosswalk.spec b/packaging/crosswalk.spec index 83c35df..1df546f 100644 --- a/packaging/crosswalk.spec +++ b/packaging/crosswalk.spec @@ -16,7 +16,7 @@ %endif Name: crosswalk -Version: 9.37.190.0 +Version: 9.37.193.0 Release: 0 Summary: Crosswalk is an app runtime based on Chromium License: (BSD-3-Clause and LGPL-2.1+) diff --git a/src/xwalk/VERSION b/src/xwalk/VERSION index cf0da9d..44cd943 100644 --- a/src/xwalk/VERSION +++ b/src/xwalk/VERSION @@ -1,4 +1,4 @@ MAJOR=9 MINOR=37 -BUILD=190 +BUILD=193 PATCH=0 diff --git a/src/xwalk/app/android/app_template/res/values-v17/theme.xml b/src/xwalk/app/android/app_template/res/values-v14/theme.xml similarity index 100% rename from src/xwalk/app/android/app_template/res/values-v17/theme.xml rename to src/xwalk/app/android/app_template/res/values-v14/theme.xml diff --git a/src/xwalk/app/tools/android/customize.py b/src/xwalk/app/tools/android/customize.py index 510dd63..2259cea 100755 --- a/src/xwalk/app/tools/android/customize.py +++ b/src/xwalk/app/tools/android/customize.py @@ -155,7 +155,7 @@ def CustomizeStringXML(name, description): def CustomizeThemeXML(name, fullscreen, manifest): - theme_path = os.path.join(name, 'res', 'values-v17', 'theme.xml') + theme_path = os.path.join(name, 'res', 'values-v14', 'theme.xml') if not os.path.isfile(theme_path): print('Error: theme.xml is missing in the build tool.') sys.exit(6) diff --git a/src/xwalk/app/tools/android/make_apk.py b/src/xwalk/app/tools/android/make_apk.py index ebed389..aed683a 100755 --- a/src/xwalk/app/tools/android/make_apk.py +++ b/src/xwalk/app/tools/android/make_apk.py @@ -63,7 +63,7 @@ def RunCommand(command, verbose=False, shell=False): print ('Command "%s" exited with non-zero exit code %d' % (' '.join(command), result)) sys.exit(result) - return output + return output.decode("utf-8") def Which(name): @@ -84,7 +84,7 @@ def GetAndroidApiLevel(): """ target_output = RunCommand(['android', 'list', 'target', '-c']) target_regex = re.compile(r'android-(\d+)') - targets = map(int, target_regex.findall(target_output)) + targets = [int(i) for i in target_regex.findall(target_output)] targets.extend([-1]) return max(targets) diff --git a/src/xwalk/app/tools/android/make_apk_test.py b/src/xwalk/app/tools/android/make_apk_test.py index 3f6c97c..934ce04 100755 --- a/src/xwalk/app/tools/android/make_apk_test.py +++ b/src/xwalk/app/tools/android/make_apk_test.py @@ -468,7 +468,7 @@ class TestMakeApk(unittest.TestCase): '-f', self._mode] RunCommand(cmd) self.addCleanup(Clean, 'Example', '1.0.0') - theme = 'Example/res/values-v17/theme.xml' + theme = 'Example/res/values-v14/theme.xml' with open(theme, 'r') as content_file: content = content_file.read() self.assertTrue(os.path.exists(theme)) @@ -541,7 +541,7 @@ class TestMakeApk(unittest.TestCase): self.assertTrue(content.find('android.permission.SEND_SMS') != -1) self.assertTrue(content.find('android.permission.WRITE_SMS') != -1) self.assertTrue(content.find('landscape') != -1) - theme = 'Example/res/values-v17/theme.xml' + theme = 'Example/res/values-v14/theme.xml' with open(theme, 'r') as content_file: content = content_file.read() self.assertTrue(os.path.exists(theme)) @@ -837,7 +837,7 @@ class TestMakeApk(unittest.TestCase): # Test orientation option. self.assertTrue(content.find('landscape') != -1) # Test fullscreen option - theme = 'Example/res/values-v17/theme.xml' + theme = 'Example/res/values-v14/theme.xml' with open(theme, 'r') as content_file: content = content_file.read() self.assertTrue(os.path.exists(theme)) @@ -903,7 +903,7 @@ class TestMakeApk(unittest.TestCase): '--manifest=%s' % manifest_path, self._mode] RunCommand(cmd) # Check theme.xml. - theme_path = os.path.join('Example', 'res', 'values-v17', 'theme.xml') + theme_path = os.path.join('Example', 'res', 'values-v14', 'theme.xml') self.assertTrue(os.path.exists(theme_path)) with open(theme_path, 'r') as content_file: content = content_file.read() diff --git a/src/xwalk/application/common/installer/signature_data.cc b/src/xwalk/application/common/installer/signature_data.cc new file mode 100644 index 0000000..740749b --- /dev/null +++ b/src/xwalk/application/common/installer/signature_data.cc @@ -0,0 +1,20 @@ +// Copyright (c) 2014 Intel Corporation. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "xwalk/application/common/installer/signature_data.h" + +namespace xwalk { +namespace application { + +SignatureData::SignatureData(const std::string& signature_file_name, + int signature_number) + : signature_file_name_(signature_file_name), + signature_number_(signature_number) { +} + +SignatureData::~SignatureData() { +} + +} // namespace application +} // namespace xwalk diff --git a/src/xwalk/application/common/installer/signature_data.h b/src/xwalk/application/common/installer/signature_data.h index 5f7f60a..4e623d3 100644 --- a/src/xwalk/application/common/installer/signature_data.h +++ b/src/xwalk/application/common/installer/signature_data.h @@ -19,10 +19,8 @@ namespace application { class SignatureData { public: - SignatureData(const std::string& signature_file_name, int signature_number) - : signature_file_name_(signature_file_name), - signature_number_(signature_number) { - } + SignatureData(const std::string& signature_file_name, int signature_number); + ~SignatureData(); std::string signature_file_name() const { return signature_file_name_; diff --git a/src/xwalk/application/common/xwalk_application_common.gypi b/src/xwalk/application/common/xwalk_application_common.gypi index cb7eca1..77121b9 100644 --- a/src/xwalk/application/common/xwalk_application_common.gypi +++ b/src/xwalk/application/common/xwalk_application_common.gypi @@ -55,6 +55,7 @@ 'installer/package_installer.cc', 'installer/package_installer.h', 'installer/signature_data.h', + 'installer/signature_data.cc', 'installer/signature_parser.h', 'installer/signature_parser.cc', 'installer/wgt_package.h', diff --git a/src/xwalk/packaging/crosswalk.spec b/src/xwalk/packaging/crosswalk.spec index 83c35df..1df546f 100644 --- a/src/xwalk/packaging/crosswalk.spec +++ b/src/xwalk/packaging/crosswalk.spec @@ -16,7 +16,7 @@ %endif Name: crosswalk -Version: 9.37.190.0 +Version: 9.37.193.0 Release: 0 Summary: Crosswalk is an app runtime based on Chromium License: (BSD-3-Clause and LGPL-2.1+) diff --git a/src/xwalk/runtime/android/core_internal/src/org/xwalk/core/internal/XWalkLaunchScreenManager.java b/src/xwalk/runtime/android/core_internal/src/org/xwalk/core/internal/XWalkLaunchScreenManager.java index 4467121..61cf68b 100644 --- a/src/xwalk/runtime/android/core_internal/src/org/xwalk/core/internal/XWalkLaunchScreenManager.java +++ b/src/xwalk/runtime/android/core_internal/src/org/xwalk/core/internal/XWalkLaunchScreenManager.java @@ -105,12 +105,12 @@ public class XWalkLaunchScreenManager mLaunchScreenDialog = new Dialog(mLibContext, android.R.style.Theme_Holo_Light_NoActionBar); - if ((mActivity.getWindow().getAttributes().flags & - WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0) { - mLaunchScreenDialog.getWindow().setFlags( - WindowManager.LayoutParams.FLAG_FULLSCREEN, - WindowManager.LayoutParams.FLAG_FULLSCREEN); - } + + int parentVisibility = mActivity.getWindow().getDecorView().getSystemUiVisibility(); + WindowManager.LayoutParams parentParams = mActivity.getWindow().getAttributes(); + mLaunchScreenDialog.getWindow().getDecorView().setSystemUiVisibility(parentVisibility); + mLaunchScreenDialog.getWindow().setAttributes(parentParams); + mLaunchScreenDialog.setOnKeyListener(new Dialog.OnKeyListener() { @Override public boolean onKey(DialogInterface arg0, int keyCode, diff --git a/src/xwalk/runtime/android/core_internal/src/org/xwalk/core/internal/XWalkUIClientInternal.java b/src/xwalk/runtime/android/core_internal/src/org/xwalk/core/internal/XWalkUIClientInternal.java index 9b48d8d..be57e6f 100644 --- a/src/xwalk/runtime/android/core_internal/src/org/xwalk/core/internal/XWalkUIClientInternal.java +++ b/src/xwalk/runtime/android/core_internal/src/org/xwalk/core/internal/XWalkUIClientInternal.java @@ -136,6 +136,14 @@ public class XWalkUIClientInternal { public void onFullscreenToggled(XWalkViewInternal view, boolean enterFullscreen) { Activity activity = view.getActivity(); if (enterFullscreen) { + if ((activity.getWindow().getAttributes().flags & + WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN) != 0) { + mOriginalForceNotFullscreen = true; + activity.getWindow().clearFlags( + WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); + } else { + mOriginalForceNotFullscreen = false; + } if (VERSION.SDK_INT >= VERSION_CODES.KITKAT) { mSystemUiFlag = mDecorView.getSystemUiVisibility(); mDecorView.setSystemUiVisibility( @@ -145,14 +153,6 @@ public class XWalkUIClientInternal { View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); - if ((activity.getWindow().getAttributes().flags & - WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN) != 0) { - mOriginalForceNotFullscreen = true; - activity.getWindow().clearFlags( - WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); - } else { - mOriginalForceNotFullscreen = false; - } } else { if ((activity.getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0) { @@ -163,12 +163,12 @@ public class XWalkUIClientInternal { } } } else { + if (mOriginalForceNotFullscreen) { + activity.getWindow().addFlags( + WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); + } if (VERSION.SDK_INT >= VERSION_CODES.KITKAT) { mDecorView.setSystemUiVisibility(mSystemUiFlag); - if (mOriginalForceNotFullscreen) { - activity.getWindow().addFlags( - WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); - } } else { // Clear the activity fullscreen flag. if (!mOriginalFullscreen) { diff --git a/src/xwalk/runtime/android/core_internal/src/org/xwalk/core/internal/XWalkViewInternal.java b/src/xwalk/runtime/android/core_internal/src/org/xwalk/core/internal/XWalkViewInternal.java index ad93b27..ddc6e7c 100644 --- a/src/xwalk/runtime/android/core_internal/src/org/xwalk/core/internal/XWalkViewInternal.java +++ b/src/xwalk/runtime/android/core_internal/src/org/xwalk/core/internal/XWalkViewInternal.java @@ -881,7 +881,7 @@ public class XWalkViewInternal extends android.widget.FrameLayout { private void onActivityStateChange(Activity activity, int newState) { assert(getActivity() == activity); switch (newState) { - case ActivityState.STARTED: + case ActivityState.STARTED: onShow(); break; case ActivityState.PAUSED: @@ -893,7 +893,7 @@ public class XWalkViewInternal extends android.widget.FrameLayout { case ActivityState.DESTROYED: onDestroy(); break; - case ActivityState.STOPPED: + case ActivityState.STOPPED: onHide(); break; default: diff --git a/src/xwalk/runtime/browser/android/renderer_host/xwalk_render_view_host_ext.cc b/src/xwalk/runtime/browser/android/renderer_host/xwalk_render_view_host_ext.cc index e983880..7877ade 100644 --- a/src/xwalk/runtime/browser/android/renderer_host/xwalk_render_view_host_ext.cc +++ b/src/xwalk/runtime/browser/android/renderer_host/xwalk_render_view_host_ext.cc @@ -95,7 +95,7 @@ void XWalkRenderViewHostExt::SetJsOnlineProperty(bool network_up) { Send(new XWalkViewMsg_SetJsOnlineProperty(network_up)); } -void XWalkRenderViewHostExt::RenderViewGone(base::TerminationStatus status) { +void XWalkRenderViewHostExt::RenderProcessGone(base::TerminationStatus status) { DCHECK(CalledOnValidThread()); for (std::map::iterator pending_req = pending_document_has_images_requests_.begin(); diff --git a/src/xwalk/runtime/browser/android/renderer_host/xwalk_render_view_host_ext.h b/src/xwalk/runtime/browser/android/renderer_host/xwalk_render_view_host_ext.h index 2b110ee..73be9a6 100644 --- a/src/xwalk/runtime/browser/android/renderer_host/xwalk_render_view_host_ext.h +++ b/src/xwalk/runtime/browser/android/renderer_host/xwalk_render_view_host_ext.h @@ -71,7 +71,7 @@ class XWalkRenderViewHostExt : public content::WebContentsObserver, // content::WebContentsObserver implementation. virtual void RenderViewCreated( content::RenderViewHost* render_view_host) OVERRIDE; - virtual void RenderViewGone(base::TerminationStatus status) OVERRIDE; + virtual void RenderProcessGone(base::TerminationStatus status) OVERRIDE; virtual void DidNavigateAnyFrame( const content::LoadCommittedDetails& details, const content::FrameNavigateParams& params) OVERRIDE; diff --git a/src/xwalk/runtime/browser/android/xwalk_dev_tools_server.cc b/src/xwalk/runtime/browser/android/xwalk_dev_tools_server.cc index 0e2bf81..a592db3 100644 --- a/src/xwalk/runtime/browser/android/xwalk_dev_tools_server.cc +++ b/src/xwalk/runtime/browser/android/xwalk_dev_tools_server.cc @@ -26,6 +26,7 @@ #include "content/public/browser/navigation_entry.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" +#include "content/public/browser/web_contents_delegate.h" #include "content/public/common/user_agent.h" #include "grit/xwalk_resources.h" #include "jni/XWalkDevToolsServer_jni.h" @@ -66,7 +67,18 @@ class Target : public content::DevToolsTarget { virtual scoped_refptr GetAgentHost() const OVERRIDE { return agent_host_; } - virtual bool Activate() const OVERRIDE { return false; } + + virtual bool Activate() const OVERRIDE { + RenderViewHost* rvh = agent_host_->GetRenderViewHost(); + if (!rvh) + return false; + WebContents* web_contents = WebContents::FromRenderViewHost(rvh); + if (!web_contents) + return false; + web_contents->GetDelegate()->ActivateContents(web_contents); + return true; + } + virtual bool Close() const OVERRIDE { return false; } private: diff --git a/src/xwalk/runtime/browser/runtime_resource_dispatcher_host_delegate_android.cc b/src/xwalk/runtime/browser/runtime_resource_dispatcher_host_delegate_android.cc index 8a572be..b385f6c 100644 --- a/src/xwalk/runtime/browser/runtime_resource_dispatcher_host_delegate_android.cc +++ b/src/xwalk/runtime/browser/runtime_resource_dispatcher_host_delegate_android.cc @@ -302,7 +302,8 @@ content::ResourceDispatcherHostLoginDelegate* bool RuntimeResourceDispatcherHostDelegateAndroid::HandleExternalProtocol( const GURL& url, int child_id, - int route_id) { + int route_id, + bool initiated_by_user_gesture) { // On Android, there are many Uris need to be handled differently. // e.g: sms:, tel:, mailto: and etc. // So here return false to let embedders to decide which protocol diff --git a/src/xwalk/runtime/browser/runtime_resource_dispatcher_host_delegate_android.h b/src/xwalk/runtime/browser/runtime_resource_dispatcher_host_delegate_android.h index 559b8df..2c20fbe 100644 --- a/src/xwalk/runtime/browser/runtime_resource_dispatcher_host_delegate_android.h +++ b/src/xwalk/runtime/browser/runtime_resource_dispatcher_host_delegate_android.h @@ -56,7 +56,8 @@ class RuntimeResourceDispatcherHostDelegateAndroid virtual bool HandleExternalProtocol( const GURL& url, int child_id, - int route_id) OVERRIDE; + int route_id, + bool initiated_by_user_gesture) OVERRIDE; virtual void OnResponseStarted( net::URLRequest* request, content::ResourceContext* resource_context, diff --git a/src/xwalk/runtime/browser/ui/native_app_window.cc b/src/xwalk/runtime/browser/ui/native_app_window.cc index 3f6e0e5..f782ea1 100644 --- a/src/xwalk/runtime/browser/ui/native_app_window.cc +++ b/src/xwalk/runtime/browser/ui/native_app_window.cc @@ -15,5 +15,8 @@ NativeAppWindow::CreateParams::CreateParams() parent(NULL) { } +NativeAppWindow::CreateParams::~CreateParams() { +} + } // namespace xwalk diff --git a/src/xwalk/runtime/browser/ui/native_app_window.h b/src/xwalk/runtime/browser/ui/native_app_window.h index 1ef0b44..7fe49f4 100644 --- a/src/xwalk/runtime/browser/ui/native_app_window.h +++ b/src/xwalk/runtime/browser/ui/native_app_window.h @@ -34,6 +34,7 @@ class NativeAppWindow { public: struct CreateParams { CreateParams(); + ~CreateParams(); // Delegate for this window. NativeAppWindowDelegate* delegate; // WebContents which the content will be displayed in this window. diff --git a/src/xwalk/runtime/renderer/android/xwalk_permission_client.cc b/src/xwalk/runtime/renderer/android/xwalk_permission_client.cc index 41221b9..82d61a6 100644 --- a/src/xwalk/runtime/renderer/android/xwalk_permission_client.cc +++ b/src/xwalk/runtime/renderer/android/xwalk_permission_client.cc @@ -12,7 +12,6 @@ namespace xwalk { - XWalkPermissionClient::XWalkPermissionClient(content::RenderFrame* render_frame) : content::RenderFrameObserver(render_frame) { render_frame->GetWebFrame()->setPermissionClient(this); @@ -21,9 +20,8 @@ XWalkPermissionClient::XWalkPermissionClient(content::RenderFrame* render_frame) XWalkPermissionClient::~XWalkPermissionClient() { } -bool XWalkPermissionClient::allowImage(blink::WebFrame* frame, - bool enabled_per_settings, - const blink::WebURL& image_url) { +bool XWalkPermissionClient::allowImage(bool enabled_per_settings, + const blink::WebURL& image_url) { // Implementing setBlockNetworkImages, so allow local scheme images to be // loaded. if (enabled_per_settings) diff --git a/src/xwalk/runtime/renderer/android/xwalk_permission_client.h b/src/xwalk/runtime/renderer/android/xwalk_permission_client.h index d0b896c..cb6d972 100644 --- a/src/xwalk/runtime/renderer/android/xwalk_permission_client.h +++ b/src/xwalk/runtime/renderer/android/xwalk_permission_client.h @@ -12,7 +12,7 @@ namespace xwalk { // XWalk implementation of blink::WebPermissionClient. class XWalkPermissionClient : public content::RenderFrameObserver, - public blink::WebPermissionClient { + public blink::WebPermissionClient { public: explicit XWalkPermissionClient(content::RenderFrame* render_view); @@ -20,9 +20,8 @@ class XWalkPermissionClient : public content::RenderFrameObserver, virtual ~XWalkPermissionClient(); // blink::WebPermissionClient implementation. - virtual bool allowImage(blink::WebFrame* frame, - bool enabledPerSettings, - const blink::WebURL& imageURL) OVERRIDE; + virtual bool allowImage(bool enabledPerSettings, + const blink::WebURL& imageURL) OVERRIDE; DISALLOW_COPY_AND_ASSIGN(XWalkPermissionClient); }; diff --git a/src/xwalk/runtime/renderer/android/xwalk_render_view_ext.cc b/src/xwalk/runtime/renderer/android/xwalk_render_view_ext.cc index a14ca4e..6372c57 100644 --- a/src/xwalk/runtime/renderer/android/xwalk_render_view_ext.cc +++ b/src/xwalk/runtime/renderer/android/xwalk_render_view_ext.cc @@ -20,8 +20,8 @@ #include "third_party/WebKit/public/web/WebDocument.h" #include "third_party/WebKit/public/web/WebElement.h" #include "third_party/WebKit/public/web/WebElementCollection.h" -#include "third_party/WebKit/public/web/WebFrame.h" #include "third_party/WebKit/public/web/WebHitTestResult.h" +#include "third_party/WebKit/public/web/WebLocalFrame.h" #include "third_party/WebKit/public/web/WebNode.h" #include "third_party/WebKit/public/web/WebNodeList.h" #include "third_party/WebKit/public/web/WebSecurityOrigin.h" @@ -168,8 +168,8 @@ void XWalkRenderViewExt::OnDocumentHasImagesRequest(int id) { hasImages)); } -void XWalkRenderViewExt::DidCommitProvisionalLoad(blink::WebFrame* frame, - bool is_new_navigation) { +void XWalkRenderViewExt::DidCommitProvisionalLoad(blink::WebLocalFrame* frame, + bool is_new_navigation) { content::DocumentState* document_state = content::DocumentState::FromDataSource(frame->dataSource()); if (document_state->can_load_local_resources()) { diff --git a/src/xwalk/runtime/renderer/android/xwalk_render_view_ext.h b/src/xwalk/runtime/renderer/android/xwalk_render_view_ext.h index 7374481..44ae82d 100644 --- a/src/xwalk/runtime/renderer/android/xwalk_render_view_ext.h +++ b/src/xwalk/runtime/renderer/android/xwalk_render_view_ext.h @@ -32,7 +32,7 @@ class XWalkRenderViewExt : public content::RenderViewObserver { // RenderView::Observer: virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; - virtual void DidCommitProvisionalLoad(blink::WebFrame* frame, + virtual void DidCommitProvisionalLoad(blink::WebLocalFrame* frame, bool is_new_navigation) OVERRIDE; virtual void FocusedNodeChanged(const blink::WebNode& node) OVERRIDE; virtual void DidCommitCompositorFrame() OVERRIDE; diff --git a/src/xwalk/runtime/renderer/isolated_file_system.cc b/src/xwalk/runtime/renderer/isolated_file_system.cc index 5ecda18..4a840c5 100644 --- a/src/xwalk/runtime/renderer/isolated_file_system.cc +++ b/src/xwalk/runtime/renderer/isolated_file_system.cc @@ -52,15 +52,22 @@ void IsolatedFileSystem::GetIsolatedFileSystem( CHECK(data_source); GURL context_url(data_source->request().url()); - std::string name(fileapi::GetIsolatedFileSystemName(context_url.GetOrigin(), - file_system_id)); + // In instrument test, context_url.GetOrigin() returns emtpy string. + // That causes app crash. So assign "file:///" as default value to + // origin to avoid this. + GURL origin("file:///"); + if (!context_url.SchemeIs(url::kDataScheme) && + !context_url.GetOrigin().is_empty()) { + origin = context_url.GetOrigin(); + } + std::string name(fileapi::GetIsolatedFileSystemName(origin, file_system_id)); // The optional second argument is the subfolder within the isolated file // system at which to root the DOMFileSystem we're returning to the caller. std::string optional_root_name = ""; blink::WebURL root(GURL(fileapi::GetIsolatedFileSystemRootURIString( - context_url.GetOrigin(), + origin, file_system_id, optional_root_name))); v8::Isolate* isolate = v8::Isolate::GetCurrent(); diff --git a/src/xwalk/test/android/core/javatests/src/org/xwalk/core/xwview/test/ShouldOverrideUrlLoadingTest.java b/src/xwalk/test/android/core/javatests/src/org/xwalk/core/xwview/test/ShouldOverrideUrlLoadingTest.java new file mode 100644 index 0000000..683a59c --- /dev/null +++ b/src/xwalk/test/android/core/javatests/src/org/xwalk/core/xwview/test/ShouldOverrideUrlLoadingTest.java @@ -0,0 +1,573 @@ +// Copyright 2012 The Chromium Authors. All rights reserved. +// Copyright (c) 2014 Intel Corporation. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.xwalk.core.xwview.test; + +import android.test.suitebuilder.annotation.SmallTest; +import android.util.Pair; + +import java.util.ArrayList; +import java.util.concurrent.Callable; +import java.util.concurrent.TimeUnit; +import java.util.List; + +import org.chromium.base.test.util.DisabledTest; +import org.chromium.base.test.util.Feature; +import org.chromium.content.browser.LoadUrlParams; +import org.chromium.content.browser.test.util.CallbackHelper; +import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageStartedHelper; +import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnReceivedErrorHelper; +import org.chromium.net.test.util.TestWebServer; + +import org.xwalk.core.xwview.test.util.CommonResources; + +/** + * Tests for the shouldOverrideUrlLoading() method. + */ +public class ShouldOverrideUrlLoadingTest extends XWalkViewTestBase { + private static final String ABOUT_BLANK_URL = "about:blank"; + private static final String DATA_URL = "data:text/html,
"; + private static final String REDIRECT_TARGET_PATH = "/redirect_target.html"; + private static final String TITLE = "TITLE"; + private TestHelperBridge.ShouldOverrideUrlLoadingHelper mShouldOverrideUrlLoadingHelper; + private TestWebServer mWebServer; + + @Override + protected void setUp() throws Exception { + super.setUp(); + mShouldOverrideUrlLoadingHelper = mTestHelperBridge.getShouldOverrideUrlLoadingHelper(); + mWebServer = new TestWebServer(false); + } + + @Override + protected void tearDown() throws Exception { + mWebServer.shutdown(); + super.tearDown(); + } + + // Since this value is read on the UI thread, it's simpler to set it there too. + void setShouldOverrideUrlLoadingReturnValueOnUiThread( + final boolean value) throws Throwable { + runTestOnUiThread(new Runnable() { + @Override + public void run() { + mShouldOverrideUrlLoadingHelper.setShouldOverrideUrlLoadingReturnValue(value); + } + }); + } + + private String getTestPageCommonHeaders() { + return "" + TITLE + " "; + } + + private String makeHtmlPageFrom(String headers, String body) { + return CommonResources.makeHtmlPageFrom(getTestPageCommonHeaders() + headers, body); + } + + private String getHtmlForPageWithJsAssignLinkTo(String url) { + return makeHtmlPageFrom("", + ""); + } + + private String getHtmlForPageWithJsReplaceLinkTo(String url) { + return makeHtmlPageFrom("", + ""); + } + + private String getHtmlForPageWithMetaRefreshRedirectTo(String url) { + return makeHtmlPageFrom("", + "
Meta refresh redirect
"); + } + + private String getHtmlForPageWithJsRedirectTo(String url, String method, int timeout) { + return makeHtmlPageFrom( + "", + String.format("