Update to Chromium revision 217791.

- Pass popup window attributes to CefLifeSpanHandler::OnBeforePopup (issue #520).
- Windows: Add manifest files for all binary targets and include compatibility manifest in *.exe targets.

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1367 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt 2013-08-15 19:38:55 +00:00
parent 0a452addf0
commit cdd7333b76
22 changed files with 188 additions and 67 deletions

View File

@ -17,5 +17,5 @@
{
'chromium_url': 'http://src.chromium.org/svn/trunk/src',
'chromium_revision': '213078',
'chromium_revision': '217791',
}

23
cef.gyp
View File

@ -74,6 +74,11 @@
'SubSystem': '2',
'EntryPointSymbol' : 'wWinMainCRTStartup',
},
'VCManifestTool': {
'AdditionalManifestFiles': [
'tests/cefclient/cefclient.exe.manifest',
],
},
},
'link_settings': {
'libraries': [
@ -311,6 +316,13 @@
'tests/cefclient/cefclient.rc',
'tests/cefclient/resource_util_win.cpp',
],
'msvs_settings': {
'VCManifestTool': {
'AdditionalManifestFiles': [
'tests/cefclient/cefclient.exe.manifest',
],
},
},
}],
[ 'OS=="mac"', {
'product_name': 'cef_unittests',
@ -506,6 +518,11 @@
# Generate a PDB symbol file for both Debug and Release builds.
'GenerateDebugInformation': 'true',
},
'VCManifestTool': {
'AdditionalManifestFiles': [
'libcef_dll/libcef.dll.manifest',
],
},
},
}],
[ 'OS=="linux" or OS=="freebsd" or OS=="openbsd"', {
@ -714,7 +731,7 @@
'<(SHARED_INTERMEDIATE_DIR)/content/content_resources.pak',
'<(SHARED_INTERMEDIATE_DIR)/net/net_resources.pak',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_resources_100_percent.pak',
'<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_chromium_resources.pak',
'<(SHARED_INTERMEDIATE_DIR)/webkit/blink_resources.pak',
'<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_resources_100_percent.pak',
'<(grit_out_dir)/cef_resources.pak',
],
@ -738,7 +755,7 @@
'<(SHARED_INTERMEDIATE_DIR)/net/grit/net_resources.h',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/grit/ui_resources.h',
'<(SHARED_INTERMEDIATE_DIR)/webkit/grit/devtools_resources.h',
'<(SHARED_INTERMEDIATE_DIR)/webkit/grit/webkit_chromium_resources.h',
'<(SHARED_INTERMEDIATE_DIR)/webkit/grit/blink_resources.h',
'<(SHARED_INTERMEDIATE_DIR)/webkit/grit/webkit_resources.h',
'<(grit_out_dir)/grit/cef_resources.h',
],
@ -801,7 +818,7 @@
'<(SHARED_INTERMEDIATE_DIR)/webkit',
],
'dependencies': [
'<(DEPTH)/content/content.gyp:content_app',
'<(DEPTH)/content/content.gyp:content_app_both',
'<(DEPTH)/content/content.gyp:content_browser',
'<(DEPTH)/content/content.gyp:content_common',
'<(DEPTH)/content/content.gyp:content_gpu',

View File

@ -129,6 +129,7 @@
'<@(cefclient_bundle_resources_common)',
],
'cefclient_sources_win': [
'tests/cefclient/cefclient.exe.manifest',
'tests/cefclient/cefclient.rc',
'tests/cefclient/cefclient_osr_widget_win.h',
'tests/cefclient/cefclient_osr_widget_win.cpp',

View File

@ -171,6 +171,12 @@ class CefBrowserContext::CefResourceContext : public content::ResourceContext {
CHECK(getter_);
return getter_->GetURLRequestContext();
}
virtual bool AllowMicAccess(const GURL& origin) OVERRIDE {
return true;
}
virtual bool AllowCameraAccess(const GURL& origin) OVERRIDE {
return true;
}
void set_url_request_context_getter(CefURLRequestContextGetter* getter) {
getter_ = getter;

View File

@ -1646,13 +1646,12 @@ bool CefBrowserHostImpl::CanDragEnter(
bool CefBrowserHostImpl::ShouldCreateWebContents(
content::WebContents* web_contents,
int route_id,
WindowContainerType window_container_type,
const string16& frame_name,
const GURL& target_url,
WindowOpenDisposition disposition,
const WebKit::WebWindowFeatures& features,
bool user_gesture) {
int route_id,
WindowContainerType window_container_type,
const string16& frame_name,
const GURL& target_url,
const std::string& partition_id,
content::SessionStorageNamespace* session_storage_namespace) {
CefContentBrowserClient::Get()->GetOrCreateBrowserInfo(
web_contents->GetRenderProcessHost()->GetID(), route_id);
@ -2286,7 +2285,7 @@ void CefBrowserHostImpl::RunFileChooserOnUIThread(
return;
}
if (params.mode == content::FileChooserParams::OpenFolder) {
if (params.mode == content::FileChooserParams::UploadFolder) {
NOTIMPLEMENTED();
callback.Run(std::vector<base::FilePath>());
return;

View File

@ -312,9 +312,8 @@ class CefBrowserHostImpl : public CefBrowserHost,
WindowContainerType window_container_type,
const string16& frame_name,
const GURL& target_url,
WindowOpenDisposition disposition,
const WebKit::WebWindowFeatures& features,
bool user_gesture) OVERRIDE;
const std::string& partition_id,
content::SessionStorageNamespace* session_storage_namespace) OVERRIDE;
virtual void WebContentsCreated(content::WebContents* source_contents,
int64 source_frame_id,
const string16& frame_name,

View File

@ -38,6 +38,7 @@
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/resource_dispatcher_host.h"
#include "content/public/common/content_switches.h"
#include "third_party/WebKit/public/web/WebWindowFeatures.h"
#include "ui/base/ui_base_switches.h"
#include "url/gurl.h"
@ -244,6 +245,37 @@ class CefPluginServiceFilter : public content::PluginServiceFilter {
}
};
void TranslatePopupFeatures(const WebKit::WebWindowFeatures& webKitFeatures,
CefPopupFeatures& features) {
features.x = static_cast<int>(webKitFeatures.x);
features.xSet = webKitFeatures.xSet;
features.y = static_cast<int>(webKitFeatures.y);
features.ySet = webKitFeatures.ySet;
features.width = static_cast<int>(webKitFeatures.width);
features.widthSet = webKitFeatures.widthSet;
features.height = static_cast<int>(webKitFeatures.height);
features.heightSet = webKitFeatures.heightSet;
features.menuBarVisible = webKitFeatures.menuBarVisible;
features.statusBarVisible = webKitFeatures.statusBarVisible;
features.toolBarVisible = webKitFeatures.toolBarVisible;
features.locationBarVisible = webKitFeatures.locationBarVisible;
features.scrollbarsVisible = webKitFeatures.scrollbarsVisible;
features.resizable = webKitFeatures.resizable;
features.fullscreen = webKitFeatures.fullscreen;
features.dialog = webKitFeatures.dialog;
features.additionalFeatures = NULL;
if (webKitFeatures.additionalFeatures.size() > 0)
features.additionalFeatures = cef_string_list_alloc();
CefString str;
for (unsigned int i = 0; i < webKitFeatures.additionalFeatures.size(); ++i) {
str = string16(webKitFeatures.additionalFeatures[i]);
cef_string_list_append(features.additionalFeatures, str.GetStruct());
}
}
} // namespace
@ -557,10 +589,18 @@ content::AccessTokenStore* CefContentBrowserClient::CreateAccessTokenStore() {
bool CefContentBrowserClient::CanCreateWindow(
const GURL& opener_url,
const GURL& origin,
const GURL& source_origin,
WindowContainerType container_type,
const GURL& target_url,
const content::Referrer& referrer,
WindowOpenDisposition disposition,
const WebKit::WebWindowFeatures& features,
bool user_gesture,
bool opener_suppressed,
content::ResourceContext* context,
int render_process_id,
bool is_guest,
int opener_id,
bool* no_javascript_access) {
CEF_REQUIRE_IOT();
*no_javascript_access = false;
@ -599,27 +639,26 @@ bool CefContentBrowserClient::CanCreateWindow(
CefRefPtr<CefFrame> frame =
browser->GetFrame(last_create_window_params_.opener_frame_id);
// TODO(cef): Figure out how to populate CefPopupFeatures.
// See: http://crbug.com/110510
CefPopupFeatures features;
CefPopupFeatures cef_features;
TranslatePopupFeatures(features, cef_features);
#if (defined(OS_WIN) || defined(OS_MACOSX))
// Default to the size from the popup features.
if (features.xSet)
pending_info->window_info.x = features.x;
if (features.ySet)
pending_info->window_info.y = features.y;
if (features.widthSet)
pending_info->window_info.width = features.width;
if (features.heightSet)
pending_info->window_info.height = features.height;
if (cef_features.xSet)
pending_info->window_info.x = cef_features.x;
if (cef_features.ySet)
pending_info->window_info.y = cef_features.y;
if (cef_features.widthSet)
pending_info->window_info.width = cef_features.width;
if (cef_features.heightSet)
pending_info->window_info.height = cef_features.height;
#endif
allow = !handler->OnBeforePopup(browser.get(),
frame,
last_create_window_params_.target_url.spec(),
last_create_window_params_.target_frame_name,
features,
cef_features,
pending_info->window_info,
pending_info->client,
pending_info->settings,

View File

@ -96,10 +96,18 @@ class CefContentBrowserClient : public content::ContentBrowserClient {
content::CertificateRequestResultType* result) OVERRIDE;
virtual content::AccessTokenStore* CreateAccessTokenStore() OVERRIDE;
virtual bool CanCreateWindow(const GURL& opener_url,
const GURL& origin,
const GURL& source_origin,
WindowContainerType container_type,
const GURL& target_url,
const content::Referrer& referrer,
WindowOpenDisposition disposition,
const WebKit::WebWindowFeatures& features,
bool user_gesture,
bool opener_suppressed,
content::ResourceContext* context,
int render_process_id,
bool is_guest,
int opener_id,
bool* no_javascript_access) OVERRIDE;
virtual void ResourceDispatcherHostCreated() OVERRIDE;
virtual void OverrideWebkitPrefs(content::RenderViewHost* rvh,

View File

@ -186,7 +186,7 @@ void CefJavaScriptDialogManager::RunBeforeUnloadDialog(
#endif
}
void CefJavaScriptDialogManager::ResetJavaScriptState(
void CefJavaScriptDialogManager::CancelActiveAndPendingDialogs(
content::WebContents* web_contents) {
CefRefPtr<CefClient> client = browser_->GetClient();
if (client.get()) {
@ -205,6 +205,10 @@ void CefJavaScriptDialogManager::ResetJavaScriptState(
#endif
}
void CefJavaScriptDialogManager::WebContentsDestroyed(
content::WebContents* web_contents) {
}
void CefJavaScriptDialogManager::DialogClosed(CefJavaScriptDialog* dialog) {
#if defined(OS_MACOSX) || defined(OS_WIN) || defined(TOOLKIT_GTK)
DCHECK_EQ(dialog, dialog_.get());

View File

@ -38,7 +38,10 @@ class CefJavaScriptDialogManager : public content::JavaScriptDialogManager {
bool is_reload,
const DialogClosedCallback& callback) OVERRIDE;
virtual void ResetJavaScriptState(
virtual void CancelActiveAndPendingDialogs(
content::WebContents* web_contents) OVERRIDE;
virtual void WebContentsDestroyed(
content::WebContents* web_contents) OVERRIDE;
// Called by the CefJavaScriptDialog when it closes.

View File

@ -6,7 +6,7 @@
#include "libcef/common/command_line_impl.h"
#include "base/logging.h"
#include "base/process_util.h"
#include "base/process/launch.h"
#include "content/public/browser/browser_thread.h"
bool CefLaunchProcess(CefRefPtr<CefCommandLine> command_line) {

View File

@ -452,20 +452,19 @@ bool CefDictionaryValueImpl::SetList(const CefString& key,
}
bool CefDictionaryValueImpl::RemoveInternal(const CefString& key) {
base::Value* out_value = NULL;
scoped_ptr<base::Value> out_value;
if (!mutable_value()->RemoveWithoutPathExpansion(key, &out_value))
return false;
// Remove the value.
controller()->Remove(out_value, true);
controller()->Remove(out_value.get(), true);
// Only list and dictionary types may have dependencies.
if (out_value->IsType(base::Value::TYPE_LIST) ||
out_value->IsType(base::Value::TYPE_DICTIONARY)) {
controller()->RemoveDependencies(out_value);
controller()->RemoveDependencies(out_value.get());
}
delete out_value;
return true;
}
@ -811,20 +810,19 @@ bool CefListValueImpl::SetList(int index, CefRefPtr<CefListValue> value) {
}
bool CefListValueImpl::RemoveInternal(int index) {
base::Value* out_value = NULL;
scoped_ptr<base::Value> out_value;
if (!mutable_value()->Remove(index, &out_value))
return false;
// Remove the value.
controller()->Remove(out_value, true);
controller()->Remove(out_value.get(), true);
// Only list and dictionary types may have dependencies.
if (out_value->IsType(base::Value::TYPE_LIST) ||
out_value->IsType(base::Value::TYPE_DICTIONARY)) {
controller()->RemoveDependencies(out_value);
controller()->RemoveDependencies(out_value.get());
}
delete out_value;
return true;
}

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="Win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>

View File

@ -1,8 +1,8 @@
Index: gyp/generator/ninja.py
===================================================================
--- gyp/generator/ninja.py (revision 1651)
--- gyp/generator/ninja.py (revision 1693)
+++ gyp/generator/ninja.py (working copy)
@@ -669,7 +669,16 @@
@@ -705,7 +705,16 @@
for path in copy['files']:
# Normalize the path so trailing slashes don't confuse us.
path = os.path.normpath(path)

View File

@ -1,8 +1,8 @@
Index: message_loop.cc
===================================================================
--- message_loop.cc (revision 213078)
--- message_loop.cc (revision 217791)
+++ message_loop.cc (working copy)
@@ -193,7 +193,7 @@
@@ -197,7 +197,7 @@
MessageLoop::~MessageLoop() {
DCHECK_EQ(this, current());

View File

@ -1,8 +1,8 @@
Index: page/FrameView.cpp
===================================================================
--- page/FrameView.cpp (revision 154753)
--- page/FrameView.cpp (revision 156144)
+++ page/FrameView.cpp (working copy)
@@ -191,10 +191,12 @@
@@ -189,10 +189,12 @@
if (!page)
return;
@ -17,7 +17,7 @@ Index: page/FrameView.cpp
PassRefPtr<FrameView> FrameView::create(Frame* frame)
Index: platform/mac/NSScrollerImpDetails.mm
===================================================================
--- platform/mac/NSScrollerImpDetails.mm (revision 154753)
--- platform/mac/NSScrollerImpDetails.mm (revision 156144)
+++ platform/mac/NSScrollerImpDetails.mm (working copy)
@@ -33,6 +33,7 @@

View File

@ -1,8 +1,8 @@
Index: WebNode.cpp
===================================================================
--- WebNode.cpp (revision 154753)
--- WebNode.cpp (revision 156144)
+++ WebNode.cpp (working copy)
@@ -173,7 +173,7 @@
@@ -176,7 +176,7 @@
void WebNode::addEventListener(const WebString& eventType, WebDOMEventListener* listener, bool useCapture)
{
// Please do not add more eventTypes to this list without an API review.

View File

@ -1,8 +1,8 @@
Index: public/web/WebView.h
===================================================================
--- public/web/WebView.h (revision 154753)
--- public/web/WebView.h (revision 156144)
+++ public/web/WebView.h (working copy)
@@ -423,6 +423,7 @@
@@ -439,6 +439,7 @@
// Sets whether select popup menus should be rendered by the browser.
WEBKIT_EXPORT static void setUseExternalPopupMenus(bool);
@ -12,9 +12,9 @@ Index: public/web/WebView.h
// Visited link state --------------------------------------------------
Index: Source/web/ChromeClientImpl.cpp
===================================================================
--- Source/web/ChromeClientImpl.cpp (revision 154753)
--- Source/web/ChromeClientImpl.cpp (revision 156144)
+++ Source/web/ChromeClientImpl.cpp (working copy)
@@ -872,7 +872,7 @@
@@ -880,7 +880,7 @@
PassRefPtr<PopupMenu> ChromeClientImpl::createPopupMenu(Frame& frame, PopupMenuClient* client) const
{
@ -25,17 +25,17 @@ Index: Source/web/ChromeClientImpl.cpp
return adoptRef(new PopupMenuChromium(frame, client));
Index: Source/web/WebViewImpl.cpp
===================================================================
--- Source/web/WebViewImpl.cpp (revision 154753)
--- Source/web/WebViewImpl.cpp (revision 156144)
+++ Source/web/WebViewImpl.cpp (working copy)
@@ -388,6 +388,7 @@
, m_fakeDoubleTapPageScaleFactor(0)
, m_fakeDoubleTapUseAnchor(false)
@@ -393,6 +393,7 @@
, m_fakePageScaleAnimationPageScaleFactor(0)
, m_fakePageScaleAnimationUseAnchor(false)
, m_contextMenuAllowed(false)
+ , m_shouldUseExternalPopupMenus(shouldUseExternalPopupMenus)
, m_doingDragAndDrop(false)
, m_ignoreInputEvents(false)
, m_suppressNextKeypressEvent(false)
@@ -3702,9 +3703,14 @@
@@ -3636,9 +3637,14 @@
updateLayerTreeViewport();
}
@ -53,9 +53,9 @@ Index: Source/web/WebViewImpl.cpp
void WebViewImpl::setEmulatedTextZoomFactor(float textZoomFactor)
Index: Source/web/WebViewImpl.h
===================================================================
--- Source/web/WebViewImpl.h (revision 154753)
--- Source/web/WebViewImpl.h (revision 156144)
+++ Source/web/WebViewImpl.h (working copy)
@@ -420,7 +420,8 @@
@@ -422,7 +422,8 @@
// Returns true if popup menus should be rendered by the browser, false if
// they should be rendered by WebKit (which is the default).
@ -65,7 +65,7 @@ Index: Source/web/WebViewImpl.h
bool contextMenuAllowed() const
{
@@ -721,6 +722,8 @@
@@ -723,6 +724,8 @@
bool m_contextMenuAllowed;

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<!--The compatibility section will be merged from build/win/compatibility.manifest -->
<dependency>
<dependentAssembly>
<assemblyIdentity type="Win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

View File

@ -56,12 +56,6 @@ class MainBrowserProvider : public OSRBrowserProvider {
}
} g_main_browser_provider;
#if defined(OS_WIN)
// Add Common Controls to the application manifest because it's required to
// support the default tooltip implementation.
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") // NOLINT(whitespace/line_length)
#endif
// Program entry point function.
int APIENTRY wWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,

View File

@ -62,6 +62,9 @@
},
'conditions': [
['OS=="win"', {
'variables': {
'win_exe_compatibility_manifest': 'cefclient/compatibility.manifest',
},
'actions': [
{
'action_name': 'copy_resources',
@ -96,6 +99,11 @@
'SubSystem': '2',
'EntryPointSymbol' : 'wWinMainCRTStartup',
},
'VCManifestTool': {
'AdditionalManifestFiles': [
'cefclient/cefclient.exe.manifest',
],
},
},
'link_settings': {
'libraries': [

View File

@ -0,0 +1,17 @@
# Additional handling of transfer files.
# target: Target location relative to the target release directory. This
# value is required.
# source: Source location relative to the CEF root directory. This value
# is optional. If specified the target will be copied to this location
# and a TRANSFER-README.txt file will be created.
# post-process: Post-processing operation to perform. This value is
# optional and may be any one of the following:
# 'normalize_headers': Replace fully-qualified project header paths with
# the optionally specified 'new_header_path' value.
[
{
'source' : '../build/win/compatibility.manifest',
'target' : 'cefclient/compatibility.manifest',
},
]