From 0b78461f5bc21909ff99b58aa9b594a1b6d84ca8 Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Thu, 4 Sep 2014 17:53:40 +0000 Subject: [PATCH] Update to Chromium revision ad468e8b (#292352). - Building Chromium using SVN is no longer supported. - Remove CefDOMEvent and CefDOMEventListener (issue #933). - Remove CefRenderHandler::OnScrollOffsetChanged (http://crbug.com/404656). - Remove UR_FLAG_REPORT_LOAD_TIMING (https://codereview.chromium.org/451623002/). git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1816 5089003a-bbd8-11dd-ad1f-f1f9622dbc98 --- CHROMIUM_BUILD_COMPATIBILITY.txt | 4 +- cef.gyp | 60 +- cef_paths.gypi | 8 - cef_paths2.gypi | 5 - include/capi/cef_dom_capi.h | 94 --- include/capi/cef_render_handler_capi.h | 6 - include/capi/cef_request_capi.h | 4 +- include/cef_dom.h | 95 --- include/cef_render_handler.h | 6 - include/cef_request.h | 4 +- include/internal/cef_types.h | 5 - libcef/browser/browser_context_impl.cc | 8 +- libcef/browser/browser_context_impl.h | 3 +- libcef/browser/browser_context_proxy.cc | 7 +- libcef/browser/browser_context_proxy.h | 3 +- libcef/browser/browser_host_impl.cc | 99 +-- libcef/browser/browser_host_impl.h | 8 +- libcef/browser/browser_host_impl_mac.mm | 2 +- libcef/browser/browser_main.cc | 15 +- libcef/browser/browser_main.h | 5 - libcef/browser/browser_main_mac.mm | 13 - libcef/browser/browser_settings.cc | 21 +- libcef/browser/browser_settings.h | 5 +- libcef/browser/browser_urlrequest_impl.cc | 5 +- libcef/browser/chrome_browser_process_stub.cc | 2 +- libcef/browser/chrome_browser_process_stub.h | 2 +- libcef/browser/content_browser_client.cc | 19 +- libcef/browser/content_browser_client.h | 5 +- libcef/browser/devtools_delegate.cc | 106 +-- libcef/browser/devtools_frontend.cc | 70 +- libcef/browser/devtools_frontend.h | 25 +- .../media_capture_devices_dispatcher.cc | 4 +- .../media_capture_devices_dispatcher.h | 4 +- libcef/browser/menu_creator_runner_linux.cc | 7 +- .../printing/print_view_manager_base.cc | 13 +- .../printing/printing_message_filter.cc | 171 ++--- .../printing/printing_message_filter.h | 35 +- libcef/browser/render_widget_host_view_osr.cc | 56 +- libcef/browser/render_widget_host_view_osr.h | 30 +- .../render_widget_host_view_osr_mac.mm | 48 +- .../resource_dispatcher_host_delegate.cc | 11 +- .../resource_dispatcher_host_delegate.h | 7 +- libcef/browser/text_input_client_osr_mac.mm | 4 +- libcef/browser/trace_subscriber.cc | 4 +- libcef/browser/url_request_context_getter.cc | 12 +- libcef/browser/url_request_context_proxy.cc | 2 +- libcef/browser/web_contents_view_osr.cc | 11 +- libcef/browser/web_contents_view_osr.h | 7 +- libcef/common/breakpad_client.h | 2 +- libcef/common/cef_messages.h | 22 - libcef/common/main_delegate.cc | 12 +- libcef/common/request_impl.cc | 6 +- libcef/common/upload_data.h | 3 +- libcef/common/upload_element.cc | 25 + libcef/common/upload_element.h | 110 +++ libcef/common/values_impl.cc | 16 +- libcef/renderer/content_renderer_client.cc | 23 +- libcef/renderer/content_renderer_client.h | 3 + libcef/renderer/dom_event_impl.cc | 154 ---- libcef/renderer/dom_event_impl.h | 43 -- libcef/renderer/dom_node_impl.cc | 64 -- libcef/renderer/dom_node_impl.h | 3 - libcef/renderer/v8_impl.cc | 29 +- libcef/renderer/webkit_glue.cc | 2 +- .../{ => chrome}/grit/browser_resources.h | 0 .../{ => chrome}/grit/generated_resources.h | 0 libcef_dll/cpptoc/domevent_cpptoc.cc | 159 ---- libcef_dll/cpptoc/domevent_cpptoc.h | 36 - libcef_dll/cpptoc/domevent_listener_cpptoc.cc | 49 -- libcef_dll/cpptoc/domevent_listener_cpptoc.h | 37 - libcef_dll/cpptoc/domnode_cpptoc.cc | 26 - libcef_dll/cpptoc/render_handler_cpptoc.cc | 19 - libcef_dll/ctocpp/domevent_ctocpp.cc | 131 ---- libcef_dll/ctocpp/domevent_ctocpp.h | 47 -- libcef_dll/ctocpp/domevent_listener_ctocpp.cc | 40 - libcef_dll/ctocpp/domevent_listener_ctocpp.h | 42 -- libcef_dll/ctocpp/domnode_ctocpp.cc | 24 - libcef_dll/ctocpp/domnode_ctocpp.h | 2 - libcef_dll/ctocpp/render_handler_ctocpp.cc | 17 - libcef_dll/ctocpp/render_handler_ctocpp.h | 1 - libcef_dll/libcef_dll.cc | 4 - libcef_dll/wrapper/cef_browser_info_map.h | 2 +- libcef_dll/wrapper/libcef_dll_wrapper.cc | 4 - patch/patch.cfg | 20 +- patch/patches/browser_web_contents_1257.patch | 36 +- patch/patches/build.patch | 76 +- patch/patches/content_nav_1129.patch | 50 +- patch/patches/gritsettings.patch | 8 +- patch/patches/gyp_331.patch | 10 +- patch/patches/message_loop_443.patch | 10 +- patch/patches/prefs_content_1161.patch | 46 +- patch/patches/prefs_webkit_1161.patch | 24 - patch/patches/printing_win.patch | 709 ++++++++++++++++++ patch/patches/public_browser_1161_1257.patch | 70 +- patch/patches/renderer_host_1161.patch | 116 +-- patch/patches/spi_webcore_364.patch | 22 +- patch/patches/ui_dragdrop_355390.patch | 10 +- patch/patches/underlay_1051.patch | 12 +- patch/patches/views_widget_180.patch | 103 +-- patch/patches/webkit_933.patch | 13 - .../patches/webkit_platform_mac_328814.patch | 4 +- patch/patches/webkit_popups.patch | 58 +- patch/patches/zlib.patch | 8 +- tests/cefclient/cefclient.rc | 1 - tests/cefclient/cefclient_osr_widget_gtk.cpp | 5 - tests/cefclient/client_app_delegates.cpp | 2 - tests/cefclient/client_handler.cpp | 7 - tests/cefclient/dom_test.cpp | 134 ---- tests/cefclient/dom_test.h | 25 - tests/cefclient/print_handler_gtk.cpp | 1 - tests/cefclient/res/domaccess.html | 13 - tests/cefclient/res/other_tests.html | 1 - tests/cefclient/resource.h | 21 +- tests/cefclient/resource_util_win.cpp | 1 - tests/cefsimple/simple_handler_linux.cpp | 2 +- tests/unittests/os_rendering_unittest.cc | 12 - tools/repack_locales.py | 28 +- 117 files changed, 1698 insertions(+), 2257 deletions(-) create mode 100644 libcef/common/upload_element.cc create mode 100644 libcef/common/upload_element.h delete mode 100644 libcef/renderer/dom_event_impl.cc delete mode 100644 libcef/renderer/dom_event_impl.h rename libcef/resources/grit_stub/{ => chrome}/grit/browser_resources.h (100%) rename libcef/resources/grit_stub/{ => chrome}/grit/generated_resources.h (100%) delete mode 100644 libcef_dll/cpptoc/domevent_cpptoc.cc delete mode 100644 libcef_dll/cpptoc/domevent_cpptoc.h delete mode 100644 libcef_dll/cpptoc/domevent_listener_cpptoc.cc delete mode 100644 libcef_dll/cpptoc/domevent_listener_cpptoc.h delete mode 100644 libcef_dll/ctocpp/domevent_ctocpp.cc delete mode 100644 libcef_dll/ctocpp/domevent_ctocpp.h delete mode 100644 libcef_dll/ctocpp/domevent_listener_ctocpp.cc delete mode 100644 libcef_dll/ctocpp/domevent_listener_ctocpp.h delete mode 100644 patch/patches/prefs_webkit_1161.patch create mode 100644 patch/patches/printing_win.patch delete mode 100644 patch/patches/webkit_933.patch delete mode 100644 tests/cefclient/dom_test.cpp delete mode 100644 tests/cefclient/dom_test.h delete mode 100644 tests/cefclient/res/domaccess.html diff --git a/CHROMIUM_BUILD_COMPATIBILITY.txt b/CHROMIUM_BUILD_COMPATIBILITY.txt index 6e03783c6..640bd6973 100644 --- a/CHROMIUM_BUILD_COMPATIBILITY.txt +++ b/CHROMIUM_BUILD_COMPATIBILITY.txt @@ -7,7 +7,5 @@ # https://code.google.com/p/chromiumembedded/wiki/BranchesAndBuilding { - 'chromium_url': 'http://src.chromium.org/svn/trunk/src', - 'chromium_revision': '280796', - 'chromium_checkout': 'e800fe7470fa87dc1ca5b148a7c2c41f603fdcbd', + 'chromium_checkout': 'ad468e8b47617a4f9fb70fecfd9ea320e6f8c1cf', } diff --git a/cef.gyp b/cef.gyp index fe7c21702..262d6dd6d 100644 --- a/cef.gyp +++ b/cef.gyp @@ -634,7 +634,7 @@ 'type': 'none', 'dependencies': [ '<(DEPTH)/ui/strings/ui_strings.gyp:ui_strings', - '<(DEPTH)/webkit/webkit_resources.gyp:webkit_strings', + '<(DEPTH)/content/app/strings/content_strings.gyp:content_strings', 'cef_strings', ], 'actions': [ @@ -717,11 +717,12 @@ 'target_name': 'cef_pak', 'type': 'none', 'dependencies': [ + '<(DEPTH)/components/components_strings.gyp:components_strings', + '<(DEPTH)/content/app/resources/content_resources.gyp:content_resources', + '<(DEPTH)/content/app/strings/content_strings.gyp:content_strings', '<(DEPTH)/content/browser/devtools/devtools_resources.gyp:devtools_resources', - '<(DEPTH)/content/content_resources.gyp:content_resources', '<(DEPTH)/net/net.gyp:net_resources', '<(DEPTH)/ui/resources/ui_resources.gyp:ui_resources', - '<(DEPTH)/webkit/webkit_resources.gyp:webkit_resources', 'cef_locales', 'cef_resources', ], @@ -733,9 +734,9 @@ 'action_name': 'repack_cef_pack', 'variables': { 'pak_inputs': [ + '<(SHARED_INTERMEDIATE_DIR)/blink/public/resources/blink_resources.pak', '<(SHARED_INTERMEDIATE_DIR)/content/content_resources.pak', '<(SHARED_INTERMEDIATE_DIR)/net/net_resources.pak', - '<(SHARED_INTERMEDIATE_DIR)/webkit/blink_resources.pak', '<(grit_out_dir)/cef_resources.pak', ], 'pak_output': '<(PRODUCT_DIR)/cef.pak', @@ -746,8 +747,8 @@ 'action_name': 'repack_cef_100_percent_pack', 'variables': { 'pak_inputs': [ - '<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_resources_100_percent.pak', - '<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_resources_100_percent.pak', + '<(SHARED_INTERMEDIATE_DIR)/content/app/resources/content_resources_100_percent.pak', + '<(SHARED_INTERMEDIATE_DIR)/ui/resources/ui_resources_100_percent.pak', ], 'pak_output': '<(PRODUCT_DIR)/cef_100_percent.pak', }, @@ -757,8 +758,8 @@ 'action_name': 'repack_cef_200_percent_pack', 'variables': { 'pak_inputs': [ - '<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_resources_200_percent.pak', - '<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_resources_200_percent.pak', + '<(SHARED_INTERMEDIATE_DIR)/content/app/resources/content_resources_200_percent.pak', + '<(SHARED_INTERMEDIATE_DIR)/ui/resources/ui_resources_200_percent.pak', ], 'pak_output': '<(PRODUCT_DIR)/cef_200_percent.pak', }, @@ -768,12 +769,11 @@ 'action_name': 'make_pack_resources_header', 'variables': { 'header_inputs': [ + '<(SHARED_INTERMEDIATE_DIR)/blink/public/resources/grit/blink_resources.h', '<(SHARED_INTERMEDIATE_DIR)/content/grit/content_resources.h', '<(SHARED_INTERMEDIATE_DIR)/net/grit/net_resources.h', - '<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/grit/ui_resources.h', + '<(SHARED_INTERMEDIATE_DIR)/ui/resources/grit/ui_resources.h', '<(SHARED_INTERMEDIATE_DIR)/webkit/grit/devtools_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', ], }, @@ -791,8 +791,9 @@ 'action_name': 'make_pack_strings_header', 'variables': { 'header_inputs': [ - '<(SHARED_INTERMEDIATE_DIR)/ui/ui_strings/grit/ui_strings.h', - '<(SHARED_INTERMEDIATE_DIR)/webkit/grit/webkit_strings.h', + '<(SHARED_INTERMEDIATE_DIR)/components/strings/grit/components_strings.h', + '<(SHARED_INTERMEDIATE_DIR)/content/app/strings/grit/content_strings.h', + '<(SHARED_INTERMEDIATE_DIR)/ui/strings/grit/ui_strings.h', '<(grit_out_dir)/grit/cef_strings.h', ], }, @@ -831,8 +832,8 @@ # CEF grit resource includes '<(DEPTH)/cef/libcef/resources/grit_stub', '<(grit_out_dir)', - '<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources', - '<(SHARED_INTERMEDIATE_DIR)/ui/ui_strings', + '<(SHARED_INTERMEDIATE_DIR)/ui/resources', + '<(SHARED_INTERMEDIATE_DIR)/ui/strings', '<(SHARED_INTERMEDIATE_DIR)/webkit', ], 'dependencies': [ @@ -840,9 +841,13 @@ '<(DEPTH)/base/base.gyp:base_prefs', '<(DEPTH)/base/base.gyp:base_static', '<(DEPTH)/base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations', + '<(DEPTH)/cc/blink/cc_blink.gyp:cc_blink', '<(DEPTH)/cc/cc.gyp:cc', - '<(DEPTH)/components/components.gyp:breakpad_component', + '<(DEPTH)/components/components.gyp:crash_component', '<(DEPTH)/components/components.gyp:navigation_interception', + '<(DEPTH)/components/components.gyp:pdf_browser', + '<(DEPTH)/components/components.gyp:pdf_common', + '<(DEPTH)/components/components.gyp:pdf_renderer', '<(DEPTH)/content/content.gyp:content_app_both', '<(DEPTH)/content/content.gyp:content_browser', '<(DEPTH)/content/content.gyp:content_common', @@ -850,9 +855,8 @@ '<(DEPTH)/content/content.gyp:content_plugin', '<(DEPTH)/content/content.gyp:content_ppapi_plugin', '<(DEPTH)/content/content.gyp:content_renderer', + '<(DEPTH)/content/content.gyp:content_resources', '<(DEPTH)/content/content.gyp:content_utility', - '<(DEPTH)/content/content.gyp:content_worker', - '<(DEPTH)/content/content_resources.gyp:content_resources', '<(DEPTH)/gpu/gpu.gyp:gpu', '<(DEPTH)/ipc/ipc.gyp:ipc', '<(DEPTH)/media/media.gyp:media', @@ -868,8 +872,7 @@ '<(DEPTH)/ui/gl/gl.gyp:gl', '<(DEPTH)/ui/base/ui_base.gyp:ui_base', '<(DEPTH)/v8/tools/gyp/v8.gyp:v8', - '<(DEPTH)/webkit/storage_browser.gyp:webkit_storage_browser', - '<(DEPTH)/webkit/storage_common.gyp:webkit_storage_common', + '<(DEPTH)/webkit/storage_browser.gyp:storage', # Necessary to generate the grit include files. 'cef_pak', ], @@ -1039,14 +1042,14 @@ 'libcef/common/values_impl.h', 'libcef/common/upload_data.cc', 'libcef/common/upload_data.h', + 'libcef/common/upload_element.cc', + 'libcef/common/upload_element.h', 'libcef/renderer/browser_impl.cc', 'libcef/renderer/browser_impl.h', 'libcef/renderer/content_renderer_client.cc', 'libcef/renderer/content_renderer_client.h', 'libcef/renderer/dom_document_impl.cc', 'libcef/renderer/dom_document_impl.h', - 'libcef/renderer/dom_event_impl.cc', - 'libcef/renderer/dom_event_impl.h', 'libcef/renderer/dom_node_impl.cc', 'libcef/renderer/dom_node_impl.h', 'libcef/renderer/frame_impl.cc', @@ -1099,15 +1102,15 @@ '<(DEPTH)/chrome/browser/printing/print_job_manager.h', '<(DEPTH)/chrome/browser/printing/print_job_worker.cc', '<(DEPTH)/chrome/browser/printing/print_job_worker.h', - '<(DEPTH)/chrome/browser/printing/print_job_worker_owner.h', + '<(DEPTH)/chrome/browser/printing/print_job_worker_owner.cc', '<(DEPTH)/chrome/browser/printing/print_job_worker_owner.h', '<(DEPTH)/chrome/browser/printing/printer_query.cc', '<(DEPTH)/chrome/browser/printing/printer_query.h', - '<(DEPTH)/chrome/browser/printing/printing_ui_web_contents_observer.cc', - '<(DEPTH)/chrome/browser/printing/printing_ui_web_contents_observer.h', '<(DEPTH)/chrome/common/prerender_messages.h', '<(DEPTH)/chrome/common/print_messages.cc', '<(DEPTH)/chrome/common/print_messages.h', + '<(DEPTH)/chrome/renderer/pepper/chrome_pdf_print_client.cc', + '<(DEPTH)/chrome/renderer/pepper/chrome_pdf_print_client.h', '<(DEPTH)/chrome/renderer/prerender/prerender_helper.cc', '<(DEPTH)/chrome/renderer/prerender/prerender_helper.h', '<(DEPTH)/chrome/renderer/printing/print_web_view_helper.cc', @@ -1116,9 +1119,6 @@ # determine the current locale. '<(DEPTH)/chrome/browser/browser_process.cc', '<(DEPTH)/chrome/browser/browser_process.h', - # Include sources for pepper PDF plugin support. - '<(DEPTH)/chrome/renderer/pepper/ppb_pdf_impl.cc', - '<(DEPTH)/chrome/renderer/pepper/ppb_pdf_impl.h', ], 'conditions': [ ['OS=="win"', { @@ -1584,8 +1584,8 @@ '<@(includes_win)', # TODO(cef): Remove ui_unscaled_resources.rc once custom cursor # resources can be loaded via ResourceBundle. See crbug.com/147663. - '<(SHARED_INTERMEDIATE_DIR)/webkit/blink_resources.rc', - '<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_unscaled_resources.rc', + '<(SHARED_INTERMEDIATE_DIR)/content/content_resources.rc', + '<(SHARED_INTERMEDIATE_DIR)/ui/resources/ui_unscaled_resources.rc', 'libcef_dll/libcef_dll.rc', ], 'link_settings': { diff --git a/cef_paths.gypi b/cef_paths.gypi index 270f80262..0b4e6a3cf 100644 --- a/cef_paths.gypi +++ b/cef_paths.gypi @@ -154,10 +154,6 @@ 'libcef_dll/ctocpp/cookie_visitor_ctocpp.h', 'libcef_dll/cpptoc/domdocument_cpptoc.cc', 'libcef_dll/cpptoc/domdocument_cpptoc.h', - 'libcef_dll/cpptoc/domevent_cpptoc.cc', - 'libcef_dll/cpptoc/domevent_cpptoc.h', - 'libcef_dll/ctocpp/domevent_listener_ctocpp.cc', - 'libcef_dll/ctocpp/domevent_listener_ctocpp.h', 'libcef_dll/cpptoc/domnode_cpptoc.cc', 'libcef_dll/cpptoc/domnode_cpptoc.h', 'libcef_dll/ctocpp/domvisitor_ctocpp.cc', @@ -324,10 +320,6 @@ 'libcef_dll/cpptoc/cookie_visitor_cpptoc.h', 'libcef_dll/ctocpp/domdocument_ctocpp.cc', 'libcef_dll/ctocpp/domdocument_ctocpp.h', - 'libcef_dll/ctocpp/domevent_ctocpp.cc', - 'libcef_dll/ctocpp/domevent_ctocpp.h', - 'libcef_dll/cpptoc/domevent_listener_cpptoc.cc', - 'libcef_dll/cpptoc/domevent_listener_cpptoc.h', 'libcef_dll/ctocpp/domnode_ctocpp.cc', 'libcef_dll/ctocpp/domnode_ctocpp.h', 'libcef_dll/cpptoc/domvisitor_cpptoc.cc', diff --git a/cef_paths2.gypi b/cef_paths2.gypi index 6e64c1a68..49934241d 100644 --- a/cef_paths2.gypi +++ b/cef_paths2.gypi @@ -136,7 +136,6 @@ 'cefclient_bundle_resources_common': [ 'tests/cefclient/res/binding.html', 'tests/cefclient/res/dialogs.html', - 'tests/cefclient/res/domaccess.html', 'tests/cefclient/res/localstorage.html', 'tests/cefclient/res/logo.png', 'tests/cefclient/res/osr_test.html', @@ -165,8 +164,6 @@ 'tests/cefclient/client_switches.h', 'tests/cefclient/dialog_test.cpp', 'tests/cefclient/dialog_test.h', - 'tests/cefclient/dom_test.cpp', - 'tests/cefclient/dom_test.h', 'tests/cefclient/dragdrop_events.h', 'tests/cefclient/osrenderer.h', 'tests/cefclient/osrenderer.cpp', @@ -222,8 +219,6 @@ 'tests/cefclient/client_switches.h', 'tests/cefclient/dialog_test.cpp', 'tests/cefclient/dialog_test.h', - 'tests/cefclient/dom_test.cpp', - 'tests/cefclient/dom_test.h', 'tests/cefclient/performance_test.cpp', 'tests/cefclient/performance_test.h', 'tests/cefclient/performance_test_setup.h', diff --git a/include/capi/cef_dom_capi.h b/include/capi/cef_dom_capi.h index 5a8361033..ee329e207 100644 --- a/include/capi/cef_dom_capi.h +++ b/include/capi/cef_dom_capi.h @@ -45,7 +45,6 @@ extern "C" { #endif struct _cef_domdocument_t; -struct _cef_domevent_listener_t; struct _cef_domnode_t; /// @@ -297,20 +296,6 @@ typedef struct _cef_domnode_t { struct _cef_domnode_t* (CEF_CALLBACK *get_last_child)( struct _cef_domnode_t* self); - /// - // Add an event listener to this node for the specified event type. If - // |useCapture| is true (1) then this listener will be considered a capturing - // listener. Capturing listeners will recieve all events of the specified type - // before the events are dispatched to any other event targets beneath the - // current node in the tree. Events which are bubbling upwards through the - // tree will not trigger a capturing listener. Separate calls to this function - // can be used to register the same listener with and without capture. See - // WebCore/dom/EventNames.h for the list of supported event types. - /// - void (CEF_CALLBACK *add_event_listener)(struct _cef_domnode_t* self, - const cef_string_t* eventType, struct _cef_domevent_listener_t* listener, - int useCapture); - // The following functions are valid only for element nodes. @@ -361,85 +346,6 @@ typedef struct _cef_domnode_t { } cef_domnode_t; -/// -// Structure used to represent a DOM event. The functions of this structure -// should only be called on the render process main thread. -/// -typedef struct _cef_domevent_t { - /// - // Base structure. - /// - cef_base_t base; - - /// - // Returns the event type. - /// - // The resulting string must be freed by calling cef_string_userfree_free(). - cef_string_userfree_t (CEF_CALLBACK *get_type)(struct _cef_domevent_t* self); - - /// - // Returns the event category. - /// - cef_dom_event_category_t (CEF_CALLBACK *get_category)( - struct _cef_domevent_t* self); - - /// - // Returns the event processing phase. - /// - cef_dom_event_phase_t (CEF_CALLBACK *get_phase)(struct _cef_domevent_t* self); - - /// - // Returns true (1) if the event can bubble up the tree. - /// - int (CEF_CALLBACK *can_bubble)(struct _cef_domevent_t* self); - - /// - // Returns true (1) if the event can be canceled. - /// - int (CEF_CALLBACK *can_cancel)(struct _cef_domevent_t* self); - - /// - // Returns the document associated with this event. - /// - struct _cef_domdocument_t* (CEF_CALLBACK *get_document)( - struct _cef_domevent_t* self); - - /// - // Returns the target of the event. - /// - struct _cef_domnode_t* (CEF_CALLBACK *get_target)( - struct _cef_domevent_t* self); - - /// - // Returns the current target of the event. - /// - struct _cef_domnode_t* (CEF_CALLBACK *get_current_target)( - struct _cef_domevent_t* self); -} cef_domevent_t; - - -/// -// Structure to implement for handling DOM events. The functions of this -// structure will be called on the render process main thread. -/// -typedef struct _cef_domevent_listener_t { - /// - // Base structure. - /// - cef_base_t base; - - /// - // Called when an event is received. The event object passed to this function - // contains a snapshot of the DOM at the time this function is executed. DOM - // objects are only valid for the scope of this function. Do not keep - // references to or attempt to access any DOM objects outside the scope of - // this function. - /// - void (CEF_CALLBACK *handle_event)(struct _cef_domevent_listener_t* self, - struct _cef_domevent_t* event); -} cef_domevent_listener_t; - - #ifdef __cplusplus } #endif diff --git a/include/capi/cef_render_handler_capi.h b/include/capi/cef_render_handler_capi.h index 151292c8e..96305c731 100644 --- a/include/capi/cef_render_handler_capi.h +++ b/include/capi/cef_render_handler_capi.h @@ -147,12 +147,6 @@ typedef struct _cef_render_handler_t { /// void (CEF_CALLBACK *update_drag_cursor)(struct _cef_render_handler_t* self, struct _cef_browser_t* browser, cef_drag_operations_mask_t operation); - - /// - // Called when the scroll offset has changed. - /// - void (CEF_CALLBACK *on_scroll_offset_changed)( - struct _cef_render_handler_t* self, struct _cef_browser_t* browser); } cef_render_handler_t; diff --git a/include/capi/cef_request_capi.h b/include/capi/cef_request_capi.h index 3af22a8c7..f0532654c 100644 --- a/include/capi/cef_request_capi.h +++ b/include/capi/cef_request_capi.h @@ -146,8 +146,8 @@ typedef struct _cef_request_t { const cef_string_t* url); /// - // Get the resource type for this request. Accurate resource type information - // may only be available in the browser process. + // Get the resource type for this request. Only available in the browser + // process. /// cef_resource_type_t (CEF_CALLBACK *get_resource_type)( struct _cef_request_t* self); diff --git a/include/cef_dom.h b/include/cef_dom.h index f155e2f31..ab0699911 100644 --- a/include/cef_dom.h +++ b/include/cef_dom.h @@ -42,7 +42,6 @@ #include class CefDOMDocument; -class CefDOMEventListener; class CefDOMNode; /// @@ -291,22 +290,6 @@ class CefDOMNode : public virtual CefBase { /*--cef()--*/ virtual CefRefPtr GetLastChild() =0; - /// - // Add an event listener to this node for the specified event type. If - // |useCapture| is true then this listener will be considered a capturing - // listener. Capturing listeners will recieve all events of the specified - // type before the events are dispatched to any other event targets beneath - // the current node in the tree. Events which are bubbling upwards through - // the tree will not trigger a capturing listener. Separate calls to this - // method can be used to register the same listener with and without capture. - // See WebCore/dom/EventNames.h for the list of supported event types. - /// - /*--cef()--*/ - virtual void AddEventListener(const CefString& eventType, - CefRefPtr listener, - bool useCapture) =0; - - // The following methods are valid only for element nodes. /// @@ -354,82 +337,4 @@ class CefDOMNode : public virtual CefBase { virtual CefString GetElementInnerText() =0; }; - -/// -// Class used to represent a DOM event. The methods of this class should only -// be called on the render process main thread. -/// -/*--cef(source=library)--*/ -class CefDOMEvent : public virtual CefBase { - public: - typedef cef_dom_event_category_t Category; - typedef cef_dom_event_phase_t Phase; - - /// - // Returns the event type. - /// - /*--cef()--*/ - virtual CefString GetType() =0; - - /// - // Returns the event category. - /// - /*--cef(default_retval=DOM_EVENT_CATEGORY_UNKNOWN)--*/ - virtual Category GetCategory() =0; - - /// - // Returns the event processing phase. - /// - /*--cef(default_retval=DOM_EVENT_PHASE_UNKNOWN)--*/ - virtual Phase GetPhase() =0; - - /// - // Returns true if the event can bubble up the tree. - /// - /*--cef()--*/ - virtual bool CanBubble() =0; - - /// - // Returns true if the event can be canceled. - /// - /*--cef()--*/ - virtual bool CanCancel() =0; - - /// - // Returns the document associated with this event. - /// - /*--cef()--*/ - virtual CefRefPtr GetDocument() =0; - - /// - // Returns the target of the event. - /// - /*--cef()--*/ - virtual CefRefPtr GetTarget() =0; - - /// - // Returns the current target of the event. - /// - /*--cef()--*/ - virtual CefRefPtr GetCurrentTarget() =0; -}; - - -/// -// Interface to implement for handling DOM events. The methods of this class -// will be called on the render process main thread. -/// -/*--cef(source=client)--*/ -class CefDOMEventListener : public virtual CefBase { - public: - /// - // Called when an event is received. The event object passed to this method - // contains a snapshot of the DOM at the time this method is executed. DOM - // objects are only valid for the scope of this method. Do not keep references - // to or attempt to access any DOM objects outside the scope of this method. - /// - /*--cef()--*/ - virtual void HandleEvent(CefRefPtr event) =0; -}; - #endif // CEF_INCLUDE_CEF_DOM_H_ diff --git a/include/cef_render_handler.h b/include/cef_render_handler.h index aa4157f8d..d39a2badf 100644 --- a/include/cef_render_handler.h +++ b/include/cef_render_handler.h @@ -159,12 +159,6 @@ class CefRenderHandler : public virtual CefBase { /*--cef()--*/ virtual void UpdateDragCursor(CefRefPtr browser, DragOperation operation) {} - - /// - // Called when the scroll offset has changed. - /// - /*--cef()--*/ - virtual void OnScrollOffsetChanged(CefRefPtr browser) {} }; #endif // CEF_INCLUDE_CEF_RENDER_HANDLER_H_ diff --git a/include/cef_request.h b/include/cef_request.h index da9ec4304..8dd86791a 100644 --- a/include/cef_request.h +++ b/include/cef_request.h @@ -155,8 +155,8 @@ class CefRequest : public virtual CefBase { virtual void SetFirstPartyForCookies(const CefString& url) =0; /// - // Get the resource type for this request. Accurate resource type information - // may only be available in the browser process. + // Get the resource type for this request. Only available in the browser + // process. /// /*--cef(default_retval=RT_SUB_RESOURCE)--*/ virtual ResourceType GetResourceType() =0; diff --git a/include/internal/cef_types.h b/include/internal/cef_types.h index 4f636eeaa..ba3f0952e 100644 --- a/include/internal/cef_types.h +++ b/include/internal/cef_types.h @@ -1043,11 +1043,6 @@ typedef enum { /// UR_FLAG_REPORT_UPLOAD_PROGRESS = 1 << 3, - /// - // If set load timing info will be collected for the request. - /// - UR_FLAG_REPORT_LOAD_TIMING = 1 << 4, - /// // If set the headers sent and received for the request will be recorded. /// diff --git a/libcef/browser/browser_context_impl.cc b/libcef/browser/browser_context_impl.cc index 70a2652a2..23a25ecbd 100644 --- a/libcef/browser/browser_context_impl.cc +++ b/libcef/browser/browser_context_impl.cc @@ -123,7 +123,8 @@ content::BrowserPluginGuestManager* CefBrowserContextImpl::GetGuestManager() { return NULL; } -quota::SpecialStoragePolicy* CefBrowserContextImpl::GetSpecialStoragePolicy() { +storage::SpecialStoragePolicy* + CefBrowserContextImpl::GetSpecialStoragePolicy() { return NULL; } @@ -132,6 +133,11 @@ content::PushMessagingService* return NULL; } +content::SSLHostStateDelegate* + CefBrowserContextImpl::GetSSLHostStateDelegate() { + 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 46029e5c9..81cfe1ea1 100644 --- a/libcef/browser/browser_context_impl.h +++ b/libcef/browser/browser_context_impl.h @@ -41,8 +41,9 @@ class CefBrowserContextImpl : public CefBrowserContext { bool in_memory) OVERRIDE; virtual content::ResourceContext* GetResourceContext() OVERRIDE; virtual content::BrowserPluginGuestManager* GetGuestManager() OVERRIDE; - virtual quota::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE; + virtual storage::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE; virtual content::PushMessagingService* GetPushMessagingService() OVERRIDE; + virtual content::SSLHostStateDelegate* GetSSLHostStateDelegate() OVERRIDE; // CefBrowserContext methods. virtual net::URLRequestContextGetter* CreateRequestContext( diff --git a/libcef/browser/browser_context_proxy.cc b/libcef/browser/browser_context_proxy.cc index 2188c7b6e..04271d878 100644 --- a/libcef/browser/browser_context_proxy.cc +++ b/libcef/browser/browser_context_proxy.cc @@ -120,7 +120,7 @@ content::BrowserPluginGuestManager* CefBrowserContextProxy::GetGuestManager() { return parent_->GetGuestManager(); } -quota::SpecialStoragePolicy* +storage::SpecialStoragePolicy* CefBrowserContextProxy::GetSpecialStoragePolicy() { return parent_->GetSpecialStoragePolicy(); } @@ -130,6 +130,11 @@ content::PushMessagingService* return parent_->GetPushMessagingService(); } +content::SSLHostStateDelegate* + CefBrowserContextProxy::GetSSLHostStateDelegate() { + return parent_->GetSSLHostStateDelegate(); +} + 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 03efe1170..0cff8a78a 100644 --- a/libcef/browser/browser_context_proxy.h +++ b/libcef/browser/browser_context_proxy.h @@ -49,8 +49,9 @@ class CefBrowserContextProxy : public CefBrowserContext { bool in_memory) OVERRIDE; virtual content::ResourceContext* GetResourceContext() OVERRIDE; virtual content::BrowserPluginGuestManager* GetGuestManager() OVERRIDE; - virtual quota::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE; + virtual storage::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE; virtual content::PushMessagingService* GetPushMessagingService() OVERRIDE; + virtual content::SSLHostStateDelegate* GetSSLHostStateDelegate() OVERRIDE; // CefBrowserContext methods. virtual net::URLRequestContextGetter* CreateRequestContext( diff --git a/libcef/browser/browser_host_impl.cc b/libcef/browser/browser_host_impl.cc index 4ef3a25af..e0e6f66e8 100644 --- a/libcef/browser/browser_host_impl.cc +++ b/libcef/browser/browser_host_impl.cc @@ -36,6 +36,7 @@ #include "base/bind_helpers.h" #include "base/command_line.h" #include "base/strings/utf_string_conversions.h" +#include "components/pdf/common/pdf_messages.h" #include "content/browser/gpu/compositor_util.h" #include "content/browser/renderer_host/render_widget_host_impl.h" #include "content/common/view_messages.h" @@ -57,7 +58,7 @@ #include "ui/shell_dialogs/selected_file_info.h" #if defined(OS_LINUX) || defined(OS_ANDROID) -#include "ui/gfx/font_render_params_linux.h" +#include "ui/gfx/font_render_params.h" #endif #if defined(USE_AURA) @@ -428,57 +429,14 @@ CefRefPtr CefBrowserHostImpl::CreateInternal( #if defined(OS_LINUX) || defined(OS_ANDROID) content::RendererPreferences* prefs = web_contents->GetMutableRendererPrefs(); - const gfx::FontRenderParams& params = gfx::GetDefaultWebKitFontRenderParams(); + CR_DEFINE_STATIC_LOCAL(const gfx::FontRenderParams, params, + (gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(true), NULL))); prefs->should_antialias_text = params.antialiasing; prefs->use_subpixel_positioning = params.subpixel_positioning; - switch (params.hinting) { - case gfx::FontRenderParams::HINTING_NONE: - prefs->hinting = content::RENDERER_PREFERENCES_HINTING_NONE; - break; - case gfx::FontRenderParams::HINTING_SLIGHT: - prefs->hinting = content::RENDERER_PREFERENCES_HINTING_SLIGHT; - break; - case gfx::FontRenderParams::HINTING_MEDIUM: - prefs->hinting = content::RENDERER_PREFERENCES_HINTING_MEDIUM; - break; - case gfx::FontRenderParams::HINTING_FULL: - prefs->hinting = content::RENDERER_PREFERENCES_HINTING_FULL; - break; - default: - NOTREACHED() << "Unhandled hinting style " << params.hinting; - prefs->hinting = content::RENDERER_PREFERENCES_HINTING_SYSTEM_DEFAULT; - break; - } + prefs->hinting = params.hinting; prefs->use_autohinter = params.autohinter; prefs->use_bitmaps = params.use_bitmaps; - switch (params.subpixel_rendering) { - case gfx::FontRenderParams::SUBPIXEL_RENDERING_NONE: - prefs->subpixel_rendering = - content::RENDERER_PREFERENCES_SUBPIXEL_RENDERING_NONE; - break; - case gfx::FontRenderParams::SUBPIXEL_RENDERING_RGB: - prefs->subpixel_rendering = - content::RENDERER_PREFERENCES_SUBPIXEL_RENDERING_RGB; - break; - case gfx::FontRenderParams::SUBPIXEL_RENDERING_BGR: - prefs->subpixel_rendering = - content::RENDERER_PREFERENCES_SUBPIXEL_RENDERING_BGR; - break; - case gfx::FontRenderParams::SUBPIXEL_RENDERING_VRGB: - prefs->subpixel_rendering = - content::RENDERER_PREFERENCES_SUBPIXEL_RENDERING_VRGB; - break; - case gfx::FontRenderParams::SUBPIXEL_RENDERING_VBGR: - prefs->subpixel_rendering = - content::RENDERER_PREFERENCES_SUBPIXEL_RENDERING_VBGR; - break; - default: - NOTREACHED() << "Unhandled subpixel rendering style " - << params.subpixel_rendering; - prefs->subpixel_rendering = - content::RENDERER_PREFERENCES_SUBPIXEL_RENDERING_SYSTEM_DEFAULT; - break; - } + prefs->subpixel_rendering = params.subpixel_rendering; web_contents->GetRenderViewHost()->SyncRendererPrefs(); #endif // defined(OS_LINUX) || defined(OS_ANDROID) @@ -1552,8 +1510,8 @@ void CefBrowserHostImpl::LoadString(int64 frame_id, const std::string& string, params.request_id = -1; params.expect_response = false; - params.arguments.Append(base::Value::CreateStringValue(string)); - params.arguments.Append(base::Value::CreateStringValue(url)); + params.arguments.AppendString(string); + params.arguments.AppendString(url); Send(new CefMsg_Request(routing_id(), params)); } @@ -1584,7 +1542,7 @@ void CefBrowserHostImpl::SendCommand( params.expect_response = false; } - params.arguments.Append(base::Value::CreateStringValue(command)); + params.arguments.AppendString(command); Send(new CefMsg_Request(routing_id(), params)); } else { @@ -1624,10 +1582,10 @@ void CefBrowserHostImpl::SendCode( params.expect_response = false; } - params.arguments.Append(base::Value::CreateBooleanValue(is_javascript)); - params.arguments.Append(base::Value::CreateStringValue(code)); - params.arguments.Append(base::Value::CreateStringValue(script_url)); - params.arguments.Append(base::Value::CreateIntegerValue(script_start_line)); + params.arguments.AppendBoolean(is_javascript); + params.arguments.AppendString(code); + params.arguments.AppendString(script_url); + params.arguments.AppendInteger(script_start_line); Send(new CefMsg_Request(routing_id(), params)); } else { @@ -2359,9 +2317,9 @@ void CefBrowserHostImpl::RenderProcessGone(base::TerminationStatus status) { void CefBrowserHostImpl::DidCommitProvisionalLoadForFrame( content::RenderFrameHost* render_frame_host, - bool is_main_frame, const GURL& url, content::PageTransition transition_type) { + const bool is_main_frame = !render_frame_host->GetParent(); CefRefPtr frame = GetOrCreateFrame( render_frame_host->GetRoutingID(), CefFrameHostImpl::kUnspecifiedFrameId, @@ -2375,10 +2333,10 @@ void CefBrowserHostImpl::DidCommitProvisionalLoadForFrame( void CefBrowserHostImpl::DidFailProvisionalLoad( content::RenderFrameHost* render_frame_host, - bool is_main_frame, const GURL& validated_url, int error_code, const base::string16& error_description) { + const bool is_main_frame = !render_frame_host->GetParent(); CefRefPtr frame = GetOrCreateFrame( render_frame_host->GetRoutingID(), CefFrameHostImpl::kUnspecifiedFrameId, @@ -2394,14 +2352,16 @@ void CefBrowserHostImpl::DocumentAvailableInMainFrame() { } void CefBrowserHostImpl::DidFailLoad( - int64 frame_id, + content::RenderFrameHost* render_frame_host, const GURL& validated_url, - bool is_main_frame, 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) { + const bool is_main_frame = !render_frame_host->GetParent(); + CefRefPtr frame = GetOrCreateFrame( + render_frame_host->GetRoutingID(), + CefFrameHostImpl::kUnspecifiedFrameId, + is_main_frame, + base::string16(), validated_url); OnLoadError(frame, validated_url, error_code, error_description); OnLoadEnd(frame, validated_url, error_code); @@ -2432,14 +2392,13 @@ bool CefBrowserHostImpl::OnMessageReceived(const IPC::Message& message) { IPC_MESSAGE_HANDLER(CefHostMsg_Request, OnRequest) IPC_MESSAGE_HANDLER(CefHostMsg_Response, OnResponse) IPC_MESSAGE_HANDLER(CefHostMsg_ResponseAck, OnResponseAck) - IPC_MESSAGE_HANDLER(ChromeViewHostMsg_PDFHasUnsupportedFeature, + IPC_MESSAGE_HANDLER(PDFHostMsg_PDFHasUnsupportedFeature, OnPDFHasUnsupportedFeature) - IPC_MESSAGE_HANDLER(ChromeViewHostMsg_PDFSaveURLAs, OnPDFSaveURLAs) - IPC_MESSAGE_HANDLER(ChromeViewHostMsg_PDFUpdateContentRestrictions, + IPC_MESSAGE_HANDLER(PDFHostMsg_PDFSaveURLAs, OnPDFSaveURLAs) + IPC_MESSAGE_HANDLER(PDFHostMsg_PDFUpdateContentRestrictions, OnPDFUpdateContentRestrictions) - IPC_MESSAGE_HANDLER_DELAY_REPLY( - ChromeViewHostMsg_PDFModalPromptForPassword, - OnPDFModalPromptForPassword) + IPC_MESSAGE_HANDLER_DELAY_REPLY(PDFHostMsg_PDFModalPromptForPassword, + OnPDFModalPromptForPassword) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() return handled; @@ -2561,7 +2520,7 @@ void CefBrowserHostImpl::OnPDFModalPromptForPasswordClosed( IPC::Message* reply_message, bool success, const base::string16& actual_value) { - ChromeViewHostMsg_PDFModalPromptForPassword::WriteReplyParams( + PDFHostMsg_PDFModalPromptForPassword::WriteReplyParams( reply_message, base::UTF16ToUTF8(actual_value)); Send(reply_message); } diff --git a/libcef/browser/browser_host_impl.h b/libcef/browser/browser_host_impl.h index 60474fc3d..a92be33ee 100644 --- a/libcef/browser/browser_host_impl.h +++ b/libcef/browser/browser_host_impl.h @@ -409,22 +409,18 @@ class CefBrowserHostImpl : public CefBrowserHost, virtual void RenderProcessGone(base::TerminationStatus status) OVERRIDE; virtual void DidCommitProvisionalLoadForFrame( content::RenderFrameHost* render_frame_host, - bool is_main_frame, const GURL& url, content::PageTransition transition_type) OVERRIDE; virtual void DidFailProvisionalLoad( content::RenderFrameHost* render_frame_host, - bool is_main_frame, const GURL& validated_url, int error_code, const base::string16& error_description) OVERRIDE; virtual void DocumentAvailableInMainFrame() OVERRIDE; - virtual void DidFailLoad(int64 frame_id, + virtual void DidFailLoad(content::RenderFrameHost* render_frame_host, const GURL& validated_url, - bool is_main_frame, int error_code, - const base::string16& error_description, - content::RenderViewHost* render_view_host) OVERRIDE; + const base::string16& error_description) OVERRIDE; virtual void PluginCrashed(const base::FilePath& plugin_path, base::ProcessId plugin_pid) OVERRIDE; virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; diff --git a/libcef/browser/browser_host_impl_mac.mm b/libcef/browser/browser_host_impl_mac.mm index 8426a1125..d0043723c 100644 --- a/libcef/browser/browser_host_impl_mac.mm +++ b/libcef/browser/browser_host_impl_mac.mm @@ -386,7 +386,7 @@ bool CefBrowserHostImpl::PlatformCreateWindow() { // Make the content view for the window have a layer. This will make all // sub-views have layers. This is necessary to ensure correct layer // ordering of all child views and their layers. - [[[parentView window] contentView] cr_setWantsLayer:YES]; + [[[parentView window] contentView] setWantsLayer:YES]; // Add a reference that will be released in the dealloc handler. AddRef(); diff --git a/libcef/browser/browser_main.cc b/libcef/browser/browser_main.cc index 36561a6ca..df5a7efef 100644 --- a/libcef/browser/browser_main.cc +++ b/libcef/browser/browser_main.cc @@ -24,7 +24,6 @@ #include "net/base/net_module.h" #include "net/proxy/proxy_resolver_v8.h" #include "ui/base/resource/resource_bundle.h" -#include "v8/include/v8.h" #if defined(USE_AURA) #include "ui/aura/env.h" @@ -47,8 +46,7 @@ CefBrowserMainParts::CefBrowserMainParts( const content::MainFunctionParams& parameters) - : BrowserMainParts(), - proxy_v8_isolate_(NULL) { + : BrowserMainParts() { } CefBrowserMainParts::~CefBrowserMainParts() { @@ -114,12 +112,6 @@ int CefBrowserMainParts::PreCreateThreads() { pref_store_->SetInitializationCompleted(); pref_service_ = pref_store_->CreateService().Pass(); - // Create a v8::Isolate for the current thread if it doesn't already exist. - if (!v8::Isolate::GetCurrent()) { - proxy_v8_isolate_ = v8::Isolate::New(); - proxy_v8_isolate_->Enter(); - } - // Initialize the V8 proxy integration. net::ProxyResolverV8::EnsureIsolateCreated(); @@ -175,11 +167,6 @@ void CefBrowserMainParts::PostMainMessageLoopRun() { void CefBrowserMainParts::PostDestroyThreads() { pref_proxy_config_tracker_.reset(NULL); - if (proxy_v8_isolate_) { - proxy_v8_isolate_->Exit(); - proxy_v8_isolate_->Dispose(); - } - #if defined(USE_AURA) aura::Env::DeleteInstance(); delete views::ViewsDelegate::views_delegate; diff --git a/libcef/browser/browser_main.h b/libcef/browser/browser_main.h index 58f826f62..4134cc9e2 100644 --- a/libcef/browser/browser_main.h +++ b/libcef/browser/browser_main.h @@ -27,10 +27,6 @@ namespace content { struct MainFunctionParams; } -namespace v8 { -class Isolate; -} - class CefBrowserContext; class CefDevToolsDelegate; @@ -78,7 +74,6 @@ class CefBrowserMainParts : public content::BrowserMainParts { scoped_ptr proxy_config_service_; scoped_refptr pref_store_; scoped_ptr pref_service_; - v8::Isolate* proxy_v8_isolate_; DISALLOW_COPY_AND_ASSIGN(CefBrowserMainParts); }; diff --git a/libcef/browser/browser_main_mac.mm b/libcef/browser/browser_main_mac.mm index f9ea5b3f0..d9b14a323 100644 --- a/libcef/browser/browser_main_mac.mm +++ b/libcef/browser/browser_main_mac.mm @@ -3,21 +3,8 @@ // found in the LICENSE file. #include "libcef/browser/browser_main.h" -#include "libcef/browser/context.h" - -#include "content/browser/renderer_host/compositing_iosurface_shader_programs_mac.h" void CefBrowserMainParts::PlatformInitialize() { - const CefSettings& settings = CefContext::Get()->settings(); - if (CefColorGetA(settings.background_color) > 0) { - const float r = - static_cast(CefColorGetR(settings.background_color)) / 255.0f; - const float g = - static_cast(CefColorGetG(settings.background_color)) / 255.0f; - const float b = - static_cast(CefColorGetB(settings.background_color)) / 255.0f; - content::CompositingIOSurfaceShaderPrograms::SetBackgroundColor(r, g, b); - } } void CefBrowserMainParts::PlatformCleanup() { diff --git a/libcef/browser/browser_settings.cc b/libcef/browser/browser_settings.cc index 520613cb0..681916360 100644 --- a/libcef/browser/browser_settings.cc +++ b/libcef/browser/browser_settings.cc @@ -6,15 +6,15 @@ #include +#include "include/internal/cef_types_wrappers.h" #include "libcef/common/cef_switches.h" #include "base/command_line.h" -#include "include/internal/cef_types_wrappers.h" -#include "webkit/common/webpreferences.h" +#include "content/public/common/web_preferences.h" // Set default preferences based on CEF command-line flags. Chromium command- // line flags should not exist for these preferences. -void SetDefaults(WebPreferences& web) { +void SetDefaults(content::WebPreferences& web) { const CommandLine& command_line = *CommandLine::ForCurrentProcess(); if (command_line.HasSwitch(switches::kDefaultEncoding)) { @@ -55,31 +55,32 @@ void SetDefaults(WebPreferences& web) { // Use the preferences from WebContentsImpl::GetWebkitPrefs and the // WebPreferences constructor by default. Only override features that are // explicitly enabled or disabled. -void BrowserToWebSettings(const CefBrowserSettings& cef, WebPreferences& web) { +void BrowserToWebSettings(const CefBrowserSettings& cef, + content::WebPreferences& web) { SetDefaults(web); if (cef.standard_font_family.length > 0) { - web.standard_font_family_map[webkit_glue::kCommonScript] = + web.standard_font_family_map[content::kCommonScript] = CefString(&cef.standard_font_family); } if (cef.fixed_font_family.length > 0) { - web.fixed_font_family_map[webkit_glue::kCommonScript] = + web.fixed_font_family_map[content::kCommonScript] = CefString(&cef.fixed_font_family); } if (cef.serif_font_family.length > 0) { - web.serif_font_family_map[webkit_glue::kCommonScript] = + web.serif_font_family_map[content::kCommonScript] = CefString(&cef.serif_font_family); } if (cef.sans_serif_font_family.length > 0) { - web.sans_serif_font_family_map[webkit_glue::kCommonScript] = + web.sans_serif_font_family_map[content::kCommonScript] = CefString(&cef.sans_serif_font_family); } if (cef.cursive_font_family.length > 0) { - web.cursive_font_family_map[webkit_glue::kCommonScript] = + web.cursive_font_family_map[content::kCommonScript] = CefString(&cef.cursive_font_family); } if (cef.fantasy_font_family.length > 0) { - web.fantasy_font_family_map[webkit_glue::kCommonScript] = + web.fantasy_font_family_map[content::kCommonScript] = CefString(&cef.fantasy_font_family); } diff --git a/libcef/browser/browser_settings.h b/libcef/browser/browser_settings.h index 7b2ab3b14..13972bb8c 100644 --- a/libcef/browser/browser_settings.h +++ b/libcef/browser/browser_settings.h @@ -8,8 +8,11 @@ #include "include/internal/cef_types_wrappers.h" +namespace content { struct WebPreferences; +} -void BrowserToWebSettings(const CefBrowserSettings& cef, WebPreferences& web); +void BrowserToWebSettings(const CefBrowserSettings& cef, + content::WebPreferences& web); #endif // CEF_LIBCEF_BROWSER_BROWSER_SETTINGS_H_ diff --git a/libcef/browser/browser_urlrequest_impl.cc b/libcef/browser/browser_urlrequest_impl.cc index b576f12ae..3061236bc 100644 --- a/libcef/browser/browser_urlrequest_impl.cc +++ b/libcef/browser/browser_urlrequest_impl.cc @@ -162,7 +162,7 @@ class CefBrowserURLRequest::Context return false; std::string method = request_->GetMethod(); - StringToLowerASCII(&method); + base::StringToLowerASCII(&method); net::URLFetcher::RequestType request_type = net::URLFetcher::GET; if (LowerCaseEqualsASCII(method, "get")) { } else if (LowerCaseEqualsASCII(method, "post")) { @@ -277,9 +277,6 @@ class CefBrowserURLRequest::Context upload_data_size_ = upload_data_size; } - if (cef_flags & UR_FLAG_REPORT_LOAD_TIMING) - load_flags |= net::LOAD_ENABLE_LOAD_TIMING; - if (cef_flags & UR_FLAG_REPORT_RAW_HEADERS) load_flags |= net::LOAD_REPORT_RAW_HEADERS; diff --git a/libcef/browser/chrome_browser_process_stub.cc b/libcef/browser/chrome_browser_process_stub.cc index 03c506dfc..f78de23bd 100644 --- a/libcef/browser/chrome_browser_process_stub.cc +++ b/libcef/browser/chrome_browser_process_stub.cc @@ -30,7 +30,7 @@ MetricsServicesManager* ChromeBrowserProcessStub::GetMetricsServicesManager() { return NULL; } -MetricsService* ChromeBrowserProcessStub::metrics_service() { +metrics::MetricsService* ChromeBrowserProcessStub::metrics_service() { NOTIMPLEMENTED(); return NULL; } diff --git a/libcef/browser/chrome_browser_process_stub.h b/libcef/browser/chrome_browser_process_stub.h index 4491c89b0..e5c3703bc 100644 --- a/libcef/browser/chrome_browser_process_stub.h +++ b/libcef/browser/chrome_browser_process_stub.h @@ -32,7 +32,7 @@ class ChromeBrowserProcessStub : public BrowserProcess { virtual void ResourceDispatcherHostCreated() OVERRIDE; virtual void EndSession() OVERRIDE; virtual MetricsServicesManager* GetMetricsServicesManager() OVERRIDE; - virtual MetricsService* metrics_service() OVERRIDE; + virtual metrics::MetricsService* metrics_service() OVERRIDE; virtual rappor::RapporService* rappor_service() OVERRIDE; virtual IOThread* io_thread() OVERRIDE; virtual WatchDogThread* watchdog_thread() OVERRIDE; diff --git a/libcef/browser/content_browser_client.cc b/libcef/browser/content_browser_client.cc index d200cfdf0..f5a5801b9 100644 --- a/libcef/browser/content_browser_client.cc +++ b/libcef/browser/content_browser_client.cc @@ -41,15 +41,15 @@ #include "content/public/browser/resource_dispatcher_host.h" #include "content/public/common/content_switches.h" #include "content/public/common/storage_quota_params.h" +#include "content/public/common/web_preferences.h" #include "third_party/WebKit/public/web/WebWindowFeatures.h" #include "ui/base/ui_base_switches.h" #include "url/gurl.h" -#include "webkit/common/webpreferences.h" #if defined(OS_POSIX) && !defined(OS_MACOSX) #include "base/debug/leak_annotations.h" -#include "components/breakpad/app/breakpad_linux.h" -#include "components/breakpad/browser/crash_handler_host_linux.h" +#include "components/crash/app/breakpad_linux.h" +#include "components/crash/browser/crash_handler_host_linux.h" #include "content/public/common/content_descriptors.h" #endif @@ -236,7 +236,7 @@ class CefQuotaPermissionContext : public content::QuotaPermissionContext { const content::StorageQuotaParams& params, int render_process_id, const PermissionCallback& callback) OVERRIDE { - if (params.storage_type != quota::kStorageTypePersistent) { + if (params.storage_type != storage::kStorageTypePersistent) { // To match Chrome behavior we only support requesting quota with this // interface for Persistent storage type. callback.Run(QUOTA_PERMISSION_RESPONSE_DISALLOW); @@ -606,7 +606,7 @@ content::BrowserMainParts* CefContentBrowserClient::CreateBrowserMainParts( void CefContentBrowserClient::RenderProcessWillLaunch( content::RenderProcessHost* host) { host->GetChannel()->AddFilter(new CefBrowserMessageFilter(host)); - host->AddFilter(new PrintingMessageFilter(host->GetID())); + host->AddFilter(new printing::PrintingMessageFilter(host->GetID())); AddBrowserContextReference( static_cast(host->GetBrowserContext())); @@ -643,7 +643,7 @@ bool CefContentBrowserClient::IsHandledURL(const GURL& url) { if (!url.is_valid()) return false; const std::string& scheme = url.scheme(); - DCHECK_EQ(scheme, StringToLowerASCII(scheme)); + DCHECK_EQ(scheme, base::StringToLowerASCII(scheme)); if (scheme::IsInternalHandledScheme(scheme)) return true; @@ -738,14 +738,15 @@ void CefContentBrowserClient::AllowCertificateError( int cert_error, const net::SSLInfo& ssl_info, const GURL& request_url, - ResourceType::Type resource_type, + content::ResourceType resource_type, bool overridable, bool strict_enforcement, + bool expired_previous_decision, const base::Callback& callback, content::CertificateRequestResultType* result) { CEF_REQUIRE_UIT(); - if (resource_type != ResourceType::MAIN_FRAME) { + if (resource_type != content::ResourceType::RESOURCE_TYPE_MAIN_FRAME) { // A sub-resource has a certificate error. The user doesn't really // have a context for making the right decision, so block the request // hard. @@ -930,7 +931,7 @@ void CefContentBrowserClient::ResourceDispatcherHostCreated() { void CefContentBrowserClient::OverrideWebkitPrefs( content::RenderViewHost* rvh, const GURL& url, - WebPreferences* prefs) { + content::WebPreferences* prefs) { CefRefPtr browser = CefBrowserHostImpl::GetBrowserForHost(rvh); DCHECK(browser.get()); diff --git a/libcef/browser/content_browser_client.h b/libcef/browser/content_browser_client.h index cb92d94ec..20f829a5b 100644 --- a/libcef/browser/content_browser_client.h +++ b/libcef/browser/content_browser_client.h @@ -109,9 +109,10 @@ class CefContentBrowserClient : public content::ContentBrowserClient { int cert_error, const net::SSLInfo& ssl_info, const GURL& request_url, - ResourceType::Type resource_type, + content::ResourceType resource_type, bool overridable, bool strict_enforcement, + bool expired_previous_decision, const base::Callback& callback, content::CertificateRequestResultType* result) OVERRIDE; virtual content::AccessTokenStore* CreateAccessTokenStore() OVERRIDE; @@ -139,7 +140,7 @@ class CefContentBrowserClient : public content::ContentBrowserClient { virtual void ResourceDispatcherHostCreated() OVERRIDE; virtual void OverrideWebkitPrefs(content::RenderViewHost* rvh, const GURL& url, - WebPreferences* prefs) OVERRIDE; + content::WebPreferences* prefs) OVERRIDE; virtual SkColor GetBaseBackgroundColor(content::RenderViewHost* rvh) OVERRIDE; virtual void BrowserURLHandlerCreated( content::BrowserURLHandler* handler) OVERRIDE; diff --git a/libcef/browser/devtools_delegate.cc b/libcef/browser/devtools_delegate.cc index db0fb8076..0eebe29f2 100644 --- a/libcef/browser/devtools_delegate.cc +++ b/libcef/browser/devtools_delegate.cc @@ -28,24 +28,61 @@ #include "content/public/common/content_switches.h" #include "content/public/common/url_constants.h" #include "grit/cef_resources.h" -#include "net/socket/tcp_listen_socket.h" +#include "net/socket/tcp_server_socket.h" #include "ui/base/layout.h" #include "ui/base/resource/resource_bundle.h" namespace { const char kTargetTypePage[] = "page"; +const char kTargetTypeServiceWorker[] = "service_worker"; +const char kTargetTypeOther[] = "other"; + +class TCPServerSocketFactory + : public content::DevToolsHttpHandler::ServerSocketFactory { + public: + TCPServerSocketFactory(const std::string& address, int port, int backlog) + : content::DevToolsHttpHandler::ServerSocketFactory( + address, port, backlog) {} + + private: + // content::DevToolsHttpHandler::ServerSocketFactory. + virtual scoped_ptr Create() const OVERRIDE { + return scoped_ptr( + new net::TCPServerSocket(NULL, net::NetLog::Source())); + } + + DISALLOW_COPY_AND_ASSIGN(TCPServerSocketFactory); +}; + +scoped_ptr + CreateSocketFactory(int port) { + return scoped_ptr( + new TCPServerSocketFactory("127.0.0.1", port, 1)); +} class Target : public content::DevToolsTarget { public: - explicit Target(content::WebContents* web_contents); + explicit Target(scoped_refptr agent_host); - virtual std::string GetId() const OVERRIDE { return id_; } + virtual std::string GetId() const OVERRIDE { return agent_host_->GetId(); } virtual std::string GetParentId() const OVERRIDE { return std::string(); } - virtual std::string GetType() const OVERRIDE { return kTargetTypePage; } - virtual std::string GetTitle() const OVERRIDE { return title_; } + virtual std::string GetType() const OVERRIDE { + switch (agent_host_->GetType()) { + case content::DevToolsAgentHost::TYPE_WEB_CONTENTS: + return kTargetTypePage; + case content::DevToolsAgentHost::TYPE_SERVICE_WORKER: + return kTargetTypeServiceWorker; + default: + break; + } + return kTargetTypeOther; + } + virtual std::string GetTitle() const OVERRIDE { + return agent_host_->GetTitle(); + } virtual std::string GetDescription() const OVERRIDE { return std::string(); } - virtual GURL GetURL() const OVERRIDE { return url_; } + virtual GURL GetURL() const OVERRIDE { return agent_host_->GetURL(); } virtual GURL GetFaviconURL() const OVERRIDE { return favicon_url_; } virtual base::TimeTicks GetLastActivityTime() const OVERRIDE { return last_activity_time_; @@ -62,45 +99,27 @@ class Target : public content::DevToolsTarget { private: scoped_refptr agent_host_; - std::string id_; - std::string title_; - GURL url_; GURL favicon_url_; base::TimeTicks last_activity_time_; }; -Target::Target(content::WebContents* web_contents) { - agent_host_ = - content::DevToolsAgentHost::GetOrCreateFor( - web_contents->GetRenderViewHost()); - id_ = agent_host_->GetId(); - title_ = base::UTF16ToUTF8(web_contents->GetTitle()); - url_ = web_contents->GetURL(); - content::NavigationController& controller = web_contents->GetController(); - content::NavigationEntry* entry = controller.GetActiveEntry(); - if (entry != NULL && entry->GetURL().is_valid()) - favicon_url_ = entry->GetFavicon().url; - last_activity_time_ = web_contents->GetLastActiveTime(); +Target::Target(scoped_refptr agent_host) + : agent_host_(agent_host) { + if (content::WebContents* web_contents = agent_host_->GetWebContents()) { + content::NavigationController& controller = web_contents->GetController(); + content::NavigationEntry* entry = controller.GetActiveEntry(); + if (entry != NULL && entry->GetURL().is_valid()) + favicon_url_ = entry->GetFavicon().url; + last_activity_time_ = web_contents->GetLastActiveTime(); + } } bool Target::Activate() const { - content::RenderViewHost* rvh = agent_host_->GetRenderViewHost(); - if (!rvh) - return false; - content::WebContents* web_contents = - content::WebContents::FromRenderViewHost(rvh); - if (!web_contents) - return false; - web_contents->GetDelegate()->ActivateContents(web_contents); - return true; + return agent_host_->Activate(); } bool Target::Close() const { - content::RenderViewHost* rvh = agent_host_->GetRenderViewHost(); - if (!rvh) - return false; - rvh->ClosePage(); - return true; + return agent_host_->Close(); } } // namespace @@ -109,8 +128,8 @@ bool Target::Close() const { CefDevToolsDelegate::CefDevToolsDelegate(int port) { devtools_http_handler_ = content::DevToolsHttpHandler::Start( - new net::TCPListenSocketFactory("127.0.0.1", port), - "", + CreateSocketFactory(port), + std::string(), this, base::FilePath()); } @@ -147,14 +166,11 @@ scoped_ptr CefDevToolsDelegate::CreateNewTarget( void CefDevToolsDelegate::EnumerateTargets(TargetCallback callback) { TargetList targets; - std::vector rvh_list = - content::DevToolsAgentHost::GetValidRenderViewHosts(); - for (std::vector::iterator it = rvh_list.begin(); - it != rvh_list.end(); ++it) { - content::WebContents* web_contents = - content::WebContents::FromRenderViewHost(*it); - if (web_contents) - targets.push_back(new Target(web_contents)); + content::DevToolsAgentHost::List agents = + content::DevToolsAgentHost::GetOrCreateAll(); + for (content::DevToolsAgentHost::List::iterator it = agents.begin(); + it != agents.end(); ++it) { + targets.push_back(new Target(*it)); } callback.Run(targets); } diff --git a/libcef/browser/devtools_frontend.cc b/libcef/browser/devtools_frontend.cc index 231ef1d1d..7f37cccd7 100644 --- a/libcef/browser/devtools_frontend.cc +++ b/libcef/browser/devtools_frontend.cc @@ -9,10 +9,11 @@ #include "libcef/browser/request_context_impl.h" #include "base/command_line.h" +#include "base/json/json_reader.h" #include "base/path_service.h" +#include "base/strings/string_number_conversions.h" #include "base/strings/utf_string_conversions.h" #include "content/public/browser/devtools_http_handler.h" -#include "content/public/browser/devtools_manager.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" @@ -44,7 +45,7 @@ CefDevToolsFrontend* CefDevToolsFrontend::Show( CefDevToolsFrontend* devtools_frontend = new CefDevToolsFrontend( static_cast(frontend_browser.get()), content::DevToolsAgentHost::GetOrCreateFor( - inspected_browser->GetWebContents()->GetRenderViewHost()).get()); + inspected_browser->GetWebContents()).get()); // Need to load the URL after creating the DevTools objects. CefDevToolsDelegate* delegate = @@ -75,9 +76,6 @@ CefDevToolsFrontend::CefDevToolsFrontend( : WebContentsObserver(frontend_browser->GetWebContents()), frontend_browser_(frontend_browser), agent_host_(agent_host) { - frontend_host_.reset( - content::DevToolsClientHost::CreateDevToolsFrontendHost( - web_contents(), this)); } CefDevToolsFrontend::~CefDevToolsFrontend() { @@ -85,10 +83,11 @@ CefDevToolsFrontend::~CefDevToolsFrontend() { void CefDevToolsFrontend::RenderViewCreated( content::RenderViewHost* render_view_host) { - content::DevToolsClientHost::SetupDevToolsFrontendClient( - web_contents()->GetRenderViewHost()); - content::DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor( - agent_host_.get(), frontend_host_.get()); + if (!frontend_host_) { + frontend_host_.reset( + content::DevToolsFrontendHost::Create(render_view_host, this)); + agent_host_->AttachClient(this); + } } void CefDevToolsFrontend::DocumentOnLoadCompletedInMainFrame() { @@ -97,11 +96,58 @@ void CefDevToolsFrontend::DocumentOnLoadCompletedInMainFrame() { } void CefDevToolsFrontend::WebContentsDestroyed() { - content::DevToolsManager::GetInstance()->ClientHostClosing( - frontend_host_.get()); + agent_host_->DetachClient(); delete this; } -void CefDevToolsFrontend::InspectedContentsClosing() { +void CefDevToolsFrontend::HandleMessageFromDevToolsFrontend( + const std::string& message) { + std::string method; + std::string browser_message; + int id = 0; + + base::ListValue* params = NULL; + base::DictionaryValue* dict = NULL; + scoped_ptr parsed_message(base::JSONReader::Read(message)); + if (!parsed_message || + !parsed_message->GetAsDictionary(&dict) || + !dict->GetString("method", &method) || + !dict->GetList("params", ¶ms)) { + return; + } + + if (method != "sendMessageToBrowser" || + params->GetSize() != 1 || + !params->GetString(0, &browser_message)) { + return; + } + dict->GetInteger("id", &id); + + agent_host_->DispatchProtocolMessage(browser_message); + + if (id) { + std::string code = "InspectorFrontendAPI.embedderMessageAck(" + + base::IntToString(id) + ",\"\");"; + base::string16 javascript = base::UTF8ToUTF16(code); + web_contents()->GetMainFrame()->ExecuteJavaScript(javascript); + } +} + +void CefDevToolsFrontend::HandleMessageFromDevToolsFrontendToBackend( + const std::string& message) { + agent_host_->DispatchProtocolMessage(message); +} + +void CefDevToolsFrontend::DispatchProtocolMessage( + content::DevToolsAgentHost* agent_host, + const std::string& message) { + std::string code = "InspectorFrontendAPI.dispatchMessage(" + message + ");"; + base::string16 javascript = base::UTF8ToUTF16(code); + web_contents()->GetMainFrame()->ExecuteJavaScript(javascript); +} + +void CefDevToolsFrontend::AgentHostClosed( + content::DevToolsAgentHost* agent_host, + bool replaced) { Close(); } diff --git a/libcef/browser/devtools_frontend.h b/libcef/browser/devtools_frontend.h index 4e0acf780..7bd3bf149 100644 --- a/libcef/browser/devtools_frontend.h +++ b/libcef/browser/devtools_frontend.h @@ -12,8 +12,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "content/public/browser/devtools_agent_host.h" -#include "content/public/browser/devtools_client_host.h" -#include "content/public/browser/devtools_frontend_host_delegate.h" +#include "content/public/browser/devtools_frontend_host.h" #include "content/public/browser/web_contents_observer.h" namespace content { @@ -22,7 +21,8 @@ class WebContents; } class CefDevToolsFrontend : public content::WebContentsObserver, - public content::DevToolsFrontendHostDelegate { + public content::DevToolsFrontendHost::Delegate, + public content::DevToolsAgentHostClient { public: static CefDevToolsFrontend* Show( CefRefPtr inspected_browser, @@ -43,20 +43,29 @@ class CefDevToolsFrontend : public content::WebContentsObserver, content::DevToolsAgentHost* agent_host); virtual ~CefDevToolsFrontend(); - // WebContentsObserver overrides + // WebContentsObserver overrides. virtual void RenderViewCreated( content::RenderViewHost* render_view_host) OVERRIDE; virtual void DocumentOnLoadCompletedInMainFrame() OVERRIDE; virtual void WebContentsDestroyed() OVERRIDE; - // DevToolsFrontendHostDelegate implementation - virtual void DispatchOnEmbedder(const std::string& message) OVERRIDE {} + // content::DevToolsFrontendHost::Delegate implementation. + virtual void HandleMessageFromDevToolsFrontend( + const std::string& message) OVERRIDE; + virtual void HandleMessageFromDevToolsFrontendToBackend( + const std::string& message) OVERRIDE; - virtual void InspectedContentsClosing() OVERRIDE; + // content::DevToolsAgentHostClient implementation. + virtual void DispatchProtocolMessage( + content::DevToolsAgentHost* agent_host, + const std::string& message) OVERRIDE; + virtual void AgentHostClosed( + content::DevToolsAgentHost* agent_host, + bool replaced) OVERRIDE; CefRefPtr frontend_browser_; scoped_refptr agent_host_; - scoped_ptr frontend_host_; + scoped_ptr frontend_host_; DISALLOW_COPY_AND_ASSIGN(CefDevToolsFrontend); }; diff --git a/libcef/browser/media_capture_devices_dispatcher.cc b/libcef/browser/media_capture_devices_dispatcher.cc index 0bd4082dc..7e79263b6 100644 --- a/libcef/browser/media_capture_devices_dispatcher.cc +++ b/libcef/browser/media_capture_devices_dispatcher.cc @@ -103,10 +103,10 @@ void CefMediaCaptureDevicesDispatcher::OnVideoCaptureDevicesChanged() { void CefMediaCaptureDevicesDispatcher::OnMediaRequestStateChanged( int render_process_id, - int render_view_id, + int render_frame_id, int page_request_id, const GURL& security_origin, - const content::MediaStreamDevice& device, + content::MediaStreamType stream_type, content::MediaRequestState state) { } diff --git a/libcef/browser/media_capture_devices_dispatcher.h b/libcef/browser/media_capture_devices_dispatcher.h index bde4f05ef..84695a909 100644 --- a/libcef/browser/media_capture_devices_dispatcher.h +++ b/libcef/browser/media_capture_devices_dispatcher.h @@ -46,10 +46,10 @@ class CefMediaCaptureDevicesDispatcher : public content::MediaObserver { virtual void OnVideoCaptureDevicesChanged() OVERRIDE; virtual void OnMediaRequestStateChanged( int render_process_id, - int render_view_id, + int render_frame_id, int page_request_id, const GURL& security_origin, - const content::MediaStreamDevice& device, + content::MediaStreamType stream_type, content::MediaRequestState state) OVERRIDE; virtual void OnCreatingAudioStream(int render_process_id, int render_view_id) OVERRIDE; diff --git a/libcef/browser/menu_creator_runner_linux.cc b/libcef/browser/menu_creator_runner_linux.cc index 6505d8789..00d4e4ad9 100644 --- a/libcef/browser/menu_creator_runner_linux.cc +++ b/libcef/browser/menu_creator_runner_linux.cc @@ -22,7 +22,8 @@ CefMenuCreatorRunnerLinux::~CefMenuCreatorRunnerLinux() { } bool CefMenuCreatorRunnerLinux::RunContextMenu(CefMenuCreator* manager) { - menu_.reset(new views::MenuRunner(manager->model())); + menu_.reset( + new views::MenuRunner(manager->model(), views::MenuRunner::CONTEXT_MENU)); gfx::Point screen_point; @@ -57,8 +58,7 @@ bool CefMenuCreatorRunnerLinux::RunContextMenu(CefMenuCreator* manager) { menu_->RunMenuAt(manager->browser()->window_widget(), NULL, gfx::Rect(screen_point, gfx::Size()), views::MENU_ANCHOR_TOPRIGHT, - ui::MENU_SOURCE_NONE, - views::MenuRunner::CONTEXT_MENU); + ui::MENU_SOURCE_NONE); UNUSED(result); return true; @@ -74,4 +74,3 @@ bool CefMenuCreatorRunnerLinux::FormatLabel(base::string16& label) { const char16 replace[] = {L'&', 0}; return base::ReplaceChars(label, replace, base::string16(), &label); } - diff --git a/libcef/browser/printing/print_view_manager_base.cc b/libcef/browser/printing/print_view_manager_base.cc index 7cfc42fca..0733b52ed 100644 --- a/libcef/browser/printing/print_view_manager_base.cc +++ b/libcef/browser/printing/print_view_manager_base.cc @@ -18,13 +18,13 @@ #include "chrome/browser/printing/printer_query.h" #include "chrome/common/pref_names.h" #include "chrome/common/print_messages.h" +#include "chrome/grit/generated_resources.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/notification_details.h" #include "content/public/browser/notification_service.h" #include "content/public/browser/notification_source.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" -#include "grit/generated_resources.h" #include "printing/metafile_impl.h" #include "printing/printed_document.h" #include "ui/base/l10n/l10n_util.h" @@ -57,7 +57,7 @@ PrintViewManagerBase::PrintViewManagerBase(content::WebContents* web_contents) inside_inner_message_loop_(false), cookie_(0), queue_(g_browser_process->print_job_manager()->queue()) { - DCHECK(queue_); + DCHECK(queue_.get()); #if (defined(OS_POSIX) && !defined(OS_MACOSX)) || \ defined(WIN_PDF_METAFILE_FOR_PRINTING) expecting_first_page_ = true; @@ -128,6 +128,9 @@ void PrintViewManagerBase::OnPdfToEmfConverted( const PrintHostMsg_DidPrintPage_Params& params, double scale_factor, const std::vector& emf_files) { + if (!print_job_.get()) + return; + PrintedDocument* document = print_job_->document(); if (!document) return; @@ -526,12 +529,12 @@ bool PrintViewManagerBase::OpportunisticallyCreatePrintJob(int cookie) { // The job was initiated by a script. Time to get the corresponding worker // thread. scoped_refptr queued_query = queue_->PopPrinterQuery(cookie); - if (!queued_query) { + if (!queued_query.get()) { NOTREACHED(); return false; } - if (!CreateNewPrintJob(queued_query)) { + if (!CreateNewPrintJob(queued_query.get())) { // Don't kill anything. return false; } @@ -568,7 +571,7 @@ void PrintViewManagerBase::ReleasePrinterQuery() { scoped_refptr printer_query; printer_query = queue_->PopPrinterQuery(cookie); - if (!printer_query) + if (!printer_query.get()) return; BrowserThread::PostTask( BrowserThread::IO, FROM_HERE, diff --git a/libcef/browser/printing/printing_message_filter.cc b/libcef/browser/printing/printing_message_filter.cc index 1563ecb9d..f23896cc6 100644 --- a/libcef/browser/printing/printing_message_filter.cc +++ b/libcef/browser/printing/printing_message_filter.cc @@ -8,20 +8,20 @@ #include "base/bind.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/printing/printer_query.h" -#include "chrome/browser/printing/printing_ui_web_contents_observer.h" #include "chrome/browser/printing/print_job_manager.h" +#include "chrome/browser/printing/printer_query.h" #include "chrome/common/print_messages.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" +#include "content/public/common/child_process_host.h" #if defined(OS_CHROMEOS) #include #include -#include "base/file_util.h" +#include "base/files/file_util.h" #include "base/lazy_instance.h" #include "chrome/browser/printing/print_dialog_cloud.h" #endif @@ -34,6 +34,8 @@ using content::BrowserThread; +namespace printing { + namespace { #if defined(OS_CHROMEOS) @@ -49,7 +51,7 @@ static base::LazyInstance g_printing_file_descriptor_map = LAZY_INSTANCE_INITIALIZER; #endif -void RenderParamsFromPrintSettings(const printing::PrintSettings& settings, +void RenderParamsFromPrintSettings(const PrintSettings& settings, PrintMsg_Print_Params* params) { params->page_size = settings.page_setup_device_units().physical_size(); params->content_size.SetSize( @@ -85,7 +87,7 @@ PrintingMessageFilter::PrintingMessageFilter(int render_process_id) : content::BrowserMessageFilter(PrintMsgStart), render_process_id_(render_process_id), queue_(g_browser_process->print_job_manager()->queue()) { - DCHECK(queue_); + DCHECK(queue_.get()); } PrintingMessageFilter::~PrintingMessageFilter() { @@ -174,8 +176,8 @@ void PrintingMessageFilter::OnAllocateTempFileForPrinting( content::WebContents* wc = GetWebContentsForRenderView(render_view_id); if (!wc) return; - printing::PrintViewManagerBasic* print_view_manager = - printing::PrintViewManagerBasic::FromWebContents(wc); + PrintViewManagerBasic* print_view_manager = + PrintViewManagerBasic::FromWebContents(wc); // The file descriptor is originally created in & passed from the Android // side, and it will handle the closing. const base::FileDescriptor& file_descriptor = @@ -208,11 +210,11 @@ void PrintingMessageFilter::OnTempFileForPrintingWritten(int render_view_id, content::WebContents* wc = GetWebContentsForRenderView(render_view_id); if (!wc) return; - printing::PrintViewManagerBasic* print_view_manager = - printing::PrintViewManagerBasic::FromWebContents(wc); + PrintViewManagerBasic* print_view_manager = + PrintViewManagerBasic::FromWebContents(wc); const base::FileDescriptor& file_descriptor = print_view_manager->file_descriptor(); - printing::PrintingContextAndroid::PdfWritingDone(file_descriptor.fd, true); + PrintingContextAndroid::PdfWritingDone(file_descriptor.fd, true); // Invalidate the file descriptor so it doesn't accidentally get reused. print_view_manager->set_file_descriptor(base::FileDescriptor(-1, false)); #endif @@ -244,46 +246,6 @@ content::WebContents* PrintingMessageFilter::GetWebContentsForRenderView( return view ? content::WebContents::FromRenderViewHost(view) : NULL; } -struct PrintingMessageFilter::GetPrintSettingsForRenderViewParams { - printing::PrinterQuery::GetSettingsAskParam ask_user_for_settings; - int expected_page_count; - bool has_selection; - printing::MarginType margin_type; -}; - -void PrintingMessageFilter::GetPrintSettingsForRenderView( - int render_view_id, - GetPrintSettingsForRenderViewParams params, - const base::Closure& callback, - scoped_refptr printer_query) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - content::WebContents* wc = GetWebContentsForRenderView(render_view_id); - if (wc) { - scoped_ptr wc_observer( - new PrintingUIWebContentsObserver(wc)); - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&printing::PrinterQuery::GetSettings, printer_query, - params.ask_user_for_settings, base::Passed(&wc_observer), - params.expected_page_count, params.has_selection, - params.margin_type, callback)); - } else { - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&PrintingMessageFilter::OnGetPrintSettingsFailed, this, - callback, printer_query)); - } -} - -void PrintingMessageFilter::OnGetPrintSettingsFailed( - const base::Closure& callback, - scoped_refptr printer_query) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - printer_query->GetSettingsDone(printing::PrintSettings(), - printing::PrintingContext::FAILED); - callback.Run(); -} - void PrintingMessageFilter::OnIsPrintingEnabled(bool* is_enabled) { DCHECK_CURRENTLY_ON(BrowserThread::IO); *is_enabled = true; @@ -291,33 +253,32 @@ void PrintingMessageFilter::OnIsPrintingEnabled(bool* is_enabled) { void PrintingMessageFilter::OnGetDefaultPrintSettings(IPC::Message* reply_msg) { DCHECK_CURRENTLY_ON(BrowserThread::IO); - scoped_refptr printer_query; + scoped_refptr printer_query; printer_query = queue_->PopPrinterQuery(0); - if (!printer_query) - printer_query = queue_->CreatePrinterQuery(); + if (!printer_query.get()) { + printer_query = + queue_->CreatePrinterQuery(render_process_id_, reply_msg->routing_id()); + } // Loads default settings. This is asynchronous, only the IPC message sender // will hang until the settings are retrieved. - GetPrintSettingsForRenderViewParams params; - params.ask_user_for_settings = printing::PrinterQuery::DEFAULTS; - params.expected_page_count = 0; - params.has_selection = false; - params.margin_type = printing::DEFAULT_MARGINS; - BrowserThread::PostTask( - BrowserThread::UI, FROM_HERE, - base::Bind(&PrintingMessageFilter::GetPrintSettingsForRenderView, this, - reply_msg->routing_id(), params, - base::Bind(&PrintingMessageFilter::OnGetDefaultPrintSettingsReply, - this, printer_query, reply_msg), - printer_query)); + printer_query->GetSettings( + PrinterQuery::DEFAULTS, + 0, + false, + DEFAULT_MARGINS, + base::Bind(&PrintingMessageFilter::OnGetDefaultPrintSettingsReply, + this, + printer_query, + reply_msg)); } void PrintingMessageFilter::OnGetDefaultPrintSettingsReply( - scoped_refptr printer_query, + scoped_refptr printer_query, IPC::Message* reply_msg) { PrintMsg_Print_Params params; if (!printer_query.get() || - printer_query->last_status() != printing::PrintingContext::OK) { + printer_query->last_status() != PrintingContext::OK) { params.Reset(); } else { RenderParamsFromPrintSettings(printer_query->settings(), ¶ms); @@ -339,27 +300,25 @@ void PrintingMessageFilter::OnGetDefaultPrintSettingsReply( void PrintingMessageFilter::OnScriptedPrint( const PrintHostMsg_ScriptedPrint_Params& params, IPC::Message* reply_msg) { - scoped_refptr printer_query = + scoped_refptr printer_query = queue_->PopPrinterQuery(params.cookie); - if (!printer_query) - printer_query = queue_->CreatePrinterQuery(); - GetPrintSettingsForRenderViewParams settings_params; - settings_params.ask_user_for_settings = printing::PrinterQuery::ASK_USER; - settings_params.expected_page_count = params.expected_pages_count; - settings_params.has_selection = params.has_selection; - settings_params.margin_type = params.margin_type; - - BrowserThread::PostTask( - BrowserThread::UI, FROM_HERE, - base::Bind(&PrintingMessageFilter::GetPrintSettingsForRenderView, this, - reply_msg->routing_id(), settings_params, - base::Bind(&PrintingMessageFilter::OnScriptedPrintReply, this, - printer_query, reply_msg), - printer_query)); + if (!printer_query.get()) { + printer_query = + queue_->CreatePrinterQuery(render_process_id_, reply_msg->routing_id()); + } + printer_query->GetSettings( + PrinterQuery::ASK_USER, + params.expected_pages_count, + params.has_selection, + params.margin_type, + base::Bind(&PrintingMessageFilter::OnScriptedPrintReply, + this, + printer_query, + reply_msg)); } void PrintingMessageFilter::OnScriptedPrintReply( - scoped_refptr printer_query, + scoped_refptr printer_query, IPC::Message* reply_msg) { PrintMsg_PrintPages_Params params; #if defined(OS_ANDROID) @@ -367,14 +326,13 @@ void PrintingMessageFilter::OnScriptedPrintReply( // |reply_msg| before we can get the routing ID for the Android code. int routing_id = reply_msg->routing_id(); #endif - if (printer_query->last_status() != printing::PrintingContext::OK || + if (printer_query->last_status() != PrintingContext::OK || !printer_query->settings().dpi()) { params.Reset(); } else { RenderParamsFromPrintSettings(printer_query->settings(), ¶ms.params); params.params.document_cookie = printer_query->cookie(); - params.pages = - printing::PageRange::GetPages(printer_query->settings().ranges()); + params.pages = PageRange::GetPages(printer_query->settings().ranges()); } PrintHostMsg_ScriptedPrint::WriteReplyParams(reply_msg, params); Send(reply_msg); @@ -401,8 +359,8 @@ void PrintingMessageFilter::UpdateFileDescriptor(int render_view_id, int fd) { content::WebContents* wc = GetWebContentsForRenderView(render_view_id); if (!wc) return; - printing::PrintViewManagerBasic* print_view_manager = - printing::PrintViewManagerBasic::FromWebContents(wc); + PrintViewManagerBasic* print_view_manager = + PrintViewManagerBasic::FromWebContents(wc); print_view_manager->set_file_descriptor(base::FileDescriptor(fd, false)); } #endif @@ -410,30 +368,45 @@ void PrintingMessageFilter::UpdateFileDescriptor(int render_view_id, int fd) { void PrintingMessageFilter::OnUpdatePrintSettings( int document_cookie, const base::DictionaryValue& job_settings, IPC::Message* reply_msg) { - scoped_refptr printer_query; + scoped_ptr new_settings(job_settings.DeepCopy()); + + scoped_refptr printer_query; printer_query = queue_->PopPrinterQuery(document_cookie); - if (!printer_query) - printer_query = queue_->CreatePrinterQuery(); + if (!printer_query.get()) { + int host_id = render_process_id_; + int routing_id = reply_msg->routing_id(); + if (!new_settings->GetInteger(printing::kPreviewInitiatorHostId, + &host_id) || + !new_settings->GetInteger(printing::kPreviewInitiatorRoutingId, + &routing_id)) { + host_id = content::ChildProcessHost::kInvalidUniqueID; + routing_id = content::ChildProcessHost::kInvalidUniqueID; + } + printer_query = queue_->CreatePrinterQuery(host_id, routing_id); + } printer_query->SetSettings( - job_settings, + new_settings.Pass(), base::Bind(&PrintingMessageFilter::OnUpdatePrintSettingsReply, this, printer_query, reply_msg)); } void PrintingMessageFilter::OnUpdatePrintSettingsReply( - scoped_refptr printer_query, + scoped_refptr printer_query, IPC::Message* reply_msg) { PrintMsg_PrintPages_Params params; if (!printer_query.get() || - printer_query->last_status() != printing::PrintingContext::OK) { + printer_query->last_status() != PrintingContext::OK) { params.Reset(); } else { RenderParamsFromPrintSettings(printer_query->settings(), ¶ms.params); params.params.document_cookie = printer_query->cookie(); - params.pages = - printing::PageRange::GetPages(printer_query->settings().ranges()); + params.pages = PageRange::GetPages(printer_query->settings().ranges()); } - PrintHostMsg_UpdatePrintSettings::WriteReplyParams(reply_msg, params); + PrintHostMsg_UpdatePrintSettings::WriteReplyParams( + reply_msg, + params, + printer_query && + (printer_query->last_status() == printing::PrintingContext::CANCEL)); Send(reply_msg); // If user hasn't cancelled. if (printer_query.get()) { @@ -444,3 +417,5 @@ void PrintingMessageFilter::OnUpdatePrintSettingsReply( } } } + +} // namespace printing diff --git a/libcef/browser/printing/printing_message_filter.h b/libcef/browser/printing/printing_message_filter.h index da1e058a1..1e94e4f1a 100644 --- a/libcef/browser/printing/printing_message_filter.h +++ b/libcef/browser/printing/printing_message_filter.h @@ -26,10 +26,10 @@ class WebContents; } namespace printing { -class PrinterQuery; + class PrintJobManager; class PrintQueriesQueue; -} +class PrinterQuery; // This class filters out incoming printing related IPC messages for the // renderer process on the IPC thread. @@ -81,35 +81,21 @@ class PrintingMessageFilter : public content::BrowserMessageFilter { // to base::Bind. struct GetPrintSettingsForRenderViewParams; - // Retrieve print settings. Uses |render_view_id| to get a parent - // for any UI created if needed. - void GetPrintSettingsForRenderView( - int render_view_id, - GetPrintSettingsForRenderViewParams params, - const base::Closure& callback, - scoped_refptr printer_query); - - void OnGetPrintSettingsFailed( - const base::Closure& callback, - scoped_refptr printer_query); - // Checks if printing is enabled. void OnIsPrintingEnabled(bool* is_enabled); // Get the default print setting. void OnGetDefaultPrintSettings(IPC::Message* reply_msg); - void OnGetDefaultPrintSettingsReply( - scoped_refptr printer_query, - IPC::Message* reply_msg); + void OnGetDefaultPrintSettingsReply(scoped_refptr printer_query, + IPC::Message* reply_msg); // The renderer host have to show to the user the print dialog and returns // the selected print settings. The task is handled by the print worker // thread and the UI thread. The reply occurs on the IO thread. void OnScriptedPrint(const PrintHostMsg_ScriptedPrint_Params& params, IPC::Message* reply_msg); - void OnScriptedPrintReply( - scoped_refptr printer_query, - IPC::Message* reply_msg); + void OnScriptedPrintReply(scoped_refptr printer_query, + IPC::Message* reply_msg); // Modify the current print settings based on |job_settings|. The task is // handled by the print worker thread and the UI thread. The reply occurs on @@ -117,15 +103,16 @@ class PrintingMessageFilter : public content::BrowserMessageFilter { void OnUpdatePrintSettings(int document_cookie, const base::DictionaryValue& job_settings, IPC::Message* reply_msg); - void OnUpdatePrintSettingsReply( - scoped_refptr printer_query, - IPC::Message* reply_msg); + void OnUpdatePrintSettingsReply(scoped_refptr printer_query, + IPC::Message* reply_msg); const int render_process_id_; - scoped_refptr queue_; + scoped_refptr queue_; DISALLOW_COPY_AND_ASSIGN(PrintingMessageFilter); }; +} // namespace printing + #endif // CEF_LIBCEF_BROWSER_PRINTING_PRINTING_MESSAGE_FILTER_H_ diff --git a/libcef/browser/render_widget_host_view_osr.cc b/libcef/browser/render_widget_host_view_osr.cc index 788042162..d761728b6 100644 --- a/libcef/browser/render_widget_host_view_osr.cc +++ b/libcef/browser/render_widget_host_view_osr.cc @@ -68,6 +68,10 @@ class CefRootLayer : public ui::Layer, public ui::LayerDelegate { virtual void OnPaintLayer(gfx::Canvas* canvas) OVERRIDE { } + virtual void OnDelegatedFrameDamage( + const gfx::Rect& damage_rect_in_dip) OVERRIDE { + } + virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE { } @@ -172,7 +176,9 @@ CefRenderWidgetHostViewOSR::CefRenderWidgetHostViewOSR( #if !defined(OS_MACOSX) // On OS X the ui::Compositor is created/owned by the platform view. compositor_.reset( - new ui::Compositor(compositor_widget_, content::GetContextFactory())); + new ui::Compositor(compositor_widget_, + content::GetContextFactory(), + base::MessageLoopProxy::current())); #endif compositor_->SetRootLayer(root_layer_.get()); @@ -185,9 +191,16 @@ CefRenderWidgetHostViewOSR::CefRenderWidgetHostViewOSR( } CefRenderWidgetHostViewOSR::~CefRenderWidgetHostViewOSR() { + // Marking the DelegatedFrameHost as removed from the window hierarchy is + // necessary to remove all connections to its old ui::Compositor. + if (is_showing_) + delegated_frame_host_->WasHidden(); + delegated_frame_host_->RemovingFromWindow(); + + PlatformDestroyCompositorWidget(); + delegated_frame_host_.reset(NULL); compositor_.reset(NULL); - PlatformDestroyCompositorWidget(); root_layer_.reset(NULL); } @@ -341,9 +354,9 @@ void CefRenderWidgetHostViewOSR::WasShown() { is_showing_ = true; if (render_widget_host_) - render_widget_host_->WasShown(); + render_widget_host_->WasShown(ui::LatencyInfo()); delegated_frame_host_->AddedToWindow(); - delegated_frame_host_->WasShown(); + delegated_frame_host_->WasShown(ui::LatencyInfo()); } void CefRenderWidgetHostViewOSR::WasHidden() { @@ -472,21 +485,13 @@ void CefRenderWidgetHostViewOSR::SelectionBoundsChanged( const ViewHostMsg_SelectionBounds_Params& params) { } -void CefRenderWidgetHostViewOSR::ScrollOffsetChanged() { - if (!browser_impl_) - return; - - browser_impl_->GetClient()->GetRenderHandler()-> - OnScrollOffsetChanged(browser_impl_.get()); -} - void CefRenderWidgetHostViewOSR::CopyFromCompositingSurface( const gfx::Rect& src_subrect, const gfx::Size& dst_size, const base::Callback& callback, - const SkBitmap::Config config) { + const SkColorType color_type) { delegated_frame_host_->CopyFromCompositingSurface( - src_subrect, dst_size, callback, config); + src_subrect, dst_size, callback, color_type); } void CefRenderWidgetHostViewOSR::CopyFromCompositingSurfaceToVideoFrame( @@ -596,6 +601,12 @@ gfx::GLSurfaceHandle CefRenderWidgetHostViewOSR::GetCompositingSurface() { GetSharedSurfaceHandle(); } +content::BrowserAccessibilityManager* + CefRenderWidgetHostViewOSR::CreateBrowserAccessibilityManager( + content::BrowserAccessibilityDelegate* delegate) { + return NULL; +} + #if !defined(OS_MACOSX) && defined(USE_AURA) void CefRenderWidgetHostViewOSR::ImeCompositionRangeChanged( const gfx::Range& range, @@ -615,11 +626,6 @@ content::RenderWidgetHostImpl* CefRenderWidgetHostViewOSR::GetHost() { return render_widget_host_; } -void CefRenderWidgetHostViewOSR::SchedulePaintInRect( - const gfx::Rect& damage_rect_in_dip) { - root_layer_->SchedulePaint(damage_rect_in_dip); -} - bool CefRenderWidgetHostViewOSR::IsVisible() { return IsShowing(); } @@ -909,13 +915,11 @@ void CefRenderWidgetHostViewOSR::PrepareTextureCopyOutputResult( bitmap_size.height() != result_size.height()) { // Create a new bitmap if the size has changed. bitmap_.reset(new SkBitmap); - bitmap_->setConfig(SkBitmap::kARGB_8888_Config, - result_size.width(), - result_size.height(), - 0, - kOpaque_SkAlphaType); - if (!bitmap_->allocPixels()) + if (!bitmap_->allocN32Pixels(result_size.width(), + result_size.height(), + true)) { return; + } } content::ImageTransportFactory* factory = @@ -944,7 +948,7 @@ void CefRenderWidgetHostViewOSR::PrepareTextureCopyOutputResult( gfx::Rect(result_size), result_size, pixels, - SkBitmap::kARGB_8888_Config, + kN32_SkColorType, base::Bind( &CefRenderWidgetHostViewOSR::CopyFromCompositingSurfaceFinishedProxy, weak_ptr_factory_.GetWeakPtr(), diff --git a/libcef/browser/render_widget_host_view_osr.h b/libcef/browser/render_widget_host_view_osr.h index ffd61425d..63b7a9305 100644 --- a/libcef/browser/render_widget_host_view_osr.h +++ b/libcef/browser/render_widget_host_view_osr.h @@ -17,6 +17,10 @@ #include "content/browser/renderer_host/render_widget_host_view_base.h" #include "ui/compositor/compositor.h" +#if defined(OS_MACOSX) +#include "content/browser/compositor/browser_compositor_view_mac.h" +#endif + #if defined(OS_WIN) #include "ui/gfx/win/window_impl.h" #endif @@ -32,8 +36,10 @@ class CefWebContentsViewOSR; #if defined(OS_MACOSX) #ifdef __OBJC__ +@class CALayer; @class NSWindow; #else +class CALayer; class NSWindow; #endif #endif @@ -62,6 +68,9 @@ class CefWindowX11; class CefRenderWidgetHostViewOSR : public content::RenderWidgetHostViewBase, +#if defined(OS_MACOSX) + public content::BrowserCompositorViewMacClient, +#endif public content::DelegatedFrameHostClient { public: explicit CefRenderWidgetHostViewOSR(content::RenderWidgetHost* widget); @@ -128,12 +137,11 @@ class CefRenderWidgetHostViewOSR virtual gfx::Size GetPhysicalBackingSize() const OVERRIDE; virtual void SelectionBoundsChanged( const ViewHostMsg_SelectionBounds_Params& params) OVERRIDE; - virtual void ScrollOffsetChanged() OVERRIDE; virtual void CopyFromCompositingSurface( const gfx::Rect& src_subrect, const gfx::Size& dst_size, const base::Callback& callback, - const SkBitmap::Config config) OVERRIDE; + const SkColorType color_type) OVERRIDE; virtual void CopyFromCompositingSurfaceToVideoFrame( const gfx::Rect& src_subrect, const scoped_refptr& target, @@ -158,6 +166,9 @@ class CefRenderWidgetHostViewOSR virtual void GetScreenInfo(blink::WebScreenInfo* results) OVERRIDE; virtual gfx::Rect GetBoundsInRootWindow() OVERRIDE; virtual gfx::GLSurfaceHandle GetCompositingSurface() OVERRIDE; + virtual content::BrowserAccessibilityManager* + CreateBrowserAccessibilityManager( + content::BrowserAccessibilityDelegate* delegate) OVERRIDE; #if defined(OS_MACOSX) virtual bool PostProcessEventForPluginIme( @@ -176,12 +187,19 @@ class CefRenderWidgetHostViewOSR virtual gfx::NativeViewId GetParentForWindowlessPlugin() const OVERRIDE; #endif - // DelegatedFrameHost implementation. +#if defined(OS_MACOSX) + // BrowserCompositorViewMacClient implementation. + virtual bool BrowserCompositorViewShouldAckImmediately() const OVERRIDE; + virtual void BrowserCompositorViewFrameSwapped( + const std::vector& latency_info) OVERRIDE; + virtual NSView* BrowserCompositorSuperview() OVERRIDE; + virtual ui::Layer* BrowserCompositorRootLayer() OVERRIDE; +#endif // defined(OS_MACOSX) + + // DelegatedFrameHostClient implementation. virtual ui::Compositor* GetCompositor() const OVERRIDE; virtual ui::Layer* GetLayer() OVERRIDE; virtual content::RenderWidgetHostImpl* GetHost() OVERRIDE; - virtual void SchedulePaintInRect( - const gfx::Rect& damage_rect_in_dip) OVERRIDE; virtual bool IsVisible() OVERRIDE; virtual scoped_ptr CreateResizeLock( bool defer_compositor_lock) OVERRIDE; @@ -295,6 +313,8 @@ class CefRenderWidgetHostViewOSR scoped_ptr window_; #elif defined(OS_MACOSX) NSWindow* window_; + CALayer* background_layer_; + scoped_ptr compositor_view_; #elif defined(USE_X11) CefWindowX11* window_; #endif diff --git a/libcef/browser/render_widget_host_view_osr_mac.mm b/libcef/browser/render_widget_host_view_osr_mac.mm index ef39a2e93..2c71000cf 100644 --- a/libcef/browser/render_widget_host_view_osr_mac.mm +++ b/libcef/browser/render_widget_host_view_osr_mac.mm @@ -10,7 +10,8 @@ #include "libcef/browser/browser_host_impl.h" #include "libcef/browser/text_input_client_osr_mac.h" -#include "content/browser/compositor/browser_compositor_view_private_mac.h" +#include "content/browser/compositor/browser_compositor_view_mac.h" +#include "ui/events/latency_info.h" #if !defined(UNUSED) #define UNUSED(x) ((void)(x)) /* to avoid warnings */ @@ -86,6 +87,30 @@ void CefRenderWidgetHostViewOSR::ImeCompositionRangeChanged( client->composition_bounds_ = character_bounds; } +bool CefRenderWidgetHostViewOSR::BrowserCompositorViewShouldAckImmediately() + const { + return false; +} + +void CefRenderWidgetHostViewOSR::BrowserCompositorViewFrameSwapped( + const std::vector& all_latency_info) { + if (!render_widget_host_) + return; + for (auto latency_info : all_latency_info) { + latency_info.AddLatencyNumber( + ui::INPUT_EVENT_LATENCY_TERMINATED_FRAME_SWAP_COMPONENT, 0, 0); + render_widget_host_->FrameSwapped(latency_info); + } +} + +NSView* CefRenderWidgetHostViewOSR::BrowserCompositorSuperview() { + return [window_ contentView]; +} + +ui::Layer* CefRenderWidgetHostViewOSR::BrowserCompositorRootLayer() { + return root_layer_.get(); +} + CefTextInputContext CefRenderWidgetHostViewOSR::GetNSTextInputContext() { if (!text_input_context_osr_mac_) { CefTextInputClientOSRMac* text_input_client_osr_mac = @@ -260,21 +285,30 @@ void CefRenderWidgetHostViewOSR::PlatformCreateCompositorWidget() { styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO]; - BrowserCompositorViewCocoa* view = [[BrowserCompositorViewCocoa alloc] init]; - [window_ setContentView:view]; - compositor_.reset([view compositor]); + + // Create a CALayer which is used by BrowserCompositorViewMac for rendering. + background_layer_ = [[[CALayer alloc] init] retain]; + [background_layer_ setBackgroundColor:CGColorGetConstantColor(kCGColorClear)]; + NSView* content_view = [window_ contentView]; + [content_view setLayer:background_layer_]; + [content_view setWantsLayer:YES]; + + compositor_view_.reset(new content::BrowserCompositorViewMac(this)); + compositor_.reset(compositor_view_->GetCompositor()); DCHECK(compositor_); - compositor_widget_ = view; } void CefRenderWidgetHostViewOSR::PlatformDestroyCompositorWidget() { DCHECK(window_); - // Compositor is owned by and will be freed by BrowserCompositorViewCocoa. + // Compositor is owned by and will be freed by BrowserCompositorViewMac. ui::Compositor* compositor = compositor_.release(); UNUSED(compositor); [window_ close]; window_ = nil; - compositor_widget_ = gfx::kNullAcceleratedWidget; + [background_layer_ release]; + background_layer_ = nil; + + compositor_view_.reset(NULL); } diff --git a/libcef/browser/resource_dispatcher_host_delegate.cc b/libcef/browser/resource_dispatcher_host_delegate.cc index b6a0659c7..21443bd71 100644 --- a/libcef/browser/resource_dispatcher_host_delegate.cc +++ b/libcef/browser/resource_dispatcher_host_delegate.cc @@ -62,12 +62,10 @@ void CefResourceDispatcherHostDelegate::RequestBeginning( net::URLRequest* request, content::ResourceContext* resource_context, content::AppCacheService* appcache_service, - ResourceType::Type resource_type, - int child_id, - int route_id, + content::ResourceType resource_type, ScopedVector* throttles) { - if (resource_type == ResourceType::MAIN_FRAME || - resource_type == ResourceType::SUB_FRAME) { + if (resource_type == content::ResourceType::RESOURCE_TYPE_MAIN_FRAME || + resource_type == content::ResourceType::RESOURCE_TYPE_SUB_FRAME) { int64 frame_id = -1; // ResourceRequestInfo will not exist for requests originating from @@ -94,8 +92,7 @@ void CefResourceDispatcherHostDelegate::RequestBeginning( bool CefResourceDispatcherHostDelegate::HandleExternalProtocol( const GURL& url, int child_id, - int route_id, - bool initiated_by_user_gesture) { + int route_id) { CefRefPtr browser = CefBrowserHostImpl::GetBrowserForView(child_id, route_id); if (browser.get()) diff --git a/libcef/browser/resource_dispatcher_host_delegate.h b/libcef/browser/resource_dispatcher_host_delegate.h index 585c4a345..e33445b06 100644 --- a/libcef/browser/resource_dispatcher_host_delegate.h +++ b/libcef/browser/resource_dispatcher_host_delegate.h @@ -21,14 +21,11 @@ class CefResourceDispatcherHostDelegate net::URLRequest* request, content::ResourceContext* resource_context, content::AppCacheService* appcache_service, - ResourceType::Type resource_type, - int child_id, - int route_id, + content::ResourceType resource_type, ScopedVector* throttles) OVERRIDE; virtual bool HandleExternalProtocol(const GURL& url, int child_id, - int route_id, - bool initiated_by_user_gesture) OVERRIDE; + int route_id) OVERRIDE; virtual void OnRequestRedirected( const GURL& redirect_url, net::URLRequest* request, diff --git a/libcef/browser/text_input_client_osr_mac.mm b/libcef/browser/text_input_client_osr_mac.mm index 179f588ad..6240a4de7 100644 --- a/libcef/browser/text_input_client_osr_mac.mm +++ b/libcef/browser/text_input_client_osr_mac.mm @@ -44,7 +44,7 @@ void ExtractUnderlines(NSAttributedString* string, [colorAttr colorUsingColorSpaceName:NSDeviceRGBColorSpace]); } underlines->push_back(blink::WebCompositionUnderline( - range.location, NSMaxRange(range), color, [style intValue] > 1)); + range.location, NSMaxRange(range), color, [style intValue] > 1, 0)); } i = range.location + range.length; } @@ -151,7 +151,7 @@ extern "C" { } else { // Use a thin black underline by default. underlines_.push_back(blink::WebCompositionUnderline(0, length, - SK_ColorBLACK, false)); + SK_ColorBLACK, false, 0)); } // If we are handling a key down event, then SetComposition() will be diff --git a/libcef/browser/trace_subscriber.cc b/libcef/browser/trace_subscriber.cc index 158281d55..11135cbca 100644 --- a/libcef/browser/trace_subscriber.cc +++ b/libcef/browser/trace_subscriber.cc @@ -41,7 +41,9 @@ bool CefTraceSubscriber::BeginTracing( done_callback = base::Bind(&CefCompletionCallback::OnComplete, callback); TracingController::GetInstance()->EnableRecording( - categories, TracingController::DEFAULT_OPTIONS, done_callback); + base::debug::CategoryFilter(categories), + base::debug::TraceOptions(), + done_callback); return true; } diff --git a/libcef/browser/url_request_context_getter.cc b/libcef/browser/url_request_context_getter.cc index 5e48f1f1c..7595750f4 100644 --- a/libcef/browser/url_request_context_getter.cc +++ b/libcef/browser/url_request_context_getter.cc @@ -44,8 +44,8 @@ #include "net/http/http_util.h" #include "net/http/transport_security_state.h" #include "net/proxy/proxy_service.h" -#include "net/ssl/default_server_bound_cert_store.h" -#include "net/ssl/server_bound_cert_service.h" +#include "net/ssl/channel_id_service.h" +#include "net/ssl/default_channel_id_store.h" #include "net/ssl/ssl_config_service_defaults.h" #include "url/url_constants.h" #include "net/url_request/http_user_agent_settings.h" @@ -141,8 +141,8 @@ net::URLRequestContext* CefURLRequestContextGetter::GetURLRequestContext() { storage_->set_network_delegate(new CefNetworkDelegate); - storage_->set_server_bound_cert_service(new net::ServerBoundCertService( - new net::DefaultServerBoundCertStore(NULL), + storage_->set_channel_id_service(new net::ChannelIDService( + new net::DefaultChannelIDStore(NULL), base::WorkerPool::GetTaskRunner(true))); storage_->set_http_user_agent_settings( new CefHttpUserAgentSettings("en-us,en")); @@ -201,8 +201,8 @@ net::URLRequestContext* CefURLRequestContextGetter::GetURLRequestContext() { url_request_context_->cert_verifier(); network_session_params.transport_security_state = url_request_context_->transport_security_state(); - network_session_params.server_bound_cert_service = - url_request_context_->server_bound_cert_service(); + network_session_params.channel_id_service = + url_request_context_->channel_id_service(); network_session_params.proxy_service = url_request_context_->proxy_service(); network_session_params.ssl_config_service = diff --git a/libcef/browser/url_request_context_proxy.cc b/libcef/browser/url_request_context_proxy.cc index 3bc9f1522..21b9927a8 100644 --- a/libcef/browser/url_request_context_proxy.cc +++ b/libcef/browser/url_request_context_proxy.cc @@ -151,7 +151,7 @@ void CefURLRequestContextProxy::Initialize( set_host_resolver(context->host_resolver()); set_cert_verifier(context->cert_verifier()); set_transport_security_state(context->transport_security_state()); - set_server_bound_cert_service(context->server_bound_cert_service()); + set_channel_id_service(context->channel_id_service()); set_fraudulent_certificate_reporter( context->fraudulent_certificate_reporter()); set_proxy_service(context->proxy_service()); diff --git a/libcef/browser/web_contents_view_osr.cc b/libcef/browser/web_contents_view_osr.cc index 673b112c3..cd111cb15 100644 --- a/libcef/browser/web_contents_view_osr.cc +++ b/libcef/browser/web_contents_view_osr.cc @@ -96,20 +96,13 @@ void CefWebContentsViewOSR::SetOverscrollControllerEnabled(bool enabled) { } #if defined(OS_MACOSX) -void CefWebContentsViewOSR::SetAllowOverlappingViews(bool overlapping) { +void CefWebContentsViewOSR::SetAllowOtherViews(bool allow) { } -bool CefWebContentsViewOSR::GetAllowOverlappingViews() const { +bool CefWebContentsViewOSR::GetAllowOtherViews() const { return false; } -void CefWebContentsViewOSR::SetOverlayView( - content::WebContentsView* overlay, - const gfx::Point& offset) { -} -void CefWebContentsViewOSR::RemoveOverlayView() { -} - bool CefWebContentsViewOSR::IsEventTracking() const { return false; } diff --git a/libcef/browser/web_contents_view_osr.h b/libcef/browser/web_contents_view_osr.h index a6f0431af..d7795a31b 100644 --- a/libcef/browser/web_contents_view_osr.h +++ b/libcef/browser/web_contents_view_osr.h @@ -48,11 +48,8 @@ class CefWebContentsViewOSR : public content::WebContentsView, virtual void SetOverscrollControllerEnabled(bool enabled) OVERRIDE; #if defined(OS_MACOSX) - virtual void SetAllowOverlappingViews(bool overlapping) OVERRIDE; - virtual bool GetAllowOverlappingViews() const OVERRIDE; - virtual void SetOverlayView(content::WebContentsView* overlay, - const gfx::Point& offset) OVERRIDE; - virtual void RemoveOverlayView() OVERRIDE; + virtual void SetAllowOtherViews(bool allow) OVERRIDE; + virtual bool GetAllowOtherViews() const OVERRIDE; virtual bool IsEventTracking() const OVERRIDE; virtual void CloseTabAfterEventTracking() OVERRIDE; #endif diff --git a/libcef/common/breakpad_client.h b/libcef/common/breakpad_client.h index 964a9ecaa..d48d28d95 100644 --- a/libcef/common/breakpad_client.h +++ b/libcef/common/breakpad_client.h @@ -6,7 +6,7 @@ #define CEF_LIBCEF_COMMON_BREAKPAD_CLIENT_H_ #include "base/compiler_specific.h" -#include "components/breakpad/app/breakpad_client.h" +#include "components/crash/app/breakpad_client.h" class CefBreakpadClient : public breakpad::BreakpadClient { public: diff --git a/libcef/common/cef_messages.h b/libcef/common/cef_messages.h index bc354516d..7f032d036 100644 --- a/libcef/common/cef_messages.h +++ b/libcef/common/cef_messages.h @@ -202,28 +202,6 @@ IPC_MESSAGE_ROUTED1(CefHostMsg_ResponseAck, int /* request_id */) -// Pepper PDF plugin messages excerpted from chrome/common/render_messages.h. -// Including all of render_messages.h would bring in a number of chrome -// dependencies that are better off avoided. - -// The currently displayed PDF has an unsupported feature. -IPC_MESSAGE_ROUTED0(ChromeViewHostMsg_PDFHasUnsupportedFeature) - -// Brings up SaveAs... dialog to save specified URL. -IPC_MESSAGE_ROUTED2(ChromeViewHostMsg_PDFSaveURLAs, - GURL /* url */, - content::Referrer /* referrer */) - -// Updates the content restrictions, i.e. to disable print/copy. -IPC_MESSAGE_ROUTED1(ChromeViewHostMsg_PDFUpdateContentRestrictions, - int /* restrictions */) - -// Brings up a Password... dialog for protected documents. -IPC_SYNC_MESSAGE_ROUTED1_1(ChromeViewHostMsg_PDFModalPromptForPassword, - std::string /* prompt */, - std::string /* actual_value */) - - // Singly-included section for struct and custom IPC traits. #ifndef CEF_LIBCEF_COMMON_CEF_MESSAGES_H_ #define CEF_LIBCEF_COMMON_CEF_MESSAGES_H_ diff --git a/libcef/common/main_delegate.cc b/libcef/common/main_delegate.cc index 2d8aa112c..afb9a3439 100644 --- a/libcef/common/main_delegate.cc +++ b/libcef/common/main_delegate.cc @@ -34,19 +34,19 @@ #if defined(OS_WIN) #include // NOLINT(build/include_order) -#include "components/breakpad/app/breakpad_win.h" +#include "components/crash/app/breakpad_win.h" #endif #if defined(OS_MACOSX) #include "base/mac/os_crash_dumps.h" #include "base/mac/bundle_locations.h" #include "base/mac/foundation_util.h" -#include "components/breakpad/app/breakpad_mac.h" +#include "components/crash/app/breakpad_mac.h" #include "content/public/common/content_paths.h" #endif #if defined(OS_POSIX) && !defined(OS_MACOSX) -#include "components/breakpad/app/breakpad_linux.h" +#include "components/crash/app/breakpad_linux.h" #endif namespace { @@ -541,8 +541,10 @@ void CefMainDelegate::InitializeResourceBundle() { DCHECK(!locale.empty()); const std::string loaded_locale = - ui::ResourceBundle::InitSharedInstanceWithLocale(locale, - &content_client_); + ui::ResourceBundle::InitSharedInstanceWithLocale( + locale, + &content_client_, + ui::ResourceBundle::LOAD_COMMON_RESOURCES); ResourceBundle& resource_bundle = ResourceBundle::GetSharedInstance(); if (!content_client_.pack_loading_disabled()) { diff --git a/libcef/common/request_impl.cc b/libcef/common/request_impl.cc index 812df1f76..304b26bdd 100644 --- a/libcef/common/request_impl.cc +++ b/libcef/common/request_impl.cc @@ -12,6 +12,7 @@ #include "base/logging.h" #include "content/public/browser/resource_request_info.h" +#include "content/public/common/resource_type.h" #include "net/base/upload_data_stream.h" #include "net/base/upload_element_reader.h" #include "net/base/upload_bytes_element_reader.h" @@ -23,7 +24,6 @@ #include "third_party/WebKit/public/platform/WebURL.h" #include "third_party/WebKit/public/platform/WebURLError.h" #include "third_party/WebKit/public/platform/WebURLRequest.h" -#include "webkit/common/resource_type.h" namespace { @@ -313,9 +313,6 @@ void CefRequestImpl::Set(const blink::WebURLRequest& request) { flags_ |= UR_FLAG_REPORT_RAW_HEADERS; first_party_for_cookies_ = request.firstPartyForCookies().spec().utf16(); - - resource_type_ = static_cast( - ::ResourceType::FromTargetType(request.targetType())); } void CefRequestImpl::Get(blink::WebURLRequest& request) { @@ -327,7 +324,6 @@ void CefRequestImpl::Get(blink::WebURLRequest& request) { std::string method(method_); request.setHTTPMethod(blink::WebString::fromUTF8(method.c_str())); - request.setTargetType(blink::WebURLRequest::TargetIsMainFrame); blink::WebHTTPBody body; if (postdata_.get()) { diff --git a/libcef/common/upload_data.h b/libcef/common/upload_data.h index 2299f8d86..2a5a94876 100644 --- a/libcef/common/upload_data.h +++ b/libcef/common/upload_data.h @@ -5,12 +5,13 @@ #ifndef CEF_LIBCEF_COMMON_UPLOAD_DATA_H_ #define CEF_LIBCEF_COMMON_UPLOAD_DATA_H_ +#include "libcef/common/upload_element.h" + #include "base/basictypes.h" #include "base/memory/ref_counted.h" #include "base/memory/scoped_vector.h" #include "base/supports_user_data.h" #include "net/base/net_export.h" -#include "net/base/upload_element.h" namespace base { class FilePath; diff --git a/libcef/common/upload_element.cc b/libcef/common/upload_element.cc new file mode 100644 index 000000000..bb5e2b897 --- /dev/null +++ b/libcef/common/upload_element.cc @@ -0,0 +1,25 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "libcef/common/upload_element.h" + +#include + +#include "net/base/file_stream.h" +#include "net/base/net_errors.h" + +namespace net { + +UploadElement::UploadElement() + : type_(TYPE_BYTES), + bytes_start_(NULL), + bytes_length_(0), + file_range_offset_(0), + file_range_length_(kuint64max) { +} + +UploadElement::~UploadElement() { +} + +} // namespace net diff --git a/libcef/common/upload_element.h b/libcef/common/upload_element.h new file mode 100644 index 000000000..2b63a0df3 --- /dev/null +++ b/libcef/common/upload_element.h @@ -0,0 +1,110 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CEF_LIBCEF_COMMON_UPLOAD_ELEMENT_H_ +#define CEF_LIBCEF_COMMON_UPLOAD_ELEMENT_H_ + +#include + +#include "base/basictypes.h" +#include "base/files/file_path.h" +#include "base/time/time.h" +#include "net/base/net_export.h" + +namespace net { + +// A class representing an element contained by UploadData. +class NET_EXPORT UploadElement { + public: + enum Type { + TYPE_BYTES, + TYPE_FILE, + }; + + UploadElement(); + ~UploadElement(); + + Type type() const { return type_; } + + const char* bytes() const { return bytes_start_ ? bytes_start_ : &buf_[0]; } + uint64 bytes_length() const { return buf_.size() + bytes_length_; } + const base::FilePath& file_path() const { return file_path_; } + uint64 file_range_offset() const { return file_range_offset_; } + uint64 file_range_length() const { return file_range_length_; } + // If NULL time is returned, we do not do the check. + const base::Time& expected_file_modification_time() const { + return expected_file_modification_time_; + } + + void SetToBytes(const char* bytes, int bytes_len) { + type_ = TYPE_BYTES; + buf_.assign(bytes, bytes + bytes_len); + } + + // This does not copy the given data and the caller should make sure + // the data is secured somewhere else (e.g. by attaching the data + // using SetUserData). + void SetToSharedBytes(const char* bytes, int bytes_len) { + type_ = TYPE_BYTES; + bytes_start_ = bytes; + bytes_length_ = bytes_len; + } + + void SetToFilePath(const base::FilePath& path) { + SetToFilePathRange(path, 0, kuint64max, base::Time()); + } + + // If expected_modification_time is NULL, we do not check for the file + // change. Also note that the granularity for comparison is time_t, not + // the full precision. + void SetToFilePathRange(const base::FilePath& path, + uint64 offset, uint64 length, + const base::Time& expected_modification_time) { + type_ = TYPE_FILE; + file_path_ = path; + file_range_offset_ = offset; + file_range_length_ = length; + expected_file_modification_time_ = expected_modification_time; + } + + private: + Type type_; + std::vector buf_; + const char* bytes_start_; + uint64 bytes_length_; + base::FilePath file_path_; + uint64 file_range_offset_; + uint64 file_range_length_; + base::Time expected_file_modification_time_; + + DISALLOW_COPY_AND_ASSIGN(UploadElement); +}; + +#if defined(UNIT_TEST) +inline bool operator==(const UploadElement& a, + const UploadElement& b) { + if (a.type() != b.type()) + return false; + if (a.type() == UploadElement::TYPE_BYTES) + return a.bytes_length() == b.bytes_length() && + memcmp(a.bytes(), b.bytes(), b.bytes_length()) == 0; + if (a.type() == UploadElement::TYPE_FILE) { + return a.file_path() == b.file_path() && + a.file_range_offset() == b.file_range_offset() && + a.file_range_length() == b.file_range_length() && + a.expected_file_modification_time() == + b.expected_file_modification_time(); + } + return false; +} + +inline bool operator!=(const UploadElement& a, + const UploadElement& b) { + return !(a == b); +} +#endif // defined(UNIT_TEST) + +} // namespace net + +#endif // CEF_LIBCEF_COMMON_UPLOAD_ELEMENT_H_ diff --git a/libcef/common/values_impl.cc b/libcef/common/values_impl.cc index 647609b66..04efb5601 100644 --- a/libcef/common/values_impl.cc +++ b/libcef/common/values_impl.cc @@ -384,7 +384,7 @@ bool CefDictionaryValueImpl::SetBool(const CefString& key, bool value) { CEF_VALUE_VERIFY_RETURN(true, false); RemoveInternal(key); mutable_value()->SetWithoutPathExpansion(key, - base::Value::CreateBooleanValue(value)); + new base::FundamentalValue(value)); return true; } @@ -392,7 +392,7 @@ bool CefDictionaryValueImpl::SetInt(const CefString& key, int value) { CEF_VALUE_VERIFY_RETURN(true, false); RemoveInternal(key); mutable_value()->SetWithoutPathExpansion(key, - base::Value::CreateIntegerValue(value)); + new base::FundamentalValue(value)); return true; } @@ -400,7 +400,7 @@ bool CefDictionaryValueImpl::SetDouble(const CefString& key, double value) { CEF_VALUE_VERIFY_RETURN(true, false); RemoveInternal(key); mutable_value()->SetWithoutPathExpansion(key, - base::Value::CreateDoubleValue(value)); + new base::FundamentalValue(value)); return true; } @@ -409,7 +409,7 @@ bool CefDictionaryValueImpl::SetString(const CefString& key, CEF_VALUE_VERIFY_RETURN(true, false); RemoveInternal(key); mutable_value()->SetWithoutPathExpansion(key, - base::Value::CreateStringValue(value.ToString())); + new base::StringValue(value.ToString())); return true; } @@ -729,7 +729,7 @@ bool CefListValueImpl::SetNull(int index) { bool CefListValueImpl::SetBool(int index, bool value) { CEF_VALUE_VERIFY_RETURN(true, false); - base::Value* new_value = base::Value::CreateBooleanValue(value); + base::Value* new_value = new base::FundamentalValue(value); if (RemoveInternal(index)) mutable_value()->Insert(index, new_value); else @@ -739,7 +739,7 @@ bool CefListValueImpl::SetBool(int index, bool value) { bool CefListValueImpl::SetInt(int index, int value) { CEF_VALUE_VERIFY_RETURN(true, false); - base::Value* new_value = base::Value::CreateIntegerValue(value); + base::Value* new_value = new base::FundamentalValue(value); if (RemoveInternal(index)) mutable_value()->Insert(index, new_value); else @@ -749,7 +749,7 @@ bool CefListValueImpl::SetInt(int index, int value) { bool CefListValueImpl::SetDouble(int index, double value) { CEF_VALUE_VERIFY_RETURN(true, false); - base::Value* new_value = base::Value::CreateDoubleValue(value); + base::Value* new_value = new base::FundamentalValue(value); if (RemoveInternal(index)) mutable_value()->Insert(index, new_value); else @@ -759,7 +759,7 @@ bool CefListValueImpl::SetDouble(int index, double value) { bool CefListValueImpl::SetString(int index, const CefString& value) { CEF_VALUE_VERIFY_RETURN(true, false); - base::Value* new_value = base::Value::CreateStringValue(value.ToString()); + base::Value* new_value = new base::StringValue(value.ToString()); if (RemoveInternal(index)) mutable_value()->Insert(index, new_value); else diff --git a/libcef/renderer/content_renderer_client.cc b/libcef/renderer/content_renderer_client.cc index 4f0cfc36c..a68e3b180 100644 --- a/libcef/renderer/content_renderer_client.cc +++ b/libcef/renderer/content_renderer_client.cc @@ -7,8 +7,8 @@ #include "config.h" MSVC_PUSH_WARNING_LEVEL(0); -#include "bindings/v8/V8Binding.h" -#include "bindings/v8/V8RecursionScope.h" +#include "bindings/core/v8/V8Binding.h" +#include "bindings/core/v8/V8RecursionScope.h" MSVC_POP_WARNING(); #undef ceil #undef FROM_HERE @@ -37,8 +37,9 @@ MSVC_POP_WARNING(); #include "base/strings/utf_string_conversions.h" #include "chrome/common/chrome_paths.h" #include "chrome/renderer/loadtimes_extension_bindings.h" -#include "chrome/renderer/pepper/ppb_pdf_impl.h" +#include "chrome/renderer/pepper/chrome_pdf_print_client.h" #include "chrome/renderer/printing/print_web_view_helper.h" +#include "components/pdf/renderer/ppb_pdf_impl.h" #include "content/child/child_thread.h" #include "content/child/worker_task_runner.h" #include "content/common/frame_messages.h" @@ -65,7 +66,6 @@ MSVC_POP_WARNING(); #include "third_party/WebKit/public/web/WebRuntimeFeatures.h" #include "third_party/WebKit/public/web/WebSecurityPolicy.h" #include "third_party/WebKit/public/web/WebView.h" -#include "third_party/WebKit/public/web/WebWorkerInfo.h" #include "v8/include/v8.h" #if defined(OS_WIN) @@ -468,6 +468,9 @@ void CefContentRendererClient::RenderThreadStarted() { // Cross-origin entries need to be added after WebKit is initialized. cross_origin_whitelist_entries_ = params.cross_origin_whitelist_entries; + pdf_print_client_.reset(new ChromePDFPrintClient()); + pdf::PPB_PDF_Impl::SetPrintClient(pdf_print_client_.get()); + // Notify the render process handler. CefRefPtr application = CefContentClient::Get()->application(); if (application.get()) { @@ -650,9 +653,9 @@ void CefContentRendererClient::DidCreateScriptContext( v8::Isolate* isolate = blink::mainThreadIsolate(); v8::HandleScope handle_scope(isolate); v8::Context::Scope scope(context); - WebCore::V8RecursionScope recursion_scope( + blink::V8RecursionScope recursion_scope( isolate, - WebCore::toExecutionContext(context)); + blink::toExecutionContext(context)); CefRefPtr contextPtr(new CefV8ContextImpl(isolate, context)); @@ -671,7 +674,7 @@ const void* CefContentRendererClient::CreatePPAPIInterface( #if defined(ENABLE_PLUGINS) // Used for in-process PDF plugin. if (interface_name == PPB_PDF_INTERFACE) - return PPB_PDF_Impl::GetInterface(); + return pdf::PPB_PDF_Impl::GetInterface(); #endif return NULL; } @@ -693,9 +696,9 @@ void CefContentRendererClient::WillReleaseScriptContext( v8::Isolate* isolate = blink::mainThreadIsolate(); v8::HandleScope handle_scope(isolate); v8::Context::Scope scope(context); - WebCore::V8RecursionScope recursion_scope( + blink::V8RecursionScope recursion_scope( isolate, - WebCore::toExecutionContext(context)); + blink::toExecutionContext(context)); CefRefPtr contextPtr( new CefV8ContextImpl(isolate, context)); @@ -746,7 +749,7 @@ void CefContentRendererClient::BrowserCreated( browsers_.insert(std::make_pair(render_view, browser)); new CefPrerendererClient(render_view); - new printing::PrintWebViewHelper(render_view); + new printing::PrintWebViewHelper(render_view, false, false); // Notify the render process handler. CefRefPtr application = CefContentClient::Get()->application(); diff --git a/libcef/renderer/content_renderer_client.h b/libcef/renderer/content_renderer_client.h index 62f9398a8..ef3872c6a 100644 --- a/libcef/renderer/content_renderer_client.h +++ b/libcef/renderer/content_renderer_client.h @@ -22,6 +22,7 @@ class CefRenderProcessObserver; struct Cef_CrossOriginWhiteListEntry_Params; +class ChromePDFPrintClient; class CefContentRendererClient : public content::ContentRendererClient, public base::MessageLoop::DestructionObserver { @@ -121,6 +122,8 @@ class CefContentRendererClient : public content::ContentRendererClient, typedef std::vector CrossOriginList; CrossOriginList cross_origin_whitelist_entries_; + scoped_ptr pdf_print_client_; + int devtools_agent_count_; int uncaught_exception_stack_size_; diff --git a/libcef/renderer/dom_event_impl.cc b/libcef/renderer/dom_event_impl.cc deleted file mode 100644 index e19232f23..000000000 --- a/libcef/renderer/dom_event_impl.cc +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights -// reserved. Use of this source code is governed by a BSD-style license that -// can be found in the LICENSE file. - -#include "libcef/renderer/dom_event_impl.h" -#include "libcef/renderer/dom_document_impl.h" -#include "libcef/renderer/thread_util.h" - -#include "base/logging.h" -#include "third_party/WebKit/public/platform/WebString.h" -#include "third_party/WebKit/public/web/WebDOMEvent.h" - -using blink::WebDOMEvent; -using blink::WebString; - - -CefDOMEventImpl::CefDOMEventImpl(CefRefPtr document, - const blink::WebDOMEvent& event) - : document_(document), - event_(event) { - DCHECK(!event_.isNull()); -} - -CefDOMEventImpl::~CefDOMEventImpl() { - CEF_REQUIRE_RT(); - DCHECK(event_.isNull()); -} - -CefString CefDOMEventImpl::GetType() { - CefString str; - if (!VerifyContext()) - return str; - - const WebString& type = event_.type(); - if (!type.isNull()) - str = type; - - return str; -} - -CefDOMEventImpl::Category CefDOMEventImpl::GetCategory() { - if (!VerifyContext()) - return DOM_EVENT_CATEGORY_UNKNOWN; - - int flags = 0; - if (event_.isUIEvent()) - flags |= DOM_EVENT_CATEGORY_UI; - if (event_.isMouseEvent()) - flags |= DOM_EVENT_CATEGORY_MOUSE; - if (event_.isMutationEvent()) - flags |= DOM_EVENT_CATEGORY_MUTATION; - if (event_.isKeyboardEvent()) - flags |= DOM_EVENT_CATEGORY_KEYBOARD; - if (event_.isTextEvent()) - flags |= DOM_EVENT_CATEGORY_TEXT; - if (event_.isCompositionEvent()) - flags |= DOM_EVENT_CATEGORY_COMPOSITION; - if (event_.isDragEvent()) - flags |= DOM_EVENT_CATEGORY_DRAG; - if (event_.isClipboardEvent()) - flags |= DOM_EVENT_CATEGORY_CLIPBOARD; - if (event_.isMessageEvent()) - flags |= DOM_EVENT_CATEGORY_MESSAGE; - if (event_.isWheelEvent()) - flags |= DOM_EVENT_CATEGORY_WHEEL; - if (event_.isBeforeTextInsertedEvent()) - flags |= DOM_EVENT_CATEGORY_BEFORE_TEXT_INSERTED; - if (event_.isOverflowEvent()) - flags |= DOM_EVENT_CATEGORY_OVERFLOW; - if (event_.isPageTransitionEvent()) - flags |= DOM_EVENT_CATEGORY_PAGE_TRANSITION; - if (event_.isPopStateEvent()) - flags |= DOM_EVENT_CATEGORY_POPSTATE; - if (event_.isProgressEvent()) - flags |= DOM_EVENT_CATEGORY_PROGRESS; - if (event_.isXMLHttpRequestProgressEvent()) - flags |= DOM_EVENT_CATEGORY_XMLHTTPREQUEST_PROGRESS; - - return static_cast(flags); -} - -CefDOMEventImpl::Phase CefDOMEventImpl::GetPhase() { - if (!VerifyContext()) - return DOM_EVENT_PHASE_UNKNOWN; - - switch (event_.eventPhase()) { - case WebDOMEvent::CapturingPhase: - return DOM_EVENT_PHASE_CAPTURING; - case WebDOMEvent::AtTarget: - return DOM_EVENT_PHASE_AT_TARGET; - case WebDOMEvent::BubblingPhase: - return DOM_EVENT_PHASE_BUBBLING; - } - - return DOM_EVENT_PHASE_UNKNOWN; -} - -bool CefDOMEventImpl::CanBubble() { - if (!VerifyContext()) - return false; - - return event_.bubbles(); -} - -bool CefDOMEventImpl::CanCancel() { - if (!VerifyContext()) - return false; - - return event_.cancelable(); -} - -CefRefPtr CefDOMEventImpl::GetDocument() { - if (!VerifyContext()) - return NULL; - - return document_.get(); -} - -CefRefPtr CefDOMEventImpl::GetTarget() { - if (!VerifyContext()) - return NULL; - - return document_->GetOrCreateNode(event_.target()); -} - -CefRefPtr CefDOMEventImpl::GetCurrentTarget() { - if (!VerifyContext()) - return NULL; - - return document_->GetOrCreateNode(event_.currentTarget()); -} - -void CefDOMEventImpl::Detach() { - // If you hit this assert it means that you are keeping references to this - // event object beyond the valid scope. - DCHECK(HasOneRef()); - - document_ = NULL; - event_.assign(WebDOMEvent()); -} - -bool CefDOMEventImpl::VerifyContext() { - if (!document_.get()) { - NOTREACHED(); - return false; - } - if (!document_->VerifyContext()) - return false; - if (event_.isNull()) { - NOTREACHED(); - return false; - } - return true; -} diff --git a/libcef/renderer/dom_event_impl.h b/libcef/renderer/dom_event_impl.h deleted file mode 100644 index fd5c1c008..000000000 --- a/libcef/renderer/dom_event_impl.h +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights -// reserved. Use of this source code is governed by a BSD-style license that -// can be found in the LICENSE file. - -#ifndef CEF_LIBCEF_DOM_EVENT_IMPL_H_ -#define CEF_LIBCEF_DOM_EVENT_IMPL_H_ -#pragma once - -#include "include/cef_dom.h" -#include "third_party/WebKit/public/web/WebDOMEvent.h" - -class CefDOMDocumentImpl; - -class CefDOMEventImpl : public CefDOMEvent { - public: - CefDOMEventImpl(CefRefPtr document, - const blink::WebDOMEvent& event); - virtual ~CefDOMEventImpl(); - - // CefDOMEvent methods. - virtual CefString GetType() OVERRIDE; - virtual Category GetCategory() OVERRIDE; - virtual Phase GetPhase() OVERRIDE; - virtual bool CanBubble() OVERRIDE; - virtual bool CanCancel() OVERRIDE; - virtual CefRefPtr GetDocument() OVERRIDE; - virtual CefRefPtr GetTarget() OVERRIDE; - virtual CefRefPtr GetCurrentTarget() OVERRIDE; - - // Will be called from CefDOMEventListenerWrapper::handleEvent(). - void Detach(); - - // Verify that the object exists and is being accessed on the UI thread. - bool VerifyContext(); - - protected: - CefRefPtr document_; - blink::WebDOMEvent event_; - - IMPLEMENT_REFCOUNTING(CefDOMEventImpl); -}; - -#endif // CEF_LIBCEF_DOM_EVENT_IMPL_H_ diff --git a/libcef/renderer/dom_node_impl.cc b/libcef/renderer/dom_node_impl.cc index 359855bec..6d4f3502e 100644 --- a/libcef/renderer/dom_node_impl.cc +++ b/libcef/renderer/dom_node_impl.cc @@ -6,7 +6,6 @@ #include "libcef/common/tracker.h" #include "libcef/renderer/browser_impl.h" #include "libcef/renderer/dom_document_impl.h" -#include "libcef/renderer/dom_event_impl.h" #include "libcef/renderer/thread_util.h" #include "libcef/renderer/webkit_glue.h" @@ -16,7 +15,6 @@ #include "third_party/WebKit/public/platform/WebString.h" #include "third_party/WebKit/public/web/WebDocument.h" #include "third_party/WebKit/public/web/WebDOMEvent.h" -#include "third_party/WebKit/public/web/WebDOMEventListener.h" #include "third_party/WebKit/public/web/WebElement.h" #include "third_party/WebKit/public/web/WebFrame.h" #include "third_party/WebKit/public/web/WebFormControlElement.h" @@ -26,7 +24,6 @@ using blink::WebDocument; using blink::WebDOMEvent; -using blink::WebDOMEventListener; using blink::WebElement; using blink::WebFrame; using blink::WebFormControlElement; @@ -35,55 +32,6 @@ using blink::WebNode; using blink::WebSelectElement; using blink::WebString; -namespace { - -// Wrapper implementation for WebDOMEventListener. -class CefDOMEventListenerWrapper : public WebDOMEventListener, - public CefTrackNode { - public: - CefDOMEventListenerWrapper(CefBrowserImpl* browser, WebFrame* frame, - CefRefPtr listener) - : browser_(browser), - frame_(frame), - listener_(listener) { - // Cause this object to be deleted immediately before the frame is closed. - browser->AddFrameObject(webkit_glue::GetIdentifier(frame), this); - } - virtual ~CefDOMEventListenerWrapper() { - CEF_REQUIRE_RT(); - } - - virtual void handleEvent(const WebDOMEvent& event) { - CefRefPtr documentImpl; - CefRefPtr eventImpl; - - if (!event.isNull()) { - // Create CefDOMDocumentImpl and CefDOMEventImpl objects that are valid - // only for the scope of this method. - const WebDocument& document = frame_->document(); - if (!document.isNull()) { - documentImpl = new CefDOMDocumentImpl(browser_, frame_); - eventImpl = new CefDOMEventImpl(documentImpl, event); - } - } - - listener_->HandleEvent(eventImpl.get()); - - if (eventImpl.get()) - eventImpl->Detach(); - if (documentImpl.get()) - documentImpl->Detach(); - } - - protected: - CefBrowserImpl* browser_; - WebFrame* frame_; - CefRefPtr listener_; -}; - -} // namespace - - CefDOMNodeImpl::CefDOMNodeImpl(CefRefPtr document, const blink::WebNode& node) : document_(document), @@ -331,18 +279,6 @@ CefRefPtr CefDOMNodeImpl::GetLastChild() { return document_->GetOrCreateNode(node_.lastChild()); } -void CefDOMNodeImpl::AddEventListener(const CefString& eventType, - CefRefPtr listener, - bool useCapture) { - if (!VerifyContext()) - return; - - node_.addEventListener(base::string16(eventType), - new CefDOMEventListenerWrapper(document_->GetBrowser(), - document_->GetFrame(), listener), - useCapture); -} - CefString CefDOMNodeImpl::GetElementTagName() { CefString str; if (!VerifyContext()) diff --git a/libcef/renderer/dom_node_impl.h b/libcef/renderer/dom_node_impl.h index 2cab762a4..15e591f00 100644 --- a/libcef/renderer/dom_node_impl.h +++ b/libcef/renderer/dom_node_impl.h @@ -36,9 +36,6 @@ class CefDOMNodeImpl : public CefDOMNode { virtual bool HasChildren() OVERRIDE; virtual CefRefPtr GetFirstChild() OVERRIDE; virtual CefRefPtr GetLastChild() OVERRIDE; - virtual void AddEventListener(const CefString& eventType, - CefRefPtr listener, - bool useCapture) OVERRIDE; virtual CefString GetElementTagName() OVERRIDE; virtual bool HasElementAttributes() OVERRIDE; virtual bool HasElementAttribute(const CefString& attrName) OVERRIDE; diff --git a/libcef/renderer/v8_impl.cc b/libcef/renderer/v8_impl.cc index 7e15697c0..fd7143aab 100644 --- a/libcef/renderer/v8_impl.cc +++ b/libcef/renderer/v8_impl.cc @@ -17,8 +17,8 @@ MSVC_PUSH_WARNING_LEVEL(0); #include "core/frame/Frame.h" #include "core/frame/LocalFrame.h" #include "core/workers/WorkerGlobalScope.h" -#include "bindings/v8/ScriptController.h" -#include "bindings/v8/V8Binding.h" +#include "bindings/core/v8/ScriptController.h" +#include "bindings/core/v8/V8Binding.h" MSVC_POP_WARNING(); #undef FROM_HERE #undef LOG @@ -551,15 +551,15 @@ v8::Local CallV8Function(v8::Handle context, // Execute the function call using the ScriptController so that inspector // instrumentation works. if (CEF_CURRENTLY_ON_RT()) { - RefPtr frame = WebCore::toFrameIfNotDetached(context); + RefPtr frame = blink::toFrameIfNotDetached(context); DCHECK(frame); if (frame && - frame->script().canExecuteScripts(WebCore::AboutToExecuteScript)) { + frame->script().canExecuteScripts(blink::AboutToExecuteScript)) { func_rv = frame->script().callFunction(function, receiver, argc, args); } } else { - func_rv = WebCore::ScriptController::callFunction( - WebCore::toExecutionContext(context), + func_rv = blink::ScriptController::callFunction( + blink::toExecutionContext(context), function, receiver, argc, args, isolate); } @@ -888,7 +888,7 @@ bool CefV8ContextImpl::Enter() { v8::Isolate* isolate = handle_->isolate(); v8::HandleScope handle_scope(isolate); - WebCore::V8PerIsolateData::from(isolate)->incrementRecursionLevel(); + blink::V8PerIsolateData::from(isolate)->incrementRecursionLevel(); handle_->GetNewV8Handle()->Enter(); #ifndef NDEBUG ++enter_count_; @@ -904,7 +904,7 @@ bool CefV8ContextImpl::Exit() { DLOG_ASSERT(enter_count_ > 0); handle_->GetNewV8Handle()->Exit(); - WebCore::V8PerIsolateData::from(isolate)->decrementRecursionLevel(); + blink::V8PerIsolateData::from(isolate)->decrementRecursionLevel(); #ifndef NDEBUG --enter_count_; #endif @@ -1712,8 +1712,17 @@ bool CefV8ValueImpl::SetValue(const CefString& key, v8::TryCatch try_catch; try_catch.SetVerbose(true); - bool set = obj->Set(GetV8String(isolate, key), impl->GetV8Value(true), - static_cast(attribute)); + bool set; + // TODO(cef): This usage may not exactly match the previous implementation. + // Set will trigger interceptors and/or accessors whereas ForceSet will not. + // It might be better to split this functionality into separate methods. + if (attribute == V8_PROPERTY_ATTRIBUTE_NONE) { + set = obj->Set(GetV8String(isolate, key), impl->GetV8Value(true)); + } else { + set = obj->ForceSet(GetV8String(isolate, key), + impl->GetV8Value(true), + static_cast(attribute)); + } return (!HasCaught(try_catch) && set); } else { NOTREACHED() << "invalid input parameter"; diff --git a/libcef/renderer/webkit_glue.cc b/libcef/renderer/webkit_glue.cc index d24eecd75..dab5c2796 100644 --- a/libcef/renderer/webkit_glue.cc +++ b/libcef/renderer/webkit_glue.cc @@ -78,7 +78,7 @@ std::string DumpDocumentText(blink::WebFrame* frame) { } bool SetNodeValue(blink::WebNode& node, const blink::WebString& value) { - WebCore::Node* web_node = node.unwrap(); + blink::Node* web_node = node.unwrap(); web_node->setNodeValue(value); return true; } diff --git a/libcef/resources/grit_stub/grit/browser_resources.h b/libcef/resources/grit_stub/chrome/grit/browser_resources.h similarity index 100% rename from libcef/resources/grit_stub/grit/browser_resources.h rename to libcef/resources/grit_stub/chrome/grit/browser_resources.h diff --git a/libcef/resources/grit_stub/grit/generated_resources.h b/libcef/resources/grit_stub/chrome/grit/generated_resources.h similarity index 100% rename from libcef/resources/grit_stub/grit/generated_resources.h rename to libcef/resources/grit_stub/chrome/grit/generated_resources.h diff --git a/libcef_dll/cpptoc/domevent_cpptoc.cc b/libcef_dll/cpptoc/domevent_cpptoc.cc deleted file mode 100644 index dbe6220e2..000000000 --- a/libcef_dll/cpptoc/domevent_cpptoc.cc +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright (c) 2014 The Chromium Embedded Framework Authors. All rights -// reserved. Use of this source code is governed by a BSD-style license that -// can be found in the LICENSE file. -// -// --------------------------------------------------------------------------- -// -// This file was generated by the CEF translator tool. If making changes by -// hand only do so within the body of existing method and function -// implementations. See the translator.README.txt file in the tools directory -// for more information. -// - -#include "libcef_dll/cpptoc/domdocument_cpptoc.h" -#include "libcef_dll/cpptoc/domevent_cpptoc.h" -#include "libcef_dll/cpptoc/domnode_cpptoc.h" - - -// MEMBER FUNCTIONS - Body may be edited by hand. - -cef_string_userfree_t CEF_CALLBACK domevent_get_type( - struct _cef_domevent_t* self) { - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - DCHECK(self); - if (!self) - return NULL; - - // Execute - CefString _retval = CefDOMEventCppToC::Get(self)->GetType(); - - // Return type: string - return _retval.DetachToUserFree(); -} - -cef_dom_event_category_t CEF_CALLBACK domevent_get_category( - struct _cef_domevent_t* self) { - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - DCHECK(self); - if (!self) - return DOM_EVENT_CATEGORY_UNKNOWN; - - // Execute - cef_dom_event_category_t _retval = CefDOMEventCppToC::Get(self)->GetCategory( - ); - - // Return type: simple - return _retval; -} - -cef_dom_event_phase_t CEF_CALLBACK domevent_get_phase( - struct _cef_domevent_t* self) { - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - DCHECK(self); - if (!self) - return DOM_EVENT_PHASE_UNKNOWN; - - // Execute - cef_dom_event_phase_t _retval = CefDOMEventCppToC::Get(self)->GetPhase(); - - // Return type: simple - return _retval; -} - -int CEF_CALLBACK domevent_can_bubble(struct _cef_domevent_t* self) { - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - DCHECK(self); - if (!self) - return 0; - - // Execute - bool _retval = CefDOMEventCppToC::Get(self)->CanBubble(); - - // Return type: bool - return _retval; -} - -int CEF_CALLBACK domevent_can_cancel(struct _cef_domevent_t* self) { - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - DCHECK(self); - if (!self) - return 0; - - // Execute - bool _retval = CefDOMEventCppToC::Get(self)->CanCancel(); - - // Return type: bool - return _retval; -} - -cef_domdocument_t* CEF_CALLBACK domevent_get_document( - struct _cef_domevent_t* self) { - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - DCHECK(self); - if (!self) - return NULL; - - // Execute - CefRefPtr _retval = CefDOMEventCppToC::Get(self)->GetDocument( - ); - - // Return type: refptr_same - return CefDOMDocumentCppToC::Wrap(_retval); -} - -cef_domnode_t* CEF_CALLBACK domevent_get_target(struct _cef_domevent_t* self) { - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - DCHECK(self); - if (!self) - return NULL; - - // Execute - CefRefPtr _retval = CefDOMEventCppToC::Get(self)->GetTarget(); - - // Return type: refptr_same - return CefDOMNodeCppToC::Wrap(_retval); -} - -cef_domnode_t* CEF_CALLBACK domevent_get_current_target( - struct _cef_domevent_t* self) { - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - DCHECK(self); - if (!self) - return NULL; - - // Execute - CefRefPtr _retval = CefDOMEventCppToC::Get( - self)->GetCurrentTarget(); - - // Return type: refptr_same - return CefDOMNodeCppToC::Wrap(_retval); -} - - -// CONSTRUCTOR - Do not edit by hand. - -CefDOMEventCppToC::CefDOMEventCppToC(CefDOMEvent* cls) - : CefCppToC(cls) { - struct_.struct_.get_type = domevent_get_type; - struct_.struct_.get_category = domevent_get_category; - struct_.struct_.get_phase = domevent_get_phase; - struct_.struct_.can_bubble = domevent_can_bubble; - struct_.struct_.can_cancel = domevent_can_cancel; - struct_.struct_.get_document = domevent_get_document; - struct_.struct_.get_target = domevent_get_target; - struct_.struct_.get_current_target = domevent_get_current_target; -} - -#ifndef NDEBUG -template<> base::AtomicRefCount CefCppToC::DebugObjCt = 0; -#endif - diff --git a/libcef_dll/cpptoc/domevent_cpptoc.h b/libcef_dll/cpptoc/domevent_cpptoc.h deleted file mode 100644 index c041ed0a1..000000000 --- a/libcef_dll/cpptoc/domevent_cpptoc.h +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) 2014 The Chromium Embedded Framework Authors. All rights -// reserved. Use of this source code is governed by a BSD-style license that -// can be found in the LICENSE file. -// -// --------------------------------------------------------------------------- -// -// This file was generated by the CEF translator tool. If making changes by -// hand only do so within the body of existing method and function -// implementations. See the translator.README.txt file in the tools directory -// for more information. -// - -#ifndef CEF_LIBCEF_DLL_CPPTOC_DOMEVENT_CPPTOC_H_ -#define CEF_LIBCEF_DLL_CPPTOC_DOMEVENT_CPPTOC_H_ -#pragma once - -#ifndef BUILDING_CEF_SHARED -#pragma message("Warning: "__FILE__" may be accessed DLL-side only") -#else // BUILDING_CEF_SHARED - -#include "include/cef_dom.h" -#include "include/capi/cef_dom_capi.h" -#include "libcef_dll/cpptoc/cpptoc.h" - -// Wrap a C++ class with a C structure. -// This class may be instantiated and accessed DLL-side only. -class CefDOMEventCppToC - : public CefCppToC { - public: - explicit CefDOMEventCppToC(CefDOMEvent* cls); - virtual ~CefDOMEventCppToC() {} -}; - -#endif // BUILDING_CEF_SHARED -#endif // CEF_LIBCEF_DLL_CPPTOC_DOMEVENT_CPPTOC_H_ - diff --git a/libcef_dll/cpptoc/domevent_listener_cpptoc.cc b/libcef_dll/cpptoc/domevent_listener_cpptoc.cc deleted file mode 100644 index 6065991ec..000000000 --- a/libcef_dll/cpptoc/domevent_listener_cpptoc.cc +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) 2014 The Chromium Embedded Framework Authors. All rights -// reserved. Use of this source code is governed by a BSD-style license that -// can be found in the LICENSE file. -// -// --------------------------------------------------------------------------- -// -// This file was generated by the CEF translator tool. If making changes by -// hand only do so within the body of existing method and function -// implementations. See the translator.README.txt file in the tools directory -// for more information. -// - -#include "libcef_dll/cpptoc/domevent_listener_cpptoc.h" -#include "libcef_dll/ctocpp/domevent_ctocpp.h" - - -// MEMBER FUNCTIONS - Body may be edited by hand. - -void CEF_CALLBACK domevent_listener_handle_event( - struct _cef_domevent_listener_t* self, cef_domevent_t* event) { - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - DCHECK(self); - if (!self) - return; - // Verify param: event; type: refptr_diff - DCHECK(event); - if (!event) - return; - - // Execute - CefDOMEventListenerCppToC::Get(self)->HandleEvent( - CefDOMEventCToCpp::Wrap(event)); -} - - -// CONSTRUCTOR - Do not edit by hand. - -CefDOMEventListenerCppToC::CefDOMEventListenerCppToC(CefDOMEventListener* cls) - : CefCppToC(cls) { - struct_.struct_.handle_event = domevent_listener_handle_event; -} - -#ifndef NDEBUG -template<> base::AtomicRefCount CefCppToC::DebugObjCt = 0; -#endif - diff --git a/libcef_dll/cpptoc/domevent_listener_cpptoc.h b/libcef_dll/cpptoc/domevent_listener_cpptoc.h deleted file mode 100644 index 5f63c4e97..000000000 --- a/libcef_dll/cpptoc/domevent_listener_cpptoc.h +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) 2014 The Chromium Embedded Framework Authors. All rights -// reserved. Use of this source code is governed by a BSD-style license that -// can be found in the LICENSE file. -// -// --------------------------------------------------------------------------- -// -// This file was generated by the CEF translator tool. If making changes by -// hand only do so within the body of existing method and function -// implementations. See the translator.README.txt file in the tools directory -// for more information. -// - -#ifndef CEF_LIBCEF_DLL_CPPTOC_DOMEVENT_LISTENER_CPPTOC_H_ -#define CEF_LIBCEF_DLL_CPPTOC_DOMEVENT_LISTENER_CPPTOC_H_ -#pragma once - -#ifndef USING_CEF_SHARED -#pragma message("Warning: "__FILE__" may be accessed wrapper-side only") -#else // USING_CEF_SHARED - -#include "include/cef_dom.h" -#include "include/capi/cef_dom_capi.h" -#include "libcef_dll/cpptoc/cpptoc.h" - -// Wrap a C++ class with a C structure. -// This class may be instantiated and accessed wrapper-side only. -class CefDOMEventListenerCppToC - : public CefCppToC { - public: - explicit CefDOMEventListenerCppToC(CefDOMEventListener* cls); - virtual ~CefDOMEventListenerCppToC() {} -}; - -#endif // USING_CEF_SHARED -#endif // CEF_LIBCEF_DLL_CPPTOC_DOMEVENT_LISTENER_CPPTOC_H_ - diff --git a/libcef_dll/cpptoc/domnode_cpptoc.cc b/libcef_dll/cpptoc/domnode_cpptoc.cc index 754d44646..825e830f8 100644 --- a/libcef_dll/cpptoc/domnode_cpptoc.cc +++ b/libcef_dll/cpptoc/domnode_cpptoc.cc @@ -12,7 +12,6 @@ #include "libcef_dll/cpptoc/domdocument_cpptoc.h" #include "libcef_dll/cpptoc/domnode_cpptoc.h" -#include "libcef_dll/ctocpp/domevent_listener_ctocpp.h" #include "libcef_dll/transfer_util.h" @@ -294,30 +293,6 @@ struct _cef_domnode_t* CEF_CALLBACK domnode_get_last_child( return CefDOMNodeCppToC::Wrap(_retval); } -void CEF_CALLBACK domnode_add_event_listener(struct _cef_domnode_t* self, - const cef_string_t* eventType, struct _cef_domevent_listener_t* listener, - int useCapture) { - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - DCHECK(self); - if (!self) - return; - // Verify param: eventType; type: string_byref_const - DCHECK(eventType); - if (!eventType) - return; - // Verify param: listener; type: refptr_diff - DCHECK(listener); - if (!listener) - return; - - // Execute - CefDOMNodeCppToC::Get(self)->AddEventListener( - CefString(eventType), - CefDOMEventListenerCToCpp::Wrap(listener), - useCapture?true:false); -} - cef_string_userfree_t CEF_CALLBACK domnode_get_element_tag_name( struct _cef_domnode_t* self) { // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING @@ -476,7 +451,6 @@ CefDOMNodeCppToC::CefDOMNodeCppToC(CefDOMNode* cls) struct_.struct_.has_children = domnode_has_children; struct_.struct_.get_first_child = domnode_get_first_child; struct_.struct_.get_last_child = domnode_get_last_child; - struct_.struct_.add_event_listener = domnode_add_event_listener; struct_.struct_.get_element_tag_name = domnode_get_element_tag_name; struct_.struct_.has_element_attributes = domnode_has_element_attributes; struct_.struct_.has_element_attribute = domnode_has_element_attribute; diff --git a/libcef_dll/cpptoc/render_handler_cpptoc.cc b/libcef_dll/cpptoc/render_handler_cpptoc.cc index 203322453..602aa6a0f 100644 --- a/libcef_dll/cpptoc/render_handler_cpptoc.cc +++ b/libcef_dll/cpptoc/render_handler_cpptoc.cc @@ -315,23 +315,6 @@ void CEF_CALLBACK render_handler_update_drag_cursor( operation); } -void CEF_CALLBACK render_handler_on_scroll_offset_changed( - struct _cef_render_handler_t* self, cef_browser_t* browser) { - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - DCHECK(self); - if (!self) - return; - // Verify param: browser; type: refptr_diff - DCHECK(browser); - if (!browser) - return; - - // Execute - CefRenderHandlerCppToC::Get(self)->OnScrollOffsetChanged( - CefBrowserCToCpp::Wrap(browser)); -} - // CONSTRUCTOR - Do not edit by hand. @@ -348,8 +331,6 @@ CefRenderHandlerCppToC::CefRenderHandlerCppToC(CefRenderHandler* cls) struct_.struct_.on_cursor_change = render_handler_on_cursor_change; struct_.struct_.start_dragging = render_handler_start_dragging; struct_.struct_.update_drag_cursor = render_handler_update_drag_cursor; - struct_.struct_.on_scroll_offset_changed = - render_handler_on_scroll_offset_changed; } #ifndef NDEBUG diff --git a/libcef_dll/ctocpp/domevent_ctocpp.cc b/libcef_dll/ctocpp/domevent_ctocpp.cc deleted file mode 100644 index 2119ec486..000000000 --- a/libcef_dll/ctocpp/domevent_ctocpp.cc +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright (c) 2014 The Chromium Embedded Framework Authors. All rights -// reserved. Use of this source code is governed by a BSD-style license that -// can be found in the LICENSE file. -// -// --------------------------------------------------------------------------- -// -// This file was generated by the CEF translator tool. If making changes by -// hand only do so within the body of existing method and function -// implementations. See the translator.README.txt file in the tools directory -// for more information. -// - -#include "libcef_dll/ctocpp/domdocument_ctocpp.h" -#include "libcef_dll/ctocpp/domevent_ctocpp.h" -#include "libcef_dll/ctocpp/domnode_ctocpp.h" - - -// VIRTUAL METHODS - Body may be edited by hand. - -CefString CefDOMEventCToCpp::GetType() { - if (CEF_MEMBER_MISSING(struct_, get_type)) - return CefString(); - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - // Execute - cef_string_userfree_t _retval = struct_->get_type(struct_); - - // Return type: string - CefString _retvalStr; - _retvalStr.AttachToUserFree(_retval); - return _retvalStr; -} - -CefDOMEvent::Category CefDOMEventCToCpp::GetCategory() { - if (CEF_MEMBER_MISSING(struct_, get_category)) - return DOM_EVENT_CATEGORY_UNKNOWN; - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - // Execute - cef_dom_event_category_t _retval = struct_->get_category(struct_); - - // Return type: simple - return _retval; -} - -CefDOMEvent::Phase CefDOMEventCToCpp::GetPhase() { - if (CEF_MEMBER_MISSING(struct_, get_phase)) - return DOM_EVENT_PHASE_UNKNOWN; - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - // Execute - cef_dom_event_phase_t _retval = struct_->get_phase(struct_); - - // Return type: simple - return _retval; -} - -bool CefDOMEventCToCpp::CanBubble() { - if (CEF_MEMBER_MISSING(struct_, can_bubble)) - return false; - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - // Execute - int _retval = struct_->can_bubble(struct_); - - // Return type: bool - return _retval?true:false; -} - -bool CefDOMEventCToCpp::CanCancel() { - if (CEF_MEMBER_MISSING(struct_, can_cancel)) - return false; - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - // Execute - int _retval = struct_->can_cancel(struct_); - - // Return type: bool - return _retval?true:false; -} - -CefRefPtr CefDOMEventCToCpp::GetDocument() { - if (CEF_MEMBER_MISSING(struct_, get_document)) - return NULL; - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - // Execute - cef_domdocument_t* _retval = struct_->get_document(struct_); - - // Return type: refptr_same - return CefDOMDocumentCToCpp::Wrap(_retval); -} - -CefRefPtr CefDOMEventCToCpp::GetTarget() { - if (CEF_MEMBER_MISSING(struct_, get_target)) - return NULL; - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - // Execute - cef_domnode_t* _retval = struct_->get_target(struct_); - - // Return type: refptr_same - return CefDOMNodeCToCpp::Wrap(_retval); -} - -CefRefPtr CefDOMEventCToCpp::GetCurrentTarget() { - if (CEF_MEMBER_MISSING(struct_, get_current_target)) - return NULL; - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - // Execute - cef_domnode_t* _retval = struct_->get_current_target(struct_); - - // Return type: refptr_same - return CefDOMNodeCToCpp::Wrap(_retval); -} - - -#ifndef NDEBUG -template<> base::AtomicRefCount CefCToCpp::DebugObjCt = 0; -#endif - diff --git a/libcef_dll/ctocpp/domevent_ctocpp.h b/libcef_dll/ctocpp/domevent_ctocpp.h deleted file mode 100644 index 6b03c9c29..000000000 --- a/libcef_dll/ctocpp/domevent_ctocpp.h +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) 2014 The Chromium Embedded Framework Authors. All rights -// reserved. Use of this source code is governed by a BSD-style license that -// can be found in the LICENSE file. -// -// --------------------------------------------------------------------------- -// -// This file was generated by the CEF translator tool. If making changes by -// hand only do so within the body of existing method and function -// implementations. See the translator.README.txt file in the tools directory -// for more information. -// - -#ifndef CEF_LIBCEF_DLL_CTOCPP_DOMEVENT_CTOCPP_H_ -#define CEF_LIBCEF_DLL_CTOCPP_DOMEVENT_CTOCPP_H_ -#pragma once - -#ifndef USING_CEF_SHARED -#pragma message("Warning: "__FILE__" may be accessed wrapper-side only") -#else // USING_CEF_SHARED - -#include "include/cef_dom.h" -#include "include/capi/cef_dom_capi.h" -#include "libcef_dll/ctocpp/ctocpp.h" - -// Wrap a C structure with a C++ class. -// This class may be instantiated and accessed wrapper-side only. -class CefDOMEventCToCpp - : public CefCToCpp { - public: - explicit CefDOMEventCToCpp(cef_domevent_t* str) - : CefCToCpp(str) {} - virtual ~CefDOMEventCToCpp() {} - - // CefDOMEvent methods - virtual CefString GetType() OVERRIDE; - virtual Category GetCategory() OVERRIDE; - virtual Phase GetPhase() OVERRIDE; - virtual bool CanBubble() OVERRIDE; - virtual bool CanCancel() OVERRIDE; - virtual CefRefPtr GetDocument() OVERRIDE; - virtual CefRefPtr GetTarget() OVERRIDE; - virtual CefRefPtr GetCurrentTarget() OVERRIDE; -}; - -#endif // USING_CEF_SHARED -#endif // CEF_LIBCEF_DLL_CTOCPP_DOMEVENT_CTOCPP_H_ - diff --git a/libcef_dll/ctocpp/domevent_listener_ctocpp.cc b/libcef_dll/ctocpp/domevent_listener_ctocpp.cc deleted file mode 100644 index cabb3dd62..000000000 --- a/libcef_dll/ctocpp/domevent_listener_ctocpp.cc +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) 2014 The Chromium Embedded Framework Authors. All rights -// reserved. Use of this source code is governed by a BSD-style license that -// can be found in the LICENSE file. -// -// --------------------------------------------------------------------------- -// -// This file was generated by the CEF translator tool. If making changes by -// hand only do so within the body of existing method and function -// implementations. See the translator.README.txt file in the tools directory -// for more information. -// - -#include "libcef_dll/cpptoc/domevent_cpptoc.h" -#include "libcef_dll/ctocpp/domevent_listener_ctocpp.h" - - -// VIRTUAL METHODS - Body may be edited by hand. - -void CefDOMEventListenerCToCpp::HandleEvent(CefRefPtr event) { - if (CEF_MEMBER_MISSING(struct_, handle_event)) - return; - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - // Verify param: event; type: refptr_diff - DCHECK(event.get()); - if (!event.get()) - return; - - // Execute - struct_->handle_event(struct_, - CefDOMEventCppToC::Wrap(event)); -} - - -#ifndef NDEBUG -template<> base::AtomicRefCount CefCToCpp::DebugObjCt = 0; -#endif - diff --git a/libcef_dll/ctocpp/domevent_listener_ctocpp.h b/libcef_dll/ctocpp/domevent_listener_ctocpp.h deleted file mode 100644 index 3721e513f..000000000 --- a/libcef_dll/ctocpp/domevent_listener_ctocpp.h +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) 2014 The Chromium Embedded Framework Authors. All rights -// reserved. Use of this source code is governed by a BSD-style license that -// can be found in the LICENSE file. -// -// --------------------------------------------------------------------------- -// -// This file was generated by the CEF translator tool. If making changes by -// hand only do so within the body of existing method and function -// implementations. See the translator.README.txt file in the tools directory -// for more information. -// - -#ifndef CEF_LIBCEF_DLL_CTOCPP_DOMEVENT_LISTENER_CTOCPP_H_ -#define CEF_LIBCEF_DLL_CTOCPP_DOMEVENT_LISTENER_CTOCPP_H_ -#pragma once - -#ifndef BUILDING_CEF_SHARED -#pragma message("Warning: "__FILE__" may be accessed DLL-side only") -#else // BUILDING_CEF_SHARED - -#include "include/cef_dom.h" -#include "include/capi/cef_dom_capi.h" -#include "libcef_dll/ctocpp/ctocpp.h" - -// Wrap a C structure with a C++ class. -// This class may be instantiated and accessed DLL-side only. -class CefDOMEventListenerCToCpp - : public CefCToCpp { - public: - explicit CefDOMEventListenerCToCpp(cef_domevent_listener_t* str) - : CefCToCpp(str) {} - virtual ~CefDOMEventListenerCToCpp() {} - - // CefDOMEventListener methods - virtual void HandleEvent(CefRefPtr event) OVERRIDE; -}; - -#endif // BUILDING_CEF_SHARED -#endif // CEF_LIBCEF_DLL_CTOCPP_DOMEVENT_LISTENER_CTOCPP_H_ - diff --git a/libcef_dll/ctocpp/domnode_ctocpp.cc b/libcef_dll/ctocpp/domnode_ctocpp.cc index 1ef950804..79e4fb7a9 100644 --- a/libcef_dll/ctocpp/domnode_ctocpp.cc +++ b/libcef_dll/ctocpp/domnode_ctocpp.cc @@ -10,7 +10,6 @@ // for more information. // -#include "libcef_dll/cpptoc/domevent_listener_cpptoc.h" #include "libcef_dll/ctocpp/domdocument_ctocpp.h" #include "libcef_dll/ctocpp/domnode_ctocpp.h" #include "libcef_dll/transfer_util.h" @@ -273,29 +272,6 @@ CefRefPtr CefDOMNodeCToCpp::GetLastChild() { return CefDOMNodeCToCpp::Wrap(_retval); } -void CefDOMNodeCToCpp::AddEventListener(const CefString& eventType, - CefRefPtr listener, bool useCapture) { - if (CEF_MEMBER_MISSING(struct_, add_event_listener)) - return; - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - // Verify param: eventType; type: string_byref_const - DCHECK(!eventType.empty()); - if (eventType.empty()) - return; - // Verify param: listener; type: refptr_diff - DCHECK(listener.get()); - if (!listener.get()) - return; - - // Execute - struct_->add_event_listener(struct_, - eventType.GetStruct(), - CefDOMEventListenerCppToC::Wrap(listener), - useCapture); -} - CefString CefDOMNodeCToCpp::GetElementTagName() { if (CEF_MEMBER_MISSING(struct_, get_element_tag_name)) return CefString(); diff --git a/libcef_dll/ctocpp/domnode_ctocpp.h b/libcef_dll/ctocpp/domnode_ctocpp.h index 6cb95319b..dd0365bd1 100644 --- a/libcef_dll/ctocpp/domnode_ctocpp.h +++ b/libcef_dll/ctocpp/domnode_ctocpp.h @@ -50,8 +50,6 @@ class CefDOMNodeCToCpp virtual bool HasChildren() OVERRIDE; virtual CefRefPtr GetFirstChild() OVERRIDE; virtual CefRefPtr GetLastChild() OVERRIDE; - virtual void AddEventListener(const CefString& eventType, - CefRefPtr listener, bool useCapture) OVERRIDE; virtual CefString GetElementTagName() OVERRIDE; virtual bool HasElementAttributes() OVERRIDE; virtual bool HasElementAttribute(const CefString& attrName) OVERRIDE; diff --git a/libcef_dll/ctocpp/render_handler_ctocpp.cc b/libcef_dll/ctocpp/render_handler_ctocpp.cc index 3b46f9d14..cf5290537 100644 --- a/libcef_dll/ctocpp/render_handler_ctocpp.cc +++ b/libcef_dll/ctocpp/render_handler_ctocpp.cc @@ -250,23 +250,6 @@ void CefRenderHandlerCToCpp::UpdateDragCursor(CefRefPtr browser, operation); } -void CefRenderHandlerCToCpp::OnScrollOffsetChanged( - CefRefPtr browser) { - if (CEF_MEMBER_MISSING(struct_, on_scroll_offset_changed)) - return; - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - // Verify param: browser; type: refptr_diff - DCHECK(browser.get()); - if (!browser.get()) - return; - - // Execute - struct_->on_scroll_offset_changed(struct_, - CefBrowserCppToC::Wrap(browser)); -} - #ifndef NDEBUG template<> base::AtomicRefCount CefCToCpp browser, DragOperation operation) OVERRIDE; - virtual void OnScrollOffsetChanged(CefRefPtr browser) OVERRIDE; }; #endif // BUILDING_CEF_SHARED diff --git a/libcef_dll/libcef_dll.cc b/libcef_dll/libcef_dll.cc index 2c8544c1e..0ba508ced 100644 --- a/libcef_dll/libcef_dll.cc +++ b/libcef_dll/libcef_dll.cc @@ -42,7 +42,6 @@ #include "libcef_dll/cpptoc/command_line_cpptoc.h" #include "libcef_dll/cpptoc/context_menu_params_cpptoc.h" #include "libcef_dll/cpptoc/domdocument_cpptoc.h" -#include "libcef_dll/cpptoc/domevent_cpptoc.h" #include "libcef_dll/cpptoc/domnode_cpptoc.h" #include "libcef_dll/cpptoc/dictionary_value_cpptoc.h" #include "libcef_dll/cpptoc/download_item_cpptoc.h" @@ -77,7 +76,6 @@ #include "libcef_dll/ctocpp/completion_callback_ctocpp.h" #include "libcef_dll/ctocpp/context_menu_handler_ctocpp.h" #include "libcef_dll/ctocpp/cookie_visitor_ctocpp.h" -#include "libcef_dll/ctocpp/domevent_listener_ctocpp.h" #include "libcef_dll/ctocpp/domvisitor_ctocpp.h" #include "libcef_dll/ctocpp/dialog_handler_ctocpp.h" #include "libcef_dll/ctocpp/display_handler_ctocpp.h" @@ -197,8 +195,6 @@ CEF_EXPORT void cef_shutdown() { DCHECK(base::AtomicRefCountIsZero(&CefContextMenuParamsCppToC::DebugObjCt)); DCHECK(base::AtomicRefCountIsZero(&CefCookieVisitorCToCpp::DebugObjCt)); DCHECK(base::AtomicRefCountIsZero(&CefDOMDocumentCppToC::DebugObjCt)); - DCHECK(base::AtomicRefCountIsZero(&CefDOMEventCppToC::DebugObjCt)); - DCHECK(base::AtomicRefCountIsZero(&CefDOMEventListenerCToCpp::DebugObjCt)); DCHECK(base::AtomicRefCountIsZero(&CefDOMNodeCppToC::DebugObjCt)); DCHECK(base::AtomicRefCountIsZero(&CefDOMVisitorCToCpp::DebugObjCt)); DCHECK(base::AtomicRefCountIsZero(&CefDialogHandlerCToCpp::DebugObjCt)); diff --git a/libcef_dll/wrapper/cef_browser_info_map.h b/libcef_dll/wrapper/cef_browser_info_map.h index c2a82d6c3..9cf1ab486 100644 --- a/libcef_dll/wrapper/cef_browser_info_map.h +++ b/libcef_dll/wrapper/cef_browser_info_map.h @@ -111,7 +111,7 @@ class CefBrowserInfoMap { if (browser_info_map_.empty()) return; - bool remove, keepgoing; + bool remove, keepgoing = true; typename BrowserInfoMap::iterator it_browser = browser_info_map_.begin(); while (it_browser != browser_info_map_.end()) { diff --git a/libcef_dll/wrapper/libcef_dll_wrapper.cc b/libcef_dll/wrapper/libcef_dll_wrapper.cc index 00d32a42b..99e5ad004 100644 --- a/libcef_dll/wrapper/libcef_dll_wrapper.cc +++ b/libcef_dll/wrapper/libcef_dll_wrapper.cc @@ -38,7 +38,6 @@ #include "libcef_dll/cpptoc/completion_callback_cpptoc.h" #include "libcef_dll/cpptoc/context_menu_handler_cpptoc.h" #include "libcef_dll/cpptoc/cookie_visitor_cpptoc.h" -#include "libcef_dll/cpptoc/domevent_listener_cpptoc.h" #include "libcef_dll/cpptoc/domvisitor_cpptoc.h" #include "libcef_dll/cpptoc/dialog_handler_cpptoc.h" #include "libcef_dll/cpptoc/display_handler_cpptoc.h" @@ -79,7 +78,6 @@ #include "libcef_dll/ctocpp/command_line_ctocpp.h" #include "libcef_dll/ctocpp/context_menu_params_ctocpp.h" #include "libcef_dll/ctocpp/domdocument_ctocpp.h" -#include "libcef_dll/ctocpp/domevent_ctocpp.h" #include "libcef_dll/ctocpp/domnode_ctocpp.h" #include "libcef_dll/ctocpp/dictionary_value_ctocpp.h" #include "libcef_dll/ctocpp/download_item_ctocpp.h" @@ -189,8 +187,6 @@ CEF_GLOBAL void CefShutdown() { DCHECK(base::AtomicRefCountIsZero(&CefContextMenuParamsCToCpp::DebugObjCt)); DCHECK(base::AtomicRefCountIsZero(&CefCookieVisitorCppToC::DebugObjCt)); DCHECK(base::AtomicRefCountIsZero(&CefDOMDocumentCToCpp::DebugObjCt)); - DCHECK(base::AtomicRefCountIsZero(&CefDOMEventCToCpp::DebugObjCt)); - DCHECK(base::AtomicRefCountIsZero(&CefDOMEventListenerCppToC::DebugObjCt)); DCHECK(base::AtomicRefCountIsZero(&CefDOMNodeCToCpp::DebugObjCt)); DCHECK(base::AtomicRefCountIsZero(&CefDOMVisitorCppToC::DebugObjCt)); DCHECK(base::AtomicRefCountIsZero(&CefDialogHandlerCppToC::DebugObjCt)); diff --git a/patch/patch.cfg b/patch/patch.cfg index 804cce488..f6715f058 100644 --- a/patch/patch.cfg +++ b/patch/patch.cfg @@ -35,12 +35,6 @@ patches = [ 'name': 'message_loop_443', 'path': '../base/message_loop/', }, - { - # Disable event type assertion in WebNode::addEventListener. - # http://code.google.com/p/chromiumembedded/issues/detail?id=933 - 'name': 'webkit_933', - 'path': '../third_party/WebKit/Source/web/', - }, { # Fix ninja output for localization directories on OS X. # http://code.google.com/p/gyp/issues/detail?id=331 @@ -98,13 +92,6 @@ patches = [ 'name': 'prefs_content_1161', 'path': '../content/', }, - { - # Allow customization of the WebView background color. - # http://code.google.com/p/chromiumembedded/issues/detail?id=1161 - # https://codereview.chromium.org/228603007/ - 'name': 'prefs_webkit_1161', - 'path': '../webkit/', - }, { # Revert Blink revision 177068 changes due to _web_drawFocusRingWithFrame # unrecognized selector error during offscreen rendering of popups. @@ -118,6 +105,13 @@ patches = [ 'name': 'ui_dragdrop_355390', 'path': '../ui/base/dragdrop/', }, + { + # Fix printing on Windows. Reverts portions of the below changes. + # https://codereview.chromium.org/480303002 + # https://codereview.chromium.org/488853002 + 'name': 'printing_win', + 'path': '../', + }, { # Disable scollbar bounce and overlay on OS X. # http://code.google.com/p/chromiumembedded/issues/detail?id=364 diff --git a/patch/patches/browser_web_contents_1257.patch b/patch/patches/browser_web_contents_1257.patch index ebc4f5b03..c0413a9d3 100644 --- a/patch/patches/browser_web_contents_1257.patch +++ b/patch/patches/browser_web_contents_1257.patch @@ -1,25 +1,18 @@ -Index: web_contents_impl.cc -=================================================================== ---- web_contents_impl.cc (revision 280796) -+++ web_contents_impl.cc (working copy) -@@ -1073,22 +1073,29 @@ +diff --git web_contents_impl.cc web_contents_impl.cc +index f1a9d02..243bbc8 100644 +--- web_contents_impl.cc ++++ web_contents_impl.cc +@@ -1147,22 +1147,29 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) { params.browser_context, params.site_instance, params.routing_id, params.main_frame_routing_id); - WebContentsViewDelegate* delegate = - GetContentClient()->browser()->GetWebContentsViewDelegate(this); -+ if (params.view && params.delegate_view) { -+ view_.reset(params.view); -+ render_view_host_delegate_view_ = params.delegate_view; -+ } - +- - if (browser_plugin_guest_) { - scoped_ptr platform_view(CreateWebContentsView( - this, delegate, &render_view_host_delegate_view_)); -+ if (!view_) { -+ WebContentsViewDelegate* delegate = -+ GetContentClient()->browser()->GetWebContentsViewDelegate(this); - +- - WebContentsViewGuest* rv = new WebContentsViewGuest( - this, browser_plugin_guest_.get(), platform_view.Pass(), - render_view_host_delegate_view_); @@ -29,6 +22,15 @@ Index: web_contents_impl.cc - // Regular WebContentsView. - view_.reset(CreateWebContentsView( - this, delegate, &render_view_host_delegate_view_)); ++ if (params.view && params.delegate_view) { ++ view_.reset(params.view); ++ render_view_host_delegate_view_ = params.delegate_view; ++ } ++ ++ if (!view_) { ++ WebContentsViewDelegate* delegate = ++ GetContentClient()->browser()->GetWebContentsViewDelegate(this); ++ + if (browser_plugin_guest_) { + scoped_ptr platform_view(CreateWebContentsView( + this, delegate, &render_view_host_delegate_view_)); @@ -46,7 +48,7 @@ Index: web_contents_impl.cc } CHECK(render_view_host_delegate_view_); CHECK(view_.get()); -@@ -1407,6 +1414,9 @@ +@@ -1479,6 +1486,9 @@ void WebContentsImpl::CreateNewWindow( static_cast(session_storage_namespace); CHECK(session_storage_namespace_impl->IsFromContext(dom_storage_context)); @@ -56,7 +58,7 @@ Index: web_contents_impl.cc if (delegate_ && !delegate_->ShouldCreateWebContents(this, route_id, -@@ -1414,7 +1424,9 @@ +@@ -1486,7 +1496,9 @@ void WebContentsImpl::CreateNewWindow( params.frame_name, params.target_url, partition_id, @@ -67,7 +69,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 -@@ -1434,6 +1446,8 @@ +@@ -1506,6 +1518,8 @@ void WebContentsImpl::CreateNewWindow( 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 d0322c69c..13013676b 100644 --- a/patch/patches/build.patch +++ b/patch/patches/build.patch @@ -1,37 +1,7 @@ -Index: mac/strip_save_dsym -=================================================================== ---- mac/strip_save_dsym (revision 280796) -+++ mac/strip_save_dsym (working copy) -@@ -48,7 +48,7 @@ - "bundle"] - macho_types_re = "Mach-O (?:64-bit )?(?:" + "|".join(macho_types) + ")" - -- file_cmd = subprocess.Popen(["/usr/bin/file", "-b", "--", macho], -+ file_cmd = subprocess.Popen(["/usr/bin/file", "-b", "-L", "--", macho], - stdout=subprocess.PIPE) - - archs = [] -Index: gyp_chromium -=================================================================== ---- gyp_chromium (revision 280796) -+++ gyp_chromium (working copy) -@@ -257,12 +257,6 @@ - if sys.platform not in ('darwin',): - args.append('--no-circular-check') - -- # We explicitly don't support the make gyp generator (crbug.com/348686). Be -- # nice and fail here, rather than choking in gyp. -- if re.search(r'(^|,|\s)make($|,|\s)', os.environ.get('GYP_GENERATORS', '')): -- print 'Error: make gyp generator not supported (check GYP_GENERATORS).' -- sys.exit(1) -- - # Default to ninja on linux and windows, but only if no generator has - # explicitly been set. - # Also default to ninja on mac, but only when not building chrome/ios. -Index: common.gypi -=================================================================== ---- common.gypi (revision 280796) -+++ common.gypi (working copy) +diff --git common.gypi common.gypi +index ea388ac..d0864e3 100644 +--- common.gypi ++++ common.gypi @@ -9,6 +9,9 @@ # Variables expected to be overriden on the GYP command line (-D) or by # ~/.gyp/include.gypi. @@ -42,13 +12,43 @@ 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 -@@ -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, +@@ -5377,6 +5380,9 @@ + 4510, # Default constructor could not be generated + 4512, # Assignment operator could not be generated + 4610, # Object can never be instantiated + # Disable Warning 4702 ("Unreachable code") + # https://code.google.com/p/chromium/issues/detail?id=346399#c55 + 4702, ], 'msvs_settings': { 'VCCLCompilerTool': { +diff --git gyp_chromium gyp_chromium +index b8fe82d..cbc8790 100755 +--- gyp_chromium ++++ gyp_chromium +@@ -262,12 +262,6 @@ if __name__ == '__main__': + if sys.platform not in ('darwin',): + args.append('--no-circular-check') + +- # We explicitly don't support the make gyp generator (crbug.com/348686). Be +- # nice and fail here, rather than choking in gyp. +- if re.search(r'(^|,|\s)make($|,|\s)', os.environ.get('GYP_GENERATORS', '')): +- print 'Error: make gyp generator not supported (check GYP_GENERATORS).' +- sys.exit(1) +- + # If CHROMIUM_GYP_SYNTAX_CHECK is set to 1, it will invoke gyp with --check + # to enfore syntax checking. + syntax_check = os.environ.get('CHROMIUM_GYP_SYNTAX_CHECK') +diff --git mac/strip_save_dsym mac/strip_save_dsym +index c9cf226..0dedbe3 100755 +--- mac/strip_save_dsym ++++ mac/strip_save_dsym +@@ -48,7 +48,7 @@ def macho_archs(macho): + "bundle"] + macho_types_re = "Mach-O (?:64-bit )?(?:" + "|".join(macho_types) + ")" + +- file_cmd = subprocess.Popen(["/usr/bin/file", "-b", "--", macho], ++ file_cmd = subprocess.Popen(["/usr/bin/file", "-b", "-L", "--", macho], + stdout=subprocess.PIPE) + + archs = [] diff --git a/patch/patches/content_nav_1129.patch b/patch/patches/content_nav_1129.patch index 36657d867..cbb11351c 100644 --- a/patch/patches/content_nav_1129.patch +++ b/patch/patches/content_nav_1129.patch @@ -1,8 +1,8 @@ -Index: public/renderer/content_renderer_client.cc -=================================================================== ---- public/renderer/content_renderer_client.cc (revision 280796) -+++ public/renderer/content_renderer_client.cc (working copy) -@@ -92,7 +92,6 @@ +diff --git public/renderer/content_renderer_client.cc public/renderer/content_renderer_client.cc +index 6ca2fcc..ed7726d 100644 +--- public/renderer/content_renderer_client.cc ++++ public/renderer/content_renderer_client.cc +@@ -92,7 +92,6 @@ bool ContentRendererClient::AllowPopup() { return false; } @@ -10,7 +10,7 @@ Index: public/renderer/content_renderer_client.cc bool ContentRendererClient::HandleNavigation( RenderFrame* render_frame, DocumentState* document_state, -@@ -104,7 +103,6 @@ +@@ -104,7 +103,6 @@ bool ContentRendererClient::HandleNavigation( bool is_redirect) { return false; } @@ -18,11 +18,11 @@ Index: public/renderer/content_renderer_client.cc bool ContentRendererClient::ShouldFork(blink::WebFrame* frame, const GURL& url, -Index: public/renderer/content_renderer_client.h -=================================================================== ---- public/renderer/content_renderer_client.h (revision 280796) -+++ public/renderer/content_renderer_client.h (working copy) -@@ -176,7 +176,6 @@ +diff --git public/renderer/content_renderer_client.h public/renderer/content_renderer_client.h +index ada672f..e29e9e0 100644 +--- public/renderer/content_renderer_client.h ++++ public/renderer/content_renderer_client.h +@@ -176,7 +176,6 @@ class CONTENT_EXPORT ContentRendererClient { // Returns true if a popup window should be allowed. virtual bool AllowPopup(); @@ -30,7 +30,7 @@ Index: public/renderer/content_renderer_client.h // TODO(sgurun) This callback is deprecated and will be removed as soon // as android webview completes implementation of a resource throttle based // shouldoverrideurl implementation. See crbug.com/325351 -@@ -191,7 +190,6 @@ +@@ -191,7 +190,6 @@ class CONTENT_EXPORT ContentRendererClient { blink::WebNavigationType type, blink::WebNavigationPolicy default_policy, bool is_redirect); @@ -38,23 +38,23 @@ Index: public/renderer/content_renderer_client.h // Returns true if we should fork a new process for the given navigation. // 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 280796) -+++ renderer/render_frame_impl.cc (working copy) -@@ -3122,7 +3122,6 @@ - WebNavigationType type, - WebNavigationPolicy default_policy, - bool is_redirect) { +diff --git renderer/render_frame_impl.cc renderer/render_frame_impl.cc +index 10fd5b5..4c88b4d 100644 +--- renderer/render_frame_impl.cc ++++ renderer/render_frame_impl.cc +@@ -3380,7 +3380,6 @@ void RenderFrameImpl::FocusedNodeChanged(const WebNode& node) { + WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation( + RenderFrame* render_frame, + const NavigationPolicyInfo& info) { -#ifdef OS_ANDROID // The handlenavigation API is deprecated and will be removed once // crbug.com/325351 is resolved. - if (request.url() != GURL(kSwappedOutURL) && -@@ -3137,7 +3136,6 @@ - is_redirect)) { + if (info.urlRequest.url() != GURL(kSwappedOutURL) && +@@ -3395,7 +3394,6 @@ WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation( + info.isRedirect)) { return blink::WebNavigationPolicyIgnore; } -#endif - Referrer referrer(RenderViewImpl::GetReferrerFromRequest(frame, request)); - + Referrer referrer(RenderViewImpl::GetReferrerFromRequest(info.frame, + info.urlRequest)); diff --git a/patch/patches/gritsettings.patch b/patch/patches/gritsettings.patch index bb106ac6e..49297cc88 100644 --- a/patch/patches/gritsettings.patch +++ b/patch/patches/gritsettings.patch @@ -1,7 +1,7 @@ -Index: resource_ids -=================================================================== ---- resource_ids (revision 280796) -+++ resource_ids (working copy) +diff --git resource_ids resource_ids +index 3b8768e..cde0ceb 100644 +--- resource_ids ++++ resource_ids @@ -16,6 +16,12 @@ { "SRCDIR": "../..", diff --git a/patch/patches/gyp_331.patch b/patch/patches/gyp_331.patch index 537118769..27baf1f68 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 1944) -+++ gyp/generator/ninja.py (working copy) -@@ -740,7 +740,16 @@ +diff --git gyp/generator/ninja.py gyp/generator/ninja.py +index 4eafb71..83e629c 100644 +--- gyp/generator/ninja.py ++++ gyp/generator/ninja.py +@@ -743,7 +743,16 @@ class NinjaWriter: 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 48791d356..13d801b68 100644 --- a/patch/patches/message_loop_443.patch +++ b/patch/patches/message_loop_443.patch @@ -1,8 +1,8 @@ -Index: message_loop.cc -=================================================================== ---- message_loop.cc (revision 280796) -+++ message_loop.cc (working copy) -@@ -154,7 +154,7 @@ +diff --git message_loop.cc message_loop.cc +index ae165ea..cbe5c05 100644 +--- message_loop.cc ++++ message_loop.cc +@@ -154,7 +154,7 @@ MessageLoop::MessageLoop(scoped_ptr pump) MessageLoop::~MessageLoop() { DCHECK_EQ(this, current()); diff --git a/patch/patches/prefs_content_1161.patch b/patch/patches/prefs_content_1161.patch index eb88aa70a..124338f6b 100644 --- a/patch/patches/prefs_content_1161.patch +++ b/patch/patches/prefs_content_1161.patch @@ -1,20 +1,44 @@ -Index: public/common/common_param_traits_macros.h -=================================================================== ---- public/common/common_param_traits_macros.h (revision 280796) -+++ public/common/common_param_traits_macros.h (working copy) -@@ -175,6 +175,7 @@ +diff --git public/common/common_param_traits_macros.h public/common/common_param_traits_macros.h +index 56b23e4..04de1dc 100644 +--- public/common/common_param_traits_macros.h ++++ public/common/common_param_traits_macros.h +@@ -172,6 +172,7 @@ IPC_STRUCT_TRAITS_BEGIN(content::WebPreferences) + IPC_STRUCT_TRAITS_MEMBER(main_frame_resizes_are_orientation_changes) 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) + IPC_STRUCT_TRAITS_MEMBER(base_background_color) IPC_STRUCT_TRAITS_MEMBER(cookie_enabled) IPC_STRUCT_TRAITS_MEMBER(navigate_on_drag_drop) IPC_STRUCT_TRAITS_MEMBER(spatial_navigation_enabled) -Index: renderer/web_preferences.cc -=================================================================== ---- renderer/web_preferences.cc (revision 280796) -+++ renderer/web_preferences.cc (working copy) -@@ -167,6 +167,8 @@ +diff --git public/common/web_preferences.cc public/common/web_preferences.cc +index d1e656d..b2ad9e8 100644 +--- public/common/web_preferences.cc ++++ public/common/web_preferences.cc +@@ -135,6 +135,7 @@ WebPreferences::WebPreferences() + pinch_overlay_scrollbar_thickness(0), + use_solid_color_scrollbars(false), + navigate_on_drag_drop(true), ++ base_background_color(0xFFFFFFFF), // Color::white + v8_cache_options(V8_CACHE_OPTIONS_OFF), + cookie_enabled(true), + pepper_accelerated_video_decode_enabled(false) +diff --git public/common/web_preferences.h public/common/web_preferences.h +index 496a347..3916026 100644 +--- public/common/web_preferences.h ++++ public/common/web_preferences.h +@@ -141,6 +141,7 @@ struct CONTENT_EXPORT WebPreferences { + int pinch_overlay_scrollbar_thickness; + bool use_solid_color_scrollbars; + bool navigate_on_drag_drop; ++ uint32_t base_background_color; + V8CacheOptions v8_cache_options; + + // This flags corresponds to a Page's Settings' setCookieEnabled state. It +diff --git renderer/render_view_impl.cc renderer/render_view_impl.cc +index 743d8db..617ddf4 100644 +--- renderer/render_view_impl.cc ++++ renderer/render_view_impl.cc +@@ -969,6 +969,8 @@ void RenderView::ApplyWebPreferences(const WebPreferences& prefs, settings->setJavaEnabled(prefs.java_enabled); diff --git a/patch/patches/prefs_webkit_1161.patch b/patch/patches/prefs_webkit_1161.patch deleted file mode 100644 index d15c660d8..000000000 --- a/patch/patches/prefs_webkit_1161.patch +++ /dev/null @@ -1,24 +0,0 @@ -Index: common/webpreferences.cc -=================================================================== ---- common/webpreferences.cc (revision 280796) -+++ common/webpreferences.cc (working copy) -@@ -112,6 +112,7 @@ - use_solid_color_scrollbars(false), - compositor_touch_hit_testing(true), - navigate_on_drag_drop(true), -+ base_background_color(0xFFFFFFFF), // Color::white - cookie_enabled(true), - pepper_accelerated_video_decode_enabled(false) - #if defined(OS_ANDROID) -Index: common/webpreferences.h -=================================================================== ---- common/webpreferences.h (revision 280796) -+++ common/webpreferences.h (working copy) -@@ -148,6 +148,7 @@ - bool use_solid_color_scrollbars; - bool compositor_touch_hit_testing; - bool navigate_on_drag_drop; -+ uint32_t base_background_color; - - // This flags corresponds to a Page's Settings' setCookieEnabled state. It - // only controls whether or not the "document.cookie" field is properly diff --git a/patch/patches/printing_win.patch b/patch/patches/printing_win.patch new file mode 100644 index 000000000..49527bdc5 --- /dev/null +++ b/patch/patches/printing_win.patch @@ -0,0 +1,709 @@ +diff --git chrome/renderer/printing/print_web_view_helper.cc chrome/renderer/printing/print_web_view_helper.cc +index f1d4cfd..bb4eac4 100644 +--- chrome/renderer/printing/print_web_view_helper.cc ++++ chrome/renderer/printing/print_web_view_helper.cc +@@ -767,12 +767,17 @@ void PrepareFrameAndViewForPrint::FinishPrinting() { + on_ready_.Reset(); + } + +-PrintWebViewHelper::PrintWebViewHelper(content::RenderView* render_view) ++PrintWebViewHelper::PrintWebViewHelper(content::RenderView* render_view, ++ bool preview_enabled, ++ bool scripted_print_throttling_disabled) + : content::RenderViewObserver(render_view), + content::RenderViewObserverTracker(render_view), + reset_prep_frame_view_(false), ++ is_preview_enabled_(preview_enabled), ++ is_scripted_print_throttling_disabled_(scripted_print_throttling_disabled), + is_print_ready_metafile_sent_(false), + ignore_css_margins_(false), ++ user_cancelled_scripted_print_count_(0), + is_scripted_printing_blocked_(false), + notify_browser_of_print_failure_(true), + print_for_preview_(false), +@@ -791,6 +796,14 @@ bool PrintWebViewHelper::IsScriptInitiatedPrintAllowed( + #endif // defined(OS_ANDROID) + if (is_scripted_printing_blocked_) + return false; ++ // If preview is enabled, then the print dialog is tab modal, and the user ++ // can always close the tab on a mis-behaving page (the system print dialog ++ // is app modal). If the print was initiated through user action, don't ++ // throttle. Or, if the command line flag to skip throttling has been set. ++ if (!is_scripted_print_throttling_disabled_ && ++ !is_preview_enabled_ && ++ !user_initiated) ++ return !IsScriptInitiatedPrintTooFrequent(frame); + return true; + } + +@@ -820,8 +833,14 @@ void PrintWebViewHelper::PrintPage(blink::WebLocalFrame* frame, + + if (!IsScriptInitiatedPrintAllowed(frame, user_initiated)) + return; +- print_preview_context_.InitWithFrame(frame); +- RequestPrintPreview(PRINT_PREVIEW_SCRIPTED); ++ IncrementScriptedPrintCount(); ++ ++ if (is_preview_enabled_) { ++ print_preview_context_.InitWithFrame(frame); ++ RequestPrintPreview(PRINT_PREVIEW_SCRIPTED); ++ } else { ++ Print(frame, blink::WebNode()); ++ } + } + + bool PrintWebViewHelper::OnMessageReceived(const IPC::Message& message) { +@@ -842,6 +861,7 @@ bool PrintWebViewHelper::OnMessageReceived(const IPC::Message& message) { + + void PrintWebViewHelper::OnPrintForPrintPreview( + const base::DictionaryValue& job_settings) { ++ DCHECK(is_preview_enabled_); + // If still not finished with earlier print request simply ignore. + if (prep_frame_view_) + return; +@@ -975,6 +995,7 @@ bool PrintWebViewHelper::IsPrintToPdfRequested( + } + + void PrintWebViewHelper::OnPrintPreview(const base::DictionaryValue& settings) { ++ DCHECK(is_preview_enabled_); + print_preview_context_.OnPrintPreview(); + + UMA_HISTOGRAM_ENUMERATION("PrintPreview.PreviewEvent", +@@ -1177,6 +1198,7 @@ void PrintWebViewHelper::SetScriptedPrintBlocked(bool blocked) { + } + + void PrintWebViewHelper::OnInitiatePrintPreview(bool selection_only) { ++ DCHECK(is_preview_enabled_); + blink::WebLocalFrame* frame = NULL; + GetPrintFrame(&frame); + DCHECK(frame); +@@ -1210,8 +1232,13 @@ void PrintWebViewHelper::PrintNode(const blink::WebNode& node) { + + // Make a copy of the node, in case RenderView::OnContextMenuClosed resets + // its |context_menu_node_|. +- print_preview_context_.InitWithNode(node); +- RequestPrintPreview(PRINT_PREVIEW_USER_INITIATED_CONTEXT_NODE); ++ if (is_preview_enabled_) { ++ print_preview_context_.InitWithNode(node); ++ RequestPrintPreview(PRINT_PREVIEW_USER_INITIATED_CONTEXT_NODE); ++ } else { ++ blink::WebNode duplicate_node(node); ++ Print(duplicate_node.document().frame(), duplicate_node); ++ } + + print_node_in_progress_ = false; + } +@@ -1248,6 +1275,7 @@ void PrintWebViewHelper::Print(blink::WebLocalFrame* frame, + LOG(ERROR) << "RenderPagesForPrint failed"; + DidFinishPrinting(FAIL_PRINT); + } ++ ResetScriptedPrintCount(); + } + + void PrintWebViewHelper::DidFinishPrinting(PrintingResult result) { +@@ -1267,6 +1295,7 @@ void PrintWebViewHelper::DidFinishPrinting(PrintingResult result) { + break; + + case FAIL_PREVIEW: ++ DCHECK(is_preview_enabled_); + int cookie = print_pages_params_ ? + print_pages_params_->params.document_cookie : 0; + if (notify_browser_of_print_failure_) { +@@ -1435,6 +1464,7 @@ bool PrintWebViewHelper::UpdatePrintSettings( + blink::WebLocalFrame* frame, + const blink::WebNode& node, + const base::DictionaryValue& passed_job_settings) { ++ DCHECK(is_preview_enabled_); + const base::DictionaryValue* job_settings = &passed_job_settings; + base::DictionaryValue modified_job_settings; + if (job_settings->empty()) { +@@ -1588,6 +1618,54 @@ bool PrintWebViewHelper::CopyMetafileDataToSharedMem( + } + #endif // defined(OS_POSIX) + ++bool PrintWebViewHelper::IsScriptInitiatedPrintTooFrequent( ++ blink::WebFrame* frame) { ++ const int kMinSecondsToIgnoreJavascriptInitiatedPrint = 2; ++ const int kMaxSecondsToIgnoreJavascriptInitiatedPrint = 32; ++ bool too_frequent = false; ++ ++ // Check if there is script repeatedly trying to print and ignore it if too ++ // frequent. The first 3 times, we use a constant wait time, but if this ++ // gets excessive, we switch to exponential wait time. So for a page that ++ // calls print() in a loop the user will need to cancel the print dialog ++ // after: [2, 2, 2, 4, 8, 16, 32, 32, ...] seconds. ++ // This gives the user time to navigate from the page. ++ if (user_cancelled_scripted_print_count_ > 0) { ++ base::TimeDelta diff = base::Time::Now() - last_cancelled_script_print_; ++ int min_wait_seconds = kMinSecondsToIgnoreJavascriptInitiatedPrint; ++ if (user_cancelled_scripted_print_count_ > 3) { ++ min_wait_seconds = std::min( ++ kMinSecondsToIgnoreJavascriptInitiatedPrint << ++ (user_cancelled_scripted_print_count_ - 3), ++ kMaxSecondsToIgnoreJavascriptInitiatedPrint); ++ } ++ if (diff.InSeconds() < min_wait_seconds) { ++ too_frequent = true; ++ } ++ } ++ ++ if (!too_frequent) ++ return false; ++ ++ blink::WebString message( ++ blink::WebString::fromUTF8("Ignoring too frequent calls to print().")); ++ frame->addMessageToConsole( ++ blink::WebConsoleMessage( ++ blink::WebConsoleMessage::LevelWarning, message)); ++ return true; ++} ++ ++void PrintWebViewHelper::ResetScriptedPrintCount() { ++ // Reset cancel counter on successful print. ++ user_cancelled_scripted_print_count_ = 0; ++} ++ ++void PrintWebViewHelper::IncrementScriptedPrintCount() { ++ ++user_cancelled_scripted_print_count_; ++ last_cancelled_script_print_ = base::Time::Now(); ++} ++ ++ + void PrintWebViewHelper::ShowScriptedPrintPreview() { + if (is_scripted_preview_delayed_) { + is_scripted_preview_delayed_ = false; +diff --git chrome/renderer/printing/print_web_view_helper.h chrome/renderer/printing/print_web_view_helper.h +index 67bcc73..b8a5126 100644 +--- chrome/renderer/printing/print_web_view_helper.h ++++ chrome/renderer/printing/print_web_view_helper.h +@@ -66,7 +66,9 @@ class PrintWebViewHelper + : public content::RenderViewObserver, + public content::RenderViewObserverTracker { + public: +- explicit PrintWebViewHelper(content::RenderView* render_view); ++ PrintWebViewHelper(content::RenderView* render_view, ++ bool preview_enabled, ++ bool scripted_print_throttling_disabled); + virtual ~PrintWebViewHelper(); + + bool IsPrintingEnabled(); +@@ -292,13 +294,24 @@ class PrintWebViewHelper + bool IsScriptInitiatedPrintAllowed(blink::WebFrame* frame, + bool user_initiated); + +- // Shows scripted print preview when options from plugin are available. ++ // Returns true if script initiated printing occurs too often. ++ bool IsScriptInitiatedPrintTooFrequent(blink::WebFrame* frame); ++ ++ // Reset the counter for script initiated printing. ++ // Scripted printing will be allowed to continue. ++ void ResetScriptedPrintCount(); ++ ++ // Increment the counter for script initiated printing. ++ // Scripted printing will be blocked for a limited amount of time. ++ void IncrementScriptedPrintCount(); ++ ++ // Shows scripted print preview when options from plugin are availible. + void ShowScriptedPrintPreview(); + + void RequestPrintPreview(PrintPreviewRequestType type); + + // Checks whether print preview should continue or not. +- // Returns true if canceling, false if continuing. ++ // Returns true if cancelling, false if continuing. + bool CheckForCancel(); + + // Notifies the browser a print preview page has been rendered. +@@ -315,9 +328,14 @@ class PrintWebViewHelper + bool reset_prep_frame_view_; + + scoped_ptr print_pages_params_; ++ bool is_preview_enabled_; ++ bool is_scripted_print_throttling_disabled_; + bool is_print_ready_metafile_sent_; + bool ignore_css_margins_; ++ + // Used for scripted initiated printing blocking. ++ base::Time last_cancelled_script_print_; ++ int user_cancelled_scripted_print_count_; + bool is_scripted_printing_blocked_; + + // Let the browser process know of a printing failure. Only set to false when +diff --git printing/printing_context_win.cc printing/printing_context_win.cc +index 4d7ea92..5e53ed2 100644 +--- printing/printing_context_win.cc ++++ printing/printing_context_win.cc +@@ -50,7 +50,7 @@ scoped_ptr PrintingContext::Create(Delegate* delegate) { + } + + PrintingContextWin::PrintingContextWin(Delegate* delegate) +- : PrintingContext(delegate), context_(NULL) { ++ : PrintingContext(delegate), context_(NULL), dialog_box_(NULL) { + } + + PrintingContextWin::~PrintingContextWin() { +@@ -61,26 +61,63 @@ void PrintingContextWin::AskUserForSettings( + int max_pages, + bool has_selection, + const PrintSettingsCallback& callback) { +- NOTIMPLEMENTED(); ++ DCHECK(!in_print_job_); ++ dialog_box_dismissed_ = false; ++ ++ HWND window = GetRootWindow(delegate_->GetParentView()); ++ DCHECK(window); ++ ++ // Show the OS-dependent dialog box. ++ // If the user press ++ // - OK, the settings are reset and reinitialized with the new settings. OK is ++ // returned. ++ // - Apply then Cancel, the settings are reset and reinitialized with the new ++ // settings. CANCEL is returned. ++ // - Cancel, the settings are not changed, the previous setting, if it was ++ // initialized before, are kept. CANCEL is returned. ++ // On failure, the settings are reset and FAILED is returned. ++ PRINTDLGEX dialog_options = { sizeof(PRINTDLGEX) }; ++ dialog_options.hwndOwner = window; ++ // Disable options we don't support currently. ++ // TODO(maruel): Reuse the previously loaded settings! ++ dialog_options.Flags = PD_RETURNDC | PD_USEDEVMODECOPIESANDCOLLATE | ++ PD_NOCURRENTPAGE | PD_HIDEPRINTTOFILE; ++ if (!has_selection) ++ dialog_options.Flags |= PD_NOSELECTION; ++ ++ PRINTPAGERANGE ranges[32]; ++ dialog_options.nStartPage = START_PAGE_GENERAL; ++ if (max_pages) { ++ // Default initialize to print all the pages. ++ memset(ranges, 0, sizeof(ranges)); ++ ranges[0].nFromPage = 1; ++ ranges[0].nToPage = max_pages; ++ dialog_options.nPageRanges = 1; ++ dialog_options.nMaxPageRanges = arraysize(ranges); ++ dialog_options.nMinPage = 1; ++ dialog_options.nMaxPage = max_pages; ++ dialog_options.lpPageRanges = ranges; ++ } else { ++ // No need to bother, we don't know how many pages are available. ++ dialog_options.Flags |= PD_NOPAGENUMS; ++ } ++ ++ if (ShowPrintDialog(&dialog_options) != S_OK) { ++ ResetSettings(); ++ callback.Run(FAILED); ++ } ++ ++ // TODO(maruel): Support PD_PRINTTOFILE. ++ callback.Run(ParseDialogResultEx(dialog_options)); + } + + PrintingContext::Result PrintingContextWin::UseDefaultSettings() { + DCHECK(!in_print_job_); + +- scoped_refptr backend = PrintBackend::CreateInstance(NULL); +- base::string16 default_printer = +- base::UTF8ToWide(backend->GetDefaultPrinterName()); +- if (!default_printer.empty()) { +- ScopedPrinterHandle printer; +- if (printer.OpenPrinter(default_printer.c_str())) { +- scoped_ptr dev_mode = +- CreateDevMode(printer, NULL); +- if (InitializeSettings(default_printer, dev_mode.get()) == OK) +- return OK; +- } +- } +- +- ReleaseContext(); ++ PRINTDLG dialog_options = { sizeof(PRINTDLG) }; ++ dialog_options.Flags = PD_RETURNDC | PD_RETURNDEFAULT; ++ if (PrintDlg(&dialog_options)) ++ return ParseDialogResult(dialog_options); + + // No default printer configured, do we have any printers at all? + DWORD bytes_needed = 0; +@@ -105,15 +142,23 @@ PrintingContext::Result PrintingContextWin::UseDefaultSettings() { + continue; + scoped_ptr dev_mode = + CreateDevMode(printer, NULL); +- if (InitializeSettings(info_2->pPrinterName, dev_mode.get()) == OK) ++ if (!dev_mode || !AllocateContext(info_2->pPrinterName, dev_mode.get(), ++ &context_)) { ++ continue; ++ } ++ if (InitializeSettings(*dev_mode.get(), info_2->pPrinterName, NULL, 0, ++ false)) { + return OK; ++ } ++ ReleaseContext(); + } + if (context_) + return OK; + } + } + +- return OnError(); ++ ResetSettings(); ++ return FAILED; + } + + gfx::Size PrintingContextWin::GetPdfPaperSizeDeviceUnits() { +@@ -212,14 +257,19 @@ PrintingContext::Result PrintingContextWin::UpdatePrinterSettings( + } + + // Update data using DocumentProperties. +- if (show_system_dialog) { +- scoped_dev_mode = ShowPrintDialog( +- printer, delegate_->GetParentView(), scoped_dev_mode.get()); +- } else { +- scoped_dev_mode = CreateDevMode(printer, scoped_dev_mode.get()); +- } ++ scoped_dev_mode = CreateDevMode(printer, scoped_dev_mode.get()); ++ if (!scoped_dev_mode) ++ return OnError(); ++ + // Set printer then refresh printer settings. +- return InitializeSettings(settings_.device_name(), scoped_dev_mode.get()); ++ if (!AllocateContext(settings_.device_name(), scoped_dev_mode.get(), ++ &context_)) { ++ return OnError(); ++ } ++ PrintSettingsInitializerWin::InitPrintSettings(context_, ++ *scoped_dev_mode.get(), ++ &settings_); ++ return OK; + } + + PrintingContext::Result PrintingContextWin::InitWithSettings( +@@ -230,13 +280,18 @@ PrintingContext::Result PrintingContextWin::InitWithSettings( + + // TODO(maruel): settings_.ToDEVMODE() + ScopedPrinterHandle printer; +- if (!printer.OpenPrinter(settings_.device_name().c_str())) ++ if (!printer.OpenPrinter(settings_.device_name().c_str())) { + return FAILED; ++ } + +- scoped_ptr dev_mode = +- CreateDevMode(printer, NULL); ++ Result status = OK; ++ ++ if (!GetPrinterSettings(printer, settings_.device_name())) ++ status = FAILED; + +- return InitializeSettings(settings_.device_name(), dev_mode.get()); ++ if (status != OK) ++ ResetSettings(); ++ return status; + } + + PrintingContext::Result PrintingContextWin::NewDocument( +@@ -320,6 +375,10 @@ void PrintingContextWin::Cancel() { + in_print_job_ = false; + if (context_) + CancelDC(context_); ++ if (dialog_box_) { ++ DestroyWindow(dialog_box_); ++ dialog_box_dismissed_ = true; ++ } + } + + void PrintingContextWin::ReleaseContext() { +@@ -343,31 +402,154 @@ BOOL PrintingContextWin::AbortProc(HDC hdc, int nCode) { + return true; + } + +-PrintingContext::Result PrintingContextWin::InitializeSettings( +- const std::wstring& device_name, +- DEVMODE* dev_mode) { +- if (!dev_mode) +- return OnError(); ++bool PrintingContextWin::InitializeSettings(const DEVMODE& dev_mode, ++ const std::wstring& new_device_name, ++ const PRINTPAGERANGE* ranges, ++ int number_ranges, ++ bool selection_only) { ++ skia::InitializeDC(context_); ++ DCHECK(GetDeviceCaps(context_, CLIPCAPS)); ++ DCHECK(GetDeviceCaps(context_, RASTERCAPS) & RC_STRETCHDIB); ++ DCHECK(GetDeviceCaps(context_, RASTERCAPS) & RC_BITMAP64); ++ // Some printers don't advertise these. ++ // DCHECK(GetDeviceCaps(context_, RASTERCAPS) & RC_SCALING); ++ // DCHECK(GetDeviceCaps(context_, SHADEBLENDCAPS) & SB_CONST_ALPHA); ++ // DCHECK(GetDeviceCaps(context_, SHADEBLENDCAPS) & SB_PIXEL_ALPHA); ++ ++ // StretchDIBits() support is needed for printing. ++ if (!(GetDeviceCaps(context_, RASTERCAPS) & RC_STRETCHDIB) || ++ !(GetDeviceCaps(context_, RASTERCAPS) & RC_BITMAP64)) { ++ NOTREACHED(); ++ ResetSettings(); ++ return false; ++ } + +- ReleaseContext(); +- context_ = CreateDC(L"WINSPOOL", device_name.c_str(), NULL, dev_mode); +- if (!context_) +- return OnError(); ++ DCHECK(!in_print_job_); ++ DCHECK(context_); ++ PageRanges ranges_vector; ++ if (!selection_only) { ++ // Convert the PRINTPAGERANGE array to a PrintSettings::PageRanges vector. ++ ranges_vector.reserve(number_ranges); ++ for (int i = 0; i < number_ranges; ++i) { ++ PageRange range; ++ // Transfer from 1-based to 0-based. ++ range.from = ranges[i].nFromPage - 1; ++ range.to = ranges[i].nToPage - 1; ++ ranges_vector.push_back(range); ++ } ++ } + +- skia::InitializeDC(context_); ++ settings_.set_ranges(ranges_vector); ++ settings_.set_device_name(new_device_name); ++ settings_.set_selection_only(selection_only); ++ PrintSettingsInitializerWin::InitPrintSettings(context_, dev_mode, ++ &settings_); + ++ return true; ++} ++ ++bool PrintingContextWin::GetPrinterSettings(HANDLE printer, ++ const std::wstring& device_name) { + DCHECK(!in_print_job_); +- settings_.set_device_name(device_name); +- PrintSettingsInitializerWin::InitPrintSettings( +- context_, *dev_mode, &settings_); + +- return OK; ++ scoped_ptr dev_mode = ++ CreateDevMode(printer, NULL); ++ ++ if (!dev_mode || !AllocateContext(device_name, dev_mode.get(), &context_)) { ++ ResetSettings(); ++ return false; ++ } ++ ++ return InitializeSettings(*dev_mode.get(), device_name, NULL, 0, false); ++} ++ ++// static ++bool PrintingContextWin::AllocateContext(const std::wstring& device_name, ++ const DEVMODE* dev_mode, ++ gfx::NativeDrawingContext* context) { ++ *context = CreateDC(L"WINSPOOL", device_name.c_str(), NULL, dev_mode); ++ DCHECK(*context); ++ return *context != NULL; ++} ++ ++PrintingContext::Result PrintingContextWin::ParseDialogResultEx( ++ const PRINTDLGEX& dialog_options) { ++ // If the user clicked OK or Apply then Cancel, but not only Cancel. ++ if (dialog_options.dwResultAction != PD_RESULT_CANCEL) { ++ // Start fresh. ++ ResetSettings(); ++ ++ DEVMODE* dev_mode = NULL; ++ if (dialog_options.hDevMode) { ++ dev_mode = ++ reinterpret_cast(GlobalLock(dialog_options.hDevMode)); ++ DCHECK(dev_mode); ++ } ++ ++ std::wstring device_name; ++ if (dialog_options.hDevNames) { ++ DEVNAMES* dev_names = ++ reinterpret_cast(GlobalLock(dialog_options.hDevNames)); ++ DCHECK(dev_names); ++ if (dev_names) { ++ device_name = reinterpret_cast(dev_names) + ++ dev_names->wDeviceOffset; ++ GlobalUnlock(dialog_options.hDevNames); ++ } ++ } ++ ++ bool success = false; ++ if (dev_mode && !device_name.empty()) { ++ context_ = dialog_options.hDC; ++ PRINTPAGERANGE* page_ranges = NULL; ++ DWORD num_page_ranges = 0; ++ bool print_selection_only = false; ++ if (dialog_options.Flags & PD_PAGENUMS) { ++ page_ranges = dialog_options.lpPageRanges; ++ num_page_ranges = dialog_options.nPageRanges; ++ } ++ if (dialog_options.Flags & PD_SELECTION) { ++ print_selection_only = true; ++ } ++ success = InitializeSettings(*dev_mode, ++ device_name, ++ page_ranges, ++ num_page_ranges, ++ print_selection_only); ++ } ++ ++ if (!success && dialog_options.hDC) { ++ DeleteDC(dialog_options.hDC); ++ context_ = NULL; ++ } ++ ++ if (dev_mode) { ++ GlobalUnlock(dialog_options.hDevMode); ++ } ++ } else { ++ if (dialog_options.hDC) { ++ DeleteDC(dialog_options.hDC); ++ } ++ } ++ ++ if (dialog_options.hDevMode != NULL) ++ GlobalFree(dialog_options.hDevMode); ++ if (dialog_options.hDevNames != NULL) ++ GlobalFree(dialog_options.hDevNames); ++ ++ switch (dialog_options.dwResultAction) { ++ case PD_RESULT_PRINT: ++ return context_ ? OK : FAILED; ++ case PD_RESULT_APPLY: ++ return context_ ? CANCEL : FAILED; ++ case PD_RESULT_CANCEL: ++ return CANCEL; ++ default: ++ return FAILED; ++ } + } + +-scoped_ptr PrintingContextWin::ShowPrintDialog( +- HANDLE printer, +- gfx::NativeView parent_view, +- DEVMODE* dev_mode) { ++HRESULT PrintingContextWin::ShowPrintDialog(PRINTDLGEX* options) { + // Note that this cannot use ui::BaseShellDialog as the print dialog is + // system modal: opening it from a background thread can cause Windows to + // get the wrong Z-order which will make the print dialog appear behind the +@@ -377,20 +559,57 @@ scoped_ptr PrintingContextWin::ShowPrintDialog( + base::MessageLoop::ScopedNestableTaskAllower allow( + base::MessageLoop::current()); + +- bool canceled = false; +- scoped_ptr result = +- PromptDevMode(printer, +- settings_.device_name(), +- dev_mode, +- GetRootWindow(parent_view), +- &canceled); +- +- if (canceled) { +- result.reset(); +- abort_printing_ = true; ++ return PrintDlgEx(options); ++} ++ ++PrintingContext::Result PrintingContextWin::ParseDialogResult( ++ const PRINTDLG& dialog_options) { ++ // If the user clicked OK or Apply then Cancel, but not only Cancel. ++ // Start fresh. ++ ResetSettings(); ++ ++ DEVMODE* dev_mode = NULL; ++ if (dialog_options.hDevMode) { ++ dev_mode = ++ reinterpret_cast(GlobalLock(dialog_options.hDevMode)); ++ DCHECK(dev_mode); + } + +- return result.Pass(); ++ std::wstring device_name; ++ if (dialog_options.hDevNames) { ++ DEVNAMES* dev_names = ++ reinterpret_cast(GlobalLock(dialog_options.hDevNames)); ++ DCHECK(dev_names); ++ if (dev_names) { ++ device_name = ++ reinterpret_cast( ++ reinterpret_cast(dev_names) + ++ dev_names->wDeviceOffset); ++ GlobalUnlock(dialog_options.hDevNames); ++ } ++ } ++ ++ bool success = false; ++ if (dev_mode && !device_name.empty()) { ++ context_ = dialog_options.hDC; ++ success = InitializeSettings(*dev_mode, device_name, NULL, 0, false); ++ } ++ ++ if (!success && dialog_options.hDC) { ++ DeleteDC(dialog_options.hDC); ++ context_ = NULL; ++ } ++ ++ if (dev_mode) { ++ GlobalUnlock(dialog_options.hDevMode); ++ } ++ ++ if (dialog_options.hDevMode != NULL) ++ GlobalFree(dialog_options.hDevMode); ++ if (dialog_options.hDevNames != NULL) ++ GlobalFree(dialog_options.hDevNames); ++ ++ return context_ ? OK : FAILED; + } + + } // namespace printing +diff --git printing/printing_context_win.h printing/printing_context_win.h +index 99a7e3e..f6222ad 100644 +--- printing/printing_context_win.h ++++ printing/printing_context_win.h +@@ -40,24 +40,45 @@ class PRINTING_EXPORT PrintingContextWin : public PrintingContext { + virtual void ReleaseContext() OVERRIDE; + virtual gfx::NativeDrawingContext context() const OVERRIDE; + ++ // Allocates the HDC for a specific DEVMODE. ++ static bool AllocateContext(const std::wstring& printer_name, ++ const DEVMODE* dev_mode, ++ gfx::NativeDrawingContext* context); ++ + protected: +- virtual scoped_ptr ShowPrintDialog( +- HANDLE printer, +- gfx::NativeView parent_view, +- DEVMODE* dev_mode); ++ virtual HRESULT ShowPrintDialog(PRINTDLGEX* options); + + private: ++ // Class that manages the PrintDlgEx() callbacks. This is meant to be a ++ // temporary object used during the Print... dialog display. ++ class CallbackHandler; ++ + // Used in response to the user canceling the printing. + static BOOL CALLBACK AbortProc(HDC hdc, int nCode); + + // Reads the settings from the selected device context. Updates settings_ and + // its margins. +- virtual Result InitializeSettings(const base::string16& device_name, +- DEVMODE* dev_mode); ++ bool InitializeSettings(const DEVMODE& dev_mode, ++ const std::wstring& new_device_name, ++ const PRINTPAGERANGE* ranges, ++ int number_ranges, ++ bool selection_only); ++ ++ // Retrieves the printer's default low-level settings. On Windows, context_ is ++ // allocated with this call. ++ bool GetPrinterSettings(HANDLE printer, ++ const std::wstring& device_name); ++ ++ // Parses the result of a PRINTDLGEX result. ++ Result ParseDialogResultEx(const PRINTDLGEX& dialog_options); ++ Result ParseDialogResult(const PRINTDLG& dialog_options); + + // The selected printer context. + HDC context_; + ++ // The dialog box for the time it is shown. ++ volatile HWND dialog_box_; ++ + DISALLOW_COPY_AND_ASSIGN(PrintingContextWin); + }; + diff --git a/patch/patches/public_browser_1161_1257.patch b/patch/patches/public_browser_1161_1257.patch index a4e7a92ed..f2afe9213 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 280796) -+++ content_browser_client.cc (working copy) -@@ -280,6 +280,10 @@ +diff --git content_browser_client.cc content_browser_client.cc +index d982b69..9272897 100644 +--- content_browser_client.cc ++++ content_browser_client.cc +@@ -276,6 +276,10 @@ bool ContentBrowserClient::IsFastShutdownPossible() { return true; } @@ -13,19 +13,19 @@ Index: content_browser_client.cc base::FilePath ContentBrowserClient::GetDefaultDownloadDirectory() { return base::FilePath(); } -Index: content_browser_client.h -=================================================================== ---- content_browser_client.h (revision 280796) -+++ content_browser_client.h (working copy) -@@ -23,6 +23,7 @@ +diff --git content_browser_client.h content_browser_client.h +index f8253a6..d82c177 100644 +--- content_browser_client.h ++++ content_browser_client.h +@@ -25,6 +25,7 @@ #include "net/cookies/canonical_cookie.h" #include "net/url_request/url_request_interceptor.h" #include "net/url_request/url_request_job_factory.h" +#include "third_party/skia/include/core/SkColor.h" - #include "third_party/WebKit/public/web/WebNotificationPresenter.h" + #include "third_party/WebKit/public/platform/WebNotificationPermission.h" #include "ui/base/window_open_disposition.h" #include "webkit/browser/fileapi/file_system_context.h" -@@ -538,6 +539,9 @@ +@@ -526,6 +527,9 @@ class CONTENT_EXPORT ContentBrowserClient { // Clears browser cookies. virtual void ClearCookies(RenderViewHost* rvh) {} @@ -35,11 +35,11 @@ Index: content_browser_client.h // Returns the default download directory. // This can be called on any thread. virtual base::FilePath GetDefaultDownloadDirectory(); -Index: web_contents.cc -=================================================================== ---- web_contents.cc (revision 280796) -+++ web_contents.cc (working copy) -@@ -17,7 +17,9 @@ +diff --git web_contents.cc web_contents.cc +index 7afc338..c014439 100644 +--- web_contents.cc ++++ web_contents.cc +@@ -17,7 +17,9 @@ WebContents::CreateParams::CreateParams(BrowserContext* context) main_frame_routing_id(MSG_ROUTING_NONE), initially_hidden(false), guest_delegate(NULL), @@ -50,7 +50,7 @@ Index: web_contents.cc WebContents::CreateParams::CreateParams( BrowserContext* context, SiteInstance* site) -@@ -29,7 +31,9 @@ +@@ -29,7 +31,9 @@ WebContents::CreateParams::CreateParams( main_frame_routing_id(MSG_ROUTING_NONE), initially_hidden(false), guest_delegate(NULL), @@ -61,11 +61,11 @@ Index: web_contents.cc WebContents::CreateParams::~CreateParams() { } -Index: web_contents.h -=================================================================== ---- web_contents.h (revision 280796) -+++ web_contents.h (working copy) -@@ -51,9 +51,11 @@ +diff --git web_contents.h web_contents.h +index 80766dc..025c8c7 100644 +--- web_contents.h ++++ web_contents.h +@@ -52,9 +52,11 @@ class PageState; class RenderFrameHost; class RenderProcessHost; class RenderViewHost; @@ -77,7 +77,7 @@ Index: web_contents.h struct CustomContextMenuContext; struct DropData; struct RendererPreferences; -@@ -116,6 +118,10 @@ +@@ -117,6 +119,10 @@ class WebContents : public PageNavigator, // Used to specify the location context which display the new view should // belong. This can be NULL if not needed. gfx::NativeView context; @@ -88,11 +88,11 @@ Index: web_contents.h }; // Creates a new WebContents. -Index: web_contents_delegate.cc -=================================================================== ---- web_contents_delegate.cc (revision 280796) -+++ web_contents_delegate.cc (working copy) -@@ -136,7 +136,9 @@ +diff --git web_contents_delegate.cc web_contents_delegate.cc +index 0028339..477040e 100644 +--- web_contents_delegate.cc ++++ web_contents_delegate.cc +@@ -136,7 +136,9 @@ bool WebContentsDelegate::ShouldCreateWebContents( const base::string16& frame_name, const GURL& target_url, const std::string& partition_id, @@ -103,11 +103,11 @@ Index: web_contents_delegate.cc return true; } -Index: web_contents_delegate.h -=================================================================== ---- web_contents_delegate.h (revision 280796) -+++ web_contents_delegate.h (working copy) -@@ -36,9 +36,11 @@ +diff --git web_contents_delegate.h web_contents_delegate.h +index b9aa02d..d840775 100644 +--- web_contents_delegate.h ++++ web_contents_delegate.h +@@ -37,9 +37,11 @@ class DownloadItem; class JavaScriptDialogManager; class PageState; class RenderViewHost; @@ -119,7 +119,7 @@ Index: web_contents_delegate.h struct ColorSuggestion; struct ContextMenuParams; struct DropData; -@@ -312,7 +314,9 @@ +@@ -312,7 +314,9 @@ class CONTENT_EXPORT WebContentsDelegate { const base::string16& frame_name, const GURL& target_url, const std::string& partition_id, diff --git a/patch/patches/renderer_host_1161.patch b/patch/patches/renderer_host_1161.patch index faf1518b6..3b1d0b6b0 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 280796) -+++ compositing_iosurface_layer_mac.mm (working copy) -@@ -191,7 +191,7 @@ +diff --git compositing_iosurface_layer_mac.mm compositing_iosurface_layer_mac.mm +index 81a3529..dfcc48d 100644 +--- compositing_iosurface_layer_mac.mm ++++ compositing_iosurface_layer_mac.mm +@@ -268,7 +268,7 @@ void CompositingIOSurfaceLayerHelper::EndPumpingFrames() { TRACE_EVENT0("browser", "CompositingIOSurfaceLayer::drawInCGLContext"); if (!iosurface_->HasIOSurface() || context_->cgl_context() != glContext) { @@ -11,12 +11,12 @@ Index: compositing_iosurface_layer_mac.mm glClear(GL_COLOR_BUFFER_BIT); return; } -Index: compositing_iosurface_mac.mm -=================================================================== ---- compositing_iosurface_mac.mm (revision 280796) -+++ compositing_iosurface_mac.mm (working copy) -@@ -350,7 +350,7 @@ - glUseProgram(0); CHECK_AND_SAVE_GL_ERROR(); +diff --git compositing_iosurface_mac.mm compositing_iosurface_mac.mm +index 7012399..47cb9d1 100644 +--- compositing_iosurface_mac.mm ++++ compositing_iosurface_mac.mm +@@ -167,7 +167,7 @@ bool CompositingIOSurfaceMac::DrawIOSurface( + CHECK_AND_SAVE_GL_ERROR(); } else { // Should match the clear color of RenderWidgetHostViewMac. - glClearColor(1.0f, 1.0f, 1.0f, 1.0f); @@ -24,79 +24,11 @@ Index: compositing_iosurface_mac.mm glClear(GL_COLOR_BUFFER_BIT); } -Index: compositing_iosurface_shader_programs_mac.cc -=================================================================== ---- 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" - #include "base/logging.h" - #include "base/memory/scoped_ptr.h" -+#include "base/strings/stringprintf.h" -+#include "base/strings/string_number_conversions.h" - #include "base/values.h" - #include "content/browser/gpu/gpu_data_manager_impl.h" - #include "gpu/config/gpu_driver_bug_workaround_type.h" -@@ -51,6 +53,7 @@ - } - ); - -+float bgcolor[] = {1.0f, 1.0f, 1.0f}; - - // Only calculates position. - const char kvsSolidWhite[] = GLSL_PROGRAM_AS_STRING( -@@ -238,6 +241,18 @@ - const GLuint shader = glCreateShader(shader_type); - DCHECK_NE(shader, 0u); - -+ // Support customization of the background color. -+ std::string bg_shader; -+ if (shader_program == SHADER_PROGRAM_SOLID_WHITE && -+ shader_type == GL_FRAGMENT_SHADER) { -+ bg_shader = base::StringPrintf( -+ "void main() { gl_FragColor = vec4(%s, %s, %s, 1.0); }", -+ base::DoubleToString(bgcolor[0]).c_str(), -+ base::DoubleToString(bgcolor[1]).c_str(), -+ base::DoubleToString(bgcolor[2]).c_str()); -+ kFragmentShaderSourceCodeMap[shader_program] = bg_shader.c_str(); -+ } -+ - // Select and compile the shader program source code. - if (shader_type == GL_VERTEX_SHADER) { - const GLchar* source_snippets[] = { -@@ -412,6 +427,14 @@ - Reset(); - } - -+// static -+void CompositingIOSurfaceShaderPrograms::SetBackgroundColor( -+ float r, float g, float b) { -+ bgcolor[0] = r; -+ bgcolor[1] = g; -+ bgcolor[2] = b; -+} -+ - GLuint CompositingIOSurfaceShaderPrograms::GetShaderProgram(int which) { - if (shader_programs_[which] == 0u) { - shader_programs_[which] = -Index: compositing_iosurface_shader_programs_mac.h -=================================================================== ---- 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_; - } - -+ static void SetBackgroundColor(float r, float g, float b); -+ - protected: - FRIEND_TEST_ALL_PREFIXES(CompositingIOSurfaceTransformerTest, - TransformsRGBToYV12); -Index: render_widget_host_view_aura.cc -=================================================================== ---- render_widget_host_view_aura.cc (revision 280796) -+++ render_widget_host_view_aura.cc (working copy) -@@ -1672,8 +1672,14 @@ +diff --git render_widget_host_view_aura.cc render_widget_host_view_aura.cc +index 49ee8e4..c49ef82 100644 +--- render_widget_host_view_aura.cc ++++ render_widget_host_view_aura.cc +@@ -1615,8 +1615,14 @@ void RenderWidgetHostViewAura::OnPaint(gfx::Canvas* canvas) { // 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. @@ -113,16 +45,16 @@ Index: render_widget_host_view_aura.cc } void RenderWidgetHostViewAura::OnDeviceScaleFactorChanged( -Index: render_widget_host_view_mac.mm -=================================================================== ---- render_widget_host_view_mac.mm (revision 280796) -+++ render_widget_host_view_mac.mm (working copy) -@@ -504,7 +504,7 @@ - +diff --git render_widget_host_view_mac.mm render_widget_host_view_mac.mm +index 4ebbd62..7b3983a 100644 +--- render_widget_host_view_mac.mm ++++ render_widget_host_view_mac.mm +@@ -507,7 +507,7 @@ RenderWidgetHostViewMac::RenderWidgetHostViewMac(RenderWidgetHost* widget) + // draw. 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 88e553c0d..134e122b5 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 177271) -+++ core/frame/FrameView.cpp (working copy) -@@ -139,8 +139,10 @@ +diff --git core/frame/FrameView.cpp core/frame/FrameView.cpp +index 5d42bda..70e70a6 100644 +--- core/frame/FrameView.cpp ++++ core/frame/FrameView.cpp +@@ -126,8 +126,10 @@ FrameView::FrameView(LocalFrame* frame) if (!m_frame->isMainFrame()) return; @@ -13,11 +13,11 @@ Index: core/frame/FrameView.cpp } PassRefPtr FrameView::create(LocalFrame* frame) -Index: platform/scroll/ScrollbarThemeMacCommon.mm -=================================================================== ---- platform/scroll/ScrollbarThemeMacCommon.mm (revision 177271) -+++ platform/scroll/ScrollbarThemeMacCommon.mm (working copy) -@@ -355,10 +355,14 @@ +diff --git platform/scroll/ScrollbarThemeMacCommon.mm platform/scroll/ScrollbarThemeMacCommon.mm +index 309e1e3..b40a19a 100644 +--- platform/scroll/ScrollbarThemeMacCommon.mm ++++ platform/scroll/ScrollbarThemeMacCommon.mm +@@ -355,10 +355,14 @@ NSScrollerStyle ScrollbarThemeMacCommon::recommendedScrollerStyle() // static bool ScrollbarThemeMacCommon::isOverlayAPIAvailable() { @@ -31,4 +31,4 @@ Index: platform/scroll/ScrollbarThemeMacCommon.mm +#endif } - } // namespace WebCore + } // namespace blink diff --git a/patch/patches/ui_dragdrop_355390.patch b/patch/patches/ui_dragdrop_355390.patch index 1f8ad08b2..03e3caa7b 100644 --- a/patch/patches/ui_dragdrop_355390.patch +++ b/patch/patches/ui_dragdrop_355390.patch @@ -1,8 +1,8 @@ -Index: os_exchange_data_provider_aurax11.cc -=================================================================== ---- os_exchange_data_provider_aurax11.cc (revision 280796) -+++ os_exchange_data_provider_aurax11.cc (working copy) -@@ -155,7 +155,8 @@ +diff --git os_exchange_data_provider_aurax11.cc os_exchange_data_provider_aurax11.cc +index 714069f..56c7fa5 100644 +--- os_exchange_data_provider_aurax11.cc ++++ os_exchange_data_provider_aurax11.cc +@@ -158,7 +158,8 @@ void OSExchangeDataProviderAuraX11::SetURL(const GURL& url, format_map_.Insert(atom_cache_.GetAtom(kMimeTypeMozillaURL), mem); // Set a string fallback as well. diff --git a/patch/patches/underlay_1051.patch b/patch/patches/underlay_1051.patch index 0164a4492..e507037a6 100644 --- a/patch/patches/underlay_1051.patch +++ b/patch/patches/underlay_1051.patch @@ -1,11 +1,11 @@ -Index: underlay_opengl_hosting_window.h -=================================================================== ---- underlay_opengl_hosting_window.h (revision 280796) -+++ underlay_opengl_hosting_window.h (working copy) +diff --git underlay_opengl_hosting_window.h underlay_opengl_hosting_window.h +index d673c31..806d134 100644 +--- underlay_opengl_hosting_window.h ++++ underlay_opengl_hosting_window.h @@ -12,7 +12,7 @@ // Common base class for windows that host a OpenGL surface that renders under - // the window. Contains methods relating to hole punching so that the OpenGL - // surface is visible through the window. + // the window. Previously contained methods related to hole punching, now just + // contains common asserts. -UI_BASE_EXPORT +__attribute__((visibility("default"))) @interface UnderlayOpenGLHostingWindow : NSWindow diff --git a/patch/patches/views_widget_180.patch b/patch/patches/views_widget_180.patch index 259f14f77..47c06f3d7 100644 --- a/patch/patches/views_widget_180.patch +++ b/patch/patches/views_widget_180.patch @@ -1,8 +1,8 @@ -Index: desktop_aura/desktop_screen_win.cc -=================================================================== ---- desktop_aura/desktop_screen_win.cc (revision 280796) -+++ desktop_aura/desktop_screen_win.cc (working copy) -@@ -54,6 +54,8 @@ +diff --git desktop_aura/desktop_screen_win.cc desktop_aura/desktop_screen_win.cc +index aede179..abad021 100644 +--- desktop_aura/desktop_screen_win.cc ++++ desktop_aura/desktop_screen_win.cc +@@ -36,6 +36,8 @@ gfx::Display DesktopScreenWin::GetDisplayMatching( } HWND DesktopScreenWin::GetHWNDFromNativeView(gfx::NativeView window) const { @@ -11,11 +11,11 @@ Index: desktop_aura/desktop_screen_win.cc aura::WindowTreeHost* host = window->GetHost(); return host ? host->GetAcceleratedWidget() : NULL; } -Index: desktop_aura/desktop_screen_x11.cc -=================================================================== ---- desktop_aura/desktop_screen_x11.cc (revision 280796) -+++ desktop_aura/desktop_screen_x11.cc (working copy) -@@ -220,6 +220,9 @@ +diff --git desktop_aura/desktop_screen_x11.cc desktop_aura/desktop_screen_x11.cc +index f4c03da..bb253cf 100644 +--- desktop_aura/desktop_screen_x11.cc ++++ desktop_aura/desktop_screen_x11.cc +@@ -157,6 +157,9 @@ std::vector DesktopScreenX11::GetAllDisplays() const { gfx::Display DesktopScreenX11::GetDisplayNearestWindow( gfx::NativeView window) const { @@ -25,11 +25,11 @@ Index: desktop_aura/desktop_screen_x11.cc // Getting screen bounds here safely is hard. // // 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 280796) -+++ desktop_aura/desktop_window_tree_host_win.cc (working copy) -@@ -129,7 +129,9 @@ +diff --git desktop_aura/desktop_window_tree_host_win.cc desktop_aura/desktop_window_tree_host_win.cc +index 877e8d1..d3a03c6 100644 +--- desktop_aura/desktop_window_tree_host_win.cc ++++ desktop_aura/desktop_window_tree_host_win.cc +@@ -129,7 +129,9 @@ void DesktopWindowTreeHostWin::Init(aura::Window* content_window, native_widget_delegate_); HWND parent_hwnd = NULL; @@ -40,7 +40,7 @@ Index: desktop_aura/desktop_window_tree_host_win.cc parent_hwnd = params.parent->GetHost()->GetAcceleratedWidget(); message_handler_->set_remove_standard_frame(params.remove_standard_frame); -@@ -770,6 +772,7 @@ +@@ -769,6 +771,7 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() { void DesktopWindowTreeHostWin::HandleNativeFocus(HWND last_focused_window) { // TODO(beng): inform the native_widget_delegate_. @@ -48,7 +48,7 @@ Index: desktop_aura/desktop_window_tree_host_win.cc InputMethod* input_method = GetInputMethod(); if (input_method) input_method->OnFocus(); -@@ -777,6 +780,7 @@ +@@ -776,6 +779,7 @@ void DesktopWindowTreeHostWin::HandleNativeFocus(HWND last_focused_window) { void DesktopWindowTreeHostWin::HandleNativeBlur(HWND focused_window) { // TODO(beng): inform the native_widget_delegate_. @@ -56,11 +56,11 @@ Index: desktop_aura/desktop_window_tree_host_win.cc InputMethod* input_method = GetInputMethod(); if (input_method) input_method->OnBlur(); -Index: desktop_aura/desktop_window_tree_host_x11.cc -=================================================================== ---- desktop_aura/desktop_window_tree_host_x11.cc (revision 280796) -+++ desktop_aura/desktop_window_tree_host_x11.cc (working copy) -@@ -148,7 +148,8 @@ +diff --git desktop_aura/desktop_window_tree_host_x11.cc desktop_aura/desktop_window_tree_host_x11.cc +index 03b2cfb..c15798a 100644 +--- desktop_aura/desktop_window_tree_host_x11.cc ++++ desktop_aura/desktop_window_tree_host_x11.cc +@@ -146,7 +146,8 @@ DesktopWindowTreeHostX11::DesktopWindowTreeHostX11( window_parent_(NULL), window_shape_(NULL), custom_window_shape_(false), @@ -70,7 +70,7 @@ Index: desktop_aura/desktop_window_tree_host_x11.cc } DesktopWindowTreeHostX11::~DesktopWindowTreeHostX11() { -@@ -347,7 +348,8 @@ +@@ -349,7 +350,8 @@ void DesktopWindowTreeHostX11::CloseNow() { // 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(); -@@ -443,6 +445,8 @@ +@@ -446,6 +448,8 @@ void DesktopWindowTreeHostX11::GetWindowPlacement( } gfx::Rect DesktopWindowTreeHostX11::GetWindowBoundsInScreen() const { @@ -89,7 +89,7 @@ Index: desktop_aura/desktop_window_tree_host_x11.cc return bounds_; } -@@ -455,6 +459,8 @@ +@@ -458,6 +462,8 @@ gfx::Rect DesktopWindowTreeHostX11::GetClientAreaBoundsInScreen() const { // Attempts to calculate the rect by asking the NonClientFrameView what it // thought its GetBoundsForClientView() were broke combobox drop down // placement. @@ -98,7 +98,7 @@ Index: desktop_aura/desktop_window_tree_host_x11.cc return bounds_; } -@@ -899,6 +905,8 @@ +@@ -924,6 +930,8 @@ void DesktopWindowTreeHostX11::SetBounds(const gfx::Rect& requested_bounds) { } gfx::Point DesktopWindowTreeHostX11::GetLocationOnNativeScreen() const { @@ -107,7 +107,7 @@ Index: desktop_aura/desktop_window_tree_host_x11.cc return bounds_.origin(); } -@@ -1042,9 +1050,13 @@ +@@ -1072,10 +1080,14 @@ void DesktopWindowTreeHostX11::InitX11Window( } } @@ -115,14 +115,15 @@ Index: desktop_aura/desktop_window_tree_host_x11.cc + if (parent_widget == gfx::kNullAcceleratedWidget) + parent_widget = x_root_window_; + - bounds_ = params.bounds; + bounds_ = gfx::Rect(params.bounds.origin(), + AdjustSize(params.bounds.size())); xwindow_ = XCreateWindow( - xdisplay_, x_root_window_, + xdisplay_, parent_widget, bounds_.x(), bounds_.y(), bounds_.width(), bounds_.height(), 0, // border width -@@ -1600,6 +1612,10 @@ +@@ -1678,6 +1690,10 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent( } break; } @@ -133,11 +134,11 @@ Index: desktop_aura/desktop_window_tree_host_x11.cc case FocusOut: if (xev->xfocus.mode != NotifyGrab) { ReleaseCapture(); -Index: desktop_aura/desktop_window_tree_host_x11.h -=================================================================== ---- desktop_aura/desktop_window_tree_host_x11.h (revision 280796) -+++ desktop_aura/desktop_window_tree_host_x11.h (working copy) -@@ -84,6 +84,8 @@ +diff --git desktop_aura/desktop_window_tree_host_x11.h desktop_aura/desktop_window_tree_host_x11.h +index 1c08221..f0ae19f 100644 +--- desktop_aura/desktop_window_tree_host_x11.h ++++ desktop_aura/desktop_window_tree_host_x11.h +@@ -85,6 +85,8 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 // Deallocates the internal list of open windows. static void CleanUpWindowList(); @@ -146,7 +147,7 @@ Index: desktop_aura/desktop_window_tree_host_x11.h protected: // Overridden from DesktopWindowTreeHost: virtual void Init(aura::Window* content_window, -@@ -250,6 +252,9 @@ +@@ -257,6 +259,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 // The bounds of |xwindow_|. gfx::Rect bounds_; @@ -156,9 +157,9 @@ Index: desktop_aura/desktop_window_tree_host_x11.h // Whenever the bounds are set, we keep the previous set of bounds around so // we can have a better chance of getting the real |restored_bounds_|. Window // managers tend to send a Configure message with the maximized bounds, and -@@ -331,6 +336,9 @@ - // the frame when |xwindow_| gains focus or handles a mouse button event. - bool urgency_hint_set_; +@@ -336,6 +341,9 @@ class VIEWS_EXPORT DesktopWindowTreeHostX11 + + base::CancelableCallback delayed_resize_task_; + // True if the xwindow has already been destroyed. + bool xwindow_destroyed_; @@ -166,11 +167,11 @@ Index: desktop_aura/desktop_window_tree_host_x11.h DISALLOW_COPY_AND_ASSIGN(DesktopWindowTreeHostX11); }; -Index: widget.cc -=================================================================== ---- widget.cc (revision 280796) -+++ widget.cc (working copy) -@@ -116,6 +116,7 @@ +diff --git widget.cc widget.cc +index d4b16bb..5af6aa1 100644 +--- widget.cc ++++ widget.cc +@@ -116,6 +116,7 @@ Widget::InitParams::InitParams() show_state(ui::SHOW_STATE_DEFAULT), double_buffer(false), parent(NULL), @@ -178,7 +179,7 @@ Index: widget.cc native_widget(NULL), desktop_window_tree_host(NULL), layer_type(aura::WINDOW_LAYER_TEXTURED), -@@ -140,6 +141,7 @@ +@@ -140,6 +141,7 @@ Widget::InitParams::InitParams(Type type) show_state(ui::SHOW_STATE_DEFAULT), double_buffer(false), parent(NULL), @@ -186,7 +187,7 @@ Index: widget.cc native_widget(NULL), desktop_window_tree_host(NULL), layer_type(aura::WINDOW_LAYER_TEXTURED), -@@ -314,7 +316,7 @@ +@@ -314,7 +316,7 @@ void Widget::Init(const InitParams& in_params) { InitParams params = in_params; params.child |= (params.type == InitParams::TYPE_CONTROL); @@ -195,7 +196,7 @@ Index: widget.cc if (params.opacity == views::Widget::InitParams::INFER_OPACITY && params.type != views::Widget::InitParams::TYPE_WINDOW && -@@ -375,7 +377,12 @@ +@@ -375,7 +377,12 @@ void Widget::Init(const InitParams& in_params) { Minimize(); } else if (params.delegate) { SetContentsView(params.delegate->GetContentsView()); @@ -209,11 +210,11 @@ Index: widget.cc } // 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 280796) -+++ widget.h (working copy) -@@ -222,6 +222,7 @@ +diff --git widget.h widget.h +index fad5506..7828ced 100644 +--- widget.h ++++ widget.h +@@ -225,6 +225,7 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, // Should the widget be double buffered? Default is false. bool double_buffer; gfx::NativeView parent; diff --git a/patch/patches/webkit_933.patch b/patch/patches/webkit_933.patch deleted file mode 100644 index a7bc9212c..000000000 --- a/patch/patches/webkit_933.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: WebNode.cpp -=================================================================== ---- WebNode.cpp (revision 177271) -+++ WebNode.cpp (working copy) -@@ -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. -- RELEASE_ASSERT(eventType == "mousedown"); -+ // RELEASE_ASSERT(eventType == "mousedown"); - - EventListenerWrapper* listenerWrapper = listener->createEventListenerWrapper(eventType, useCapture, m_private.get()); - // The listenerWrapper is only referenced by the actual Node. Once it goes diff --git a/patch/patches/webkit_platform_mac_328814.patch b/patch/patches/webkit_platform_mac_328814.patch index 4b38467d8..1a04e8898 100644 --- a/patch/patches/webkit_platform_mac_328814.patch +++ b/patch/patches/webkit_platform_mac_328814.patch @@ -1,8 +1,8 @@ diff --git ThemeMac.mm ThemeMac.mm -index 4e702e1..927b2e8 100644 +index 8da614b..14c865d 100644 --- ThemeMac.mm +++ ThemeMac.mm -@@ -472,7 +472,7 @@ static void paintButton(ControlPart part, ControlStates states, GraphicsContext* +@@ -490,7 +490,7 @@ static void paintButton(ControlPart part, ControlStates states, GraphicsContext* [buttonCell drawWithFrame:NSRect(inflatedRect) inView:view]; #if !BUTTON_CELL_DRAW_WITH_FRAME_DRAWS_FOCUS_RING diff --git a/patch/patches/webkit_popups.patch b/patch/patches/webkit_popups.patch index ab6ee5951..7e6a86120 100644 --- a/patch/patches/webkit_popups.patch +++ b/patch/patches/webkit_popups.patch @@ -1,20 +1,8 @@ -Index: public/web/WebView.h -=================================================================== ---- public/web/WebView.h (revision 177271) -+++ public/web/WebView.h (working copy) -@@ -416,6 +416,7 @@ - - // Sets whether select popup menus should be rendered by the browser. - BLINK_EXPORT static void setUseExternalPopupMenus(bool); -+ virtual void setUseExternalPopupMenusThisInstance(bool) = 0; - - // Hides any popup (suggestions, selects...) that might be showing. - virtual void hidePopups() = 0; -Index: Source/web/ChromeClientImpl.cpp -=================================================================== ---- Source/web/ChromeClientImpl.cpp (revision 177271) -+++ Source/web/ChromeClientImpl.cpp (working copy) -@@ -717,7 +717,7 @@ +diff --git Source/web/ChromeClientImpl.cpp Source/web/ChromeClientImpl.cpp +index 3a2b428..961197c 100644 +--- Source/web/ChromeClientImpl.cpp ++++ Source/web/ChromeClientImpl.cpp +@@ -709,7 +709,7 @@ bool ChromeClientImpl::hasOpenedPopup() const PassRefPtr ChromeClientImpl::createPopupMenu(LocalFrame& frame, PopupMenuClient* client) const { @@ -23,11 +11,11 @@ Index: Source/web/ChromeClientImpl.cpp return adoptRef(new ExternalPopupMenu(frame, client, *m_webView)); return adoptRef(new PopupMenuChromium(frame, client)); -Index: Source/web/WebViewImpl.cpp -=================================================================== ---- Source/web/WebViewImpl.cpp (revision 177271) -+++ Source/web/WebViewImpl.cpp (working copy) -@@ -369,6 +369,7 @@ +diff --git Source/web/WebViewImpl.cpp Source/web/WebViewImpl.cpp +index a953461..2376cfb 100644 +--- Source/web/WebViewImpl.cpp ++++ Source/web/WebViewImpl.cpp +@@ -378,6 +378,7 @@ WebViewImpl::WebViewImpl(WebViewClient* client) , m_fakePageScaleAnimationPageScaleFactor(0) , m_fakePageScaleAnimationUseAnchor(false) , m_contextMenuAllowed(false) @@ -35,7 +23,7 @@ Index: Source/web/WebViewImpl.cpp , m_doingDragAndDrop(false) , m_ignoreInputEvents(false) , m_compositorDeviceScaleFactorOverride(0) -@@ -3679,9 +3680,14 @@ +@@ -3790,9 +3791,14 @@ void WebViewImpl::deviceOrPageScaleFactorChanged() m_page->inspectorController().deviceOrPageScaleFactorChanged(); } @@ -51,11 +39,11 @@ Index: Source/web/WebViewImpl.cpp } void WebViewImpl::startDragging(LocalFrame* frame, -Index: Source/web/WebViewImpl.h -=================================================================== ---- Source/web/WebViewImpl.h (revision 177271) -+++ Source/web/WebViewImpl.h (working copy) -@@ -353,7 +353,8 @@ +diff --git Source/web/WebViewImpl.h Source/web/WebViewImpl.h +index 0db68d6..1aa5c26 100644 +--- Source/web/WebViewImpl.h ++++ Source/web/WebViewImpl.h +@@ -358,7 +358,8 @@ public: // 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 +53,7 @@ Index: Source/web/WebViewImpl.h bool contextMenuAllowed() const { -@@ -625,6 +626,8 @@ +@@ -637,6 +638,8 @@ private: bool m_contextMenuAllowed; @@ -74,3 +62,15 @@ Index: Source/web/WebViewImpl.h bool m_doingDragAndDrop; bool m_ignoreInputEvents; +diff --git public/web/WebView.h public/web/WebView.h +index 40ff9b3..82c77fe 100644 +--- public/web/WebView.h ++++ public/web/WebView.h +@@ -409,6 +409,7 @@ public: + + // Sets whether select popup menus should be rendered by the browser. + BLINK_EXPORT static void setUseExternalPopupMenus(bool); ++ virtual void setUseExternalPopupMenusThisInstance(bool) = 0; + + // Hides any popup (suggestions, selects...) that might be showing. + virtual void hidePopups() = 0; diff --git a/patch/patches/zlib.patch b/patch/patches/zlib.patch index 6b4a8aa6b..9a3a9c9c1 100644 --- a/patch/patches/zlib.patch +++ b/patch/patches/zlib.patch @@ -1,7 +1,7 @@ -Index: contrib/minizip/unzip.c -=================================================================== ---- contrib/minizip/unzip.c (revision 280796) -+++ contrib/minizip/unzip.c (working copy) +diff --git contrib/minizip/unzip.c contrib/minizip/unzip.c +index af59b80..ee3c0fd 100644 +--- contrib/minizip/unzip.c ++++ contrib/minizip/unzip.c @@ -69,7 +69,7 @@ #include diff --git a/tests/cefclient/cefclient.rc b/tests/cefclient/cefclient.rc index 18b8c4f84..6dc96f3d3 100644 --- a/tests/cefclient/cefclient.rc +++ b/tests/cefclient/cefclient.rc @@ -30,7 +30,6 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US IDS_BINDING BINARY "res\\binding.html" IDS_DIALOGS BINARY "res\\dialogs.html" -IDS_DOMACCESS BINARY "res\\domaccess.html" IDS_LOCALSTORAGE BINARY "res\\localstorage.html" IDS_LOGO BINARY "res\\logo.png" IDS_OSRTEST BINARY "res\\osr_test.html" diff --git a/tests/cefclient/cefclient_osr_widget_gtk.cpp b/tests/cefclient/cefclient_osr_widget_gtk.cpp index 995b40f5c..13ae6cc5f 100644 --- a/tests/cefclient/cefclient_osr_widget_gtk.cpp +++ b/tests/cefclient/cefclient_osr_widget_gtk.cpp @@ -976,10 +976,6 @@ gint glarea_scroll_event(GtkWidget* widget, return TRUE; } -void process(GdkEventKey* event) { - -} - gint glarea_key_event(GtkWidget* widget, GdkEventKey* event, OSRWindow* window) { @@ -1091,7 +1087,6 @@ class ScopedGLContext { private: bool swap_buffers_; - GdkGLContext* glcontext_; GdkGLDrawable* gldrawable_; bool is_valid_; }; diff --git a/tests/cefclient/client_app_delegates.cpp b/tests/cefclient/client_app_delegates.cpp index 5be43ac0d..68bfb0c8b 100644 --- a/tests/cefclient/client_app_delegates.cpp +++ b/tests/cefclient/client_app_delegates.cpp @@ -4,7 +4,6 @@ #include "cefclient/client_app.h" #include "cefclient/client_renderer.h" -#include "cefclient/dom_test.h" #include "cefclient/performance_test.h" #include "cefclient/scheme_test.h" @@ -19,7 +18,6 @@ void ClientApp::CreateBrowserDelegates(BrowserDelegateSet& delegates) { // static void ClientApp::CreateRenderDelegates(RenderDelegateSet& delegates) { client_renderer::CreateRenderDelegates(delegates); - dom_test::CreateRenderDelegates(delegates); performance_test::CreateRenderDelegates(delegates); } diff --git a/tests/cefclient/client_handler.cpp b/tests/cefclient/client_handler.cpp index 0a381eb76..39e789dc4 100644 --- a/tests/cefclient/client_handler.cpp +++ b/tests/cefclient/client_handler.cpp @@ -24,7 +24,6 @@ #include "cefclient/client_renderer.h" #include "cefclient/client_switches.h" #include "cefclient/dialog_test.h" -#include "cefclient/dom_test.h" #include "cefclient/resource_util.h" #include "cefclient/string_util.h" #include "cefclient/window_test.h" @@ -462,12 +461,6 @@ void ClientHandler::OnLoadingStateChange(CefRefPtr browser, SetLoading(isLoading); SetNavState(canGoBack, canGoForward); - - if (!isLoading) { - // Continue the DOM test. - if (browser->GetMainFrame()->GetURL() == dom_test::kTestUrl) - dom_test::OnLoadEnd(browser); - } } void ClientHandler::OnLoadError(CefRefPtr browser, diff --git a/tests/cefclient/dom_test.cpp b/tests/cefclient/dom_test.cpp deleted file mode 100644 index 9fe216980..000000000 --- a/tests/cefclient/dom_test.cpp +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights -// reserved. Use of this source code is governed by a BSD-style license that -// can be found in the LICENSE file. - -#include "cefclient/dom_test.h" - -#include -#include - -#include "include/cef_dom.h" -#include "include/wrapper/cef_helpers.h" - -namespace dom_test { - -const char kTestUrl[] = "http://tests/domaccess"; - -namespace { - -const char* kMessageName = "DOMTest.Message"; - -class ClientDOMEventListener : public CefDOMEventListener { - public: - ClientDOMEventListener() { - } - - virtual void HandleEvent(CefRefPtr event) OVERRIDE { - CefRefPtr document = event->GetDocument(); - DCHECK(document.get()); - - std::stringstream ss; - - CefRefPtr button = event->GetTarget(); - DCHECK(button.get()); - std::string buttonValue = button->GetElementAttribute("value"); - ss << "You clicked the " << buttonValue.c_str() << " button. "; - - if (document->HasSelection()) { - std::string startName, endName; - - // Determine the start name by first trying to locate the "id" attribute - // and then defaulting to the tag name. - { - CefRefPtr node = document->GetSelectionStartNode(); - if (!node->IsElement()) - node = node->GetParent(); - if (node->IsElement() && node->HasElementAttribute("id")) - startName = node->GetElementAttribute("id"); - else - startName = node->GetName(); - } - - // Determine the end name by first trying to locate the "id" attribute - // and then defaulting to the tag name. - { - CefRefPtr node = document->GetSelectionEndNode(); - if (!node->IsElement()) - node = node->GetParent(); - if (node->IsElement() && node->HasElementAttribute("id")) - endName = node->GetElementAttribute("id"); - else - endName = node->GetName(); - } - - ss << "The selection is from " << - startName.c_str() << ":" << document->GetSelectionStartOffset() << - " to " << - endName.c_str() << ":" << document->GetSelectionEndOffset(); - } else { - ss << "Nothing is selected."; - } - - // Update the description. - CefRefPtr desc = document->GetElementById("description"); - DCHECK(desc.get()); - CefRefPtr text = desc->GetFirstChild(); - DCHECK(text.get()); - DCHECK(text->IsText()); - text->SetValue(ss.str()); - } - - IMPLEMENT_REFCOUNTING(ClientDOMEventListener); -}; - -class ClientDOMVisitor : public CefDOMVisitor { - public: - ClientDOMVisitor() { - } - - virtual void Visit(CefRefPtr document) OVERRIDE { - // Register a click listener for the button. - CefRefPtr button = document->GetElementById("button"); - DCHECK(button.get()); - button->AddEventListener("click", new ClientDOMEventListener(), false); - } - - IMPLEMENT_REFCOUNTING(ClientDOMVisitor); -}; - -class DOMRenderDelegate : public ClientApp::RenderDelegate { - public: - DOMRenderDelegate() { - } - - virtual bool OnProcessMessageReceived( - CefRefPtr app, - CefRefPtr browser, - CefProcessId source_process, - CefRefPtr message) OVERRIDE { - if (message->GetName() == kMessageName) { - // Visit the DOM to attach the event listener. - browser->GetMainFrame()->VisitDOM(new ClientDOMVisitor); - return true; - } - - return false; - } - - private: - IMPLEMENT_REFCOUNTING(DOMRenderDelegate); -}; - -} // namespace - -void CreateRenderDelegates(ClientApp::RenderDelegateSet& delegates) { - delegates.insert(new DOMRenderDelegate); -} - -void OnLoadEnd(CefRefPtr browser) { - // Send a message to the render process to continue the test setup. - browser->SendProcessMessage(PID_RENDERER, - CefProcessMessage::Create(kMessageName)); -} - -} // namespace dom_test diff --git a/tests/cefclient/dom_test.h b/tests/cefclient/dom_test.h deleted file mode 100644 index 37d5dbc0e..000000000 --- a/tests/cefclient/dom_test.h +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights -// reserved. Use of this source code is governed by a BSD-style license that -// can be found in the LICENSE file. - -#ifndef CEF_TESTS_CEFCLIENT_DOM_TEST_H_ -#define CEF_TESTS_CEFCLIENT_DOM_TEST_H_ -#pragma once - -#include "include/cef_base.h" -#include "cefclient/client_app.h" - -namespace dom_test { - -// The DOM test URL. -extern const char kTestUrl[]; - -// Create the render delegate. -void CreateRenderDelegates(ClientApp::RenderDelegateSet& delegates); - -// Continue the test after the page has loaded. -void OnLoadEnd(CefRefPtr browser); - -} // namespace dom_test - -#endif // CEF_TESTS_CEFCLIENT_DOM_TEST_H_ diff --git a/tests/cefclient/print_handler_gtk.cpp b/tests/cefclient/print_handler_gtk.cpp index 99ba43f3b..291e8f99e 100644 --- a/tests/cefclient/print_handler_gtk.cpp +++ b/tests/cefclient/print_handler_gtk.cpp @@ -26,7 +26,6 @@ const char kCUPSPrintoutMode[] = "cups-PrintoutMode"; const char kCUPSProcessColorModel[] = "cups-ProcessColorModel"; const char kBlack[] = "Black"; const char kCMYK[] = "CMYK"; -const char kKCMY[] = "KCMY"; const char kCMY_K[] = "CMY+K"; const char kCMY[] = "CMY"; const char kColor[] = "Color"; diff --git a/tests/cefclient/res/domaccess.html b/tests/cefclient/res/domaccess.html deleted file mode 100644 index 87bd23e38..000000000 --- a/tests/cefclient/res/domaccess.html +++ /dev/null @@ -1,13 +0,0 @@ - - -

Select some portion of the below page content and click the "Describe Selection" button. The selected region will then be described below.

-

This is p1

-

This is p2

-

This is p3

-

This is p4

-
- -

The description will appear here.

-
- - diff --git a/tests/cefclient/res/other_tests.html b/tests/cefclient/res/other_tests.html index f495191ad..83b261d14 100644 --- a/tests/cefclient/res/other_tests.html +++ b/tests/cefclient/res/other_tests.html @@ -9,7 +9,6 @@
  • Accelerated Layers
  • Cursors
  • Dialogs
  • -
  • DOM Access
  • Drag & Drop
  • Flash Plugin
  • Geolocation
  • diff --git a/tests/cefclient/resource.h b/tests/cefclient/resource.h index d7a19f12a..5bcfd2b7f 100644 --- a/tests/cefclient/resource.h +++ b/tests/cefclient/resource.h @@ -42,17 +42,16 @@ #define IDC_STATIC -1 #define IDS_BINDING 1000 #define IDS_DIALOGS 1001 -#define IDS_DOMACCESS 1002 -#define IDS_LOCALSTORAGE 1003 -#define IDS_LOGO 1004 -#define IDS_LOGOBALL 1005 -#define IDS_OSRTEST 1006 -#define IDS_OTHER_TESTS 1007 -#define IDS_PERFORMANCE 1008 -#define IDS_TRANSPARENCY 1009 -#define IDS_WINDOW 1010 -#define IDS_XMLHTTPREQUEST 1011 -#define IDS_PERFORMANCE2 1012 +#define IDS_LOCALSTORAGE 1002 +#define IDS_LOGO 1003 +#define IDS_LOGOBALL 1004 +#define IDS_OSRTEST 1005 +#define IDS_OTHER_TESTS 1006 +#define IDS_PERFORMANCE 1007 +#define IDS_TRANSPARENCY 1008 +#define IDS_WINDOW 1009 +#define IDS_XMLHTTPREQUEST 1010 +#define IDS_PERFORMANCE2 1011 // Avoid files associated with MacOS #define _X86_ diff --git a/tests/cefclient/resource_util_win.cpp b/tests/cefclient/resource_util_win.cpp index a5a640760..8ec83131d 100644 --- a/tests/cefclient/resource_util_win.cpp +++ b/tests/cefclient/resource_util_win.cpp @@ -35,7 +35,6 @@ int GetResourceId(const char* resource_name) { } resource_map[] = { {"binding.html", IDS_BINDING}, {"dialogs.html", IDS_DIALOGS}, - {"domaccess.html", IDS_DOMACCESS}, {"localstorage.html", IDS_LOCALSTORAGE}, {"logo.png", IDS_LOGO}, {"osr_test.html", IDS_OSRTEST}, diff --git a/tests/cefsimple/simple_handler_linux.cpp b/tests/cefsimple/simple_handler_linux.cpp index a1e04e15e..907d63863 100644 --- a/tests/cefsimple/simple_handler_linux.cpp +++ b/tests/cefsimple/simple_handler_linux.cpp @@ -22,7 +22,7 @@ void SimpleHandler::OnTitleChange(CefRefPtr browser, // Retrieve the X11 window handle for the browser. ::Window window = browser->GetHost()->GetWindowHandle(); - DCHECK_NE(window, kNullWindowHandle); + DCHECK(window != kNullWindowHandle); // Retrieve the atoms required by the below XChangeProperty call. const char* kAtoms[] = { diff --git a/tests/unittests/os_rendering_unittest.cc b/tests/unittests/os_rendering_unittest.cc index 4ed763af2..56842a130 100644 --- a/tests/unittests/os_rendering_unittest.cc +++ b/tests/unittests/os_rendering_unittest.cc @@ -82,7 +82,6 @@ const CefRect kDropDivRect(8, 332, 52, 52); const CefRect kDragDivRect(71, 342, 30, 30); const int kDefaultVerticalScrollbarWidth = 17; const int kVerticalScrollbarWidth = GetSystemMetrics(SM_CXVSCROLL); -const int kHorizontalScrollbarWidth = GetSystemMetrics(SM_CXHSCROLL); #elif defined(OS_MACOSX) const CefRect kEditBoxRect(442, 251, 46, 16); const CefRect kNavigateButtonRect(375, 275, 130, 20); @@ -99,7 +98,6 @@ const CefRect kDropDivRect(8, 332, 52, 52); const CefRect kDragDivRect(71, 342, 30, 30); const int kDefaultVerticalScrollbarWidth = 14; const int kVerticalScrollbarWidth = 14; -const int kHorizontalScrollbarWidth = 14; #else #error "Unsupported platform" #endif // defined(OS_WIN) @@ -215,10 +213,6 @@ class OSRTestHandler : public RoutingTestHandler, event_count_(0), event_total_(1), started_(false) { - if (test == OSR_TEST_SCROLLING) { - // Wait for both the paint event and the scroll offset event. - event_total_ = 2; - } } virtual ~OSRTestHandler() {} @@ -856,12 +850,6 @@ class OSRTestHandler : public RoutingTestHandler, } } - virtual void OnScrollOffsetChanged(CefRefPtr browser) OVERRIDE { - if (test_type_ == OSR_TEST_SCROLLING && started()) { - DestroySucceededTestSoon(); - } - } - virtual bool OnTooltip(CefRefPtr browser, CefString& text) OVERRIDE { if (test_type_ == OSR_TEST_TOOLTIP && started()) { diff --git a/tools/repack_locales.py b/tools/repack_locales.py index 890400035..2e5014645 100644 --- a/tools/repack_locales.py +++ b/tools/repack_locales.py @@ -54,26 +54,22 @@ def calc_inputs(locale): """Determine the files that need processing for the given locale.""" inputs = [] - #e.g. '<(grit_out_dir)/generated_resources_da.pak' - #inputs.append(os.path.join(GRIT_DIR, 'generated_resources_%s.pak' % locale)) + #e.g. + # '<(SHARED_INTERMEDIATE_DIR)/components/strings/components_strings_da.pak' + inputs.append(os.path.join(SHARE_INT_DIR, 'components', 'strings', + 'components_strings_%s.pak' % locale)) - #e.g. '<(grit_out_dir)/locale_settings_da.pak' - #inputs.append(os.path.join(GRIT_DIR, 'locale_settings_%s.pak' % locale)) + #e.g. + # '<(SHARED_INTERMEDIATE_DIR)/content/app/strings/content_strings_da.pak' + inputs.append(os.path.join(SHARE_INT_DIR, 'content', 'app', 'strings', + 'content_strings_%s.pak' % locale)) - #e.g. '<(grit_out_dir)/platform_locale_settings_da.pak' - #inputs.append(os.path.join(GRIT_DIR, - # 'platform_locale_settings_%s.pak' % locale)) - - #e.g. '<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_strings_da.pak' - inputs.append(os.path.join(SHARE_INT_DIR, 'webkit', - 'webkit_strings_%s.pak' % locale)) - - #e.g. '<(SHARED_INTERMEDIATE_DIR)/ui/ui_strings_da.pak', - inputs.append(os.path.join(SHARE_INT_DIR, 'ui', 'ui_strings', + #e.g. '<(SHARED_INTERMEDIATE_DIR)/ui/strings/ui_strings_da.pak', + inputs.append(os.path.join(SHARE_INT_DIR, 'ui', 'strings', 'ui_strings_%s.pak' % locale)) - #e.g. '<(SHARED_INTERMEDIATE_DIR)/ui/app_locale_settings_da.pak', - inputs.append(os.path.join(SHARE_INT_DIR, 'ui', 'app_locale_settings', + #e.g. '<(SHARED_INTERMEDIATE_DIR)/ui/strings/app_locale_settings_da.pak', + inputs.append(os.path.join(SHARE_INT_DIR, 'ui', 'strings', 'app_locale_settings_%s.pak' % locale)) #e.g. '<(SHARED_INTERMEDIATE_DIR)/cef/cef_strings_da.pak'