diff --git a/CHROMIUM_BUILD_COMPATIBILITY.txt b/CHROMIUM_BUILD_COMPATIBILITY.txt index 90ce8b4bc..6e03783c6 100644 --- a/CHROMIUM_BUILD_COMPATIBILITY.txt +++ b/CHROMIUM_BUILD_COMPATIBILITY.txt @@ -8,6 +8,6 @@ { 'chromium_url': 'http://src.chromium.org/svn/trunk/src', - 'chromium_revision': '275973', - 'chromium_checkout': '9e96d7351ccb48be8548f7aec7b751b822c7d97c', + 'chromium_revision': '280796', + 'chromium_checkout': 'e800fe7470fa87dc1ca5b148a7c2c41f603fdcbd', } diff --git a/cef.gyp b/cef.gyp index 47c0ba4ec..7246aeddc 100644 --- a/cef.gyp +++ b/cef.gyp @@ -103,7 +103,6 @@ 'dependencies': [ 'cef_framework', 'cefclient_helper_app', - 'interpose_dependency_shim', ], 'variables': { 'PRODUCT_NAME': 'cefclient', @@ -114,7 +113,6 @@ 'destination': '<(PRODUCT_DIR)/<(PRODUCT_NAME).app/Contents/Frameworks', 'files': [ '<(PRODUCT_DIR)/<(PRODUCT_NAME) Helper.app', - '<(PRODUCT_DIR)/libplugin_carbon_interpose.dylib', ], }, ], @@ -286,7 +284,6 @@ 'dependencies': [ 'cef_framework', 'cefsimple_helper_app', - 'interpose_dependency_shim', ], 'variables': { 'PRODUCT_NAME': 'cefsimple', @@ -297,7 +294,6 @@ 'destination': '<(PRODUCT_DIR)/<(PRODUCT_NAME).app/Contents/Frameworks', 'files': [ '<(PRODUCT_DIR)/<(PRODUCT_NAME) Helper.app', - '<(PRODUCT_DIR)/libplugin_carbon_interpose.dylib', ], }, ], @@ -1172,82 +1168,6 @@ }], ['OS=="mac"', { 'targets': [ - { - # Dummy target to allow cefclient to require plugin_carbon_interpose - # to build without actually linking to the resulting library. - 'target_name': 'interpose_dependency_shim', - 'type': 'executable', - 'variables': { 'enable_wexit_time_destructors': 1, }, - 'dependencies': [ - 'plugin_carbon_interpose', - ], - # In release, we end up with a strip step that is unhappy if there is - # no binary. Rather than check in a new file for this temporary hack, - # just generate a source file on the fly. - 'actions': [ - { - 'action_name': 'generate_stub_main', - 'process_outputs_as_sources': 1, - 'inputs': [], - 'outputs': [ '<(INTERMEDIATE_DIR)/dummy_main.c' ], - 'action': [ - 'bash', '-c', - 'echo "int main() { return 0; }" > <(INTERMEDIATE_DIR)/dummy_main.c' - ], - }, - ], - }, - { - # dylib for interposing Carbon calls in the plugin process. - 'target_name': 'plugin_carbon_interpose', - 'type': 'shared_library', - 'variables': { 'enable_wexit_time_destructors': 1, }, - # This target must not depend on static libraries, else the code in - # those libraries would appear twice in plugin processes: Once from - # Chromium Framework, and once from this dylib. - 'dependencies': [ - 'cef_framework', - ], - 'conditions': [ - ['component=="shared_library"', { - 'dependencies': [ - '<(DEPTH)/webkit/support/webkit_support.gyp:glue', - '<(DEPTH)/content/content.gyp:content_plugin', - ], - }], - ], - 'sources': [ - '<(DEPTH)/content/plugin/plugin_carbon_interpose_mac.cc', - ], - 'include_dirs': [ - '..', - ], - 'link_settings': { - 'libraries': [ - '$(SDKROOT)/System/Library/Frameworks/Carbon.framework', - ], - }, - 'xcode_settings': { - 'DYLIB_COMPATIBILITY_VERSION': '<(version_mac_dylib)', - 'DYLIB_CURRENT_VERSION': '<(version_mac_dylib)', - }, - 'postbuilds': [ - { - # The framework defines its load-time path - # (DYLIB_INSTALL_NAME_BASE) relative to the main executable - # (chrome). A different relative path needs to be used in - # libplugin_carbon_interpose.dylib. - 'postbuild_name': 'Fix Framework Link', - 'action': [ - 'install_name_tool', - '-change', - '@executable_path/<(framework_name)', - '@executable_path/../../../../Frameworks/<(framework_name).framework/<(framework_name)', - '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}' - ], - }, - ], - }, { 'target_name': 'cef_framework', 'type': 'shared_library', diff --git a/include/capi/cef_geolocation_handler_capi.h b/include/capi/cef_geolocation_handler_capi.h index 88a4b90a9..12df10ab9 100644 --- a/include/capi/cef_geolocation_handler_capi.h +++ b/include/capi/cef_geolocation_handler_capi.h @@ -78,11 +78,12 @@ typedef struct _cef_geolocation_handler_t { /// // Called when a page requests permission to access geolocation information. // |requesting_url| is the URL requesting permission and |request_id| is the - // unique ID for the permission request. Call - // cef_geolocation_callback_t::Continue to allow or deny the permission - // request. + // unique ID for the permission request. Return true (1) and call + // cef_geolocation_callback_t::cont() either in this function or at a later + // time to continue or cancel the request. Return false (0) to cancel the + // request immediately. /// - void (CEF_CALLBACK *on_request_geolocation_permission)( + int (CEF_CALLBACK *on_request_geolocation_permission)( struct _cef_geolocation_handler_t* self, struct _cef_browser_t* browser, const cef_string_t* requesting_url, int request_id, struct _cef_geolocation_callback_t* callback); diff --git a/include/cef_geolocation_handler.h b/include/cef_geolocation_handler.h index 4b732b482..679621a1f 100644 --- a/include/cef_geolocation_handler.h +++ b/include/cef_geolocation_handler.h @@ -67,15 +67,18 @@ class CefGeolocationHandler : public virtual CefBase { /// // Called when a page requests permission to access geolocation information. // |requesting_url| is the URL requesting permission and |request_id| is the - // unique ID for the permission request. Call CefGeolocationCallback::Continue - // to allow or deny the permission request. + // unique ID for the permission request. Return true and call + // CefGeolocationCallback::Continue() either in this method or at a later + // time to continue or cancel the request. Return false to cancel the request + // immediately. /// /*--cef()--*/ - virtual void OnRequestGeolocationPermission( + virtual bool OnRequestGeolocationPermission( CefRefPtr browser, const CefString& requesting_url, int request_id, CefRefPtr callback) { + return false; } /// diff --git a/include/internal/cef_build.h b/include/internal/cef_build.h index 4b8c54546..0ad86829c 100644 --- a/include/internal/cef_build.h +++ b/include/internal/cef_build.h @@ -79,15 +79,15 @@ // method in the parent class. // Use like: // virtual void foo() OVERRIDE; -#ifndef OVERRIDE -#if defined(COMPILER_MSVC) +#if defined(__clang__) || defined(COMPILER_MSVC) #define OVERRIDE override -#elif defined(__clang__) +#elif defined(COMPILER_GCC) && __cplusplus >= 201103 && \ + (__GNUC__ * 10000 + __GNUC_MINOR__ * 100) >= 40700 +// GCC 4.7 supports explicit virtual overrides when C++11 support is enabled. #define OVERRIDE override #else #define OVERRIDE #endif -#endif #ifndef ALLOW_THIS_IN_INITIALIZER_LIST #if defined(COMPILER_MSVC) diff --git a/include/internal/cef_types.h b/include/internal/cef_types.h index c6159b03d..b48c4e4f9 100644 --- a/include/internal/cef_types.h +++ b/include/internal/cef_types.h @@ -151,11 +151,6 @@ typedef enum { /// LOGSEVERITY_ERROR, - /// - // ERROR_REPORT logging. - /// - LOGSEVERITY_ERROR_REPORT, - /// // Completely disable logging. /// diff --git a/libcef/browser/browser_context_impl.cc b/libcef/browser/browser_context_impl.cc index 3d22bb739..70a2652a2 100644 --- a/libcef/browser/browser_context_impl.cc +++ b/libcef/browser/browser_context_impl.cc @@ -17,142 +17,11 @@ #include "base/threading/thread.h" #include "content/public/browser/download_manager.h" #include "content/public/browser/browser_thread.h" -#include "content/public/browser/geolocation_permission_context.h" #include "content/public/browser/resource_context.h" #include "content/public/browser/storage_partition.h" using content::BrowserThread; -namespace { - -class CefGeolocationPermissionContext - : public content::GeolocationPermissionContext { - public: - // CefGeolocationCallback implementation. - class CallbackImpl : public CefGeolocationCallback { - public: - typedef base::Callback // NOLINT(readability/function) - CallbackType; - - explicit CallbackImpl( - CefGeolocationPermissionContext* context, - int bridge_id, - const CallbackType& callback) - : context_(context), - bridge_id_(bridge_id), - callback_(callback) {} - - virtual void Continue(bool allow) OVERRIDE { - if (CEF_CURRENTLY_ON_UIT()) { - if (!callback_.is_null()) { - // Callback must be executed on the UI thread. - callback_.Run(allow); - context_->RemoveCallback(bridge_id_); - } - } else { - CEF_POST_TASK(CEF_UIT, - base::Bind(&CallbackImpl::Continue, this, allow)); - } - } - - void Disconnect() { - callback_.Reset(); - context_ = NULL; - } - - private: - static void Run(const CallbackType& callback, bool allow) { - CEF_REQUIRE_UIT(); - callback.Run(allow); - } - - CefGeolocationPermissionContext* context_; - int bridge_id_; - CallbackType callback_; - - IMPLEMENT_REFCOUNTING(CallbackImpl); - }; - - CefGeolocationPermissionContext() {} - - virtual void RequestGeolocationPermission( - content::WebContents* web_contents, - int bridge_id, - const GURL& requesting_frame, - bool user_gesture, - base::Callback callback) // NOLINT(readability/function) - OVERRIDE { - CEF_REQUIRE_UIT(); - - CefRefPtr browser = - CefBrowserHostImpl::GetBrowserForContents(web_contents); - if (browser.get()) { - CefRefPtr client = browser->GetClient(); - if (client.get()) { - CefRefPtr handler = - client->GetGeolocationHandler(); - if (handler.get()) { - CefRefPtr callbackPtr( - new CallbackImpl(this, bridge_id, callback)); - - // Add the callback reference to the map. - callback_map_.insert(std::make_pair(bridge_id, callbackPtr)); - - // Notify the handler. - handler->OnRequestGeolocationPermission(browser.get(), - requesting_frame.spec(), bridge_id, callbackPtr.get()); - return; - } - } - } - - // Disallow geolocation access by default. - callback.Run(false); - } - - virtual void CancelGeolocationPermissionRequest( - content::WebContents* web_contents, - int bridge_id, - const GURL& requesting_frame) OVERRIDE { - RemoveCallback(bridge_id); - - CefRefPtr browser = - CefBrowserHostImpl::GetBrowserForContents(web_contents); - if (browser.get()) { - CefRefPtr client = browser->GetClient(); - if (client.get()) { - CefRefPtr handler = - client->GetGeolocationHandler(); - if (handler.get()) { - // Notify the handler. - handler->OnCancelGeolocationPermission(browser.get(), - requesting_frame.spec(), bridge_id); - } - } - } - } - - void RemoveCallback(int bridge_id) { - CEF_REQUIRE_UIT(); - - // Disconnect the callback and remove the reference from the map. - CallbackMap::iterator it = callback_map_.find(bridge_id); - if (it != callback_map_.end()) { - it->second->Disconnect(); - callback_map_.erase(it); - } - } - - private: - // Map of bridge ids to callback references. - typedef std::map > CallbackMap; - CallbackMap callback_map_; - - DISALLOW_COPY_AND_ASSIGN(CefGeolocationPermissionContext); -}; - -} // namespace - class CefBrowserContextImpl::CefResourceContext : public content::ResourceContext { public: CefResourceContext() : getter_(NULL) {} @@ -246,50 +115,10 @@ net::URLRequestContextGetter* return GetRequestContext(); } -void CefBrowserContextImpl::RequestMidiSysExPermission( - int render_process_id, - int render_view_id, - int bridge_id, - const GURL& requesting_frame, - bool user_gesture, - const MidiSysExPermissionCallback& callback) { - // TODO(CEF): Implement Web MIDI API permission handling. - callback.Run(false); -} - -void CefBrowserContextImpl::CancelMidiSysExPermissionRequest( - int render_process_id, - int render_view_id, - int bridge_id, - const GURL& requesting_frame) { -} - -void CefBrowserContextImpl::RequestProtectedMediaIdentifierPermission( - int render_process_id, - int render_view_id, - const GURL& origin, - const ProtectedMediaIdentifierPermissionCallback& callback) { -} - -void CefBrowserContextImpl::CancelProtectedMediaIdentifierPermissionRequests( - int render_process_id, - int render_view_id, - const GURL& origin) { -} - content::ResourceContext* CefBrowserContextImpl::GetResourceContext() { return resource_context_.get(); } -content::GeolocationPermissionContext* - CefBrowserContextImpl::GetGeolocationPermissionContext() { - if (!geolocation_permission_context_) { - geolocation_permission_context_ = - new CefGeolocationPermissionContext(); - } - return geolocation_permission_context_; -} - content::BrowserPluginGuestManager* CefBrowserContextImpl::GetGuestManager() { return NULL; } @@ -298,6 +127,11 @@ quota::SpecialStoragePolicy* CefBrowserContextImpl::GetSpecialStoragePolicy() { return NULL; } +content::PushMessagingService* + CefBrowserContextImpl::GetPushMessagingService() { + return NULL; +} + net::URLRequestContextGetter* CefBrowserContextImpl::CreateRequestContext( content::ProtocolHandlerMap* protocol_handlers, content::URLRequestInterceptorScopedVector request_interceptors) { diff --git a/libcef/browser/browser_context_impl.h b/libcef/browser/browser_context_impl.h index 839ab643f..46029e5c9 100644 --- a/libcef/browser/browser_context_impl.h +++ b/libcef/browser/browser_context_impl.h @@ -39,32 +39,10 @@ class CefBrowserContextImpl : public CefBrowserContext { GetMediaRequestContextForStoragePartition( const base::FilePath& partition_path, bool in_memory) OVERRIDE; - virtual void RequestMidiSysExPermission( - int render_process_id, - int render_view_id, - int bridge_id, - const GURL& requesting_frame, - bool user_gesture, - const MidiSysExPermissionCallback& callback) OVERRIDE; - virtual void CancelMidiSysExPermissionRequest( - int render_process_id, - int render_view_id, - int bridge_id, - const GURL& requesting_frame) OVERRIDE; - virtual void RequestProtectedMediaIdentifierPermission( - int render_process_id, - int render_view_id, - const GURL& origin, - const ProtectedMediaIdentifierPermissionCallback& callback) OVERRIDE; - virtual void CancelProtectedMediaIdentifierPermissionRequests( - int render_process_id, - int render_view_id, - const GURL& origin) OVERRIDE; virtual content::ResourceContext* GetResourceContext() OVERRIDE; - virtual content::GeolocationPermissionContext* - GetGeolocationPermissionContext() OVERRIDE; virtual content::BrowserPluginGuestManager* GetGuestManager() OVERRIDE; virtual quota::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE; + virtual content::PushMessagingService* GetPushMessagingService() OVERRIDE; // CefBrowserContext methods. virtual net::URLRequestContextGetter* CreateRequestContext( @@ -84,8 +62,6 @@ class CefBrowserContextImpl : public CefBrowserContext { scoped_ptr resource_context_; scoped_ptr download_manager_delegate_; scoped_refptr url_request_getter_; - scoped_refptr - geolocation_permission_context_; DISALLOW_COPY_AND_ASSIGN(CefBrowserContextImpl); }; diff --git a/libcef/browser/browser_context_proxy.cc b/libcef/browser/browser_context_proxy.cc index e92971704..2188c7b6e 100644 --- a/libcef/browser/browser_context_proxy.cc +++ b/libcef/browser/browser_context_proxy.cc @@ -112,54 +112,24 @@ net::URLRequestContextGetter* return GetRequestContext(); } -void CefBrowserContextProxy::RequestMidiSysExPermission( - int render_process_id, - int render_view_id, - int bridge_id, - const GURL& requesting_frame, - bool user_gesture, - const MidiSysExPermissionCallback& callback) { - // TODO(CEF): Implement Web MIDI API permission handling. - callback.Run(false); -} - -void CefBrowserContextProxy::CancelMidiSysExPermissionRequest( - int render_process_id, - int render_view_id, - int bridge_id, - const GURL& requesting_frame) { -} - -void CefBrowserContextProxy::RequestProtectedMediaIdentifierPermission( - int render_process_id, - int render_view_id, - const GURL& origin, - const ProtectedMediaIdentifierPermissionCallback& callback) { -} - -void CefBrowserContextProxy::CancelProtectedMediaIdentifierPermissionRequests( - int render_process_id, - int render_view_id, - const GURL& origin) { -} - content::ResourceContext* CefBrowserContextProxy::GetResourceContext() { return resource_context_.get(); } -content::GeolocationPermissionContext* - CefBrowserContextProxy::GetGeolocationPermissionContext() { - return parent_->GetGeolocationPermissionContext(); -} - content::BrowserPluginGuestManager* CefBrowserContextProxy::GetGuestManager() { return parent_->GetGuestManager(); } -quota::SpecialStoragePolicy* CefBrowserContextProxy::GetSpecialStoragePolicy() { +quota::SpecialStoragePolicy* + CefBrowserContextProxy::GetSpecialStoragePolicy() { return parent_->GetSpecialStoragePolicy(); } +content::PushMessagingService* + CefBrowserContextProxy::GetPushMessagingService() { + return parent_->GetPushMessagingService(); +} + net::URLRequestContextGetter* CefBrowserContextProxy::CreateRequestContext( content::ProtocolHandlerMap* protocol_handlers, content::URLRequestInterceptorScopedVector request_interceptors) { diff --git a/libcef/browser/browser_context_proxy.h b/libcef/browser/browser_context_proxy.h index 300bab67e..03efe1170 100644 --- a/libcef/browser/browser_context_proxy.h +++ b/libcef/browser/browser_context_proxy.h @@ -47,32 +47,10 @@ class CefBrowserContextProxy : public CefBrowserContext { GetMediaRequestContextForStoragePartition( const base::FilePath& partition_path, bool in_memory) OVERRIDE; - virtual void RequestMidiSysExPermission( - int render_process_id, - int render_view_id, - int bridge_id, - const GURL& requesting_frame, - bool user_gesture, - const MidiSysExPermissionCallback& callback) OVERRIDE; - virtual void CancelMidiSysExPermissionRequest( - int render_process_id, - int render_view_id, - int bridge_id, - const GURL& requesting_frame) OVERRIDE; - virtual void RequestProtectedMediaIdentifierPermission( - int render_process_id, - int render_view_id, - const GURL& origin, - const ProtectedMediaIdentifierPermissionCallback& callback) OVERRIDE; - virtual void CancelProtectedMediaIdentifierPermissionRequests( - int render_process_id, - int render_view_id, - const GURL& origin) OVERRIDE; virtual content::ResourceContext* GetResourceContext() OVERRIDE; - virtual content::GeolocationPermissionContext* - GetGeolocationPermissionContext() OVERRIDE; virtual content::BrowserPluginGuestManager* GetGuestManager() OVERRIDE; virtual quota::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE; + virtual content::PushMessagingService* GetPushMessagingService() OVERRIDE; // CefBrowserContext methods. virtual net::URLRequestContextGetter* CreateRequestContext( diff --git a/libcef/browser/browser_host_impl.cc b/libcef/browser/browser_host_impl.cc index 20c36686a..0e1f3b261 100644 --- a/libcef/browser/browser_host_impl.cc +++ b/libcef/browser/browser_host_impl.cc @@ -634,6 +634,8 @@ class CefBrowserHostImpl::DevToolsWebContentsObserver : }; CefBrowserHostImpl::~CefBrowserHostImpl() { + // All weak pointer references should be removed in DestroyBrowser(). + DCHECK(!weak_ptr_factory_.HasWeakPtrs()); } CefRefPtr CefBrowserHostImpl::GetBrowser() { @@ -1391,6 +1393,8 @@ void CefBrowserHostImpl::DestroyBrowser() { CefContentBrowserClient::Get()->RemoveBrowserInfo(browser_info_); browser_info_->set_browser(NULL); + + weak_ptr_factory_.InvalidateWeakPtrs(); } gfx::NativeView CefBrowserHostImpl::GetContentView() const { @@ -2221,6 +2225,11 @@ bool CefBrowserHostImpl::SetPendingPopupInfo( return true; } +base::WeakPtr CefBrowserHostImpl::GetWeakPtr() { + CEF_REQUIRE_UIT(); + return weak_ptr_factory_.GetWeakPtr(); +} + void CefBrowserHostImpl::UpdatePreferredSize(content::WebContents* source, const gfx::Size& pref_size) { PlatformSizeTo(pref_size.width(), pref_size.height()); @@ -2348,14 +2357,15 @@ void CefBrowserHostImpl::RenderProcessGone(base::TerminationStatus status) { } void CefBrowserHostImpl::DidCommitProvisionalLoadForFrame( - int64 frame_id, - const base::string16& frame_unique_name, + content::RenderFrameHost* render_frame_host, bool is_main_frame, const GURL& url, - content::PageTransition transition_type, - content::RenderViewHost* render_view_host) { - CefRefPtr frame = GetOrCreateFrame(frame_id, - CefFrameHostImpl::kUnspecifiedFrameId, is_main_frame, base::string16(), + content::PageTransition transition_type) { + CefRefPtr frame = GetOrCreateFrame( + render_frame_host->GetRoutingID(), + CefFrameHostImpl::kUnspecifiedFrameId, + is_main_frame, + base::string16(), url); OnLoadStart(frame, url, transition_type); if (is_main_frame) @@ -2363,15 +2373,16 @@ void CefBrowserHostImpl::DidCommitProvisionalLoadForFrame( } void CefBrowserHostImpl::DidFailProvisionalLoad( - int64 frame_id, - const base::string16& frame_unique_name, + content::RenderFrameHost* render_frame_host, bool is_main_frame, const GURL& validated_url, int error_code, - const base::string16& error_description, - content::RenderViewHost* render_view_host) { - CefRefPtr frame = GetOrCreateFrame(frame_id, - CefFrameHostImpl::kUnspecifiedFrameId, is_main_frame, base::string16(), + const base::string16& error_description) { + CefRefPtr frame = GetOrCreateFrame( + render_frame_host->GetRoutingID(), + CefFrameHostImpl::kUnspecifiedFrameId, + is_main_frame, + base::string16(), GURL()); OnLoadError(frame, validated_url, error_code, error_description); } @@ -2585,7 +2596,8 @@ CefBrowserHostImpl::CefBrowserHostImpl( focus_on_editable_field_(false), mouse_cursor_change_disabled_(false), devtools_frontend_(NULL), - file_chooser_pending_(false) { + file_chooser_pending_(false), + weak_ptr_factory_(this) { #if defined(USE_AURA) window_widget_ = NULL; #endif diff --git a/libcef/browser/browser_host_impl.h b/libcef/browser/browser_host_impl.h index 3ef44e313..4105171ff 100644 --- a/libcef/browser/browser_host_impl.h +++ b/libcef/browser/browser_host_impl.h @@ -21,6 +21,7 @@ #include "libcef/common/response_manager.h" #include "base/memory/scoped_ptr.h" +#include "base/memory/weak_ptr.h" #include "base/strings/string16.h" #include "base/synchronization/lock.h" #include "content/public/browser/notification_observer.h" @@ -325,6 +326,11 @@ class CefBrowserHostImpl : public CefBrowserHost, }; DestructionState destruction_state() const { return destruction_state_; } + // Used to retrieve a WeakPtr that will be invalidated when the browser is + // destroyed. This method can only be called on, and the resulting WeakPtr + // can only be dereferenced on, the UI thread. + base::WeakPtr GetWeakPtr(); + private: class DevToolsWebContentsObserver; @@ -414,20 +420,16 @@ class CefBrowserHostImpl : public CefBrowserHost, virtual void RenderViewReady() OVERRIDE; virtual void RenderProcessGone(base::TerminationStatus status) OVERRIDE; virtual void DidCommitProvisionalLoadForFrame( - int64 frame_id, - const base::string16& frame_unique_name, + content::RenderFrameHost* render_frame_host, bool is_main_frame, const GURL& url, - content::PageTransition transition_type, - content::RenderViewHost* render_view_host) OVERRIDE; + content::PageTransition transition_type) OVERRIDE; virtual void DidFailProvisionalLoad( - int64 frame_id, - const base::string16& frame_unique_name, + content::RenderFrameHost* render_frame_host, bool is_main_frame, const GURL& validated_url, int error_code, - const base::string16& error_description, - content::RenderViewHost* render_view_host) OVERRIDE; + const base::string16& error_description) OVERRIDE; virtual void DocumentAvailableInMainFrame() OVERRIDE; virtual void DidFailLoad(int64 frame_id, const GURL& validated_url, @@ -652,6 +654,10 @@ class CefBrowserHostImpl : public CefBrowserHost, scoped_ptr invisible_cursor_; #endif // defined(USE_X11) + // Only used on the UI thread. All references will be invalidated when + // DestroyBrowser() is called. Must be the last member. + base::WeakPtrFactory weak_ptr_factory_; + IMPLEMENT_REFCOUNTING(CefBrowserHostImpl); DISALLOW_EVIL_CONSTRUCTORS(CefBrowserHostImpl); }; diff --git a/libcef/browser/browser_message_filter.cc b/libcef/browser/browser_message_filter.cc index 1cc3356e8..dd4f33097 100644 --- a/libcef/browser/browser_message_filter.cc +++ b/libcef/browser/browser_message_filter.cc @@ -23,14 +23,14 @@ CefBrowserMessageFilter::CefBrowserMessageFilter( content::RenderProcessHost* host) : host_(host), - channel_(NULL) { + sender_(NULL) { } CefBrowserMessageFilter::~CefBrowserMessageFilter() { } -void CefBrowserMessageFilter::OnFilterAdded(IPC::Channel* channel) { - channel_ = channel; +void CefBrowserMessageFilter::OnFilterAdded(IPC::Sender* sender) { + sender_ = sender; } void CefBrowserMessageFilter::OnFilterRemoved() { diff --git a/libcef/browser/browser_message_filter.h b/libcef/browser/browser_message_filter.h index 56ee8f283..a5f6d77d2 100644 --- a/libcef/browser/browser_message_filter.h +++ b/libcef/browser/browser_message_filter.h @@ -25,7 +25,7 @@ class CefBrowserMessageFilter : public IPC::MessageFilter { virtual ~CefBrowserMessageFilter(); // IPC::ChannelProxy::MessageFilter implementation. - virtual void OnFilterAdded(IPC::Channel* channel) OVERRIDE; + virtual void OnFilterAdded(IPC::Sender* sender) OVERRIDE; virtual void OnFilterRemoved() OVERRIDE; virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; @@ -43,7 +43,7 @@ class CefBrowserMessageFilter : public IPC::MessageFilter { IPC::Message* reply_msg); content::RenderProcessHost* host_; - IPC::Channel* channel_; + IPC::Sender* sender_; DISALLOW_COPY_AND_ASSIGN(CefBrowserMessageFilter); }; diff --git a/libcef/browser/content_browser_client.cc b/libcef/browser/content_browser_client.cc index 27eb73c69..d200cfdf0 100644 --- a/libcef/browser/content_browser_client.cc +++ b/libcef/browser/content_browser_client.cc @@ -48,7 +48,6 @@ #if defined(OS_POSIX) && !defined(OS_MACOSX) #include "base/debug/leak_annotations.h" -#include "base/platform_file.h" #include "components/breakpad/app/breakpad_linux.h" #include "components/breakpad/browser/crash_handler_host_linux.h" #include "content/public/common/content_descriptors.h" @@ -84,6 +83,7 @@ class CefQuotaCallbackImpl : public CefQuotaCallback { const content::QuotaPermissionContext::PermissionCallback& callback) : callback_(callback) { } + ~CefQuotaCallbackImpl() { if (!callback_.is_null()) { // The callback is still pending. Cancel it now. @@ -142,8 +142,11 @@ class CefQuotaCallbackImpl : public CefQuotaCallback { class CefAllowCertificateErrorCallbackImpl : public CefAllowCertificateErrorCallback { public: - explicit CefAllowCertificateErrorCallbackImpl( - const base::Callback& callback) : callback_(callback) { + typedef base::Callback // NOLINT(readability/function) + CallbackType; + + explicit CefAllowCertificateErrorCallbackImpl(const CallbackType& callback) + : callback_(callback) { } virtual void Continue(bool allow) OVERRIDE { @@ -164,12 +167,65 @@ class CefAllowCertificateErrorCallbackImpl } private: - base::Callback callback_; + CallbackType callback_; IMPLEMENT_REFCOUNTING(CefAllowCertificateErrorCallbackImpl); DISALLOW_COPY_AND_ASSIGN(CefAllowCertificateErrorCallbackImpl); }; +class CefGeolocationCallbackImpl : public CefGeolocationCallback { + public: + typedef base::Callback // NOLINT(readability/function) + CallbackType; + + explicit CefGeolocationCallbackImpl(const CallbackType& callback) + : callback_(callback) {} + + virtual void Continue(bool allow) OVERRIDE { + if (CEF_CURRENTLY_ON_UIT()) { + if (!callback_.is_null()) { + callback_.Run(allow); + callback_.Reset(); + } + } else { + CEF_POST_TASK(CEF_UIT, + base::Bind(&CefGeolocationCallbackImpl::Continue, this, allow)); + } + } + + void Disconnect() { + callback_.Reset(); + } + + private: + static void Run(const CallbackType& callback, bool allow) { + CEF_REQUIRE_UIT(); + callback.Run(allow); + } + + CallbackType callback_; + + IMPLEMENT_REFCOUNTING(CefGeolocationCallbackImpl); + DISALLOW_COPY_AND_ASSIGN(CefGeolocationCallbackImpl); +}; + +void CancelGeolocationPermission(base::WeakPtr browser, + const GURL& requesting_frame, + int bridge_id) { + if (browser.get()) { + CefRefPtr client = browser->GetClient(); + if (client.get()) { + CefRefPtr handler = + client->GetGeolocationHandler(); + if (handler.get()) { + handler->OnCancelGeolocationPermission(browser.get(), + requesting_frame.spec(), + bridge_id); + } + } + } +} + class CefQuotaPermissionContext : public content::QuotaPermissionContext { public: CefQuotaPermissionContext() { @@ -727,6 +783,50 @@ content::AccessTokenStore* CefContentBrowserClient::CreateAccessTokenStore() { return new CefAccessTokenStore; } +void CefContentBrowserClient::RequestGeolocationPermission( + content::WebContents* web_contents, + int bridge_id, + const GURL& requesting_frame, + bool user_gesture, + base::Callback result_callback, + base::Closure* cancel_callback) { + CEF_REQUIRE_UIT(); + bool proceed = false; + + CefRefPtr browser = + CefBrowserHostImpl::GetBrowserForContents(web_contents); + if (browser.get()) { + CefRefPtr client = browser->GetClient(); + if (client.get()) { + CefRefPtr handler = + client->GetGeolocationHandler(); + if (handler.get()) { + CefRefPtr callbackImpl( + new CefGeolocationCallbackImpl(result_callback)); + + // Notify the handler. + proceed = handler->OnRequestGeolocationPermission( + browser.get(), requesting_frame.spec(), bridge_id, + callbackImpl.get()); + if (proceed) { + // The callback reference may outlive the browser so use a WeakPtr. + *cancel_callback = + base::Bind(CancelGeolocationPermission, + browser->GetWeakPtr(), requesting_frame, + bridge_id); + } else { + callbackImpl->Disconnect(); + } + } + } + } + + if (!proceed) { + // Disallow geolocation access by default. + result_callback.Run(false); + } +} + bool CefContentBrowserClient::CanCreateWindow( const GURL& opener_url, const GURL& opener_top_level_frame_url, diff --git a/libcef/browser/content_browser_client.h b/libcef/browser/content_browser_client.h index 8bbe2c3ce..cb92d94ec 100644 --- a/libcef/browser/content_browser_client.h +++ b/libcef/browser/content_browser_client.h @@ -115,6 +115,13 @@ class CefContentBrowserClient : public content::ContentBrowserClient { const base::Callback& callback, content::CertificateRequestResultType* result) OVERRIDE; virtual content::AccessTokenStore* CreateAccessTokenStore() OVERRIDE; + virtual void RequestGeolocationPermission( + content::WebContents* web_contents, + int bridge_id, + const GURL& requesting_frame, + bool user_gesture, + base::Callback result_callback, + base::Closure* cancel_callback) OVERRIDE; virtual bool CanCreateWindow(const GURL& opener_url, const GURL& opener_top_level_frame_url, const GURL& source_origin, diff --git a/libcef/browser/printing/print_view_manager_base.cc b/libcef/browser/printing/print_view_manager_base.cc index 5bbf5ef22..e06a572de 100644 --- a/libcef/browser/printing/print_view_manager_base.cc +++ b/libcef/browser/printing/print_view_manager_base.cc @@ -4,8 +4,6 @@ #include "libcef/browser/printing/print_view_manager_base.h" -#include - #include "libcef/browser/content_browser_client.h" #include "base/bind.h" @@ -31,20 +29,19 @@ #include "printing/printed_document.h" #include "ui/base/l10n/l10n_util.h" -#if defined(OS_WIN) -#include "base/command_line.h" -#include "chrome/common/chrome_switches.h" -#endif - using base::TimeDelta; using content::BrowserThread; +namespace printing { + +namespace { + #if defined(OS_WIN) // Limits memory usage by raster to 64 MiB. const int kMaxRasterSizeInPixels = 16*1024*1024; #endif -namespace printing { +} // namespace PrintViewManagerBase::PrintViewManagerBase(content::WebContents* web_contents) : content::WebContentsObserver(web_contents), @@ -177,7 +174,9 @@ void PrintViewManagerBase::OnDidPrintPage( // Update the rendered document. It will send notifications to the listener. document->SetPage(params.page_number, metafile.release(), +#if defined(OS_WIN) params.actual_shrink, +#endif // OS_WIN params.page_size, params.content_area); diff --git a/libcef/browser/render_widget_host_view_osr.cc b/libcef/browser/render_widget_host_view_osr.cc index 6c08a261b..788042162 100644 --- a/libcef/browser/render_widget_host_view_osr.cc +++ b/libcef/browser/render_widget_host_view_osr.cc @@ -405,10 +405,8 @@ void CefRenderWidgetHostViewOSR::SetIsLoading(bool is_loading) { } #if !defined(OS_MACOSX) -void CefRenderWidgetHostViewOSR::TextInputTypeChanged( - ui::TextInputType type, - ui::TextInputMode input_mode, - bool can_compose_inline) { +void CefRenderWidgetHostViewOSR::TextInputStateChanged( + const ViewHostMsg_TextInputState_Params& params) { } void CefRenderWidgetHostViewOSR::ImeCancelComposition() { @@ -598,11 +596,6 @@ gfx::GLSurfaceHandle CefRenderWidgetHostViewOSR::GetCompositingSurface() { GetSharedSurfaceHandle(); } -void CefRenderWidgetHostViewOSR::SetScrollOffsetPinning( - bool is_pinned_to_left, - bool is_pinned_to_right) { -} - #if !defined(OS_MACOSX) && defined(USE_AURA) void CefRenderWidgetHostViewOSR::ImeCompositionRangeChanged( const gfx::Range& range, @@ -627,12 +620,6 @@ void CefRenderWidgetHostViewOSR::SchedulePaintInRect( root_layer_->SchedulePaint(damage_rect_in_dip); } -void CefRenderWidgetHostViewOSR::DelegatedCompositorDidSwapBuffers() { -} - -void CefRenderWidgetHostViewOSR::DelegatedCompositorAbortedSwapBuffers() { -} - bool CefRenderWidgetHostViewOSR::IsVisible() { return IsShowing(); } diff --git a/libcef/browser/render_widget_host_view_osr.h b/libcef/browser/render_widget_host_view_osr.h index 236270bc7..ffd61425d 100644 --- a/libcef/browser/render_widget_host_view_osr.h +++ b/libcef/browser/render_widget_host_view_osr.h @@ -114,9 +114,8 @@ class CefRenderWidgetHostViewOSR virtual void Blur() OVERRIDE; virtual void UpdateCursor(const content::WebCursor& cursor) OVERRIDE; virtual void SetIsLoading(bool is_loading) OVERRIDE; - virtual void TextInputTypeChanged(ui::TextInputType type, - ui::TextInputMode input_mode, - bool can_compose_inline) OVERRIDE; + virtual void TextInputStateChanged( + const ViewHostMsg_TextInputState_Params& params) OVERRIDE; virtual void ImeCancelComposition() OVERRIDE; virtual void RenderProcessGone(base::TerminationStatus status, int error_code) OVERRIDE; @@ -159,9 +158,6 @@ class CefRenderWidgetHostViewOSR virtual void GetScreenInfo(blink::WebScreenInfo* results) OVERRIDE; virtual gfx::Rect GetBoundsInRootWindow() OVERRIDE; virtual gfx::GLSurfaceHandle GetCompositingSurface() OVERRIDE; - virtual void SetScrollOffsetPinning( - bool is_pinned_to_left, - bool is_pinned_to_right) OVERRIDE; #if defined(OS_MACOSX) virtual bool PostProcessEventForPluginIme( @@ -186,8 +182,6 @@ class CefRenderWidgetHostViewOSR virtual content::RenderWidgetHostImpl* GetHost() OVERRIDE; virtual void SchedulePaintInRect( const gfx::Rect& damage_rect_in_dip) OVERRIDE; - virtual void DelegatedCompositorDidSwapBuffers() OVERRIDE; - virtual void DelegatedCompositorAbortedSwapBuffers() OVERRIDE; virtual bool IsVisible() OVERRIDE; virtual scoped_ptr CreateResizeLock( bool defer_compositor_lock) OVERRIDE; diff --git a/libcef/browser/render_widget_host_view_osr_mac.mm b/libcef/browser/render_widget_host_view_osr_mac.mm index 95b1b57ab..ef39a2e93 100644 --- a/libcef/browser/render_widget_host_view_osr_mac.mm +++ b/libcef/browser/render_widget_host_view_osr_mac.mm @@ -10,7 +10,7 @@ #include "libcef/browser/browser_host_impl.h" #include "libcef/browser/text_input_client_osr_mac.h" -#include "content/browser/compositor/browser_compositor_view_mac.h" +#include "content/browser/compositor/browser_compositor_view_private_mac.h" #if !defined(UNUSED) #define UNUSED(x) ((void)(x)) /* to avoid warnings */ @@ -56,10 +56,8 @@ bool CefRenderWidgetHostViewOSR::IsSpeaking() const { void CefRenderWidgetHostViewOSR::StopSpeaking() { } -void CefRenderWidgetHostViewOSR::TextInputTypeChanged( - ui::TextInputType type, - ui::TextInputMode mode, - bool can_compose_inline) { +void CefRenderWidgetHostViewOSR::TextInputStateChanged( + const ViewHostMsg_TextInputState_Params& params) { [NSApp updateWindows]; } @@ -262,9 +260,8 @@ void CefRenderWidgetHostViewOSR::PlatformCreateCompositorWidget() { styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO]; - BrowserCompositorViewMac* view = - [[BrowserCompositorViewMac alloc] initWithSuperview:[window_ contentView] - withClient:NULL]; + BrowserCompositorViewCocoa* view = [[BrowserCompositorViewCocoa alloc] init]; + [window_ setContentView:view]; compositor_.reset([view compositor]); DCHECK(compositor_); compositor_widget_ = view; @@ -273,7 +270,7 @@ void CefRenderWidgetHostViewOSR::PlatformCreateCompositorWidget() { void CefRenderWidgetHostViewOSR::PlatformDestroyCompositorWidget() { DCHECK(window_); - // Compositor is owned by and will be freed by BrowserCompositorViewMac. + // Compositor is owned by and will be freed by BrowserCompositorViewCocoa. ui::Compositor* compositor = compositor_.release(); UNUSED(compositor); diff --git a/libcef/browser/resource_dispatcher_host_delegate.cc b/libcef/browser/resource_dispatcher_host_delegate.cc index 34d539cba..b6a0659c7 100644 --- a/libcef/browser/resource_dispatcher_host_delegate.cc +++ b/libcef/browser/resource_dispatcher_host_delegate.cc @@ -61,7 +61,7 @@ CefResourceDispatcherHostDelegate::~CefResourceDispatcherHostDelegate() { void CefResourceDispatcherHostDelegate::RequestBeginning( net::URLRequest* request, content::ResourceContext* resource_context, - appcache::AppCacheService* appcache_service, + content::AppCacheService* appcache_service, ResourceType::Type resource_type, int child_id, int route_id, diff --git a/libcef/browser/resource_dispatcher_host_delegate.h b/libcef/browser/resource_dispatcher_host_delegate.h index 5497c79e3..585c4a345 100644 --- a/libcef/browser/resource_dispatcher_host_delegate.h +++ b/libcef/browser/resource_dispatcher_host_delegate.h @@ -20,7 +20,7 @@ class CefResourceDispatcherHostDelegate virtual void RequestBeginning( net::URLRequest* request, content::ResourceContext* resource_context, - appcache::AppCacheService* appcache_service, + content::AppCacheService* appcache_service, ResourceType::Type resource_type, int child_id, int route_id, diff --git a/libcef/common/cef_switches.cc b/libcef/common/cef_switches.cc index e29ad0402..6084bc1bb 100644 --- a/libcef/common/cef_switches.cc +++ b/libcef/common/cef_switches.cc @@ -15,7 +15,6 @@ const char kLogSeverity_Verbose[] = "verbose"; const char kLogSeverity_Info[] = "info"; const char kLogSeverity_Warning[] = "warning"; const char kLogSeverity_Error[] = "error"; -const char kLogSeverity_ErrorReport[] = "error-report"; const char kLogSeverity_Disable[] = "disable"; // Path to resources directory. diff --git a/libcef/common/cef_switches.h b/libcef/common/cef_switches.h index 278bde7cd..f3bdf9bfd 100644 --- a/libcef/common/cef_switches.h +++ b/libcef/common/cef_switches.h @@ -16,7 +16,6 @@ extern const char kLogSeverity_Verbose[]; extern const char kLogSeverity_Info[]; extern const char kLogSeverity_Warning[]; extern const char kLogSeverity_Error[]; -extern const char kLogSeverity_ErrorReport[]; extern const char kLogSeverity_Disable[]; extern const char kResourcesDirPath[]; extern const char kLocalesDirPath[]; diff --git a/libcef/common/content_client.cc b/libcef/common/content_client.cc index fbdc87618..2fca93c27 100644 --- a/libcef/common/content_client.cc +++ b/libcef/common/content_client.cc @@ -22,9 +22,6 @@ namespace { CefContentClient* g_content_client = NULL; -const char kInterposeLibraryPath[] = - "@executable_path/../../../libplugin_carbon_interpose.dylib"; - } // namespace CefContentClient::CefContentClient(CefRefPtr application) @@ -112,12 +109,6 @@ gfx::Image& CefContentClient::GetNativeImageNamed(int resource_id) const { return value; } -#if defined(OS_MACOSX) && !defined(OS_IOS) -std::string CefContentClient::GetCarbonInterposePath() const { - return std::string(kInterposeLibraryPath); -} -#endif - void CefContentClient::AddCustomScheme(const SchemeInfo& scheme_info) { DCHECK(!scheme_info_list_locked_); scheme_info_list_.push_back(scheme_info); diff --git a/libcef/common/content_client.h b/libcef/common/content_client.h index 5dd9bc6d6..1933445af 100644 --- a/libcef/common/content_client.h +++ b/libcef/common/content_client.h @@ -36,10 +36,6 @@ class CefContentClient : public content::ContentClient, ui::ScaleFactor scale_factor) const OVERRIDE; virtual gfx::Image& GetNativeImageNamed(int resource_id) const OVERRIDE; -#if defined(OS_MACOSX) && !defined(OS_IOS) - virtual std::string GetCarbonInterposePath() const OVERRIDE; -#endif - struct SchemeInfo { std::string scheme_name; bool is_standard; diff --git a/libcef/common/main_delegate.cc b/libcef/common/main_delegate.cc index f3c38f252..0fcde99b4 100644 --- a/libcef/common/main_delegate.cc +++ b/libcef/common/main_delegate.cc @@ -235,9 +235,6 @@ bool CefMainDelegate::BasicStartupComplete(int* exit_code) { case LOGSEVERITY_ERROR: log_severity = switches::kLogSeverity_Error; break; - case LOGSEVERITY_ERROR_REPORT: - log_severity = switches::kLogSeverity_ErrorReport; - break; case LOGSEVERITY_DISABLE: log_severity = switches::kLogSeverity_Disable; break; @@ -328,9 +325,6 @@ bool CefMainDelegate::BasicStartupComplete(int* exit_code) { } else if (LowerCaseEqualsASCII(log_severity_str, switches::kLogSeverity_Error)) { log_severity = logging::LOG_ERROR; - } else if (LowerCaseEqualsASCII(log_severity_str, - switches::kLogSeverity_ErrorReport)) { - log_severity = logging::LOG_ERROR_REPORT; } else if (LowerCaseEqualsASCII(log_severity_str, switches::kLogSeverity_Disable)) { log_severity = LOGSEVERITY_DISABLE; diff --git a/libcef/common/request_impl.cc b/libcef/common/request_impl.cc index 1b016720d..5462a0c98 100644 --- a/libcef/common/request_impl.cc +++ b/libcef/common/request_impl.cc @@ -309,8 +309,6 @@ void CefRequestImpl::Set(const blink::WebURLRequest& request) { flags_ |= UR_FLAG_ALLOW_CACHED_CREDENTIALS; if (request.reportUploadProgress()) flags_ |= UR_FLAG_REPORT_UPLOAD_PROGRESS; - if (request.reportLoadTiming()) - flags_ |= UR_FLAG_REPORT_LOAD_TIMING; if (request.reportRawHeaders()) flags_ |= UR_FLAG_REPORT_RAW_HEADERS; @@ -351,8 +349,6 @@ void CefRequestImpl::Get(blink::WebURLRequest& request) { UR_FLAG_ALLOW_CACHED_CREDENTIALS); SETBOOLFLAG(request, flags_, setReportUploadProgress, UR_FLAG_REPORT_UPLOAD_PROGRESS); - SETBOOLFLAG(request, flags_, setReportLoadTiming, - UR_FLAG_REPORT_LOAD_TIMING); SETBOOLFLAG(request, flags_, setReportRawHeaders, UR_FLAG_REPORT_RAW_HEADERS); diff --git a/libcef/renderer/render_message_filter.cc b/libcef/renderer/render_message_filter.cc index 30355afd3..676b37ff0 100644 --- a/libcef/renderer/render_message_filter.cc +++ b/libcef/renderer/render_message_filter.cc @@ -16,14 +16,14 @@ #include "url/url_util.h" CefRenderMessageFilter::CefRenderMessageFilter() - : channel_(NULL) { + : sender_(NULL) { } CefRenderMessageFilter::~CefRenderMessageFilter() { } -void CefRenderMessageFilter::OnFilterAdded(IPC::Channel* channel) { - channel_ = channel; +void CefRenderMessageFilter::OnFilterAdded(IPC::Sender* sender) { + sender_ = sender; } void CefRenderMessageFilter::OnFilterRemoved() { @@ -45,7 +45,8 @@ bool CefRenderMessageFilter::OnMessageReceived(const IPC::Message& message) { return handled; } -void CefRenderMessageFilter::OnDevToolsAgentAttach() { +void CefRenderMessageFilter::OnDevToolsAgentAttach( + const std::string& host_id) { CEF_POST_TASK_RT( base::Bind(&CefRenderMessageFilter::OnDevToolsAgentAttach_RT, this)); } diff --git a/libcef/renderer/render_message_filter.h b/libcef/renderer/render_message_filter.h index 5a6d7bcb4..7dbd67bd1 100644 --- a/libcef/renderer/render_message_filter.h +++ b/libcef/renderer/render_message_filter.h @@ -17,20 +17,20 @@ class CefRenderMessageFilter : public IPC::MessageFilter { virtual ~CefRenderMessageFilter(); // IPC::ChannelProxy::MessageFilter implementation. - virtual void OnFilterAdded(IPC::Channel* channel) OVERRIDE; + virtual void OnFilterAdded(IPC::Sender* sender) OVERRIDE; virtual void OnFilterRemoved() OVERRIDE; virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; private: // Message handlers called on the IO thread. - void OnDevToolsAgentAttach(); + void OnDevToolsAgentAttach(const std::string& host_id); void OnDevToolsAgentDetach(); void OnDevToolsAgentAttach_RT(); void OnDevToolsAgentDetach_IOT(); void OnDevToolsAgentDetach_RT(); - IPC::Channel* channel_; + IPC::Sender* sender_; DISALLOW_COPY_AND_ASSIGN(CefRenderMessageFilter); }; diff --git a/libcef_dll/cpptoc/geolocation_handler_cpptoc.cc b/libcef_dll/cpptoc/geolocation_handler_cpptoc.cc index 42b498d05..093656c5e 100644 --- a/libcef_dll/cpptoc/geolocation_handler_cpptoc.cc +++ b/libcef_dll/cpptoc/geolocation_handler_cpptoc.cc @@ -17,7 +17,7 @@ // MEMBER FUNCTIONS - Body may be edited by hand. -void CEF_CALLBACK geolocation_handler_on_request_geolocation_permission( +int CEF_CALLBACK geolocation_handler_on_request_geolocation_permission( struct _cef_geolocation_handler_t* self, cef_browser_t* browser, const cef_string_t* requesting_url, int request_id, cef_geolocation_callback_t* callback) { @@ -25,26 +25,30 @@ void CEF_CALLBACK geolocation_handler_on_request_geolocation_permission( DCHECK(self); if (!self) - return; + return 0; // Verify param: browser; type: refptr_diff DCHECK(browser); if (!browser) - return; + return 0; // Verify param: requesting_url; type: string_byref_const DCHECK(requesting_url); if (!requesting_url) - return; + return 0; // Verify param: callback; type: refptr_diff DCHECK(callback); if (!callback) - return; + return 0; // Execute - CefGeolocationHandlerCppToC::Get(self)->OnRequestGeolocationPermission( + bool _retval = CefGeolocationHandlerCppToC::Get( + self)->OnRequestGeolocationPermission( CefBrowserCToCpp::Wrap(browser), CefString(requesting_url), request_id, CefGeolocationCallbackCToCpp::Wrap(callback)); + + // Return type: bool + return _retval; } void CEF_CALLBACK geolocation_handler_on_cancel_geolocation_permission( diff --git a/libcef_dll/ctocpp/geolocation_handler_ctocpp.cc b/libcef_dll/ctocpp/geolocation_handler_ctocpp.cc index cf06e6a44..ccf71b920 100644 --- a/libcef_dll/ctocpp/geolocation_handler_ctocpp.cc +++ b/libcef_dll/ctocpp/geolocation_handler_ctocpp.cc @@ -17,33 +17,36 @@ // VIRTUAL METHODS - Body may be edited by hand. -void CefGeolocationHandlerCToCpp::OnRequestGeolocationPermission( +bool CefGeolocationHandlerCToCpp::OnRequestGeolocationPermission( CefRefPtr browser, const CefString& requesting_url, int request_id, CefRefPtr callback) { if (CEF_MEMBER_MISSING(struct_, on_request_geolocation_permission)) - return; + return false; // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING // Verify param: browser; type: refptr_diff DCHECK(browser.get()); if (!browser.get()) - return; + return false; // Verify param: requesting_url; type: string_byref_const DCHECK(!requesting_url.empty()); if (requesting_url.empty()) - return; + return false; // Verify param: callback; type: refptr_diff DCHECK(callback.get()); if (!callback.get()) - return; + return false; // Execute - struct_->on_request_geolocation_permission(struct_, + int _retval = struct_->on_request_geolocation_permission(struct_, CefBrowserCppToC::Wrap(browser), requesting_url.GetStruct(), request_id, CefGeolocationCallbackCppToC::Wrap(callback)); + + // Return type: bool + return _retval?true:false; } void CefGeolocationHandlerCToCpp::OnCancelGeolocationPermission( diff --git a/libcef_dll/ctocpp/geolocation_handler_ctocpp.h b/libcef_dll/ctocpp/geolocation_handler_ctocpp.h index 3a79242fd..e4d88ee70 100644 --- a/libcef_dll/ctocpp/geolocation_handler_ctocpp.h +++ b/libcef_dll/ctocpp/geolocation_handler_ctocpp.h @@ -34,7 +34,7 @@ class CefGeolocationHandlerCToCpp virtual ~CefGeolocationHandlerCToCpp() {} // CefGeolocationHandler methods - virtual void OnRequestGeolocationPermission(CefRefPtr browser, + virtual bool OnRequestGeolocationPermission(CefRefPtr browser, const CefString& requesting_url, int request_id, CefRefPtr callback) OVERRIDE; virtual void OnCancelGeolocationPermission(CefRefPtr browser, diff --git a/patch/patch.cfg b/patch/patch.cfg index d7bb9d2b2..8ba9e8474 100644 --- a/patch/patch.cfg +++ b/patch/patch.cfg @@ -106,10 +106,11 @@ patches = [ 'path': '../webkit/', }, { - # Fix Blink VectorComparer::compare assertion with VS2013 debug build. - # https://code.google.com/p/chromium/issues/detail?id=377942 - 'name': 'wtf_vector_377942', - 'path': '../third_party/WebKit/Source/wtf/', + # Revert Blink revision 177068 changes due to _web_drawFocusRingWithFrame + # unrecognized selector error during offscreen rendering of popups. + # https://code.google.com/p/chromium/issues/detail?id=328814 + 'name': 'webkit_platform_mac_328814', + 'path': '../third_party/WebKit/Source/platform/mac/', }, { # Disable scollbar bounce and overlay on OS X. diff --git a/patch/patches/browser_web_contents_1257.patch b/patch/patches/browser_web_contents_1257.patch index 64329ec22..ebc4f5b03 100644 --- a/patch/patches/browser_web_contents_1257.patch +++ b/patch/patches/browser_web_contents_1257.patch @@ -1,8 +1,8 @@ Index: web_contents_impl.cc =================================================================== ---- web_contents_impl.cc (revision 275973) +--- web_contents_impl.cc (revision 280796) +++ web_contents_impl.cc (working copy) -@@ -1059,22 +1059,29 @@ +@@ -1073,22 +1073,29 @@ params.browser_context, params.site_instance, params.routing_id, params.main_frame_routing_id); @@ -46,7 +46,7 @@ Index: web_contents_impl.cc } CHECK(render_view_host_delegate_view_); CHECK(view_.get()); -@@ -1381,6 +1388,9 @@ +@@ -1407,6 +1414,9 @@ static_cast(session_storage_namespace); CHECK(session_storage_namespace_impl->IsFromContext(dom_storage_context)); @@ -56,7 +56,7 @@ Index: web_contents_impl.cc if (delegate_ && !delegate_->ShouldCreateWebContents(this, route_id, -@@ -1388,7 +1398,9 @@ +@@ -1414,7 +1424,9 @@ params.frame_name, params.target_url, partition_id, @@ -67,7 +67,7 @@ Index: web_contents_impl.cc if (route_id != MSG_ROUTING_NONE && !RenderViewHost::FromID(render_process_id, route_id)) { // If the embedder didn't create a WebContents for this route, we need to -@@ -1408,6 +1420,8 @@ +@@ -1434,6 +1446,8 @@ create_params.main_frame_routing_id = main_frame_route_id; create_params.opener = this; create_params.opener_suppressed = params.opener_suppressed; diff --git a/patch/patches/build.patch b/patch/patches/build.patch index 6d4866df7..d0322c69c 100644 --- a/patch/patches/build.patch +++ b/patch/patches/build.patch @@ -1,6 +1,6 @@ Index: mac/strip_save_dsym =================================================================== ---- mac/strip_save_dsym (revision 275973) +--- mac/strip_save_dsym (revision 280796) +++ mac/strip_save_dsym (working copy) @@ -48,7 +48,7 @@ "bundle"] @@ -13,9 +13,9 @@ Index: mac/strip_save_dsym archs = [] Index: gyp_chromium =================================================================== ---- gyp_chromium (revision 275973) +--- gyp_chromium (revision 280796) +++ gyp_chromium (working copy) -@@ -251,12 +251,6 @@ +@@ -257,12 +257,6 @@ if sys.platform not in ('darwin',): args.append('--no-circular-check') @@ -30,7 +30,7 @@ Index: gyp_chromium # Also default to ninja on mac, but only when not building chrome/ios. Index: common.gypi =================================================================== ---- common.gypi (revision 275973) +--- common.gypi (revision 280796) +++ common.gypi (working copy) @@ -9,6 +9,9 @@ # Variables expected to be overriden on the GYP command line (-D) or by @@ -42,7 +42,7 @@ Index: common.gypi # Putting a variables dict inside another variables dict looks kind of # weird. This is done so that 'host_arch', 'chromeos', etc are defined as # variables within the outer variables dict here. This is necessary -@@ -5058,6 +5061,9 @@ +@@ -5175,6 +5178,9 @@ # removed as code is fixed. 4100, 4121, 4125, 4127, 4130, 4131, 4189, 4201, 4238, 4244, 4245, 4310, 4428, 4481, 4505, 4510, 4512, 4530, 4610, 4611, 4701, 4706, diff --git a/patch/patches/content_nav_1129.patch b/patch/patches/content_nav_1129.patch index 569e51a0f..36657d867 100644 --- a/patch/patches/content_nav_1129.patch +++ b/patch/patches/content_nav_1129.patch @@ -1,6 +1,6 @@ Index: public/renderer/content_renderer_client.cc =================================================================== ---- public/renderer/content_renderer_client.cc (revision 275973) +--- public/renderer/content_renderer_client.cc (revision 280796) +++ public/renderer/content_renderer_client.cc (working copy) @@ -92,7 +92,6 @@ return false; @@ -20,7 +20,7 @@ Index: public/renderer/content_renderer_client.cc const GURL& url, Index: public/renderer/content_renderer_client.h =================================================================== ---- public/renderer/content_renderer_client.h (revision 275973) +--- public/renderer/content_renderer_client.h (revision 280796) +++ public/renderer/content_renderer_client.h (working copy) @@ -176,7 +176,6 @@ // Returns true if a popup window should be allowed. @@ -40,9 +40,9 @@ Index: public/renderer/content_renderer_client.h // If |send_referrer| is set to false (which is the default), no referrer Index: renderer/render_frame_impl.cc =================================================================== ---- renderer/render_frame_impl.cc (revision 275973) +--- renderer/render_frame_impl.cc (revision 280796) +++ renderer/render_frame_impl.cc (working copy) -@@ -3143,7 +3143,6 @@ +@@ -3122,7 +3122,6 @@ WebNavigationType type, WebNavigationPolicy default_policy, bool is_redirect) { @@ -50,7 +50,7 @@ Index: renderer/render_frame_impl.cc // The handlenavigation API is deprecated and will be removed once // crbug.com/325351 is resolved. if (request.url() != GURL(kSwappedOutURL) && -@@ -3158,7 +3157,6 @@ +@@ -3137,7 +3136,6 @@ is_redirect)) { return blink::WebNavigationPolicyIgnore; } diff --git a/patch/patches/gritsettings.patch b/patch/patches/gritsettings.patch index 89c70f47c..bb106ac6e 100644 --- a/patch/patches/gritsettings.patch +++ b/patch/patches/gritsettings.patch @@ -1,6 +1,6 @@ Index: resource_ids =================================================================== ---- resource_ids (revision 275973) +--- resource_ids (revision 280796) +++ resource_ids (working copy) @@ -16,6 +16,12 @@ { diff --git a/patch/patches/gyp_331.patch b/patch/patches/gyp_331.patch index 4f5d8cbed..537118769 100644 --- a/patch/patches/gyp_331.patch +++ b/patch/patches/gyp_331.patch @@ -1,8 +1,8 @@ Index: gyp/generator/ninja.py =================================================================== ---- gyp/generator/ninja.py (revision 1927) +--- gyp/generator/ninja.py (revision 1944) +++ gyp/generator/ninja.py (working copy) -@@ -738,7 +738,16 @@ +@@ -740,7 +740,16 @@ for path in copy['files']: # Normalize the path so trailing slashes don't confuse us. path = os.path.normpath(path) diff --git a/patch/patches/message_loop_443.patch b/patch/patches/message_loop_443.patch index 416dd16d8..48791d356 100644 --- a/patch/patches/message_loop_443.patch +++ b/patch/patches/message_loop_443.patch @@ -1,6 +1,6 @@ Index: message_loop.cc =================================================================== ---- message_loop.cc (revision 275973) +--- message_loop.cc (revision 280796) +++ message_loop.cc (working copy) @@ -154,7 +154,7 @@ MessageLoop::~MessageLoop() { diff --git a/patch/patches/prefs_content_1161.patch b/patch/patches/prefs_content_1161.patch index c8e2d6a7c..eb88aa70a 100644 --- a/patch/patches/prefs_content_1161.patch +++ b/patch/patches/prefs_content_1161.patch @@ -1,8 +1,8 @@ Index: public/common/common_param_traits_macros.h =================================================================== ---- public/common/common_param_traits_macros.h (revision 275973) +--- public/common/common_param_traits_macros.h (revision 280796) +++ public/common/common_param_traits_macros.h (working copy) -@@ -177,6 +177,7 @@ +@@ -175,6 +175,7 @@ IPC_STRUCT_TRAITS_MEMBER(initialize_at_minimum_page_scale) IPC_STRUCT_TRAITS_MEMBER(smart_insert_delete_enabled) IPC_STRUCT_TRAITS_MEMBER(compositor_touch_hit_testing) @@ -12,7 +12,7 @@ Index: public/common/common_param_traits_macros.h IPC_STRUCT_TRAITS_MEMBER(spatial_navigation_enabled) Index: renderer/web_preferences.cc =================================================================== ---- renderer/web_preferences.cc (revision 275973) +--- renderer/web_preferences.cc (revision 280796) +++ renderer/web_preferences.cc (working copy) @@ -167,6 +167,8 @@ diff --git a/patch/patches/prefs_webkit_1161.patch b/patch/patches/prefs_webkit_1161.patch index 4233d6a70..d15c660d8 100644 --- a/patch/patches/prefs_webkit_1161.patch +++ b/patch/patches/prefs_webkit_1161.patch @@ -1,8 +1,8 @@ Index: common/webpreferences.cc =================================================================== ---- common/webpreferences.cc (revision 275973) +--- common/webpreferences.cc (revision 280796) +++ common/webpreferences.cc (working copy) -@@ -114,6 +114,7 @@ +@@ -112,6 +112,7 @@ use_solid_color_scrollbars(false), compositor_touch_hit_testing(true), navigate_on_drag_drop(true), @@ -12,9 +12,9 @@ Index: common/webpreferences.cc #if defined(OS_ANDROID) Index: common/webpreferences.h =================================================================== ---- common/webpreferences.h (revision 275973) +--- common/webpreferences.h (revision 280796) +++ common/webpreferences.h (working copy) -@@ -150,6 +150,7 @@ +@@ -148,6 +148,7 @@ bool use_solid_color_scrollbars; bool compositor_touch_hit_testing; bool navigate_on_drag_drop; diff --git a/patch/patches/public_browser_1161_1257.patch b/patch/patches/public_browser_1161_1257.patch index 6f927a15e..a4e7a92ed 100644 --- a/patch/patches/public_browser_1161_1257.patch +++ b/patch/patches/public_browser_1161_1257.patch @@ -1,8 +1,8 @@ Index: content_browser_client.cc =================================================================== ---- content_browser_client.cc (revision 275973) +--- content_browser_client.cc (revision 280796) +++ content_browser_client.cc (working copy) -@@ -252,6 +252,10 @@ +@@ -280,6 +280,10 @@ return true; } @@ -15,7 +15,7 @@ Index: content_browser_client.cc } Index: content_browser_client.h =================================================================== ---- content_browser_client.h (revision 275973) +--- content_browser_client.h (revision 280796) +++ content_browser_client.h (working copy) @@ -23,6 +23,7 @@ #include "net/cookies/canonical_cookie.h" @@ -25,7 +25,7 @@ Index: content_browser_client.h #include "third_party/WebKit/public/web/WebNotificationPresenter.h" #include "ui/base/window_open_disposition.h" #include "webkit/browser/fileapi/file_system_context.h" -@@ -533,6 +534,9 @@ +@@ -538,6 +539,9 @@ // Clears browser cookies. virtual void ClearCookies(RenderViewHost* rvh) {} @@ -37,12 +37,12 @@ Index: content_browser_client.h virtual base::FilePath GetDefaultDownloadDirectory(); Index: web_contents.cc =================================================================== ---- web_contents.cc (revision 275973) +--- web_contents.cc (revision 280796) +++ web_contents.cc (working copy) @@ -17,7 +17,9 @@ main_frame_routing_id(MSG_ROUTING_NONE), initially_hidden(false), - guest_instance_id(0), + guest_delegate(NULL), - context(NULL) {} + context(NULL), + view(NULL), @@ -53,7 +53,7 @@ Index: web_contents.cc @@ -29,7 +31,9 @@ main_frame_routing_id(MSG_ROUTING_NONE), initially_hidden(false), - guest_instance_id(0), + guest_delegate(NULL), - context(NULL) {} + context(NULL), + view(NULL), @@ -63,9 +63,9 @@ Index: web_contents.cc } Index: web_contents.h =================================================================== ---- web_contents.h (revision 275973) +--- web_contents.h (revision 280796) +++ web_contents.h (working copy) -@@ -50,9 +50,11 @@ +@@ -51,9 +51,11 @@ class RenderFrameHost; class RenderProcessHost; class RenderViewHost; @@ -77,7 +77,7 @@ Index: web_contents.h struct CustomContextMenuContext; struct DropData; struct RendererPreferences; -@@ -120,6 +122,10 @@ +@@ -116,6 +118,10 @@ // Used to specify the location context which display the new view should // belong. This can be NULL if not needed. gfx::NativeView context; @@ -90,7 +90,7 @@ Index: web_contents.h // Creates a new WebContents. Index: web_contents_delegate.cc =================================================================== ---- web_contents_delegate.cc (revision 275973) +--- web_contents_delegate.cc (revision 280796) +++ web_contents_delegate.cc (working copy) @@ -136,7 +136,9 @@ const base::string16& frame_name, @@ -105,7 +105,7 @@ Index: web_contents_delegate.cc Index: web_contents_delegate.h =================================================================== ---- web_contents_delegate.h (revision 275973) +--- web_contents_delegate.h (revision 280796) +++ web_contents_delegate.h (working copy) @@ -36,9 +36,11 @@ class JavaScriptDialogManager; diff --git a/patch/patches/renderer_host_1161.patch b/patch/patches/renderer_host_1161.patch index 0b3e07638..faf1518b6 100644 --- a/patch/patches/renderer_host_1161.patch +++ b/patch/patches/renderer_host_1161.patch @@ -1,8 +1,8 @@ Index: compositing_iosurface_layer_mac.mm =================================================================== ---- compositing_iosurface_layer_mac.mm (revision 275973) +--- compositing_iosurface_layer_mac.mm (revision 280796) +++ compositing_iosurface_layer_mac.mm (working copy) -@@ -188,7 +188,7 @@ +@@ -191,7 +191,7 @@ TRACE_EVENT0("browser", "CompositingIOSurfaceLayer::drawInCGLContext"); if (!iosurface_->HasIOSurface() || context_->cgl_context() != glContext) { @@ -13,7 +13,7 @@ Index: compositing_iosurface_layer_mac.mm } Index: compositing_iosurface_mac.mm =================================================================== ---- compositing_iosurface_mac.mm (revision 275973) +--- compositing_iosurface_mac.mm (revision 280796) +++ compositing_iosurface_mac.mm (working copy) @@ -350,7 +350,7 @@ glUseProgram(0); CHECK_AND_SAVE_GL_ERROR(); @@ -26,7 +26,7 @@ Index: compositing_iosurface_mac.mm Index: compositing_iosurface_shader_programs_mac.cc =================================================================== ---- compositing_iosurface_shader_programs_mac.cc (revision 275973) +--- compositing_iosurface_shader_programs_mac.cc (revision 280796) +++ compositing_iosurface_shader_programs_mac.cc (working copy) @@ -11,6 +11,8 @@ #include "base/debug/trace_event.h" @@ -81,7 +81,7 @@ Index: compositing_iosurface_shader_programs_mac.cc shader_programs_[which] = Index: compositing_iosurface_shader_programs_mac.h =================================================================== ---- compositing_iosurface_shader_programs_mac.h (revision 275973) +--- compositing_iosurface_shader_programs_mac.h (revision 280796) +++ compositing_iosurface_shader_programs_mac.h (working copy) @@ -48,6 +48,8 @@ return rgb_to_yv12_output_format_; @@ -94,9 +94,9 @@ Index: compositing_iosurface_shader_programs_mac.h TransformsRGBToYV12); Index: render_widget_host_view_aura.cc =================================================================== ---- render_widget_host_view_aura.cc (revision 275973) +--- render_widget_host_view_aura.cc (revision 280796) +++ render_widget_host_view_aura.cc (working copy) -@@ -1675,8 +1675,14 @@ +@@ -1672,8 +1672,14 @@ // For non-opaque windows, we don't draw anything, since we depend on the // canvas coming from the compositor to already be initialized as // transparent. @@ -115,14 +115,14 @@ Index: render_widget_host_view_aura.cc void RenderWidgetHostViewAura::OnDeviceScaleFactorChanged( Index: render_widget_host_view_mac.mm =================================================================== ---- render_widget_host_view_mac.mm (revision 275973) +--- render_widget_host_view_mac.mm (revision 280796) +++ render_widget_host_view_mac.mm (working copy) -@@ -493,7 +493,7 @@ +@@ -504,7 +504,7 @@ background_layer_.reset([[CALayer alloc] init]); [background_layer_ - setBackgroundColor:CGColorGetConstantColor(kCGColorWhite)]; + setBackgroundColor:CGColorGetConstantColor(kCGColorClear)]; + [background_layer_ setGeometryFlipped:YES]; + [background_layer_ setContentsGravity:kCAGravityTopLeft]; [cocoa_view_ setLayer:background_layer_]; - [cocoa_view_ setWantsLayer:YES]; - diff --git a/patch/patches/spi_webcore_364.patch b/patch/patches/spi_webcore_364.patch index b6df00405..88e553c0d 100644 --- a/patch/patches/spi_webcore_364.patch +++ b/patch/patches/spi_webcore_364.patch @@ -1,8 +1,8 @@ Index: core/frame/FrameView.cpp =================================================================== ---- core/frame/FrameView.cpp (revision 175829) +--- core/frame/FrameView.cpp (revision 177271) +++ core/frame/FrameView.cpp (working copy) -@@ -165,8 +165,10 @@ +@@ -139,8 +139,10 @@ if (!m_frame->isMainFrame()) return; @@ -15,9 +15,9 @@ Index: core/frame/FrameView.cpp PassRefPtr FrameView::create(LocalFrame* frame) Index: platform/scroll/ScrollbarThemeMacCommon.mm =================================================================== ---- platform/scroll/ScrollbarThemeMacCommon.mm (revision 175829) +--- platform/scroll/ScrollbarThemeMacCommon.mm (revision 177271) +++ platform/scroll/ScrollbarThemeMacCommon.mm (working copy) -@@ -358,10 +358,14 @@ +@@ -355,10 +355,14 @@ // static bool ScrollbarThemeMacCommon::isOverlayAPIAvailable() { diff --git a/patch/patches/underlay_1051.patch b/patch/patches/underlay_1051.patch index 4bf3b022a..0164a4492 100644 --- a/patch/patches/underlay_1051.patch +++ b/patch/patches/underlay_1051.patch @@ -1,6 +1,6 @@ Index: underlay_opengl_hosting_window.h =================================================================== ---- underlay_opengl_hosting_window.h (revision 275973) +--- underlay_opengl_hosting_window.h (revision 280796) +++ underlay_opengl_hosting_window.h (working copy) @@ -12,7 +12,7 @@ // Common base class for windows that host a OpenGL surface that renders under diff --git a/patch/patches/views_widget_180.patch b/patch/patches/views_widget_180.patch index b6d4856f3..ff0b760b9 100644 --- a/patch/patches/views_widget_180.patch +++ b/patch/patches/views_widget_180.patch @@ -1,6 +1,6 @@ Index: desktop_aura/desktop_screen_win.cc =================================================================== ---- desktop_aura/desktop_screen_win.cc (revision 275973) +--- desktop_aura/desktop_screen_win.cc (revision 280796) +++ desktop_aura/desktop_screen_win.cc (working copy) @@ -54,6 +54,8 @@ } @@ -13,7 +13,7 @@ Index: desktop_aura/desktop_screen_win.cc } Index: desktop_aura/desktop_screen_x11.cc =================================================================== ---- desktop_aura/desktop_screen_x11.cc (revision 275973) +--- desktop_aura/desktop_screen_x11.cc (revision 280796) +++ desktop_aura/desktop_screen_x11.cc (working copy) @@ -220,6 +220,9 @@ @@ -27,7 +27,7 @@ Index: desktop_aura/desktop_screen_x11.cc // You'd think we'd be able to just call window->GetBoundsInScreen(), but we Index: desktop_aura/desktop_window_tree_host_win.cc =================================================================== ---- desktop_aura/desktop_window_tree_host_win.cc (revision 275973) +--- desktop_aura/desktop_window_tree_host_win.cc (revision 280796) +++ desktop_aura/desktop_window_tree_host_win.cc (working copy) @@ -129,7 +129,9 @@ native_widget_delegate_); @@ -58,7 +58,7 @@ Index: desktop_aura/desktop_window_tree_host_win.cc input_method->OnBlur(); Index: desktop_aura/desktop_window_tree_host_x11.cc =================================================================== ---- desktop_aura/desktop_window_tree_host_x11.cc (revision 275973) +--- desktop_aura/desktop_window_tree_host_x11.cc (revision 280796) +++ desktop_aura/desktop_window_tree_host_x11.cc (working copy) @@ -148,7 +148,8 @@ window_parent_(NULL), @@ -70,7 +70,7 @@ Index: desktop_aura/desktop_window_tree_host_x11.cc } DesktopWindowTreeHostX11::~DesktopWindowTreeHostX11() { -@@ -337,7 +338,8 @@ +@@ -347,7 +348,8 @@ // Actually free our native resources. if (ui::PlatformEventSource::GetInstance()) ui::PlatformEventSource::GetInstance()->RemovePlatformEventDispatcher(this); @@ -80,7 +80,7 @@ Index: desktop_aura/desktop_window_tree_host_x11.cc xwindow_ = None; desktop_native_widget_aura_->OnHostClosed(); -@@ -1027,9 +1029,13 @@ +@@ -1042,9 +1044,13 @@ } } @@ -95,7 +95,7 @@ Index: desktop_aura/desktop_window_tree_host_x11.cc bounds_.x(), bounds_.y(), bounds_.width(), bounds_.height(), 0, // border width -@@ -1554,6 +1560,10 @@ +@@ -1600,6 +1606,10 @@ } break; } @@ -108,9 +108,9 @@ Index: desktop_aura/desktop_window_tree_host_x11.cc ReleaseCapture(); Index: desktop_aura/desktop_window_tree_host_x11.h =================================================================== ---- desktop_aura/desktop_window_tree_host_x11.h (revision 275973) +--- desktop_aura/desktop_window_tree_host_x11.h (revision 280796) +++ desktop_aura/desktop_window_tree_host_x11.h (working copy) -@@ -322,6 +322,9 @@ +@@ -331,6 +331,9 @@ // the frame when |xwindow_| gains focus or handles a mouse button event. bool urgency_hint_set_; @@ -122,7 +122,7 @@ Index: desktop_aura/desktop_window_tree_host_x11.h Index: widget.cc =================================================================== ---- widget.cc (revision 275973) +--- widget.cc (revision 280796) +++ widget.cc (working copy) @@ -116,6 +116,7 @@ show_state(ui::SHOW_STATE_DEFAULT), @@ -149,7 +149,7 @@ Index: widget.cc if (params.opacity == views::Widget::InitParams::INFER_OPACITY && params.type != views::Widget::InitParams::TYPE_WINDOW && -@@ -376,7 +378,12 @@ +@@ -375,7 +377,12 @@ Minimize(); } else if (params.delegate) { SetContentsView(params.delegate->GetContentsView()); @@ -161,11 +161,11 @@ Index: widget.cc + SetInitialBoundsForFramelessWindow(params.bounds); + } } - native_widget_initialized_ = true; - } + // This must come after SetContentsView() or it might not be able to find + // the correct NativeTheme (on Linux). See http://crbug.com/384492 Index: widget.h =================================================================== ---- widget.h (revision 275973) +--- widget.h (revision 280796) +++ widget.h (working copy) @@ -222,6 +222,7 @@ // Should the widget be double buffered? Default is false. diff --git a/patch/patches/webkit_933.patch b/patch/patches/webkit_933.patch index 6eb02ffa2..a7bc9212c 100644 --- a/patch/patches/webkit_933.patch +++ b/patch/patches/webkit_933.patch @@ -1,8 +1,8 @@ Index: WebNode.cpp =================================================================== ---- WebNode.cpp (revision 175829) +--- WebNode.cpp (revision 177271) +++ WebNode.cpp (working copy) -@@ -172,7 +172,7 @@ +@@ -173,7 +173,7 @@ void WebNode::addEventListener(const WebString& eventType, WebDOMEventListener* listener, bool useCapture) { // Please do not add more eventTypes to this list without an API review. diff --git a/patch/patches/webkit_platform_mac_328814.patch b/patch/patches/webkit_platform_mac_328814.patch new file mode 100644 index 000000000..4b38467d8 --- /dev/null +++ b/patch/patches/webkit_platform_mac_328814.patch @@ -0,0 +1,32 @@ +diff --git ThemeMac.mm ThemeMac.mm +index 4e702e1..927b2e8 100644 +--- ThemeMac.mm ++++ ThemeMac.mm +@@ -472,7 +472,7 @@ static void paintButton(ControlPart part, ControlStates states, GraphicsContext* + + [buttonCell drawWithFrame:NSRect(inflatedRect) inView:view]; + #if !BUTTON_CELL_DRAW_WITH_FRAME_DRAWS_FOCUS_RING +- if (states & FocusControlState) ++ if (states & FocusState) + [buttonCell _web_drawFocusRingWithFrame:NSRect(inflatedRect) inView:view]; + #endif + [buttonCell setControlView:nil]; +diff --git WebCoreNSCellExtras.h WebCoreNSCellExtras.h +index 8623826..b9f683d 100644 +--- WebCoreNSCellExtras.h ++++ WebCoreNSCellExtras.h +@@ -26,12 +26,12 @@ + #import + #include "platform/PlatformExport.h" + +-#define BUTTON_CELL_DRAW_WITH_FRAME_DRAWS_FOCUS_RING (!defined(MAC_OS_X_VERSION_10_7) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7) ++#define BUTTON_CELL_DRAW_WITH_FRAME_DRAWS_FOCUS_RING 1 + + #if !BUTTON_CELL_DRAW_WITH_FRAME_DRAWS_FOCUS_RING + + // FIXME: Might want to use this on Mac once we only support OS X 10.8+ +-@interface NSCell (WebCoreFocusRingDrawing) ++PLATFORM_EXPORT @interface NSCell (WebCoreFocusRingDrawing) + - (void)_web_drawFocusRingWithFrame:(NSRect)cellFrame inView:(NSView *)controlView; + @end + diff --git a/patch/patches/webkit_popups.patch b/patch/patches/webkit_popups.patch index 15c92d564..ab6ee5951 100644 --- a/patch/patches/webkit_popups.patch +++ b/patch/patches/webkit_popups.patch @@ -1,6 +1,6 @@ Index: public/web/WebView.h =================================================================== ---- public/web/WebView.h (revision 175829) +--- public/web/WebView.h (revision 177271) +++ public/web/WebView.h (working copy) @@ -416,6 +416,7 @@ @@ -12,9 +12,9 @@ Index: public/web/WebView.h virtual void hidePopups() = 0; Index: Source/web/ChromeClientImpl.cpp =================================================================== ---- Source/web/ChromeClientImpl.cpp (revision 175829) +--- Source/web/ChromeClientImpl.cpp (revision 177271) +++ Source/web/ChromeClientImpl.cpp (working copy) -@@ -729,7 +729,7 @@ +@@ -717,7 +717,7 @@ PassRefPtr ChromeClientImpl::createPopupMenu(LocalFrame& frame, PopupMenuClient* client) const { @@ -25,9 +25,9 @@ Index: Source/web/ChromeClientImpl.cpp return adoptRef(new PopupMenuChromium(frame, client)); Index: Source/web/WebViewImpl.cpp =================================================================== ---- Source/web/WebViewImpl.cpp (revision 175829) +--- Source/web/WebViewImpl.cpp (revision 177271) +++ Source/web/WebViewImpl.cpp (working copy) -@@ -365,6 +365,7 @@ +@@ -369,6 +369,7 @@ , m_fakePageScaleAnimationPageScaleFactor(0) , m_fakePageScaleAnimationUseAnchor(false) , m_contextMenuAllowed(false) @@ -35,8 +35,8 @@ Index: Source/web/WebViewImpl.cpp , m_doingDragAndDrop(false) , m_ignoreInputEvents(false) , m_compositorDeviceScaleFactorOverride(0) -@@ -3628,9 +3629,14 @@ - updateLayerTreeViewport(); +@@ -3679,9 +3680,14 @@ + m_page->inspectorController().deviceOrPageScaleFactorChanged(); } +void WebViewImpl::setUseExternalPopupMenusThisInstance(bool useExternalPopupMenus) @@ -53,9 +53,9 @@ Index: Source/web/WebViewImpl.cpp void WebViewImpl::startDragging(LocalFrame* frame, Index: Source/web/WebViewImpl.h =================================================================== ---- Source/web/WebViewImpl.h (revision 175829) +--- Source/web/WebViewImpl.h (revision 177271) +++ Source/web/WebViewImpl.h (working copy) -@@ -352,7 +352,8 @@ +@@ -353,7 +353,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 { -@@ -628,6 +629,8 @@ +@@ -625,6 +626,8 @@ bool m_contextMenuAllowed; diff --git a/patch/patches/wtf_vector_377942.patch b/patch/patches/wtf_vector_377942.patch deleted file mode 100644 index 713a13686..000000000 --- a/patch/patches/wtf_vector_377942.patch +++ /dev/null @@ -1,16 +0,0 @@ -Index: Vector.h -=================================================================== ---- Vector.h (revision 175829) -+++ Vector.h (working copy) -@@ -224,7 +224,10 @@ - { - static bool compare(const T* a, const T* b, size_t size) - { -- return std::equal(a, a + size, b); -+ for (size_t i = 0; i < size; ++i) -+ if (!(a[i] == b[i])) -+ return false; -+ return true; - } - }; - diff --git a/patch/patches/zlib.patch b/patch/patches/zlib.patch index 40def62c2..6b4a8aa6b 100644 --- a/patch/patches/zlib.patch +++ b/patch/patches/zlib.patch @@ -1,6 +1,6 @@ Index: contrib/minizip/unzip.c =================================================================== ---- contrib/minizip/unzip.c (revision 275973) +--- contrib/minizip/unzip.c (revision 280796) +++ contrib/minizip/unzip.c (working copy) @@ -69,7 +69,7 @@ #include diff --git a/tests/cefclient/client_handler.cpp b/tests/cefclient/client_handler.cpp index 44e20cd5b..c2aea8d0a 100644 --- a/tests/cefclient/client_handler.cpp +++ b/tests/cefclient/client_handler.cpp @@ -250,13 +250,14 @@ bool ClientHandler::OnDragEnter(CefRefPtr browser, return false; } -void ClientHandler::OnRequestGeolocationPermission( +bool ClientHandler::OnRequestGeolocationPermission( CefRefPtr browser, const CefString& requesting_url, int request_id, CefRefPtr callback) { // Allow geolocation access from all websites. callback->Continue(true); + return true; } bool ClientHandler::OnPreKeyEvent(CefRefPtr browser, diff --git a/tests/cefclient/client_handler.h b/tests/cefclient/client_handler.h index 4c69f6df3..e084c45c3 100644 --- a/tests/cefclient/client_handler.h +++ b/tests/cefclient/client_handler.h @@ -125,7 +125,7 @@ class ClientHandler : public CefClient, CefDragHandler::DragOperationsMask mask) OVERRIDE; // CefGeolocationHandler methods - virtual void OnRequestGeolocationPermission( + virtual bool OnRequestGeolocationPermission( CefRefPtr browser, const CefString& requesting_url, int request_id, diff --git a/tests/unittests/geolocation_unittest.cc b/tests/unittests/geolocation_unittest.cc index e4a117995..22c62fd70 100644 --- a/tests/unittests/geolocation_unittest.cc +++ b/tests/unittests/geolocation_unittest.cc @@ -78,7 +78,7 @@ class GeolocationTestHandler : public TestHandler { callback->Continue(false); } - virtual void OnRequestGeolocationPermission( + virtual bool OnRequestGeolocationPermission( CefRefPtr browser, const CefString& requesting_url, int request_id, @@ -97,6 +97,8 @@ class GeolocationTestHandler : public TestHandler { NewCefRunnableMethod(this, &GeolocationTestHandler::ExecuteCallback, callback)); } + + return true; } virtual void OnCancelGeolocationPermission( diff --git a/tools/distrib/cefclient.gyp b/tools/distrib/cefclient.gyp index cce91bc53..dff0abbaa 100644 --- a/tools/distrib/cefclient.gyp +++ b/tools/distrib/cefclient.gyp @@ -154,7 +154,6 @@ # Add libraries and helper app. 'destination': '<(PRODUCT_DIR)/cefclient.app/Contents/Frameworks', 'files': [ - '$(CONFIGURATION)/libplugin_carbon_interpose.dylib', '<(PRODUCT_DIR)/cefclient Helper.app', ], }, @@ -375,7 +374,6 @@ # Add libraries and helper app. 'destination': '<(PRODUCT_DIR)/cefsimple.app/Contents/Frameworks', 'files': [ - '$(CONFIGURATION)/libplugin_carbon_interpose.dylib', '<(PRODUCT_DIR)/cefsimple Helper.app', ], }, diff --git a/tools/distrib/mac/README.redistrib.txt b/tools/distrib/mac/README.redistrib.txt index ff15436d9..08835baed 100644 --- a/tools/distrib/mac/README.redistrib.txt +++ b/tools/distrib/mac/README.redistrib.txt @@ -22,7 +22,6 @@ cefclient.app/ icudtl.dat <= unicode support en.lproj/, ... <= locale-specific resources and strings Info.plist - libplugin_carbon_interpose.dylib <= plugin support library cefclient Helper.app/ Contents/ Info.plist @@ -72,9 +71,6 @@ Required components: * Unicode support Chromium Embedded Framework.framework/Resources/icudtl.dat -* Plugin support library - libplugin_carbon_interpose.dylib - Optional components: * Localized resources diff --git a/tools/make_distrib.py b/tools/make_distrib.py index ce62b4861..ffe5d235a 100644 --- a/tools/make_distrib.py +++ b/tools/make_distrib.py @@ -655,7 +655,6 @@ elif platform == 'macosx': make_dir(dst_dir, options.quiet) copy_dir(os.path.join(build_dir, 'cefclient.app/Contents/Frameworks/%s.framework' % framework_name), \ os.path.join(dst_dir, '%s.framework' % framework_name), options.quiet) - copy_file(os.path.join(build_dir, 'libplugin_carbon_interpose.dylib'), dst_dir, options.quiet) # transfer Release files build_dir = os.path.join(out_dir, 'Release') @@ -666,7 +665,6 @@ elif platform == 'macosx': if mode != 'client': copy_dir(os.path.join(build_dir, 'cefclient.app/Contents/Frameworks/%s.framework' % framework_name), \ os.path.join(dst_dir, '%s.framework' % framework_name), options.quiet) - copy_file(os.path.join(build_dir, 'libplugin_carbon_interpose.dylib'), dst_dir, options.quiet) else: copy_dir(os.path.join(build_dir, 'cefclient.app'), os.path.join(dst_dir, 'cefclient.app'), options.quiet)