summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2014-03-31 11:51:25 +0100
committerBen Murdoch <benm@google.com>2014-03-31 11:51:25 +0100
commiteffb81e5f8246d0db0270817048dc992db66e9fb (patch)
treecc45ced7dfde038c8f3d022ee1eeac207a68761e /ui
parent4d26337013537c1acafbcb63b9b2b7e404c3adc9 (diff)
downloadchromium_org-effb81e5f8246d0db0270817048dc992db66e9fb.tar.gz
Merge from Chromium at DEPS revision 260458
This commit was generated by merge_to_master.py. Change-Id: I140fa91b7f09c8efba4424e99ccb87b94a11d022
Diffstat (limited to 'ui')
-rw-r--r--ui/accessibility/accessibility.target.darwin-arm.mk6
-rw-r--r--ui/accessibility/accessibility.target.darwin-mips.mk6
-rw-r--r--ui/accessibility/accessibility.target.darwin-x86.mk6
-rw-r--r--ui/accessibility/accessibility.target.darwin-x86_64.mk338
-rw-r--r--ui/accessibility/accessibility.target.linux-arm.mk6
-rw-r--r--ui/accessibility/accessibility.target.linux-mips.mk6
-rw-r--r--ui/accessibility/accessibility.target.linux-x86.mk6
-rw-r--r--ui/accessibility/accessibility.target.linux-x86_64.mk338
-rw-r--r--ui/accessibility/ax_enums.idl8
-rw-r--r--ui/accessibility/ax_gen.target.darwin-arm.mk2
-rw-r--r--ui/accessibility/ax_gen.target.darwin-mips.mk2
-rw-r--r--ui/accessibility/ax_gen.target.darwin-x86.mk2
-rw-r--r--ui/accessibility/ax_gen.target.darwin-x86_64.mk310
-rw-r--r--ui/accessibility/ax_gen.target.linux-arm.mk2
-rw-r--r--ui/accessibility/ax_gen.target.linux-mips.mk2
-rw-r--r--ui/accessibility/ax_gen.target.linux-x86.mk2
-rw-r--r--ui/accessibility/ax_gen.target.linux-x86_64.mk310
-rw-r--r--ui/accessibility/ax_node_data.cc18
-rw-r--r--ui/accessibility/ax_tree_unittest.cc8
-rw-r--r--ui/accessibility/ax_view_state.cc12
-rw-r--r--ui/accessibility/ax_view_state.h13
-rw-r--r--ui/android/bitmap_format_java.target.darwin-arm.mk2
-rw-r--r--ui/android/bitmap_format_java.target.darwin-mips.mk2
-rw-r--r--ui/android/bitmap_format_java.target.darwin-x86.mk2
-rw-r--r--ui/android/bitmap_format_java.target.darwin-x86_64.mk233
-rw-r--r--ui/android/bitmap_format_java.target.linux-arm.mk2
-rw-r--r--ui/android/bitmap_format_java.target.linux-mips.mk2
-rw-r--r--ui/android/bitmap_format_java.target.linux-x86.mk2
-rw-r--r--ui/android/bitmap_format_java.target.linux-x86_64.mk233
-rw-r--r--ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java3
-rw-r--r--ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java14
-rw-r--r--ui/android/java/strings/translations/android_ui_strings_am.xtb2
-rw-r--r--ui/android/window_open_disposition_java.target.darwin-arm.mk2
-rw-r--r--ui/android/window_open_disposition_java.target.darwin-mips.mk2
-rw-r--r--ui/android/window_open_disposition_java.target.darwin-x86.mk2
-rw-r--r--ui/android/window_open_disposition_java.target.darwin-x86_64.mk233
-rw-r--r--ui/android/window_open_disposition_java.target.linux-arm.mk2
-rw-r--r--ui/android/window_open_disposition_java.target.linux-mips.mk2
-rw-r--r--ui/android/window_open_disposition_java.target.linux-x86.mk2
-rw-r--r--ui/android/window_open_disposition_java.target.linux-x86_64.mk233
-rw-r--r--ui/app_list/app_list.gyp8
-rw-r--r--ui/app_list/app_list_constants.cc9
-rw-r--r--ui/app_list/app_list_constants.h4
-rw-r--r--ui/app_list/app_list_menu.cc4
-rw-r--r--ui/app_list/app_list_view_delegate.cc6
-rw-r--r--ui/app_list/app_list_view_delegate.h3
-rw-r--r--ui/app_list/test/app_list_test_model.cc21
-rw-r--r--ui/app_list/test/app_list_test_model.h6
-rw-r--r--ui/app_list/views/app_list_folder_view.cc9
-rw-r--r--ui/app_list/views/app_list_folder_view.h52
-rw-r--r--ui/app_list/views/apps_container_view.cc13
-rw-r--r--ui/app_list/views/apps_container_view.h3
-rw-r--r--ui/app_list/views/apps_grid_view.cc125
-rw-r--r--ui/app_list/views/apps_grid_view.h25
-rw-r--r--ui/app_list/views/apps_grid_view_folder_delegate.h61
-rw-r--r--ui/app_list/views/apps_grid_view_unittest.cc234
-rw-r--r--ui/app_list/views/contents_view.cc13
-rw-r--r--ui/app_list/views/folder_header_view.cc33
-rw-r--r--ui/app_list/views/folder_header_view.h21
-rw-r--r--ui/app_list/views/folder_header_view_delegate.h1
-rw-r--r--ui/app_list/views/folder_header_view_unittest.cc136
-rw-r--r--ui/aura/aura.gyp44
-rw-r--r--ui/aura/client/default_activation_client.cc4
-rw-r--r--ui/aura/client/default_activation_client.h2
-rw-r--r--ui/aura/demo/demo_main.cc2
-rw-r--r--ui/aura/test/test_window_delegate.cc4
-rw-r--r--ui/aura/test/test_window_delegate.h2
-rw-r--r--ui/aura/window.cc82
-rw-r--r--ui/aura/window.h17
-rw-r--r--ui/aura/window_delegate.h7
-rw-r--r--ui/aura/window_event_dispatcher.cc291
-rw-r--r--ui/aura/window_event_dispatcher.h86
-rw-r--r--ui/aura/window_observer.h11
-rw-r--r--ui/aura/window_tree_host.cc1
-rw-r--r--ui/aura/window_tree_host_x11.cc1
-rw-r--r--ui/aura/window_unittest.cc6
-rw-r--r--ui/base/clipboard/clipboard_aurax11.cc7
-rw-r--r--ui/base/cocoa/underlay_opengl_hosting_window.mm4
-rw-r--r--ui/base/cursor/cursor_loader_x11.cc45
-rw-r--r--ui/base/cursor/cursor_loader_x11.h9
-rw-r--r--ui/base/cursor/cursor_loader_x11_unittest.cc1
-rw-r--r--ui/base/cursor/cursor_ozone.cc6
-rw-r--r--ui/base/cursor/cursor_util.cc60
-rw-r--r--ui/base/cursor/cursor_util.h27
-rw-r--r--ui/base/cursor/ozone/bitmap_cursor_factory_ozone.cc16
-rw-r--r--ui/base/cursor/ozone/bitmap_cursor_factory_ozone.h11
-rw-r--r--ui/base/dragdrop/drag_utils.cc11
-rw-r--r--ui/base/dragdrop/drag_utils.h6
-rw-r--r--ui/base/dragdrop/file_info.cc17
-rw-r--r--ui/base/dragdrop/file_info.h25
-rw-r--r--ui/base/dragdrop/gtk_dnd_util.cc10
-rw-r--r--ui/base/dragdrop/gtk_dnd_util.h6
-rw-r--r--ui/base/dragdrop/os_exchange_data.cc21
-rw-r--r--ui/base/dragdrop/os_exchange_data.h32
-rw-r--r--ui/base/dragdrop/os_exchange_data_provider_aura.cc16
-rw-r--r--ui/base/dragdrop/os_exchange_data_provider_aura.h10
-rw-r--r--ui/base/dragdrop/os_exchange_data_provider_aurax11.cc86
-rw-r--r--ui/base/dragdrop/os_exchange_data_provider_aurax11.h18
-rw-r--r--ui/base/dragdrop/os_exchange_data_provider_aurax11_unittest.cc3
-rw-r--r--ui/base/dragdrop/os_exchange_data_provider_win.cc31
-rw-r--r--ui/base/dragdrop/os_exchange_data_provider_win.h9
-rw-r--r--ui/base/ime/OWNERS13
-rw-r--r--ui/base/ime/dummy_text_input_client.cc15
-rw-r--r--ui/base/ime/dummy_text_input_client.h12
-rw-r--r--ui/base/layout.cc13
-rw-r--r--ui/base/layout.h6
-rw-r--r--ui/base/models/simple_menu_model.h5
-rw-r--r--ui/base/resource/resource_bundle.cc21
-rw-r--r--ui/base/resource/resource_bundle.h10
-rw-r--r--ui/base/resource/resource_bundle_win.cc32
-rw-r--r--ui/base/strings/app_locale_settings_ar.xtb4
-rw-r--r--ui/base/strings/ui_strings.grd62
-rw-r--r--ui/base/strings/ui_strings.gyp49
-rw-r--r--ui/base/strings/ui_strings.target.darwin-x86.mk4
-rw-r--r--ui/base/strings/ui_strings.target.darwin-x86_64.mk277
-rw-r--r--ui/base/strings/ui_strings.target.linux-x86.mk4
-rw-r--r--ui/base/strings/ui_strings.target.linux-x86_64.mk277
-rw-r--r--ui/base/strings/ui_strings_am.xtb2
-rw-r--r--ui/base/strings/ui_strings_th.xtb2
-rw-r--r--ui/base/test/run_all_unittests.cc6
-rw-r--r--ui/base/ui_base.gyp15
-rw-r--r--ui/base/ui_base.target.darwin-arm.mk8
-rw-r--r--ui/base/ui_base.target.darwin-mips.mk8
-rw-r--r--ui/base/ui_base.target.darwin-x86.mk8
-rw-r--r--ui/base/ui_base.target.darwin-x86_64.mk390
-rw-r--r--ui/base/ui_base.target.linux-arm.mk8
-rw-r--r--ui/base/ui_base.target.linux-mips.mk8
-rw-r--r--ui/base/ui_base.target.linux-x86.mk8
-rw-r--r--ui/base/ui_base.target.linux-x86_64.mk390
-rw-r--r--ui/base/ui_base_jni_headers.target.darwin-arm.mk2
-rw-r--r--ui/base/ui_base_jni_headers.target.darwin-mips.mk2
-rw-r--r--ui/base/ui_base_jni_headers.target.darwin-x86.mk2
-rw-r--r--ui/base/ui_base_jni_headers.target.darwin-x86_64.mk294
-rw-r--r--ui/base/ui_base_jni_headers.target.linux-arm.mk2
-rw-r--r--ui/base/ui_base_jni_headers.target.linux-mips.mk2
-rw-r--r--ui/base/ui_base_jni_headers.target.linux-x86.mk2
-rw-r--r--ui/base/ui_base_jni_headers.target.linux-x86_64.mk294
-rw-r--r--ui/base/ui_base_switches.cc9
-rw-r--r--ui/base/ui_base_switches.h6
-rw-r--r--ui/base/x/selection_requestor.cc7
-rw-r--r--ui/base/x/selection_utils.cc12
-rw-r--r--ui/base/x/x11_menu_list.cc46
-rw-r--r--ui/base/x/x11_menu_list.h48
-rw-r--r--ui/base/x/x11_util.cc32
-rw-r--r--ui/base/x/x11_util.h4
-rw-r--r--ui/compositor/clone_layer.cc54
-rw-r--r--ui/compositor/clone_layer.h23
-rw-r--r--ui/compositor/compositor.gyp2
-rw-r--r--ui/compositor/layer.cc8
-rw-r--r--ui/compositor/layer.h6
-rw-r--r--ui/compositor/layer_owner.cc47
-rw-r--r--ui/compositor/layer_owner.h9
-rw-r--r--ui/compositor/layer_owner_delegate.h27
-rw-r--r--ui/display/chromeos/native_display_delegate.h11
-rw-r--r--ui/display/chromeos/output_configurator.cc59
-rw-r--r--ui/display/chromeos/output_configurator.h25
-rw-r--r--ui/display/chromeos/output_configurator_unittest.cc17
-rw-r--r--ui/display/chromeos/ozone/native_display_delegate_ozone.cc95
-rw-r--r--ui/display/chromeos/ozone/native_display_delegate_ozone.h51
-rw-r--r--ui/display/chromeos/ozone/touchscreen_delegate_ozone.cc24
-rw-r--r--ui/display/chromeos/ozone/touchscreen_delegate_ozone.h31
-rw-r--r--ui/display/chromeos/x11/display_snapshot_x11.cc2
-rw-r--r--ui/display/chromeos/x11/display_util.cc161
-rw-r--r--ui/display/chromeos/x11/display_util_unittest.cc157
-rw-r--r--ui/display/chromeos/x11/display_util_x11.cc41
-rw-r--r--ui/display/chromeos/x11/display_util_x11.h24
-rw-r--r--ui/display/chromeos/x11/display_util_x11_unittest.cc42
-rw-r--r--ui/display/chromeos/x11/native_display_delegate_x11.cc21
-rw-r--r--ui/display/chromeos/x11/native_display_delegate_x11.h8
-rw-r--r--ui/display/chromeos/x11/native_display_event_dispatcher_x11.cc66
-rw-r--r--ui/display/chromeos/x11/native_display_event_dispatcher_x11.h12
-rw-r--r--ui/display/chromeos/x11/native_display_event_dispatcher_x11_unittest.cc61
-rw-r--r--ui/display/display.gyp12
-rw-r--r--ui/display/display_constants.h4
-rw-r--r--ui/display/display_unittests.gypi5
-rw-r--r--ui/display/edid_parser.cc197
-rw-r--r--ui/display/edid_parser.h40
-rw-r--r--ui/display/edid_parser_unittest.cc229
-rw-r--r--ui/display/x11/edid_parser_x11.cc123
-rw-r--r--ui/display/x11/edid_parser_x11.h (renamed from ui/display/chromeos/x11/display_util.h)25
-rw-r--r--ui/events/dom4_keycode_converter.target.darwin-arm.mk2
-rw-r--r--ui/events/dom4_keycode_converter.target.darwin-mips.mk2
-rw-r--r--ui/events/dom4_keycode_converter.target.darwin-x86.mk2
-rw-r--r--ui/events/dom4_keycode_converter.target.darwin-x86_64.mk259
-rw-r--r--ui/events/dom4_keycode_converter.target.linux-arm.mk2
-rw-r--r--ui/events/dom4_keycode_converter.target.linux-mips.mk2
-rw-r--r--ui/events/dom4_keycode_converter.target.linux-x86.mk2
-rw-r--r--ui/events/dom4_keycode_converter.target.linux-x86_64.mk259
-rw-r--r--ui/events/event.h1
-rw-r--r--ui/events/event_processor.cc16
-rw-r--r--ui/events/event_processor_unittest.cc173
-rw-r--r--ui/events/event_rewriter.h68
-rw-r--r--ui/events/event_rewriter_unittest.cc231
-rw-r--r--ui/events/event_source.cc59
-rw-r--r--ui/events/event_source.h19
-rw-r--r--ui/events/event_switches.cc5
-rw-r--r--ui/events/event_switches.h4
-rw-r--r--ui/events/event_targeter.cc5
-rw-r--r--ui/events/event_targeter.h11
-rw-r--r--ui/events/events.gyp24
-rw-r--r--ui/events/events.target.darwin-arm.mk11
-rw-r--r--ui/events/events.target.darwin-mips.mk11
-rw-r--r--ui/events/events.target.darwin-x86.mk11
-rw-r--r--ui/events/events.target.darwin-x86_64.mk343
-rw-r--r--ui/events/events.target.linux-arm.mk11
-rw-r--r--ui/events/events.target.linux-mips.mk11
-rw-r--r--ui/events/events.target.linux-x86.mk11
-rw-r--r--ui/events/events.target.linux-x86_64.mk343
-rw-r--r--ui/events/events_base.target.darwin-arm.mk73
-rw-r--r--ui/events/events_base.target.darwin-mips.mk73
-rw-r--r--ui/events/events_base.target.darwin-x86.mk73
-rw-r--r--ui/events/events_base.target.darwin-x86_64.mk331
-rw-r--r--ui/events/events_base.target.linux-arm.mk73
-rw-r--r--ui/events/events_base.target.linux-mips.mk73
-rw-r--r--ui/events/events_base.target.linux-x86.mk73
-rw-r--r--ui/events/events_base.target.linux-x86_64.mk331
-rw-r--r--ui/events/gesture_detection.target.darwin-arm.mk6
-rw-r--r--ui/events/gesture_detection.target.darwin-mips.mk6
-rw-r--r--ui/events/gesture_detection.target.darwin-x86.mk6
-rw-r--r--ui/events/gesture_detection.target.darwin-x86_64.mk337
-rw-r--r--ui/events/gesture_detection.target.linux-arm.mk6
-rw-r--r--ui/events/gesture_detection.target.linux-mips.mk6
-rw-r--r--ui/events/gesture_detection.target.linux-x86.mk6
-rw-r--r--ui/events/gesture_detection.target.linux-x86_64.mk337
-rw-r--r--ui/events/gesture_detection/gesture_event_data.cc19
-rw-r--r--ui/events/gesture_detection/gesture_event_data.h64
-rw-r--r--ui/events/gesture_detection/gesture_event_details.cc (renamed from ui/events/gestures/gesture_types.cc)6
-rw-r--r--ui/events/gesture_detection/gesture_event_details.h201
-rw-r--r--ui/events/gesture_detection/gesture_provider.cc93
-rw-r--r--ui/events/gesture_detection/gesture_provider_unittest.cc45
-rw-r--r--ui/events/gesture_detection/touch_disposition_gesture_filter.cc3
-rw-r--r--ui/events/gesture_detection/touch_disposition_gesture_filter_unittest.cc3
-rw-r--r--ui/events/gesture_event_details.cc118
-rw-r--r--ui/events/gesture_event_details.h212
-rw-r--r--ui/events/gestures/gesture_recognizer.h1
-rw-r--r--ui/events/gestures/gesture_sequence.h1
-rw-r--r--ui/events/gestures/gesture_types.h186
-rw-r--r--ui/events/ozone/evdev/event_factory_evdev.cc11
-rw-r--r--ui/events/ozone/evdev/touch_event_converter_evdev.cc8
-rw-r--r--ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc2
-rw-r--r--ui/events/platform/platform_event_dispatcher.h47
-rw-r--r--ui/events/platform/platform_event_observer.h37
-rw-r--r--ui/events/platform/platform_event_source.cc135
-rw-r--r--ui/events/platform/platform_event_source.h88
-rw-r--r--ui/events/platform/platform_event_source_unittest.cc609
-rw-r--r--ui/events/platform/platform_event_types.h14
-rw-r--r--ui/events/platform/scoped_event_dispatcher.cc21
-rw-r--r--ui/events/platform/scoped_event_dispatcher.h40
-rw-r--r--ui/events/platform/x11/x11_event_source.cc201
-rw-r--r--ui/events/platform/x11/x11_event_source.h65
-rw-r--r--ui/events/test/test_event_handler.cc14
-rw-r--r--ui/events/test/test_event_handler.h15
-rw-r--r--ui/events/test/test_event_target.cc9
-rw-r--r--ui/events/test/test_event_target.h19
-rw-r--r--ui/gfx/android/java_bitmap.cc43
-rw-r--r--ui/gfx/android/java_bitmap.h24
-rw-r--r--ui/gfx/canvas_skia.cc4
-rw-r--r--ui/gfx/color_analysis_unittest.cc9
-rw-r--r--ui/gfx/gfx.target.darwin-arm.mk6
-rw-r--r--ui/gfx/gfx.target.darwin-mips.mk6
-rw-r--r--ui/gfx/gfx.target.darwin-x86.mk6
-rw-r--r--ui/gfx/gfx.target.darwin-x86_64.mk403
-rw-r--r--ui/gfx/gfx.target.linux-arm.mk6
-rw-r--r--ui/gfx/gfx.target.linux-mips.mk6
-rw-r--r--ui/gfx/gfx.target.linux-x86.mk6
-rw-r--r--ui/gfx/gfx.target.linux-x86_64.mk403
-rw-r--r--ui/gfx/gfx_geometry.target.darwin-arm.mk2
-rw-r--r--ui/gfx/gfx_geometry.target.darwin-mips.mk2
-rw-r--r--ui/gfx/gfx_geometry.target.darwin-x86.mk2
-rw-r--r--ui/gfx/gfx_geometry.target.darwin-x86_64.mk280
-rw-r--r--ui/gfx/gfx_geometry.target.linux-arm.mk2
-rw-r--r--ui/gfx/gfx_geometry.target.linux-mips.mk2
-rw-r--r--ui/gfx/gfx_geometry.target.linux-x86.mk2
-rw-r--r--ui/gfx/gfx_geometry.target.linux-x86_64.mk280
-rw-r--r--ui/gfx/gfx_jni_headers.target.darwin-arm.mk2
-rw-r--r--ui/gfx/gfx_jni_headers.target.darwin-mips.mk2
-rw-r--r--ui/gfx/gfx_jni_headers.target.darwin-x86.mk2
-rw-r--r--ui/gfx/gfx_jni_headers.target.darwin-x86_64.mk258
-rw-r--r--ui/gfx/gfx_jni_headers.target.linux-arm.mk2
-rw-r--r--ui/gfx/gfx_jni_headers.target.linux-mips.mk2
-rw-r--r--ui/gfx/gfx_jni_headers.target.linux-x86.mk2
-rw-r--r--ui/gfx/gfx_jni_headers.target.linux-x86_64.mk258
-rw-r--r--ui/gfx/gpu_memory_buffer.h2
-rw-r--r--ui/gfx/ozone/dri/dri_skbitmap.cc176
-rw-r--r--ui/gfx/ozone/dri/dri_skbitmap.h6
-rw-r--r--ui/gfx/ozone/dri/dri_surface.cc10
-rw-r--r--ui/gfx/ozone/dri/dri_surface_factory.cc32
-rw-r--r--ui/gfx/ozone/dri/dri_surface_factory.h7
-rw-r--r--ui/gfx/ozone/dri/dri_surface_factory_unittest.cc4
-rw-r--r--ui/gfx/ozone/dri/dri_surface_unittest.cc4
-rw-r--r--ui/gfx/ozone/dri/hardware_display_controller.cc12
-rw-r--r--ui/gfx/ozone/dri/hardware_display_controller.h2
-rw-r--r--ui/gfx/ozone/dri/hardware_display_controller_unittest.cc4
-rw-r--r--ui/gfx/ozone/impl/file_surface_factory.cc6
-rw-r--r--ui/gfx/render_text.cc67
-rw-r--r--ui/gfx/render_text.h28
-rw-r--r--ui/gfx/render_text_mac.cc2
-rw-r--r--ui/gfx/render_text_pango.cc2
-rw-r--r--ui/gfx/render_text_win.cc9
-rw-r--r--ui/gfx/win/hwnd_util.cc5
-rw-r--r--ui/gl/gl.gyp8
-rw-r--r--ui/gl/gl.target.darwin-arm.mk10
-rw-r--r--ui/gl/gl.target.darwin-mips.mk10
-rw-r--r--ui/gl/gl.target.darwin-x86.mk10
-rw-r--r--ui/gl/gl.target.darwin-x86_64.mk441
-rw-r--r--ui/gl/gl.target.linux-arm.mk10
-rw-r--r--ui/gl/gl.target.linux-mips.mk10
-rw-r--r--ui/gl/gl.target.linux-x86.mk10
-rw-r--r--ui/gl/gl.target.linux-x86_64.mk441
-rw-r--r--ui/gl/gl_context.cc27
-rw-r--r--ui/gl/gl_context.h26
-rw-r--r--ui/gl/gl_fence.cc59
-rw-r--r--ui/gl/gl_fence.h7
-rw-r--r--ui/gl/gl_gl_api_implementation.cc25
-rw-r--r--ui/gl/gl_gl_api_implementation.h9
-rw-r--r--ui/gl/gl_glx_api_implementation.cc1
-rw-r--r--ui/gl/gl_image_android.cc7
-rw-r--r--ui/gl/gl_image_android_native_buffer.cc118
-rw-r--r--ui/gl/gl_image_android_native_buffer.h40
-rw-r--r--ui/gl/gl_image_egl.cc121
-rw-r--r--ui/gl/gl_image_egl.h22
-rw-r--r--ui/gl/gl_image_glx.cc76
-rw-r--r--ui/gl/gl_image_glx.h10
-rw-r--r--ui/gl/gl_image_io_surface.cc53
-rw-r--r--ui/gl/gl_image_io_surface.h14
-rw-r--r--ui/gl/gl_image_shm.cc99
-rw-r--r--ui/gl/gl_image_shm.h16
-rw-r--r--ui/gl/gl_image_stub.cc33
-rw-r--r--ui/gl/gl_image_stub.h14
-rw-r--r--ui/gl/gl_implementation.cc3
-rw-r--r--ui/gl/gl_implementation.h4
-rw-r--r--ui/gl/gl_implementation_osmesa.cc5
-rw-r--r--ui/gl/gl_jni_headers.target.darwin-arm.mk2
-rw-r--r--ui/gl/gl_jni_headers.target.darwin-mips.mk2
-rw-r--r--ui/gl/gl_jni_headers.target.darwin-x86.mk2
-rw-r--r--ui/gl/gl_jni_headers.target.darwin-x86_64.mk247
-rw-r--r--ui/gl/gl_jni_headers.target.linux-arm.mk2
-rw-r--r--ui/gl/gl_jni_headers.target.linux-mips.mk2
-rw-r--r--ui/gl/gl_jni_headers.target.linux-x86.mk2
-rw-r--r--ui/gl/gl_jni_headers.target.linux-x86_64.mk247
-rw-r--r--ui/gl/gl_state_restorer.h1
-rw-r--r--ui/gl/gl_surface.cc18
-rw-r--r--ui/gl/gl_surface.h9
-rw-r--r--ui/gl/gl_surface_android.cc89
-rw-r--r--ui/gl/gl_surface_egl.cc157
-rw-r--r--ui/gl/gl_surface_egl.h11
-rw-r--r--ui/gl/gl_surface_glx.cc9
-rw-r--r--ui/gl/gl_surface_glx.h2
-rw-r--r--ui/gl/gl_surface_osmesa.cc10
-rw-r--r--ui/gl/gl_surface_osmesa.h17
-rw-r--r--ui/gl/gl_surface_ozone.cc104
-rw-r--r--ui/gl/gl_surface_win.cc26
-rw-r--r--ui/gl/gl_surface_x11.cc15
-rw-r--r--ui/gl/scoped_binders.cc2
-rw-r--r--ui/gl/surface_jni_headers.target.darwin-arm.mk2
-rw-r--r--ui/gl/surface_jni_headers.target.darwin-mips.mk2
-rw-r--r--ui/gl/surface_jni_headers.target.darwin-x86.mk2
-rw-r--r--ui/gl/surface_jni_headers.target.darwin-x86_64.mk229
-rw-r--r--ui/gl/surface_jni_headers.target.linux-arm.mk2
-rw-r--r--ui/gl/surface_jni_headers.target.linux-mips.mk2
-rw-r--r--ui/gl/surface_jni_headers.target.linux-x86.mk2
-rw-r--r--ui/gl/surface_jni_headers.target.linux-x86_64.mk229
-rw-r--r--ui/keyboard/keyboard.cc60
-rw-r--r--ui/keyboard/keyboard.gyp6
-rw-r--r--ui/keyboard/keyboard.h5
-rw-r--r--ui/keyboard/keyboard_constants.cc4
-rw-r--r--ui/keyboard/keyboard_constants.h8
-rw-r--r--ui/keyboard/keyboard_controller.cc84
-rw-r--r--ui/keyboard/keyboard_controller.h1
-rw-r--r--ui/keyboard/keyboard_controller_proxy.cc56
-rw-r--r--ui/keyboard/keyboard_controller_proxy.h4
-rw-r--r--ui/keyboard/keyboard_controller_unittest.cc86
-rw-r--r--ui/keyboard/keyboard_layout_manager.cc43
-rw-r--r--ui/keyboard/keyboard_layout_manager.h45
-rw-r--r--ui/keyboard/keyboard_resources.grd32
-rw-r--r--ui/keyboard/keyboard_switches.cc3
-rw-r--r--ui/keyboard/keyboard_switches.h8
-rw-r--r--ui/keyboard/keyboard_ui_controller.cc138
-rw-r--r--ui/keyboard/keyboard_ui_controller.h29
-rw-r--r--ui/keyboard/keyboard_ui_handler.cc142
-rw-r--r--ui/keyboard/keyboard_ui_handler.h45
-rw-r--r--ui/keyboard/keyboard_util.cc83
-rw-r--r--ui/keyboard/keyboard_util.h14
-rw-r--r--ui/keyboard/resources/elements/kb-altkey-container.html26
-rw-r--r--ui/keyboard/resources/elements/kb-altkey-container.js28
-rw-r--r--ui/keyboard/resources/elements/kb-altkey-data.html124
-rw-r--r--ui/keyboard/resources/elements/kb-altkey-data.js126
-rw-r--r--ui/keyboard/resources/elements/kb-altkey-set.html5
-rw-r--r--ui/keyboard/resources/elements/kb-altkey-set.js7
-rw-r--r--ui/keyboard/resources/elements/kb-altkey.html49
-rw-r--r--ui/keyboard/resources/elements/kb-altkey.js52
-rw-r--r--ui/keyboard/resources/elements/kb-key-base.html231
-rw-r--r--ui/keyboard/resources/elements/kb-key-base.js228
-rw-r--r--ui/keyboard/resources/elements/kb-key-codes.html225
-rw-r--r--ui/keyboard/resources/elements/kb-key-codes.js227
-rw-r--r--ui/keyboard/resources/elements/kb-key-import.html19
-rw-r--r--ui/keyboard/resources/elements/kb-key-import.js22
-rw-r--r--ui/keyboard/resources/elements/kb-key-sequence.html61
-rw-r--r--ui/keyboard/resources/elements/kb-key-sequence.js60
-rw-r--r--ui/keyboard/resources/elements/kb-key.html202
-rw-r--r--ui/keyboard/resources/elements/kb-key.js111
-rw-r--r--ui/keyboard/resources/elements/kb-keyboard.html1030
-rw-r--r--ui/keyboard/resources/elements/kb-keyboard.js1003
-rw-r--r--ui/keyboard/resources/elements/kb-keyset.html103
-rw-r--r--ui/keyboard/resources/elements/kb-keyset.js98
-rw-r--r--ui/keyboard/resources/elements/kb-modifier-key.html133
-rw-r--r--ui/keyboard/resources/elements/kb-modifier-key.js135
-rw-r--r--ui/keyboard/resources/elements/kb-options-menu.html148
-rw-r--r--ui/keyboard/resources/elements/kb-row.html11
-rw-r--r--ui/keyboard/resources/elements/kb-row.js8
-rw-r--r--ui/keyboard/resources/elements/kb-shift-key.html312
-rw-r--r--ui/keyboard/resources/elements/kb-shift-key.js246
-rw-r--r--ui/keyboard/resources/index.html40
-rw-r--r--ui/keyboard/resources/keyboard.js26
-rw-r--r--ui/keyboard/resources/layouts/qwerty.html8
-rw-r--r--ui/keyboard/resources/layouts/system-qwerty.html6
-rw-r--r--ui/keyboard/resources/layouts/webui_qwerty.html122
-rw-r--r--ui/keyboard/resources/main.css79
-rw-r--r--ui/keyboard/resources/main.js2
-rw-r--r--ui/keyboard/resources/touch_fuzzing.js3
-rw-r--r--ui/keyboard/resources/webui/api_adapter.js89
-rw-r--r--ui/keyboard/resources/webui/constants.js26
-rw-r--r--ui/keyboard/resources/webui/main.css172
-rw-r--r--ui/keyboard/resources/webui_index.html45
-rw-r--r--ui/message_center/message_center.gyp8
-rw-r--r--ui/message_center/views/bounded_scroll_view.cc53
-rw-r--r--ui/message_center/views/bounded_scroll_view.h34
-rw-r--r--ui/message_center/views/bounded_scroll_view_unittest.cc107
-rw-r--r--ui/message_center/views/message_center_view.cc10
-rw-r--r--ui/message_center/views/message_popup_collection.cc11
-rw-r--r--ui/native_theme/native_theme.target.darwin-arm.mk6
-rw-r--r--ui/native_theme/native_theme.target.darwin-mips.mk6
-rw-r--r--ui/native_theme/native_theme.target.darwin-x86.mk6
-rw-r--r--ui/native_theme/native_theme.target.darwin-x86_64.mk340
-rw-r--r--ui/native_theme/native_theme.target.linux-arm.mk6
-rw-r--r--ui/native_theme/native_theme.target.linux-mips.mk6
-rw-r--r--ui/native_theme/native_theme.target.linux-x86.mk6
-rw-r--r--ui/native_theme/native_theme.target.linux-x86_64.mk340
-rw-r--r--ui/ozone/platform/dri/cursor_factory_evdev_dri.cc5
-rw-r--r--ui/resources/default_100_percent/common/app_list_experimental_icon.pngbin6526 -> 523 bytes
-rw-r--r--ui/resources/default_100_percent/common/app_list_user_indicator.png (renamed from ui/resources/default_100_percent/win/app_list_user_indicator.png)bin143 -> 143 bytes
-rw-r--r--ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_bottom.pngbin1000 -> 71 bytes
-rw-r--r--ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_left.pngbin1005 -> 77 bytes
-rw-r--r--ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_right.pngbin1004 -> 75 bytes
-rw-r--r--ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_center.pngbin996 -> 69 bytes
-rw-r--r--ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_left.pngbin999 -> 70 bytes
-rw-r--r--ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_right.pngbin999 -> 70 bytes
-rw-r--r--ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_top.pngbin1000 -> 71 bytes
-rw-r--r--ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_top_left.pngbin1005 -> 77 bytes
-rw-r--r--ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_top_right.pngbin1005 -> 76 bytes
-rw-r--r--ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom.pngbin997 -> 67 bytes
-rw-r--r--ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_left.pngbin1008 -> 80 bytes
-rw-r--r--ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_right.pngbin1007 -> 80 bytes
-rw-r--r--ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_left.pngbin997 -> 67 bytes
-rw-r--r--ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_right.pngbin997 -> 67 bytes
-rw-r--r--ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_top.pngbin997 -> 67 bytes
-rw-r--r--ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_top_left.pngbin1007 -> 80 bytes
-rw-r--r--ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_top_right.pngbin1007 -> 80 bytes
-rw-r--r--ui/resources/default_100_percent/common/back_arrow.pngbin1403 -> 1402 bytes
-rw-r--r--ui/resources/default_100_percent/common/pointers/xterm.pngbin300 -> 166 bytes
-rw-r--r--ui/resources/default_100_percent/common/pointers/xterm_horiz.pngbin337 -> 164 bytes
-rw-r--r--ui/resources/default_100_percent/oak.pngbin165 -> 0 bytes
-rw-r--r--ui/resources/default_200_percent/common/app_list_experimental_icon.pngbin1062 -> 707 bytes
-rw-r--r--ui/resources/default_200_percent/common/app_list_user_indicator.png (renamed from ui/resources/default_200_percent/win/app_list_user_indicator.png)bin465 -> 465 bytes
-rw-r--r--ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_bottom.pngbin1004 -> 73 bytes
-rw-r--r--ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_left.pngbin1014 -> 83 bytes
-rw-r--r--ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_right.pngbin1012 -> 81 bytes
-rw-r--r--ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_center.pngbin1003 -> 73 bytes
-rw-r--r--ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_left.pngbin1002 -> 73 bytes
-rw-r--r--ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_right.pngbin1002 -> 73 bytes
-rw-r--r--ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_top.pngbin1004 -> 73 bytes
-rw-r--r--ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_top_left.pngbin1016 -> 84 bytes
-rw-r--r--ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_top_right.pngbin1016 -> 85 bytes
-rw-r--r--ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom.pngbin999 -> 71 bytes
-rw-r--r--ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_left.pngbin1033 -> 95 bytes
-rw-r--r--ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_right.pngbin1032 -> 97 bytes
-rw-r--r--ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_left.pngbin999 -> 71 bytes
-rw-r--r--ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_right.pngbin999 -> 71 bytes
-rw-r--r--ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_top.pngbin999 -> 71 bytes
-rw-r--r--ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_top_left.pngbin1027 -> 94 bytes
-rw-r--r--ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_top_right.pngbin1027 -> 94 bytes
-rw-r--r--ui/resources/default_200_percent/common/back_arrow.pngbin4996 -> 4934 bytes
-rw-r--r--ui/resources/default_200_percent/common/forward_arrow.pngbin5042 -> 4976 bytes
-rw-r--r--ui/resources/default_200_percent/common/pointers/xterm.pngbin569 -> 295 bytes
-rw-r--r--ui/resources/default_200_percent/common/pointers/xterm_horiz.pngbin595 -> 369 bytes
-rw-r--r--ui/resources/ui_resources.grd5
-rw-r--r--ui/resources/ui_resources.gyp63
-rw-r--r--ui/resources/ui_resources.target.darwin-arm.mk2
-rw-r--r--ui/resources/ui_resources.target.darwin-mips.mk2
-rw-r--r--ui/resources/ui_resources.target.darwin-x86.mk8
-rw-r--r--ui/resources/ui_resources.target.darwin-x86_64.mk88
-rw-r--r--ui/resources/ui_resources.target.linux-arm.mk2
-rw-r--r--ui/resources/ui_resources.target.linux-mips.mk2
-rw-r--r--ui/resources/ui_resources.target.linux-x86.mk8
-rw-r--r--ui/resources/ui_resources.target.linux-x86_64.mk88
-rw-r--r--ui/shell_dialogs/shell_dialogs.target.darwin-arm.mk6
-rw-r--r--ui/shell_dialogs/shell_dialogs.target.darwin-mips.mk6
-rw-r--r--ui/shell_dialogs/shell_dialogs.target.darwin-x86.mk6
-rw-r--r--ui/shell_dialogs/shell_dialogs.target.darwin-x86_64.mk347
-rw-r--r--ui/shell_dialogs/shell_dialogs.target.linux-arm.mk6
-rw-r--r--ui/shell_dialogs/shell_dialogs.target.linux-mips.mk6
-rw-r--r--ui/shell_dialogs/shell_dialogs.target.linux-x86.mk6
-rw-r--r--ui/shell_dialogs/shell_dialogs.target.linux-x86_64.mk347
-rw-r--r--ui/snapshot/snapshot.target.darwin-arm.mk6
-rw-r--r--ui/snapshot/snapshot.target.darwin-mips.mk6
-rw-r--r--ui/snapshot/snapshot.target.darwin-x86.mk6
-rw-r--r--ui/snapshot/snapshot.target.darwin-x86_64.mk334
-rw-r--r--ui/snapshot/snapshot.target.linux-arm.mk6
-rw-r--r--ui/snapshot/snapshot.target.linux-mips.mk6
-rw-r--r--ui/snapshot/snapshot.target.linux-x86.mk6
-rw-r--r--ui/snapshot/snapshot.target.linux-x86_64.mk334
-rw-r--r--ui/surface/surface.target.darwin-arm.mk6
-rw-r--r--ui/surface/surface.target.darwin-mips.mk6
-rw-r--r--ui/surface/surface.target.darwin-x86.mk6
-rw-r--r--ui/surface/surface.target.darwin-x86_64.mk349
-rw-r--r--ui/surface/surface.target.linux-arm.mk6
-rw-r--r--ui/surface/surface.target.linux-mips.mk6
-rw-r--r--ui/surface/surface.target.linux-x86.mk6
-rw-r--r--ui/surface/surface.target.linux-x86_64.mk349
-rw-r--r--ui/ui_unittests.gyp13
-rw-r--r--ui/views/DEPS1
-rw-r--r--ui/views/accessibility/native_view_accessibility_win.cc36
-rw-r--r--ui/views/accessibility/native_view_accessibility_win.h8
-rw-r--r--ui/views/bubble/bubble_delegate.cc2
-rw-r--r--ui/views/controls/button/checkbox.cc3
-rw-r--r--ui/views/controls/button/custom_button.cc6
-rw-r--r--ui/views/controls/button/menu_button.cc2
-rw-r--r--ui/views/controls/label.cc2
-rw-r--r--ui/views/controls/label_unittest.cc2
-rw-r--r--ui/views/controls/menu/menu_config.cc2
-rw-r--r--ui/views/controls/menu/menu_config.h6
-rw-r--r--ui/views/controls/menu/menu_config_views.cc3
-rw-r--r--ui/views/controls/menu/menu_config_win.cc9
-rw-r--r--ui/views/controls/menu/menu_controller.cc2
-rw-r--r--ui/views/controls/menu/menu_controller_aura.cc8
-rw-r--r--ui/views/controls/menu/menu_item_view.cc37
-rw-r--r--ui/views/controls/menu/menu_scroll_view_container.cc2
-rw-r--r--ui/views/controls/progress_bar.cc2
-rw-r--r--ui/views/controls/progress_bar_unittest.cc2
-rw-r--r--ui/views/controls/scroll_view.cc40
-rw-r--r--ui/views/controls/scroll_view.h15
-rw-r--r--ui/views/controls/scroll_view_unittest.cc105
-rw-r--r--ui/views/controls/textfield/textfield.cc305
-rw-r--r--ui/views/controls/textfield/textfield_unittest.cc58
-rw-r--r--ui/views/controls/tree/tree_view.cc2
-rw-r--r--ui/views/controls/webview/web_dialog_view.cc3
-rw-r--r--ui/views/controls/webview/web_dialog_view.h3
-rw-r--r--ui/views/controls/webview/webview_tests.gyp38
-rw-r--r--ui/views/corewm/desktop_capture_controller_unittest.cc1
-rw-r--r--ui/views/corewm/tooltip_aura.cc1
-rw-r--r--ui/views/corewm/tooltip_controller.cc2
-rw-r--r--ui/views/corewm/tooltip_controller.h2
-rw-r--r--ui/views/corewm/tooltip_controller_unittest.cc2
-rw-r--r--ui/views/drag_utils.cc2
-rw-r--r--ui/views/examples/content_client/examples_browser_main_parts.cc3
-rw-r--r--ui/views/examples/examples.gyp230
-rw-r--r--ui/views/focus/view_storage.h2
-rw-r--r--ui/views/ime/OWNERS7
-rw-r--r--ui/views/view.cc17
-rw-r--r--ui/views/view.h6
-rw-r--r--ui/views/view_unittest.cc112
-rw-r--r--ui/views/views.gyp259
-rw-r--r--ui/views/widget/desktop_aura/desktop_dispatcher_client.h2
-rw-r--r--ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc88
-rw-r--r--ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.h34
-rw-r--r--ui/views/widget/desktop_aura/desktop_drag_drop_client_win.h2
-rw-r--r--ui/views/widget/desktop_aura/desktop_drop_target_win.cc4
-rw-r--r--ui/views/widget/desktop_aura/desktop_native_widget_aura.cc13
-rw-r--r--ui/views/widget/desktop_aura/desktop_native_widget_aura.h8
-rw-r--r--ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc2
-rw-r--r--ui/views/widget/desktop_aura/desktop_screen_x11.cc4
-rw-r--r--ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc2
-rw-r--r--ui/views/widget/desktop_aura/desktop_window_tree_host_win.h2
-rw-r--r--ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc66
-rw-r--r--ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h6
-rw-r--r--ui/views/widget/desktop_aura/x11_desktop_handler.cc22
-rw-r--r--ui/views/widget/desktop_aura/x11_desktop_window_move_client.h2
-rw-r--r--ui/views/widget/desktop_aura/x11_whole_screen_move_loop.cc33
-rw-r--r--ui/views/widget/desktop_aura/x11_whole_screen_move_loop.h6
-rw-r--r--ui/views/widget/native_widget_aura.cc12
-rw-r--r--ui/views/widget/native_widget_aura.h8
-rw-r--r--ui/views/widget/tooltip_manager_aura.cc2
-rw-r--r--ui/views/widget/widget_interactive_uitest.cc2
-rw-r--r--ui/views/win/hwnd_message_handler.cc2
-rw-r--r--ui/webui/resources/js/cr/promise.js214
-rw-r--r--ui/webui/resources/js/util.js19
-rw-r--r--ui/webui/resources/webui_resources.grd2
-rw-r--r--ui/wm/core/base_focus_rules.cc2
-rw-r--r--ui/wm/core/compound_event_filter.cc15
-rw-r--r--ui/wm/core/compound_event_filter_unittest.cc2
-rw-r--r--ui/wm/core/easy_resize_window_targeter.cc2
-rw-r--r--ui/wm/core/focus_controller.cc2
-rw-r--r--ui/wm/core/focus_controller.h2
-rw-r--r--ui/wm/core/focus_controller_unittest.cc4
-rw-r--r--ui/wm/core/input_method_event_filter_unittest.cc2
-rw-r--r--ui/wm/core/shadow_controller.cc2
-rw-r--r--ui/wm/core/shadow_controller.h2
-rw-r--r--ui/wm/core/shadow_controller_unittest.cc2
-rw-r--r--ui/wm/core/transient_window_controller.h2
-rw-r--r--ui/wm/core/window_animations.cc2
-rw-r--r--ui/wm/core/window_animations_unittest.cc2
-rw-r--r--ui/wm/core/window_util.cc18
-rw-r--r--ui/wm/public/DEPS9
-rw-r--r--ui/wm/public/activation_change_observer.cc (renamed from ui/aura/client/activation_change_observer.cc)2
-rw-r--r--ui/wm/public/activation_change_observer.h (renamed from ui/aura/client/activation_change_observer.h)6
-rw-r--r--ui/wm/public/activation_client.cc (renamed from ui/aura/client/activation_client.cc)4
-rw-r--r--ui/wm/public/activation_client.h (renamed from ui/aura/client/activation_client.h)6
-rw-r--r--ui/wm/public/activation_delegate.cc (renamed from ui/aura/client/activation_delegate.cc)2
-rw-r--r--ui/wm/public/activation_delegate.h (renamed from ui/aura/client/activation_delegate.h)6
-rw-r--r--ui/wm/public/animation_host.cc (renamed from ui/aura/client/animation_host.cc)8
-rw-r--r--ui/wm/public/animation_host.h (renamed from ui/aura/client/animation_host.h)6
-rw-r--r--ui/wm/public/dispatcher_client.cc (renamed from ui/aura/client/dispatcher_client.cc)3
-rw-r--r--ui/wm/public/dispatcher_client.h (renamed from ui/aura/client/dispatcher_client.h)6
-rw-r--r--ui/wm/public/drag_drop_client.cc (renamed from ui/aura/client/drag_drop_client.cc)4
-rw-r--r--ui/wm/public/drag_drop_client.h (renamed from ui/aura/client/drag_drop_client.h)6
-rw-r--r--ui/wm/public/drag_drop_delegate.cc (renamed from ui/aura/client/drag_drop_delegate.cc)2
-rw-r--r--ui/wm/public/drag_drop_delegate.h (renamed from ui/aura/client/drag_drop_delegate.h)6
-rw-r--r--ui/wm/public/scoped_tooltip_disabler.cc (renamed from ui/aura/client/scoped_tooltip_disabler.cc)4
-rw-r--r--ui/wm/public/scoped_tooltip_disabler.h (renamed from ui/aura/client/scoped_tooltip_disabler.h)6
-rw-r--r--ui/wm/public/tooltip_client.cc (renamed from ui/aura/client/tooltip_client.cc)4
-rw-r--r--ui/wm/public/tooltip_client.h (renamed from ui/aura/client/tooltip_client.h)6
-rw-r--r--ui/wm/public/transient_window_client.cc (renamed from ui/aura/client/transient_window_client.cc)2
-rw-r--r--ui/wm/public/transient_window_client.h (renamed from ui/aura/client/transient_window_client.h)6
-rw-r--r--ui/wm/public/window_move_client.cc (renamed from ui/aura/client/window_move_client.cc)2
-rw-r--r--ui/wm/public/window_move_client.h (renamed from ui/aura/client/window_move_client.h)6
625 files changed, 24329 insertions, 7620 deletions
diff --git a/ui/accessibility/accessibility.target.darwin-arm.mk b/ui/accessibility/accessibility.target.darwin-arm.mk
index 0048940779..1603501b09 100644
--- a/ui/accessibility/accessibility.target.darwin-arm.mk
+++ b/ui/accessibility/accessibility.target.darwin-arm.mk
@@ -95,9 +95,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -106,6 +104,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -215,9 +214,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -226,6 +223,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/accessibility/accessibility.target.darwin-mips.mk b/ui/accessibility/accessibility.target.darwin-mips.mk
index 93bee86342..1d46543e18 100644
--- a/ui/accessibility/accessibility.target.darwin-mips.mk
+++ b/ui/accessibility/accessibility.target.darwin-mips.mk
@@ -94,9 +94,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -105,6 +103,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -213,9 +212,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -224,6 +221,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/accessibility/accessibility.target.darwin-x86.mk b/ui/accessibility/accessibility.target.darwin-x86.mk
index a73ec1a848..449b695855 100644
--- a/ui/accessibility/accessibility.target.darwin-x86.mk
+++ b/ui/accessibility/accessibility.target.darwin-x86.mk
@@ -96,9 +96,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -107,6 +105,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -216,9 +215,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -227,6 +224,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/accessibility/accessibility.target.darwin-x86_64.mk b/ui/accessibility/accessibility.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..14d8ddda88
--- /dev/null
+++ b/ui/accessibility/accessibility.target.darwin-x86_64.mk
@@ -0,0 +1,338 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_accessibility_accessibility_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,ui_accessibility_ax_gen_gyp)/ui_accessibility_ax_gen_gyp.a
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/accessibility/ax_node.cc \
+ ui/accessibility/ax_node_data.cc \
+ ui/accessibility/ax_serializable_tree.cc \
+ ui/accessibility/ax_text_utils.cc \
+ ui/accessibility/ax_tree.cc \
+ ui/accessibility/ax_tree_serializer.cc \
+ ui/accessibility/ax_tree_update.cc \
+ ui/accessibility/ax_view_state.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DACCESSIBILITY_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(gyp_shared_intermediate_dir) \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DACCESSIBILITY_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(gyp_shared_intermediate_dir) \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp \
+ ui_accessibility_ax_gen_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_accessibility_accessibility_gyp
+
+# Alias gyp target name.
+.PHONY: accessibility
+accessibility: ui_accessibility_accessibility_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/accessibility/accessibility.target.linux-arm.mk b/ui/accessibility/accessibility.target.linux-arm.mk
index 0048940779..1603501b09 100644
--- a/ui/accessibility/accessibility.target.linux-arm.mk
+++ b/ui/accessibility/accessibility.target.linux-arm.mk
@@ -95,9 +95,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -106,6 +104,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -215,9 +214,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -226,6 +223,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/accessibility/accessibility.target.linux-mips.mk b/ui/accessibility/accessibility.target.linux-mips.mk
index 93bee86342..1d46543e18 100644
--- a/ui/accessibility/accessibility.target.linux-mips.mk
+++ b/ui/accessibility/accessibility.target.linux-mips.mk
@@ -94,9 +94,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -105,6 +103,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -213,9 +212,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -224,6 +221,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/accessibility/accessibility.target.linux-x86.mk b/ui/accessibility/accessibility.target.linux-x86.mk
index a73ec1a848..449b695855 100644
--- a/ui/accessibility/accessibility.target.linux-x86.mk
+++ b/ui/accessibility/accessibility.target.linux-x86.mk
@@ -96,9 +96,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -107,6 +105,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -216,9 +215,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -227,6 +224,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/accessibility/accessibility.target.linux-x86_64.mk b/ui/accessibility/accessibility.target.linux-x86_64.mk
new file mode 100644
index 0000000000..14d8ddda88
--- /dev/null
+++ b/ui/accessibility/accessibility.target.linux-x86_64.mk
@@ -0,0 +1,338 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_accessibility_accessibility_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,ui_accessibility_ax_gen_gyp)/ui_accessibility_ax_gen_gyp.a
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/accessibility/ax_node.cc \
+ ui/accessibility/ax_node_data.cc \
+ ui/accessibility/ax_serializable_tree.cc \
+ ui/accessibility/ax_text_utils.cc \
+ ui/accessibility/ax_tree.cc \
+ ui/accessibility/ax_tree_serializer.cc \
+ ui/accessibility/ax_tree_update.cc \
+ ui/accessibility/ax_view_state.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DACCESSIBILITY_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(gyp_shared_intermediate_dir) \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DACCESSIBILITY_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(gyp_shared_intermediate_dir) \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp \
+ ui_accessibility_ax_gen_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_accessibility_accessibility_gyp
+
+# Alias gyp target name.
+.PHONY: accessibility
+accessibility: ui_accessibility_accessibility_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/accessibility/ax_enums.idl b/ui/accessibility/ax_enums.idl
index 0f86c3df28..bf116947b8 100644
--- a/ui/accessibility/ax_enums.idl
+++ b/ui/accessibility/ax_enums.idl
@@ -252,6 +252,7 @@ namespace ui {
// Relationships between this element and other elements.
ax_attr_title_ui_element,
+ ax_attr_activedescendant_id,
// Color value for AX_ROLE_COLOR_WELL, each component is 0..255
ax_attr_color_value_red,
@@ -306,6 +307,13 @@ namespace ui {
// column.
ax_attr_indirect_child_ids,
+ // Relationships between this element and other elements.
+ ax_attr_controls_ids,
+ ax_attr_describedby_ids,
+ ax_attr_flowto_ids,
+ ax_attr_labelledby_ids,
+ ax_attr_owns_ids,
+
// Character indices where line breaks occur.
ax_attr_line_breaks,
diff --git a/ui/accessibility/ax_gen.target.darwin-arm.mk b/ui/accessibility/ax_gen.target.darwin-arm.mk
index 3d8b68c541..de8045bd78 100644
--- a/ui/accessibility/ax_gen.target.darwin-arm.mk
+++ b/ui/accessibility/ax_gen.target.darwin-arm.mk
@@ -127,6 +127,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -212,6 +213,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/accessibility/ax_gen.target.darwin-mips.mk b/ui/accessibility/ax_gen.target.darwin-mips.mk
index 1a04e95aab..92c3c4846f 100644
--- a/ui/accessibility/ax_gen.target.darwin-mips.mk
+++ b/ui/accessibility/ax_gen.target.darwin-mips.mk
@@ -126,6 +126,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -210,6 +211,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/accessibility/ax_gen.target.darwin-x86.mk b/ui/accessibility/ax_gen.target.darwin-x86.mk
index 1535325b64..bf972485b5 100644
--- a/ui/accessibility/ax_gen.target.darwin-x86.mk
+++ b/ui/accessibility/ax_gen.target.darwin-x86.mk
@@ -128,6 +128,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -213,6 +214,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/accessibility/ax_gen.target.darwin-x86_64.mk b/ui/accessibility/ax_gen.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..61b076c24e
--- /dev/null
+++ b/ui/accessibility/ax_gen.target.darwin-x86_64.mk
@@ -0,0 +1,310 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_accessibility_ax_gen_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "genapi_bundle":
+$(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h: $(LOCAL_PATH)/tools/json_schema_compiler/cc_generator.py $(LOCAL_PATH)/tools/json_schema_compiler/code.py $(LOCAL_PATH)/tools/json_schema_compiler/compiler.py $(LOCAL_PATH)/tools/json_schema_compiler/cpp_bundle_generator.py $(LOCAL_PATH)/tools/json_schema_compiler/cpp_type_generator.py $(LOCAL_PATH)/tools/json_schema_compiler/cpp_util.py $(LOCAL_PATH)/tools/json_schema_compiler/h_generator.py $(LOCAL_PATH)/tools/json_schema_compiler/idl_schema.py $(LOCAL_PATH)/tools/json_schema_compiler/json_schema.py $(LOCAL_PATH)/tools/json_schema_compiler/model.py $(LOCAL_PATH)/tools/json_schema_compiler/util_cc_helper.py $(LOCAL_PATH)/ui/accessibility/ax_enums.idl $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating C++ API bundle code ($@)"
+ $(hide)cd $(gyp_local_path)/ui/accessibility; mkdir -p $(gyp_shared_intermediate_dir)/ui/accessibility; python ../../tools/json_schema_compiler/compiler.py "--root=../.." "--destdir=$(gyp_shared_intermediate_dir)" "--namespace=" "--generator=cpp-bundle" "--impl-dir=chrome/browser/extensions/api" ax_enums.idl
+
+$(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.cc: $(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h ;
+$(gyp_shared_intermediate_dir)/ui/accessibility/generated_schemas.h: $(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h ;
+$(gyp_shared_intermediate_dir)/ui/accessibility/generated_schemas.cc: $(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h ;
+
+
+
+### Generated for rule "ui_accessibility_accessibility_gyp_ax_gen_target_genapi_idl":
+# "{'inputs': ['../../tools/json_schema_compiler/cc_generator.py', '../../tools/json_schema_compiler/code.py', '../../tools/json_schema_compiler/compiler.py', '../../tools/json_schema_compiler/cpp_generator.py', '../../tools/json_schema_compiler/cpp_type_generator.py', '../../tools/json_schema_compiler/cpp_util.py', '../../tools/json_schema_compiler/h_generator.py', '../../tools/json_schema_compiler/idl_schema.py', '../../tools/json_schema_compiler/model.py', '../../tools/json_schema_compiler/util.cc', '../../tools/json_schema_compiler/util.h', '../../tools/json_schema_compiler/util_cc_helper.py'], 'process_outputs_as_sources': '1', 'extension': 'idl', 'msvs_external_rule': '1', 'outputs': ['$(gyp_shared_intermediate_dir)/ui/accessibility/%(INPUT_ROOT)s.cc', '$(gyp_shared_intermediate_dir)/ui/accessibility/%(INPUT_ROOT)s.h'], 'rule_name': 'genapi_idl', 'rule_sources': ['ax_enums.idl'], 'action': ['python', '../../tools/json_schema_compiler/compiler.py', '$(RULE_SOURCES)', '--root=../..', '--destdir=$(gyp_shared_intermediate_dir)', '--namespace=', '--generator=cpp', '--impl-dir=chrome/browser/extensions/api'], 'message': 'Generating C++ code from $(RULE_SOURCES) IDL files'}":
+$(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc: $(LOCAL_PATH)/ui/accessibility/ax_enums.idl $(LOCAL_PATH)/tools/json_schema_compiler/cc_generator.py $(LOCAL_PATH)/tools/json_schema_compiler/code.py $(LOCAL_PATH)/tools/json_schema_compiler/compiler.py $(LOCAL_PATH)/tools/json_schema_compiler/cpp_generator.py $(LOCAL_PATH)/tools/json_schema_compiler/cpp_type_generator.py $(LOCAL_PATH)/tools/json_schema_compiler/cpp_util.py $(LOCAL_PATH)/tools/json_schema_compiler/h_generator.py $(LOCAL_PATH)/tools/json_schema_compiler/idl_schema.py $(LOCAL_PATH)/tools/json_schema_compiler/model.py $(LOCAL_PATH)/tools/json_schema_compiler/util.cc $(LOCAL_PATH)/tools/json_schema_compiler/util.h $(LOCAL_PATH)/tools/json_schema_compiler/util_cc_helper.py $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/accessibility; cd $(gyp_local_path)/ui/accessibility; python ../../tools/json_schema_compiler/compiler.py ax_enums.idl "--root=../.." "--destdir=$(gyp_shared_intermediate_dir)" "--namespace=" "--generator=cpp" "--impl-dir=chrome/browser/extensions/api"
+
+$(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.h: $(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc ;
+.PHONY: ui_accessibility_ax_gen_gyp_rule_trigger
+ui_accessibility_ax_gen_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.cc \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/generated_schemas.h \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/generated_schemas.cc \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+$(gyp_intermediate_dir)/generated_api.cc: $(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.cc
+ mkdir -p $(@D); cp $< $@
+$(gyp_intermediate_dir)/generated_schemas.cc: $(gyp_shared_intermediate_dir)/ui/accessibility/generated_schemas.cc
+ mkdir -p $(@D); cp $< $@
+$(gyp_intermediate_dir)/ax_enums.cc: $(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc
+ mkdir -p $(@D); cp $< $@
+LOCAL_GENERATED_SOURCES := \
+ $(gyp_intermediate_dir)/generated_api.cc \
+ $(gyp_intermediate_dir)/generated_schemas.cc \
+ $(gyp_intermediate_dir)/ax_enums.cc \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/generated_schemas.h \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.h \
+ ui_accessibility_ax_gen_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS := \
+ $(gyp_shared_intermediate_dir)/ui/accessibility
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(gyp_shared_intermediate_dir) \
+ $(LOCAL_PATH) \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(gyp_shared_intermediate_dir) \
+ $(LOCAL_PATH) \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_accessibility_ax_gen_gyp
+
+# Alias gyp target name.
+.PHONY: ax_gen
+ax_gen: ui_accessibility_ax_gen_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/accessibility/ax_gen.target.linux-arm.mk b/ui/accessibility/ax_gen.target.linux-arm.mk
index 3d8b68c541..de8045bd78 100644
--- a/ui/accessibility/ax_gen.target.linux-arm.mk
+++ b/ui/accessibility/ax_gen.target.linux-arm.mk
@@ -127,6 +127,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -212,6 +213,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/accessibility/ax_gen.target.linux-mips.mk b/ui/accessibility/ax_gen.target.linux-mips.mk
index 1a04e95aab..92c3c4846f 100644
--- a/ui/accessibility/ax_gen.target.linux-mips.mk
+++ b/ui/accessibility/ax_gen.target.linux-mips.mk
@@ -126,6 +126,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -210,6 +211,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/accessibility/ax_gen.target.linux-x86.mk b/ui/accessibility/ax_gen.target.linux-x86.mk
index 1535325b64..bf972485b5 100644
--- a/ui/accessibility/ax_gen.target.linux-x86.mk
+++ b/ui/accessibility/ax_gen.target.linux-x86.mk
@@ -128,6 +128,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -213,6 +214,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/accessibility/ax_gen.target.linux-x86_64.mk b/ui/accessibility/ax_gen.target.linux-x86_64.mk
new file mode 100644
index 0000000000..61b076c24e
--- /dev/null
+++ b/ui/accessibility/ax_gen.target.linux-x86_64.mk
@@ -0,0 +1,310 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_accessibility_ax_gen_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "genapi_bundle":
+$(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h: $(LOCAL_PATH)/tools/json_schema_compiler/cc_generator.py $(LOCAL_PATH)/tools/json_schema_compiler/code.py $(LOCAL_PATH)/tools/json_schema_compiler/compiler.py $(LOCAL_PATH)/tools/json_schema_compiler/cpp_bundle_generator.py $(LOCAL_PATH)/tools/json_schema_compiler/cpp_type_generator.py $(LOCAL_PATH)/tools/json_schema_compiler/cpp_util.py $(LOCAL_PATH)/tools/json_schema_compiler/h_generator.py $(LOCAL_PATH)/tools/json_schema_compiler/idl_schema.py $(LOCAL_PATH)/tools/json_schema_compiler/json_schema.py $(LOCAL_PATH)/tools/json_schema_compiler/model.py $(LOCAL_PATH)/tools/json_schema_compiler/util_cc_helper.py $(LOCAL_PATH)/ui/accessibility/ax_enums.idl $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating C++ API bundle code ($@)"
+ $(hide)cd $(gyp_local_path)/ui/accessibility; mkdir -p $(gyp_shared_intermediate_dir)/ui/accessibility; python ../../tools/json_schema_compiler/compiler.py "--root=../.." "--destdir=$(gyp_shared_intermediate_dir)" "--namespace=" "--generator=cpp-bundle" "--impl-dir=chrome/browser/extensions/api" ax_enums.idl
+
+$(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.cc: $(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h ;
+$(gyp_shared_intermediate_dir)/ui/accessibility/generated_schemas.h: $(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h ;
+$(gyp_shared_intermediate_dir)/ui/accessibility/generated_schemas.cc: $(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h ;
+
+
+
+### Generated for rule "ui_accessibility_accessibility_gyp_ax_gen_target_genapi_idl":
+# "{'inputs': ['../../tools/json_schema_compiler/cc_generator.py', '../../tools/json_schema_compiler/code.py', '../../tools/json_schema_compiler/compiler.py', '../../tools/json_schema_compiler/cpp_generator.py', '../../tools/json_schema_compiler/cpp_type_generator.py', '../../tools/json_schema_compiler/cpp_util.py', '../../tools/json_schema_compiler/h_generator.py', '../../tools/json_schema_compiler/idl_schema.py', '../../tools/json_schema_compiler/model.py', '../../tools/json_schema_compiler/util.cc', '../../tools/json_schema_compiler/util.h', '../../tools/json_schema_compiler/util_cc_helper.py'], 'process_outputs_as_sources': '1', 'extension': 'idl', 'msvs_external_rule': '1', 'outputs': ['$(gyp_shared_intermediate_dir)/ui/accessibility/%(INPUT_ROOT)s.cc', '$(gyp_shared_intermediate_dir)/ui/accessibility/%(INPUT_ROOT)s.h'], 'rule_name': 'genapi_idl', 'rule_sources': ['ax_enums.idl'], 'action': ['python', '../../tools/json_schema_compiler/compiler.py', '$(RULE_SOURCES)', '--root=../..', '--destdir=$(gyp_shared_intermediate_dir)', '--namespace=', '--generator=cpp', '--impl-dir=chrome/browser/extensions/api'], 'message': 'Generating C++ code from $(RULE_SOURCES) IDL files'}":
+$(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc: $(LOCAL_PATH)/ui/accessibility/ax_enums.idl $(LOCAL_PATH)/tools/json_schema_compiler/cc_generator.py $(LOCAL_PATH)/tools/json_schema_compiler/code.py $(LOCAL_PATH)/tools/json_schema_compiler/compiler.py $(LOCAL_PATH)/tools/json_schema_compiler/cpp_generator.py $(LOCAL_PATH)/tools/json_schema_compiler/cpp_type_generator.py $(LOCAL_PATH)/tools/json_schema_compiler/cpp_util.py $(LOCAL_PATH)/tools/json_schema_compiler/h_generator.py $(LOCAL_PATH)/tools/json_schema_compiler/idl_schema.py $(LOCAL_PATH)/tools/json_schema_compiler/model.py $(LOCAL_PATH)/tools/json_schema_compiler/util.cc $(LOCAL_PATH)/tools/json_schema_compiler/util.h $(LOCAL_PATH)/tools/json_schema_compiler/util_cc_helper.py $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/accessibility; cd $(gyp_local_path)/ui/accessibility; python ../../tools/json_schema_compiler/compiler.py ax_enums.idl "--root=../.." "--destdir=$(gyp_shared_intermediate_dir)" "--namespace=" "--generator=cpp" "--impl-dir=chrome/browser/extensions/api"
+
+$(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.h: $(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc ;
+.PHONY: ui_accessibility_ax_gen_gyp_rule_trigger
+ui_accessibility_ax_gen_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.cc \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/generated_schemas.h \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/generated_schemas.cc \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+$(gyp_intermediate_dir)/generated_api.cc: $(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.cc
+ mkdir -p $(@D); cp $< $@
+$(gyp_intermediate_dir)/generated_schemas.cc: $(gyp_shared_intermediate_dir)/ui/accessibility/generated_schemas.cc
+ mkdir -p $(@D); cp $< $@
+$(gyp_intermediate_dir)/ax_enums.cc: $(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.cc
+ mkdir -p $(@D); cp $< $@
+LOCAL_GENERATED_SOURCES := \
+ $(gyp_intermediate_dir)/generated_api.cc \
+ $(gyp_intermediate_dir)/generated_schemas.cc \
+ $(gyp_intermediate_dir)/ax_enums.cc \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/generated_api.h \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/generated_schemas.h \
+ $(gyp_shared_intermediate_dir)/ui/accessibility/ax_enums.h \
+ ui_accessibility_ax_gen_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS := \
+ $(gyp_shared_intermediate_dir)/ui/accessibility
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(gyp_shared_intermediate_dir) \
+ $(LOCAL_PATH) \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(gyp_shared_intermediate_dir) \
+ $(LOCAL_PATH) \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_accessibility_ax_gen_gyp
+
+# Alias gyp target name.
+.PHONY: ax_gen
+ax_gen: ui_accessibility_ax_gen_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/accessibility/ax_node_data.cc b/ui/accessibility/ax_node_data.cc
index 9a796a3d9f..d287ac906d 100644
--- a/ui/accessibility/ax_node_data.cc
+++ b/ui/accessibility/ax_node_data.cc
@@ -192,6 +192,9 @@ std::string AXNodeData::ToString() const {
case AX_ATTR_TITLE_UI_ELEMENT:
result += " title_elem=" + value;
break;
+ case AX_ATTR_ACTIVEDESCENDANT_ID:
+ result += " activedescendant=" + value;
+ break;
case AX_ATTR_COLOR_VALUE_RED:
result += " color_value_red=" + value;
break;
@@ -352,6 +355,21 @@ std::string AXNodeData::ToString() const {
case AX_ATTR_INDIRECT_CHILD_IDS:
result += " indirect_child_ids=" + IntVectorToString(values);
break;
+ case AX_ATTR_CONTROLS_IDS:
+ result += " controls_ids=" + IntVectorToString(values);
+ break;
+ case AX_ATTR_DESCRIBEDBY_IDS:
+ result += " describedby_ids=" + IntVectorToString(values);
+ break;
+ case AX_ATTR_FLOWTO_IDS:
+ result += " flowto_ids=" + IntVectorToString(values);
+ break;
+ case AX_ATTR_LABELLEDBY_IDS:
+ result += " labelledby_ids=" + IntVectorToString(values);
+ break;
+ case AX_ATTR_OWNS_IDS:
+ result += " owns_ids=" + IntVectorToString(values);
+ break;
case AX_ATTR_LINE_BREAKS:
result += " line_breaks=" + IntVectorToString(values);
break;
diff --git a/ui/accessibility/ax_tree_unittest.cc b/ui/accessibility/ax_tree_unittest.cc
index 7dcf59e2a8..f4c609ed36 100644
--- a/ui/accessibility/ax_tree_unittest.cc
+++ b/ui/accessibility/ax_tree_unittest.cc
@@ -32,16 +32,8 @@ class FakeAXTreeDelegate : public AXTreeDelegate {
new_root_ids_.push_back(new_root->id());
}
- void Reset() {
- deleted_ids_.clear();
- created_ids_.clear();
- changed_ids_.clear();
- new_root_ids_.clear();
- }
-
const std::vector<int32>& deleted_ids() { return deleted_ids_; }
const std::vector<int32>& created_ids() { return created_ids_; }
- const std::vector<int32>& changed_ids() { return changed_ids_; }
const std::vector<int32>& new_root_ids() { return new_root_ids_; }
private:
diff --git a/ui/accessibility/ax_view_state.cc b/ui/accessibility/ax_view_state.cc
index fb19e2d38d..11044bc16d 100644
--- a/ui/accessibility/ax_view_state.cc
+++ b/ui/accessibility/ax_view_state.cc
@@ -8,12 +8,20 @@ namespace ui {
AXViewState::AXViewState()
: role(AX_ROLE_CLIENT),
- state(0),
selection_start(-1),
selection_end(-1),
index(-1),
- count(-1) { }
+ count(-1),
+ state_(0) { }
AXViewState::~AXViewState() { }
+void AXViewState::AddStateFlag(ui::AXState state_flag) {
+ state_ |= (1 << state_flag);
+}
+
+bool AXViewState::HasStateFlag(ui::AXState state_flag) const {
+ return 0 != (state_ & (1 << state_flag));
+}
+
} // namespace ui
diff --git a/ui/accessibility/ax_view_state.h b/ui/accessibility/ax_view_state.h
index 2cb2152db9..5d72d47a3c 100644
--- a/ui/accessibility/ax_view_state.h
+++ b/ui/accessibility/ax_view_state.h
@@ -26,13 +26,13 @@ struct AX_EXPORT AXViewState {
AXViewState();
~AXViewState();
+ // Set or check bits in |state_|.
+ void AddStateFlag(ui::AXState state);
+ bool HasStateFlag(ui::AXState state) const;
+
// The view's role, like button or list box.
AXRole role;
- // The view's state, a bitmask containing fields such as checked
- // (for a checkbox) and protected (for a password text box).
- uint32 state;
-
// The view's name / label.
base::string16 name;
@@ -66,6 +66,11 @@ struct AX_EXPORT AXViewState {
// be a safe no-op if the view is deleted. Typically, accessible views
// should use a WeakPtr when binding the callback.
base::Callback<void(const base::string16&)> set_value_callback;
+
+ private:
+ // The view's state, a bitmask containing fields such as checked
+ // (for a checkbox) and protected (for a password text box).
+ uint32 state_;
};
} // namespace ui
diff --git a/ui/android/bitmap_format_java.target.darwin-arm.mk b/ui/android/bitmap_format_java.target.darwin-arm.mk
index 53304c5b4f..9e9a68be71 100644
--- a/ui/android/bitmap_format_java.target.darwin-arm.mk
+++ b/ui/android/bitmap_format_java.target.darwin-arm.mk
@@ -94,6 +94,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -176,6 +177,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/android/bitmap_format_java.target.darwin-mips.mk b/ui/android/bitmap_format_java.target.darwin-mips.mk
index 7e708ecde8..e32bed2f50 100644
--- a/ui/android/bitmap_format_java.target.darwin-mips.mk
+++ b/ui/android/bitmap_format_java.target.darwin-mips.mk
@@ -93,6 +93,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -174,6 +175,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/android/bitmap_format_java.target.darwin-x86.mk b/ui/android/bitmap_format_java.target.darwin-x86.mk
index 406d2c6952..3b2c06d4d5 100644
--- a/ui/android/bitmap_format_java.target.darwin-x86.mk
+++ b/ui/android/bitmap_format_java.target.darwin-x86.mk
@@ -95,6 +95,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -177,6 +178,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/android/bitmap_format_java.target.darwin-x86_64.mk b/ui/android/bitmap_format_java.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..665971aafa
--- /dev/null
+++ b/ui/android/bitmap_format_java.target.darwin-x86_64.mk
@@ -0,0 +1,233 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := ui_android_bitmap_format_java_gyp
+LOCAL_MODULE_STEM := bitmap_format_java
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+
+### Generated for rule "ui_android_ui_android_gyp_bitmap_format_java_target_generate_java_constants":
+# "{'inputs': ['../../build/android/gyp/util/build_utils.py', '../../build/android/gyp/gcc_preprocess.py', '../gfx/android/bitmap_config_list.h'], 'extension': 'template', 'outputs': ['$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/%(INPUT_ROOT)s.java'], 'variables': {'output_path': '$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/%(INPUT_ROOT)s.java'}, 'rule_name': 'generate_java_constants', 'rule_sources': ['java/BitmapFormat.template'], 'action': ['python', '../../build/android/gyp/gcc_preprocess.py', '--include-path=../..', '--output=$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/%(INPUT_ROOT)s.java', '--template=$(RULE_SOURCES)'], 'message': 'Generating Java from cpp template $(RULE_SOURCES)'}":
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/BitmapFormat.java: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/BitmapFormat.java: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/BitmapFormat.java: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/BitmapFormat.java: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/BitmapFormat.java: $(LOCAL_PATH)/ui/android/java/BitmapFormat.template $(LOCAL_PATH)/build/android/gyp/util/build_utils.py $(LOCAL_PATH)/build/android/gyp/gcc_preprocess.py $(LOCAL_PATH)/ui/gfx/android/bitmap_config_list.h $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx; cd $(gyp_local_path)/ui/android; python ../../build/android/gyp/gcc_preprocess.py "--include-path=../.." "--output=$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/BitmapFormat.java" "--template=java/BitmapFormat.template"
+
+.PHONY: ui_android_bitmap_format_java_gyp_rule_trigger
+ui_android_bitmap_format_java_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/BitmapFormat.java
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/BitmapFormat.java
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_GENERATED_SOURCES := \
+ ui_android_bitmap_format_java_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_android_bitmap_format_java_gyp
+
+# Alias gyp target name.
+.PHONY: bitmap_format_java
+bitmap_format_java: ui_android_bitmap_format_java_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/ui/android/bitmap_format_java.target.linux-arm.mk b/ui/android/bitmap_format_java.target.linux-arm.mk
index 53304c5b4f..9e9a68be71 100644
--- a/ui/android/bitmap_format_java.target.linux-arm.mk
+++ b/ui/android/bitmap_format_java.target.linux-arm.mk
@@ -94,6 +94,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -176,6 +177,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/android/bitmap_format_java.target.linux-mips.mk b/ui/android/bitmap_format_java.target.linux-mips.mk
index 7e708ecde8..e32bed2f50 100644
--- a/ui/android/bitmap_format_java.target.linux-mips.mk
+++ b/ui/android/bitmap_format_java.target.linux-mips.mk
@@ -93,6 +93,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -174,6 +175,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/android/bitmap_format_java.target.linux-x86.mk b/ui/android/bitmap_format_java.target.linux-x86.mk
index 406d2c6952..3b2c06d4d5 100644
--- a/ui/android/bitmap_format_java.target.linux-x86.mk
+++ b/ui/android/bitmap_format_java.target.linux-x86.mk
@@ -95,6 +95,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -177,6 +178,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/android/bitmap_format_java.target.linux-x86_64.mk b/ui/android/bitmap_format_java.target.linux-x86_64.mk
new file mode 100644
index 0000000000..665971aafa
--- /dev/null
+++ b/ui/android/bitmap_format_java.target.linux-x86_64.mk
@@ -0,0 +1,233 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := ui_android_bitmap_format_java_gyp
+LOCAL_MODULE_STEM := bitmap_format_java
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+
+### Generated for rule "ui_android_ui_android_gyp_bitmap_format_java_target_generate_java_constants":
+# "{'inputs': ['../../build/android/gyp/util/build_utils.py', '../../build/android/gyp/gcc_preprocess.py', '../gfx/android/bitmap_config_list.h'], 'extension': 'template', 'outputs': ['$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/%(INPUT_ROOT)s.java'], 'variables': {'output_path': '$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/%(INPUT_ROOT)s.java'}, 'rule_name': 'generate_java_constants', 'rule_sources': ['java/BitmapFormat.template'], 'action': ['python', '../../build/android/gyp/gcc_preprocess.py', '--include-path=../..', '--output=$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/%(INPUT_ROOT)s.java', '--template=$(RULE_SOURCES)'], 'message': 'Generating Java from cpp template $(RULE_SOURCES)'}":
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/BitmapFormat.java: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/BitmapFormat.java: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/BitmapFormat.java: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/BitmapFormat.java: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/BitmapFormat.java: $(LOCAL_PATH)/ui/android/java/BitmapFormat.template $(LOCAL_PATH)/build/android/gyp/util/build_utils.py $(LOCAL_PATH)/build/android/gyp/gcc_preprocess.py $(LOCAL_PATH)/ui/gfx/android/bitmap_config_list.h $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx; cd $(gyp_local_path)/ui/android; python ../../build/android/gyp/gcc_preprocess.py "--include-path=../.." "--output=$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/BitmapFormat.java" "--template=java/BitmapFormat.template"
+
+.PHONY: ui_android_bitmap_format_java_gyp_rule_trigger
+ui_android_bitmap_format_java_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/BitmapFormat.java
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/templates/org/chromium/ui/gfx/BitmapFormat.java
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_GENERATED_SOURCES := \
+ ui_android_bitmap_format_java_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_android_bitmap_format_java_gyp
+
+# Alias gyp target name.
+.PHONY: bitmap_format_java
+bitmap_format_java: ui_android_bitmap_format_java_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java b/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java
index dd04217183..5c4549cd9d 100644
--- a/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java
+++ b/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java
@@ -39,14 +39,15 @@ public class BitmapHelper {
int reqHeight) {
Resources res = Resources.getSystem();
int resId = res.getIdentifier(name, null, null);
+ if (resId == 0) return null;
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
-
options.inJustDecodeBounds = false;
+ options.inPreferredConfig = Bitmap.Config.ARGB_8888;
return BitmapFactory.decodeResource(res, resId, options);
}
diff --git a/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java b/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java
index 863fa1b5e1..c154ea0b22 100644
--- a/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java
+++ b/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java
@@ -31,6 +31,7 @@ public class DeviceDisplayInfo {
private final Context mAppContext;
private final WindowManager mWinManager;
private Point mTempPoint = new Point();
+ private DisplayMetrics mTempMetrics = new DisplayMetrics();
private DeviceDisplayInfo(Context context) {
mAppContext = context.getApplicationContext();
@@ -42,7 +43,8 @@ public class DeviceDisplayInfo {
*/
@CalledByNative
public int getDisplayHeight() {
- return getMetrics().heightPixels;
+ getDisplay().getSize(mTempPoint);
+ return mTempPoint.y;
}
/**
@@ -50,7 +52,8 @@ public class DeviceDisplayInfo {
*/
@CalledByNative
public int getDisplayWidth() {
- return getMetrics().widthPixels;
+ getDisplay().getSize(mTempPoint);
+ return mTempPoint.x;
}
/**
@@ -140,7 +143,8 @@ public class DeviceDisplayInfo {
*/
@CalledByNative
public double getDIPScale() {
- return getMetrics().density;
+ getDisplay().getMetrics(mTempMetrics);
+ return mTempMetrics.density;
}
/**
@@ -178,10 +182,6 @@ public class DeviceDisplayInfo {
return mWinManager.getDefaultDisplay();
}
- private DisplayMetrics getMetrics() {
- return mAppContext.getResources().getDisplayMetrics();
- }
-
/**
* Creates DeviceDisplayInfo for a given Context.
*
diff --git a/ui/android/java/strings/translations/android_ui_strings_am.xtb b/ui/android/java/strings/translations/android_ui_strings_am.xtb
index 0969b29a18..c72ce6aa17 100644
--- a/ui/android/java/strings/translations/android_ui_strings_am.xtb
+++ b/ui/android/java/strings/translations/android_ui_strings_am.xtb
@@ -2,7 +2,7 @@
<!DOCTYPE translationbundle>
<translationbundle lang="am">
<translation id="6017514345406065928">አረንጓዴ</translation>
-<translation id="7658239707568436148">ሰርዝ</translation>
+<translation id="7658239707568436148">ይቅር</translation>
<translation id="9068849894565669697">ቀለም ይምረጡ</translation>
<translation id="4115378294792113321">ሮዝ</translation>
<translation id="793640675459356075">የተመረጠውን ፋይል መክፈት አልተሳካም</translation>
diff --git a/ui/android/window_open_disposition_java.target.darwin-arm.mk b/ui/android/window_open_disposition_java.target.darwin-arm.mk
index 2d738856f5..b890532fc3 100644
--- a/ui/android/window_open_disposition_java.target.darwin-arm.mk
+++ b/ui/android/window_open_disposition_java.target.darwin-arm.mk
@@ -94,6 +94,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -176,6 +177,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/android/window_open_disposition_java.target.darwin-mips.mk b/ui/android/window_open_disposition_java.target.darwin-mips.mk
index 4d64d18e8c..e7ad8410bd 100644
--- a/ui/android/window_open_disposition_java.target.darwin-mips.mk
+++ b/ui/android/window_open_disposition_java.target.darwin-mips.mk
@@ -93,6 +93,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -174,6 +175,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/android/window_open_disposition_java.target.darwin-x86.mk b/ui/android/window_open_disposition_java.target.darwin-x86.mk
index b709330061..a627c734b3 100644
--- a/ui/android/window_open_disposition_java.target.darwin-x86.mk
+++ b/ui/android/window_open_disposition_java.target.darwin-x86.mk
@@ -95,6 +95,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -177,6 +178,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/android/window_open_disposition_java.target.darwin-x86_64.mk b/ui/android/window_open_disposition_java.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..7c5796eb2c
--- /dev/null
+++ b/ui/android/window_open_disposition_java.target.darwin-x86_64.mk
@@ -0,0 +1,233 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := ui_android_window_open_disposition_java_gyp
+LOCAL_MODULE_STEM := window_open_disposition_java
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+
+### Generated for rule "ui_android_ui_android_gyp_window_open_disposition_java_target_generate_java_constants":
+# "{'inputs': ['../../build/android/gyp/util/build_utils.py', '../../build/android/gyp/gcc_preprocess.py', '../base/window_open_disposition_list.h'], 'extension': 'template', 'outputs': ['$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/%(INPUT_ROOT)s.java'], 'variables': {'output_path': '$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/%(INPUT_ROOT)s.java'}, 'rule_name': 'generate_java_constants', 'rule_sources': ['java/WindowOpenDisposition.template'], 'action': ['python', '../../build/android/gyp/gcc_preprocess.py', '--include-path=../..', '--output=$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/%(INPUT_ROOT)s.java', '--template=$(RULE_SOURCES)'], 'message': 'Generating Java from cpp template $(RULE_SOURCES)'}":
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/WindowOpenDisposition.java: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/WindowOpenDisposition.java: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/WindowOpenDisposition.java: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/WindowOpenDisposition.java: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/WindowOpenDisposition.java: $(LOCAL_PATH)/ui/android/java/WindowOpenDisposition.template $(LOCAL_PATH)/build/android/gyp/util/build_utils.py $(LOCAL_PATH)/build/android/gyp/gcc_preprocess.py $(LOCAL_PATH)/ui/base/window_open_disposition_list.h $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/templates/org/chromium/ui; cd $(gyp_local_path)/ui/android; python ../../build/android/gyp/gcc_preprocess.py "--include-path=../.." "--output=$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/WindowOpenDisposition.java" "--template=java/WindowOpenDisposition.template"
+
+.PHONY: ui_android_window_open_disposition_java_gyp_rule_trigger
+ui_android_window_open_disposition_java_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/templates/org/chromium/ui/WindowOpenDisposition.java
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/templates/org/chromium/ui/WindowOpenDisposition.java
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_GENERATED_SOURCES := \
+ ui_android_window_open_disposition_java_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_android_window_open_disposition_java_gyp
+
+# Alias gyp target name.
+.PHONY: window_open_disposition_java
+window_open_disposition_java: ui_android_window_open_disposition_java_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/ui/android/window_open_disposition_java.target.linux-arm.mk b/ui/android/window_open_disposition_java.target.linux-arm.mk
index 2d738856f5..b890532fc3 100644
--- a/ui/android/window_open_disposition_java.target.linux-arm.mk
+++ b/ui/android/window_open_disposition_java.target.linux-arm.mk
@@ -94,6 +94,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -176,6 +177,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/android/window_open_disposition_java.target.linux-mips.mk b/ui/android/window_open_disposition_java.target.linux-mips.mk
index 4d64d18e8c..e7ad8410bd 100644
--- a/ui/android/window_open_disposition_java.target.linux-mips.mk
+++ b/ui/android/window_open_disposition_java.target.linux-mips.mk
@@ -93,6 +93,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -174,6 +175,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/android/window_open_disposition_java.target.linux-x86.mk b/ui/android/window_open_disposition_java.target.linux-x86.mk
index b709330061..a627c734b3 100644
--- a/ui/android/window_open_disposition_java.target.linux-x86.mk
+++ b/ui/android/window_open_disposition_java.target.linux-x86.mk
@@ -95,6 +95,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -177,6 +178,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/android/window_open_disposition_java.target.linux-x86_64.mk b/ui/android/window_open_disposition_java.target.linux-x86_64.mk
new file mode 100644
index 0000000000..7c5796eb2c
--- /dev/null
+++ b/ui/android/window_open_disposition_java.target.linux-x86_64.mk
@@ -0,0 +1,233 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := ui_android_window_open_disposition_java_gyp
+LOCAL_MODULE_STEM := window_open_disposition_java
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+
+### Generated for rule "ui_android_ui_android_gyp_window_open_disposition_java_target_generate_java_constants":
+# "{'inputs': ['../../build/android/gyp/util/build_utils.py', '../../build/android/gyp/gcc_preprocess.py', '../base/window_open_disposition_list.h'], 'extension': 'template', 'outputs': ['$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/%(INPUT_ROOT)s.java'], 'variables': {'output_path': '$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/%(INPUT_ROOT)s.java'}, 'rule_name': 'generate_java_constants', 'rule_sources': ['java/WindowOpenDisposition.template'], 'action': ['python', '../../build/android/gyp/gcc_preprocess.py', '--include-path=../..', '--output=$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/%(INPUT_ROOT)s.java', '--template=$(RULE_SOURCES)'], 'message': 'Generating Java from cpp template $(RULE_SOURCES)'}":
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/WindowOpenDisposition.java: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/WindowOpenDisposition.java: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/WindowOpenDisposition.java: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/WindowOpenDisposition.java: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/WindowOpenDisposition.java: $(LOCAL_PATH)/ui/android/java/WindowOpenDisposition.template $(LOCAL_PATH)/build/android/gyp/util/build_utils.py $(LOCAL_PATH)/build/android/gyp/gcc_preprocess.py $(LOCAL_PATH)/ui/base/window_open_disposition_list.h $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/templates/org/chromium/ui; cd $(gyp_local_path)/ui/android; python ../../build/android/gyp/gcc_preprocess.py "--include-path=../.." "--output=$(gyp_shared_intermediate_dir)/templates/org/chromium/ui/WindowOpenDisposition.java" "--template=java/WindowOpenDisposition.template"
+
+.PHONY: ui_android_window_open_disposition_java_gyp_rule_trigger
+ui_android_window_open_disposition_java_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/templates/org/chromium/ui/WindowOpenDisposition.java
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/templates/org/chromium/ui/WindowOpenDisposition.java
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_GENERATED_SOURCES := \
+ ui_android_window_open_disposition_java_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_android_window_open_disposition_java_gyp
+
+# Alias gyp target name.
+.PHONY: window_open_disposition_java
+window_open_disposition_java: ui_android_window_open_disposition_java_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/ui/app_list/app_list.gyp b/ui/app_list/app_list.gyp
index 6340b7bf01..182d9c656c 100644
--- a/ui/app_list/app_list.gyp
+++ b/ui/app_list/app_list.gyp
@@ -18,6 +18,7 @@
'../base/strings/ui_strings.gyp:ui_strings',
'../base/ui_base.gyp:ui_base',
'../compositor/compositor.gyp:compositor',
+ '../events/events.gyp:events_base',
'../gfx/gfx.gyp:gfx',
'../gfx/gfx.gyp:gfx_geometry',
'../resources/ui_resources.gyp:ui_resources',
@@ -103,6 +104,7 @@
'views/apps_grid_view.cc',
'views/apps_grid_view.h',
'views/apps_grid_view_delegate.h',
+ 'views/apps_grid_view_folder_delegate.h',
'views/cached_label.cc',
'views/cached_label.h',
'views/contents_switcher_view.cc',
@@ -220,6 +222,7 @@
'test/run_all_unittests.cc',
'views/app_list_main_view_unittest.cc',
'views/apps_grid_view_unittest.cc',
+ 'views/folder_header_view_unittest.cc',
'views/search_box_view_unittest.cc',
'views/search_result_list_view_unittest.cc',
'views/test/apps_grid_view_test_api.cc',
@@ -254,11 +257,6 @@
['exclude', 'cocoa/'],
],
}],
- ['desktop_linux == 1 or chromeos == 1 or OS == "ios"', {
- 'dependencies': [
- '../base/strings/ui_strings.gyp:ui_unittest_strings',
- ],
- }],
# See http://crbug.com/162998#c4 for why this is needed.
# TODO(dmikurube): Kill linux_use_tcmalloc. http://crbug.com/345554
['OS=="linux" and ((use_allocator!="none" and use_allocator!="see_use_tcmalloc") or (use_allocator=="see_use_tcmalloc" and linux_use_tcmalloc==1))', {
diff --git a/ui/app_list/app_list_constants.cc b/ui/app_list/app_list_constants.cc
index 6c2ec45977..efcf5a7988 100644
--- a/ui/app_list/app_list_constants.cc
+++ b/ui/app_list/app_list_constants.cc
@@ -64,10 +64,19 @@ const int kPreferredIconDimension = 48;
const int kExperimentalPreferredCols = 6;
const int kExperimentalPreferredRows = 3;
+// Radius of the circle, in which if entered, show re-order preview.
+const int kReorderDroppingCircleRadius = 35;
+
+// Max items allowed in a folder.
+size_t kMaxFolderItems = 16;
+
// Number of the top items in a folder, which are shown inside the folder icon
// and animated when opening and closing a folder.
const size_t kNumFolderTopItems = 4;
+// Maximum length of the folder name in chars.
+const size_t kMaxFolderNameChars = 40;
+
// Font style for app item labels.
const ui::ResourceBundle::FontStyle kItemTextFontStyle =
ui::ResourceBundle::SmallBoldFont;
diff --git a/ui/app_list/app_list_constants.h b/ui/app_list/app_list_constants.h
index 8245017f4b..cb2c30ad35 100644
--- a/ui/app_list/app_list_constants.h
+++ b/ui/app_list/app_list_constants.h
@@ -49,7 +49,11 @@ APP_LIST_EXPORT extern const int kPreferredIconDimension;
APP_LIST_EXPORT extern const int kExperimentalPreferredCols;
APP_LIST_EXPORT extern const int kExperimentalPreferredRows;
+APP_LIST_EXPORT extern const int kReorderDroppingCircleRadius;
+
+APP_LIST_EXPORT extern size_t kMaxFolderItems;
APP_LIST_EXPORT extern const size_t kNumFolderTopItems;
+APP_LIST_EXPORT extern const size_t kMaxFolderNameChars;
APP_LIST_EXPORT extern const ui::ResourceBundle::FontStyle kItemTextFontStyle;
diff --git a/ui/app_list/app_list_menu.cc b/ui/app_list/app_list_menu.cc
index 8c0727c2c8..c37a5557e7 100644
--- a/ui/app_list/app_list_menu.cc
+++ b/ui/app_list/app_list_menu.cc
@@ -67,6 +67,10 @@ bool AppListMenu::IsCommandIdChecked(int command_id) const {
}
bool AppListMenu::IsCommandIdEnabled(int command_id) const {
+ if (command_id >= SELECT_PROFILE &&
+ command_id < SELECT_PROFILE + static_cast<int>(users_.size())) {
+ return !users_[command_id - SELECT_PROFILE].signin_required;
+ }
return true;
}
diff --git a/ui/app_list/app_list_view_delegate.cc b/ui/app_list/app_list_view_delegate.cc
index 2156cf5065..6c57780300 100644
--- a/ui/app_list/app_list_view_delegate.cc
+++ b/ui/app_list/app_list_view_delegate.cc
@@ -6,10 +6,8 @@
namespace app_list {
-AppListViewDelegate::User::User() : active(false) {
-}
+AppListViewDelegate::User::User() : active(false), signin_required(false) {}
-AppListViewDelegate::User::~User() {
-}
+AppListViewDelegate::User::~User() {}
} // app_list
diff --git a/ui/app_list/app_list_view_delegate.h b/ui/app_list/app_list_view_delegate.h
index aac3f35e02..f0c43dbf97 100644
--- a/ui/app_list/app_list_view_delegate.h
+++ b/ui/app_list/app_list_view_delegate.h
@@ -52,6 +52,9 @@ class APP_LIST_EXPORT AppListViewDelegate {
// The path to this user's profile directory.
base::FilePath profile_path;
+
+ // Whether or not the current profile requires sign-in beofre use.
+ bool signin_required;
};
typedef std::vector<User> Users;
diff --git a/ui/app_list/test/app_list_test_model.cc b/ui/app_list/test/app_list_test_model.cc
index 7a908127c4..66d2a6924e 100644
--- a/ui/app_list/test/app_list_test_model.cc
+++ b/ui/app_list/test/app_list_test_model.cc
@@ -69,6 +69,27 @@ void AppListTestModel::PopulateApps(int n) {
CreateAndAddItem(GetItemName(start_index + i));
}
+AppListFolderItem* AppListTestModel::CreateAndPopulateFolderWithApps(int n) {
+ DCHECK_GT(n, 1);
+ int start_index = static_cast<int>(top_level_item_list()->item_count());
+ AppListTestItem* item = CreateAndAddItem(GetItemName(start_index));
+ std::string merged_item_id = item->id();
+ for (int i = 1; i < n; ++i) {
+ AppListTestItem* new_item = CreateAndAddItem(GetItemName(start_index + i));
+ merged_item_id = AppListModel::MergeItems(merged_item_id, new_item->id());
+ }
+ AppListItem* merged_item = FindItem(merged_item_id);
+ DCHECK(merged_item->GetItemType() == AppListFolderItem::kItemType);
+ return static_cast<AppListFolderItem*>(merged_item);
+}
+
+AppListFolderItem* AppListTestModel::CreateAndAddOemFolder(
+ const std::string& id) {
+ AppListFolderItem* folder =
+ new AppListFolderItem(id, AppListFolderItem::FOLDER_TYPE_OEM);
+ return static_cast<AppListFolderItem*>(AddItem(folder));
+}
+
void AppListTestModel::PopulateAppWithId(int id) {
CreateAndAddItem(GetItemName(id));
}
diff --git a/ui/app_list/test/app_list_test_model.h b/ui/app_list/test/app_list_test_model.h
index c7ef6fa69a..2d2fc95688 100644
--- a/ui/app_list/test/app_list_test_model.h
+++ b/ui/app_list/test/app_list_test_model.h
@@ -7,6 +7,7 @@
#include <string>
+#include "ui/app_list/app_list_folder_item.h"
#include "ui/app_list/app_list_item.h"
#include "ui/app_list/app_list_model.h"
@@ -47,6 +48,11 @@ class AppListTestModel : public AppListModel {
// Populate the model with |n| items titled "Item #".
void PopulateApps(int n);
+ // Creates and populate a folder with |n| test apps in it.
+ AppListFolderItem* CreateAndPopulateFolderWithApps(int n);
+
+ AppListFolderItem* CreateAndAddOemFolder(const std::string& id);
+
// Populate the model with an item titled "Item |id|".
void PopulateAppWithId(int id);
diff --git a/ui/app_list/views/app_list_folder_view.cc b/ui/app_list/views/app_list_folder_view.cc
index 548fc0d67e..d51d67ff90 100644
--- a/ui/app_list/views/app_list_folder_view.cc
+++ b/ui/app_list/views/app_list_folder_view.cc
@@ -42,8 +42,7 @@ const int kOutOfFolderContainerBubbleDelta = 30;
AppListFolderView::AppListFolderView(AppsContainerView* container_view,
AppListModel* model,
- AppListMainView* app_list_main_view,
- content::WebContents* start_page_contents)
+ AppListMainView* app_list_main_view)
: container_view_(container_view),
app_list_main_view_(app_list_main_view),
folder_header_view_(new FolderHeaderView(this)),
@@ -56,8 +55,8 @@ AppListFolderView::AppListFolderView(AppsContainerView* container_view,
view_model_->Add(folder_header_view_, kIndexFolderHeader);
items_grid_view_ =
- new AppsGridView(app_list_main_view_, pagination_model_.get(), NULL);
- items_grid_view_->set_is_root_level(false);
+ new AppsGridView(app_list_main_view_, pagination_model_.get());
+ items_grid_view_->set_folder_delegate(this);
items_grid_view_->SetLayout(
kPreferredIconDimension,
container_view->apps_grid_view()->cols(),
@@ -227,7 +226,7 @@ void AppListFolderView::UpdateFolderNameVisibility(bool visible) {
folder_header_view_->UpdateFolderNameVisibility(visible);
}
-bool AppListFolderView::IsPointOutsideOfFolderBoundray(
+bool AppListFolderView::IsPointOutsideOfFolderBoundary(
const gfx::Point& point) {
if (!GetLocalBounds().Contains(point))
return true;
diff --git a/ui/app_list/views/app_list_folder_view.h b/ui/app_list/views/app_list_folder_view.h
index 198f6912f2..b6d960051a 100644
--- a/ui/app_list/views/app_list_folder_view.h
+++ b/ui/app_list/views/app_list_folder_view.h
@@ -7,16 +7,13 @@
#include "ui/app_list/app_list_item_list_observer.h"
#include "ui/app_list/views/apps_grid_view.h"
+#include "ui/app_list/views/apps_grid_view_folder_delegate.h"
#include "ui/app_list/views/folder_header_view.h"
#include "ui/app_list/views/folder_header_view_delegate.h"
#include "ui/compositor/layer_animation_observer.h"
#include "ui/views/controls/button/button.h"
#include "ui/views/view.h"
-namespace content {
-class WebContents;
-}
-
namespace views {
class ViewModel;
}
@@ -35,12 +32,12 @@ class PaginationModel;
class AppListFolderView : public views::View,
public FolderHeaderViewDelegate,
public AppListModelObserver,
- public ui::ImplicitAnimationObserver {
+ public ui::ImplicitAnimationObserver,
+ public AppsGridViewFolderDelegate {
public:
AppListFolderView(AppsContainerView* container_view,
AppListModel* model,
- AppListMainView* app_list_main_view,
- content::WebContents* start_page_contents);
+ AppListMainView* app_list_main_view);
virtual ~AppListFolderView();
void SetAppListFolderItem(AppListFolderItem* folder);
@@ -54,39 +51,11 @@ class AppListFolderView : public views::View,
// AppListFolderView.
gfx::Rect GetItemIconBoundsAt(int index);
- // Updates the folder view background to show or hide folder container ink
- // bubble.
- void UpdateFolderViewBackground(bool show_bubble);
-
void UpdateFolderNameVisibility(bool visible);
- // Returns true if |point| falls outside of the folder container ink bubble.
- bool IsPointOutsideOfFolderBoundray(const gfx::Point& point);
-
- // Called when a folder item is dragged out of the folder to be re-parented.
- // |original_drag_view| is the |drag_view_| inside the folder's grid view.
- // |drag_point_in_folder_grid| is the last drag point in coordinate of the
- // AppsGridView inside the folder.
- void ReparentItem(AppListItemView* original_drag_view,
- const gfx::Point& drag_point_in_folder_grid);
-
- // Dispatches drag event from the hidden grid view to the root level grid view
- // for re-parenting a folder item.
- void DispatchDragEventForReparent(AppsGridView::Pointer pointer,
- const ui::LocatedEvent& event);
-
- // Dispatches EndDrag event from the hidden grid view to the root level grid
- // view for reparenting a folder item.
- // |events_forwarded_to_drag_drop_host|: True if the dragged item is dropped
- // to the drag_drop_host, eg. dropped on shelf.
- void DispatchEndDragEventForReparent(bool events_forwarded_to_drag_drop_host);
-
// Hides the view immediately without animation.
void HideViewImmediately();
- // Returns true if the associated folder item is an OEM folder.
- bool IsOEMFolder() const;
-
// views::View
virtual gfx::Size GetPreferredSize() OVERRIDE;
virtual void Layout() OVERRIDE;
@@ -117,6 +86,19 @@ class AppListFolderView : public views::View,
virtual void SetItemName(AppListFolderItem* item,
const std::string& name) OVERRIDE;
+ // Overridden from AppsGridViewFolderDelegate:
+ virtual void UpdateFolderViewBackground(bool show_bubble) OVERRIDE;
+ virtual void ReparentItem(AppListItemView* original_drag_view,
+ const gfx::Point& drag_point_in_folder_grid)
+ OVERRIDE;
+ virtual void DispatchDragEventForReparent(AppsGridView::Pointer pointer,
+ const ui::LocatedEvent& event)
+ OVERRIDE;
+ virtual void DispatchEndDragEventForReparent(
+ bool events_forwarded_to_drag_drop_host) OVERRIDE;
+ virtual bool IsPointOutsideOfFolderBoundary(const gfx::Point& point) OVERRIDE;
+ virtual bool IsOEMFolder() const OVERRIDE;
+
AppsContainerView* container_view_; // Not owned.
AppListMainView* app_list_main_view_; // Not Owned.
FolderHeaderView* folder_header_view_; // Owned by views hierarchy.
diff --git a/ui/app_list/views/apps_container_view.cc b/ui/app_list/views/apps_container_view.cc
index 2a0ca0c7e0..a56b3a925c 100644
--- a/ui/app_list/views/apps_container_view.cc
+++ b/ui/app_list/views/apps_container_view.cc
@@ -23,13 +23,11 @@ namespace app_list {
AppsContainerView::AppsContainerView(AppListMainView* app_list_main_view,
PaginationModel* pagination_model,
- AppListModel* model,
- content::WebContents* start_page_contents)
+ AppListModel* model)
: model_(model),
show_state_(SHOW_APPS),
top_icon_animation_pending_count_(0) {
- apps_grid_view_ = new AppsGridView(
- app_list_main_view, pagination_model, start_page_contents);
+ apps_grid_view_ = new AppsGridView(app_list_main_view, pagination_model);
int cols = kPreferredCols;
int rows = kPreferredRows;
if (app_list::switches::IsExperimentalAppListPositionEnabled()) {
@@ -42,11 +40,8 @@ AppsContainerView::AppsContainerView(AppListMainView* app_list_main_view,
folder_background_view_ = new FolderBackgroundView();
AddChildView(folder_background_view_);
- app_list_folder_view_ = new AppListFolderView(
- this,
- model,
- app_list_main_view,
- start_page_contents);
+ app_list_folder_view_ =
+ new AppListFolderView(this, model, app_list_main_view);
AddChildView(app_list_folder_view_);
apps_grid_view_->SetModel(model_);
diff --git a/ui/app_list/views/apps_container_view.h b/ui/app_list/views/apps_container_view.h
index 7b23f8fe5e..1c8a9131a6 100644
--- a/ui/app_list/views/apps_container_view.h
+++ b/ui/app_list/views/apps_container_view.h
@@ -33,8 +33,7 @@ class AppsContainerView : public views::View,
public:
AppsContainerView(AppListMainView* app_list_main_view,
PaginationModel* pagination_model,
- AppListModel* model,
- content::WebContents* start_page_contents);
+ AppListModel* model);
virtual ~AppsContainerView();
// Shows the active folder content specified by |folder_item|.
diff --git a/ui/app_list/views/apps_grid_view.cc b/ui/app_list/views/apps_grid_view.cc
index 6be7b4254a..63f817c939 100644
--- a/ui/app_list/views/apps_grid_view.cc
+++ b/ui/app_list/views/apps_grid_view.cc
@@ -95,11 +95,6 @@ const int kFolderItemReparentDealy = 50;
// UI.
const int kFolderDroppingCircleRadius = 15;
-// Radius of the circle, in which if entered, show re-order preview.
-const int kReorderDroppingCircleRadius = 35;
-
-// Max items allowed in a folder.
-size_t kMaxFolderItems = 16;
// RowMoveAnimationDelegate is used when moving an item into a different row.
// Before running the animation, the item's layer is re-created and kept in
@@ -318,14 +313,13 @@ class SynchronousDrag : public ui::DragSourceWin {
#endif // defined(OS_WIN)
AppsGridView::AppsGridView(AppsGridViewDelegate* delegate,
- PaginationModel* pagination_model,
- content::WebContents* start_page_contents)
+ PaginationModel* pagination_model)
: model_(NULL),
item_list_(NULL),
delegate_(delegate),
+ folder_delegate_(NULL),
pagination_model_(pagination_model),
page_switcher_view_(new PageSwitcher(pagination_model)),
- start_page_view_(NULL),
cols_(0),
rows_per_page_(0),
selected_view_(NULL),
@@ -338,7 +332,6 @@ AppsGridView::AppsGridView(AppsGridViewDelegate* delegate,
page_flip_target_(-1),
page_flip_delay_in_ms_(kPageFlipDelayInMs),
bounds_animator_(this),
- is_root_level_(true),
activated_item_view_(NULL),
dragging_for_reparent_item_(false),
weak_factory_(this) {
@@ -347,13 +340,6 @@ AppsGridView::AppsGridView(AppsGridViewDelegate* delegate,
pagination_model_->AddObserver(this);
AddChildView(page_switcher_view_);
-
- if (start_page_contents) {
- start_page_view_ =
- new views::WebView(start_page_contents->GetBrowserContext());
- start_page_view_->SetWebContents(start_page_contents);
- AddChildView(start_page_view_);
- }
}
AppsGridView::~AppsGridView() {
@@ -507,7 +493,7 @@ bool AppsGridView::UpdateDragFromItem(Pointer pointer,
const ui::LocatedEvent& event) {
DCHECK(drag_view_);
- if (!is_root_level_)
+ if (folder_delegate_)
UpdateDragStateInsideFolder(pointer, event);
gfx::Point drag_point_in_grid_view;
@@ -603,15 +589,12 @@ void AppsGridView::EndDrag(bool cancel) {
DCHECK(!IsDraggingForReparentInRootLevelGridView());
forward_events_to_drag_and_drop_host_ = false;
drag_and_drop_host_->EndDrag(cancel);
- if (IsDraggingForReprentInHiddenGridView()) {
- static_cast<AppListFolderView*>(parent())->
- DispatchEndDragEventForReparent(true);
- }
+ if (IsDraggingForReparentInHiddenGridView())
+ folder_delegate_->DispatchEndDragEventForReparent(true);
} else if (!cancel && dragging()) {
- if (IsDraggingForReprentInHiddenGridView()) {
+ if (IsDraggingForReparentInHiddenGridView()) {
// Forward the EndDrag event to the root level grid view.
- static_cast<AppListFolderView*>(parent())->
- DispatchEndDragEventForReparent(false);
+ folder_delegate_->DispatchEndDragEventForReparent(false);
EndDragForReparentInHiddenFolderGridView();
return;
} else {
@@ -666,12 +649,10 @@ void AppsGridView::EndDrag(bool cancel) {
// If user releases mouse inside a folder's grid view, burst the folder
// container ink bubble.
- if (!cancel && !is_root_level_ && !IsDraggingForReprentInHiddenGridView()) {
- static_cast<AppListFolderView*>(parent())->
- UpdateFolderViewBackground(false);
- }
+ if (folder_delegate_ && !IsDraggingForReparentInHiddenGridView())
+ folder_delegate_->UpdateFolderViewBackground(false);
- if (IsDraggingForReprentInHiddenGridView())
+ if (IsDraggingForReparentInHiddenGridView())
dragging_for_reparent_item_ = false;
}
@@ -824,8 +805,6 @@ void AppsGridView::Layout() {
rect.set_y(rect.bottom() - page_switcher_height);
rect.set_height(page_switcher_height);
page_switcher_view_->SetBoundsRect(rect);
-
- LayoutStartPage();
}
bool AppsGridView::OnKeyPressed(const ui::KeyEvent& event) {
@@ -902,9 +881,9 @@ void AppsGridView::Update() {
}
void AppsGridView::UpdatePaging() {
- int total_page = start_page_view_ ? 1 : 0;
- if (view_model_.view_size() && tiles_per_page())
- total_page += (view_model_.view_size() - 1) / tiles_per_page() + 1;
+ int total_page = view_model_.view_size() && tiles_per_page()
+ ? (view_model_.view_size() - 1) / tiles_per_page() + 1
+ : 0;
pagination_model_->SetTotalPages(total_page);
}
@@ -949,19 +928,11 @@ views::View* AppsGridView::CreateViewForItemAtIndex(size_t index) {
AppsGridView::Index AppsGridView::GetIndexFromModelIndex(
int model_index) const {
- int page = model_index / tiles_per_page();
- if (start_page_view_)
- ++page;
-
- return Index(page, model_index % tiles_per_page());
+ return Index(model_index / tiles_per_page(), model_index % tiles_per_page());
}
int AppsGridView::GetModelIndexFromIndex(const Index& index) const {
- int model_index = index.page * tiles_per_page() + index.slot;
- if (start_page_view_)
- model_index -= tiles_per_page();
-
- return model_index;
+ return index.page * tiles_per_page() + index.slot;
}
void AppsGridView::SetSelectedItemByIndex(const Index& index) {
@@ -983,11 +954,8 @@ void AppsGridView::SetSelectedItemByIndex(const Index& index) {
}
bool AppsGridView::IsValidIndex(const Index& index) const {
- const int item_page_start = start_page_view_ ? 1 : 0;
- return index.page >= item_page_start &&
- index.page < pagination_model_->total_pages() &&
- index.slot >= 0 &&
- index.slot < tiles_per_page() &&
+ return index.page >= 0 && index.page < pagination_model_->total_pages() &&
+ index.slot >= 0 && index.slot < tiles_per_page() &&
GetModelIndexFromIndex(index) < view_model_.view_size();
}
@@ -1304,10 +1272,9 @@ void AppsGridView::OnReorderTimer() {
}
void AppsGridView::OnFolderItemReparentTimer() {
- DCHECK(!is_root_level_);
+ DCHECK(folder_delegate_);
if (drag_out_of_folder_container_) {
- static_cast<AppListFolderView*>(parent())->ReparentItem(
- drag_view_, last_drag_point_);
+ folder_delegate_->ReparentItem(drag_view_, last_drag_point_);
// Set the flag in the folder's grid view.
dragging_for_reparent_item_ = true;
@@ -1329,7 +1296,7 @@ void AppsGridView::UpdateDragStateInsideFolder(
if (IsUnderOEMFolder())
return;
- if (IsDraggingForReprentInHiddenGridView()) {
+ if (IsDraggingForReparentInHiddenGridView()) {
// Dispatch drag event to root level grid view for re-parenting folder
// folder item purpose.
DispatchDragEventForReparent(pointer, event);
@@ -1337,15 +1304,14 @@ void AppsGridView::UpdateDragStateInsideFolder(
}
// Regular drag and drop in a folder's grid view.
- AppListFolderView* folder_view = static_cast<AppListFolderView*>(parent());
- folder_view->UpdateFolderViewBackground(true);
+ folder_delegate_->UpdateFolderViewBackground(true);
// Calculate if the drag_view_ is dragged out of the folder's container
// ink bubble.
gfx::Rect bounds_to_folder_view = ConvertRectToParent(drag_view_->bounds());
gfx::Point pt = bounds_to_folder_view.CenterPoint();
bool is_item_dragged_out_of_folder =
- folder_view->IsPointOutsideOfFolderBoundray(pt);
+ folder_delegate_->IsPointOutsideOfFolderBoundary(pt);
if (is_item_dragged_out_of_folder) {
if (!drag_out_of_folder_container_) {
folder_item_reparent_timer_.Start(FROM_HERE,
@@ -1360,11 +1326,11 @@ void AppsGridView::UpdateDragStateInsideFolder(
}
bool AppsGridView::IsDraggingForReparentInRootLevelGridView() const {
- return (is_root_level_ && dragging_for_reparent_item_);
+ return (!folder_delegate_ && dragging_for_reparent_item_);
}
-bool AppsGridView::IsDraggingForReprentInHiddenGridView() const {
- return (!is_root_level_ && dragging_for_reparent_item_);
+bool AppsGridView::IsDraggingForReparentInHiddenGridView() const {
+ return (folder_delegate_ && dragging_for_reparent_item_);
}
gfx::Rect AppsGridView::GetTargetIconRectInFolder(
@@ -1381,17 +1347,16 @@ gfx::Rect AppsGridView::GetTargetIconRectInFolder(
}
bool AppsGridView::IsUnderOEMFolder() {
- if (is_root_level_)
+ if (!folder_delegate_)
return false;
- return static_cast<AppListFolderView*>(parent())->IsOEMFolder();
+ return folder_delegate_->IsOEMFolder();
}
void AppsGridView::DispatchDragEventForReparent(
Pointer pointer,
const ui::LocatedEvent& event) {
- static_cast<AppListFolderView*>(parent())->
- DispatchDragEventForReparent(pointer, event);
+ folder_delegate_->DispatchDragEventForReparent(pointer, event);
}
void AppsGridView::EndDragFromReparentItemInRootLevel(
@@ -1474,7 +1439,7 @@ void AppsGridView::EndDragForReparentInHiddenFolderGridView() {
}
void AppsGridView::OnFolderItemRemoved() {
- DCHECK(!is_root_level_);
+ DCHECK(folder_delegate_);
item_list_ = NULL;
}
@@ -1829,29 +1794,6 @@ void AppsGridView::ButtonPressed(views::Button* sender,
}
}
-void AppsGridView::LayoutStartPage() {
- if (!start_page_view_)
- return;
-
- gfx::Rect start_page_bounds(GetLocalBounds());
- start_page_bounds.set_height(start_page_bounds.height() -
- page_switcher_view_->height());
-
- const int page_width = width() + kPagePadding;
- const int current_page = pagination_model_->selected_page();
- if (current_page > 0)
- start_page_bounds.Offset(-page_width, 0);
-
- const PaginationModel::Transition& transition =
- pagination_model_->transition();
- if (current_page == 0 || transition.target_page == 0) {
- const int dir = transition.target_page > current_page ? -1 : 1;
- start_page_bounds.Offset(transition.progress * page_width * dir, 0);
- }
-
- start_page_view_->SetBoundsRect(start_page_bounds);
-}
-
void AppsGridView::OnListItemAdded(size_t index, AppListItem* item) {
EndDrag(true);
@@ -1874,7 +1816,8 @@ void AppsGridView::OnListItemRemoved(size_t index, AppListItem* item) {
// If there is only one item left under the folder, remove the folder.
// We do allow OEM folder to contain only one item.
- if (!is_root_level_ && item_list_->item_count() == 1 && !IsUnderOEMFolder()) {
+ if (folder_delegate_ && item_list_->item_count() == 1 &&
+ !IsUnderOEMFolder()) {
std::string folder_id = item_list_->item_at(0)->folder_id();
// TODO(jennyz): Don't remove the folder if this is an OEM folder, this
// depends on https://codereview.chromium.org/197403005/.
@@ -1955,8 +1898,8 @@ void AppsGridView::OnImplicitAnimationsCompleted() {
bool AppsGridView::EnableFolderDragDropUI() {
// Enable drag and drop folder UI only if it is at the app list root level
// and the switch is on and the target folder can still accept new items.
- return switches::IsFolderUIEnabled() && is_root_level_ &&
- CanDropIntoTarget(drop_target_);
+ return switches::IsFolderUIEnabled() && !folder_delegate_ &&
+ CanDropIntoTarget(drop_target_);
}
bool AppsGridView::CanDropIntoTarget(const Index& drop_target) {
@@ -2129,7 +2072,7 @@ views::View* AppsGridView::GetViewAtSlotOnCurrentPage(int slot) {
for (int i = 0; i < view_model_.view_size(); ++i) {
views::View* view = view_model_.view_at(i);
- if (view->bounds() == tile_rect)
+ if (view->bounds() == tile_rect && view != drag_view_)
return view;
}
return NULL;
diff --git a/ui/app_list/views/apps_grid_view.h b/ui/app_list/views/apps_grid_view.h
index 096730e9f5..22d8bb19ed 100644
--- a/ui/app_list/views/apps_grid_view.h
+++ b/ui/app_list/views/apps_grid_view.h
@@ -51,6 +51,7 @@ class AppsGridViewTestApi;
class ApplicationDragAndDropHost;
class AppListItemView;
class AppsGridViewDelegate;
+class AppsGridViewFolderDelegate;
class PageSwitcher;
class PaginationModel;
@@ -70,12 +71,9 @@ class APP_LIST_EXPORT AppsGridView : public views::View,
// Constructs the app icon grid view. |delegate| is the delegate of this
// view, which usually is the hosting AppListView. |pagination_model| is
- // the paging info shared within the launcher UI. |start_page_contents| is
- // the contents for the launcher start page. It could be NULL if the start
- // page is not available.
+ // the paging info shared within the launcher UI.
AppsGridView(AppsGridViewDelegate* delegate,
- PaginationModel* pagination_model,
- content::WebContents* start_page_contents);
+ PaginationModel* pagination_model);
virtual ~AppsGridView();
// Sets fixed layout parameters. After setting this, CalculateLayout below
@@ -199,7 +197,9 @@ class APP_LIST_EXPORT AppsGridView : public views::View,
return forward_events_to_drag_and_drop_host_;
}
- void set_is_root_level(bool value) { is_root_level_ = value; }
+ void set_folder_delegate(AppsGridViewFolderDelegate* folder_delegate) {
+ folder_delegate_ = folder_delegate;
+ }
AppListItemView* activated_item_view() const {
return activated_item_view_;
@@ -343,9 +343,6 @@ class APP_LIST_EXPORT AppsGridView : public views::View,
// buffer area surrounding it.
bool IsPointWithinDragBuffer(const gfx::Point& point) const;
- // Handles start page layout and transition animation.
- void LayoutStartPage();
-
// Overridden from views::ButtonListener:
virtual void ButtonPressed(views::Button* sender,
const ui::Event& event) OVERRIDE;
@@ -433,7 +430,7 @@ class APP_LIST_EXPORT AppsGridView : public views::View,
// Returns true if drag event is happening in the hidden AppsGridView of the
// folder during reparenting a folder item.
- bool IsDraggingForReprentInHiddenGridView() const;
+ bool IsDraggingForReparentInHiddenGridView() const;
// Returns the target icon bounds for |drag_item_view| to fly back
// to its parent |folder_item_view| in animation.
@@ -446,9 +443,12 @@ class APP_LIST_EXPORT AppsGridView : public views::View,
AppListModel* model_; // Owned by AppListView.
AppListItemList* item_list_; // Not owned.
AppsGridViewDelegate* delegate_;
+
+ // This can be NULL. Only grid views inside folders have a folder delegate.
+ AppsGridViewFolderDelegate* folder_delegate_;
+
PaginationModel* pagination_model_; // Owned by AppListController.
PageSwitcher* page_switcher_view_; // Owned by views hierarchy.
- views::WebView* start_page_view_; // Owned by views hierarchy.
gfx::Size icon_size_;
int cols_;
@@ -521,9 +521,6 @@ class APP_LIST_EXPORT AppsGridView : public views::View,
views::BoundsAnimator bounds_animator_;
- // If true, AppsGridView is rending items at the root level of the app list.
- bool is_root_level_;
-
// The most recent activated item view.
AppListItemView* activated_item_view_;
diff --git a/ui/app_list/views/apps_grid_view_folder_delegate.h b/ui/app_list/views/apps_grid_view_folder_delegate.h
new file mode 100644
index 0000000000..60d8f5e59d
--- /dev/null
+++ b/ui/app_list/views/apps_grid_view_folder_delegate.h
@@ -0,0 +1,61 @@
+// Copyright 2014 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 UI_APP_LIST_VIEWS_APPS_GRID_VIEW_FOLDER_DELEGATE_H_
+#define UI_APP_LIST_VIEWS_APPS_GRID_VIEW_FOLDER_DELEGATE_H_
+
+#include "ui/app_list/app_list_export.h"
+#include "ui/app_list/views/apps_grid_view.h"
+
+namespace gfx {
+class Point;
+}
+
+namespace ui {
+class LocatedEvent;
+}
+
+namespace app_list {
+
+class AppListItemView;
+
+// A delegate which allows an AppsGridView to communicate with its host folder.
+class APP_LIST_EXPORT AppsGridViewFolderDelegate {
+ public:
+ // Updates the folder view background to show or hide folder container ink
+ // bubble.
+ virtual void UpdateFolderViewBackground(bool show_bubble) = 0;
+
+ // Called when a folder item is dragged out of the folder to be re-parented.
+ // |original_drag_view| is the |drag_view_| inside the folder's grid view.
+ // |drag_point_in_folder_grid| is the last drag point in coordinate of the
+ // AppsGridView inside the folder.
+ virtual void ReparentItem(AppListItemView* original_drag_view,
+ const gfx::Point& drag_point_in_folder_grid) = 0;
+
+ // Dispatches drag event from the hidden grid view to the root level grid view
+ // for re-parenting a folder item.
+ virtual void DispatchDragEventForReparent(AppsGridView::Pointer pointer,
+ const ui::LocatedEvent& event) = 0;
+
+ // Dispatches EndDrag event from the hidden grid view to the root level grid
+ // view for reparenting a folder item.
+ // |events_forwarded_to_drag_drop_host|: True if the dragged item is dropped
+ // to the drag_drop_host, eg. dropped on shelf.
+ virtual void DispatchEndDragEventForReparent(
+ bool events_forwarded_to_drag_drop_host) = 0;
+
+ // Returns true if |point| falls outside of the folder container ink bubble.
+ virtual bool IsPointOutsideOfFolderBoundary(const gfx::Point& point) = 0;
+
+ // Returns true if the associated folder item is an OEM folder.
+ virtual bool IsOEMFolder() const = 0;
+
+ protected:
+ virtual ~AppsGridViewFolderDelegate() {}
+};
+
+} // namespace app_list
+
+#endif // UI_APP_LIST_VIEWS_APPS_GRID_VIEW_FOLDER_DELEGATE_H_
diff --git a/ui/app_list/views/apps_grid_view_unittest.cc b/ui/app_list/views/apps_grid_view_unittest.cc
index ed88983648..313015a480 100644
--- a/ui/app_list/views/apps_grid_view_unittest.cc
+++ b/ui/app_list/views/apps_grid_view_unittest.cc
@@ -14,12 +14,15 @@
#include "base/strings/utf_string_conversions.h"
#include "base/timer/timer.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/app_list/app_list_constants.h"
+#include "ui/app_list/app_list_folder_item.h"
#include "ui/app_list/app_list_item.h"
#include "ui/app_list/app_list_model.h"
#include "ui/app_list/app_list_switches.h"
#include "ui/app_list/pagination_model.h"
#include "ui/app_list/test/app_list_test_model.h"
#include "ui/app_list/views/app_list_item_view.h"
+#include "ui/app_list/views/apps_grid_view_folder_delegate.h"
#include "ui/app_list/views/test/apps_grid_view_test_api.h"
#include "ui/views/test/views_test_base.h"
@@ -105,8 +108,7 @@ class AppsGridViewTest : public views::ViewsTestBase {
model_.reset(new AppListTestModel);
pagination_model_.reset(new PaginationModel);
- apps_grid_view_.reset(
- new AppsGridView(NULL, pagination_model_.get(), NULL));
+ apps_grid_view_.reset(new AppsGridView(NULL, pagination_model_.get()));
apps_grid_view_->SetLayout(kIconDimension, kCols, kRows);
apps_grid_view_->SetBoundsRect(gfx::Rect(gfx::Size(kWidth, kHeight)));
apps_grid_view_->SetModel(model_.get());
@@ -179,6 +181,42 @@ class AppsGridViewTest : public views::ViewsTestBase {
DISALLOW_COPY_AND_ASSIGN(AppsGridViewTest);
};
+class TestAppsGridViewFolderDelegate : public AppsGridViewFolderDelegate {
+ public:
+ TestAppsGridViewFolderDelegate() : show_bubble_(false) {}
+ virtual ~TestAppsGridViewFolderDelegate() {}
+
+ // Overridden from AppsGridViewFolderDelegate:
+ virtual void UpdateFolderViewBackground(bool show_bubble) OVERRIDE {
+ show_bubble_ = show_bubble;
+ }
+
+ virtual void ReparentItem(AppListItemView* original_drag_view,
+ const gfx::Point& drag_point_in_folder_grid)
+ OVERRIDE {}
+
+ virtual void DispatchDragEventForReparent(AppsGridView::Pointer pointer,
+ const ui::LocatedEvent& event)
+ OVERRIDE {}
+
+ virtual void DispatchEndDragEventForReparent(
+ bool events_forwarded_to_drag_drop_host) OVERRIDE {}
+
+ virtual bool IsPointOutsideOfFolderBoundary(const gfx::Point& point)
+ OVERRIDE {
+ return false;
+ }
+
+ virtual bool IsOEMFolder() const OVERRIDE { return false; }
+
+ bool show_bubble() { return show_bubble_; }
+
+ private:
+ bool show_bubble_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestAppsGridViewFolderDelegate);
+};
+
TEST_F(AppsGridViewTest, CreatePage) {
// Fully populates a page.
const int kPages = 1;
@@ -271,6 +309,178 @@ TEST_F(AppsGridViewTest, MouseDragWithFolderDisabled) {
test_api_->LayoutToIdealBounds();
}
+TEST_F(AppsGridViewTest, MouseDragItemIntoFolder) {
+ size_t kTotalItems = 3;
+ model_->PopulateApps(kTotalItems);
+ EXPECT_EQ(model_->top_level_item_list()->item_count(), kTotalItems);
+ EXPECT_EQ(std::string("Item 0,Item 1,Item 2"), model_->GetModelContent());
+
+ gfx::Point from = GetItemTileRectAt(0, 1).CenterPoint();
+ gfx::Point to = GetItemTileRectAt(0, 0).CenterPoint();
+
+ // Dragging item_1 over item_0 creates a folder.
+ SimulateDrag(AppsGridView::MOUSE, from, to);
+ apps_grid_view_->EndDrag(false);
+ EXPECT_EQ(kTotalItems - 1, model_->top_level_item_list()->item_count());
+ EXPECT_EQ(AppListFolderItem::kItemType,
+ model_->top_level_item_list()->item_at(0)->GetItemType());
+ AppListFolderItem* folder_item = static_cast<AppListFolderItem*>(
+ model_->top_level_item_list()->item_at(0));
+ EXPECT_EQ(2u, folder_item->ChildItemCount());
+ AppListItem* item_0 = model_->FindItem("Item 0");
+ EXPECT_TRUE(item_0->IsInFolder());
+ EXPECT_EQ(folder_item->id(), item_0->folder_id());
+ AppListItem* item_1 = model_->FindItem("Item 1");
+ EXPECT_TRUE(item_1->IsInFolder());
+ EXPECT_EQ(folder_item->id(), item_1->folder_id());
+ std::string expected_items = folder_item->id() + ",Item 2";
+ EXPECT_EQ(expected_items, model_->GetModelContent());
+ test_api_->LayoutToIdealBounds();
+
+ // Dragging item_2 to the folder adds item_2 to the folder.
+ SimulateDrag(AppsGridView::MOUSE, from, to);
+ apps_grid_view_->EndDrag(false);
+
+ EXPECT_EQ(kTotalItems - 2, model_->top_level_item_list()->item_count());
+ EXPECT_EQ(folder_item->id(), model_->GetModelContent());
+ EXPECT_EQ(3u, folder_item->ChildItemCount());
+ item_0 = model_->FindItem("Item 0");
+ EXPECT_TRUE(item_0->IsInFolder());
+ EXPECT_EQ(folder_item->id(), item_0->folder_id());
+ item_1 = model_->FindItem("Item 1");
+ EXPECT_TRUE(item_1->IsInFolder());
+ EXPECT_EQ(folder_item->id(), item_1->folder_id());
+ AppListItem* item_2 = model_->FindItem("Item 2");
+ EXPECT_TRUE(item_2->IsInFolder());
+ EXPECT_EQ(folder_item->id(), item_2->folder_id());
+ test_api_->LayoutToIdealBounds();
+}
+
+TEST_F(AppsGridViewTest, MouseDragMaxItemsInFolder) {
+ // Create and add a folder with 15 items in it.
+ size_t kTotalItems = kMaxFolderItems - 1;
+ model_->CreateAndPopulateFolderWithApps(kTotalItems);
+ EXPECT_EQ(1u, model_->top_level_item_list()->item_count());
+ EXPECT_EQ(AppListFolderItem::kItemType,
+ model_->top_level_item_list()->item_at(0)->GetItemType());
+ AppListFolderItem* folder_item = static_cast<AppListFolderItem*>(
+ model_->top_level_item_list()->item_at(0));
+ EXPECT_EQ(kTotalItems, folder_item->ChildItemCount());
+
+ // Create and add another 2 items.
+ model_->PopulateAppWithId(kTotalItems);
+ model_->PopulateAppWithId(kTotalItems + 1);
+ EXPECT_EQ(3u, model_->top_level_item_list()->item_count());
+ EXPECT_EQ(folder_item->id(), model_->top_level_item_list()->item_at(0)->id());
+ EXPECT_EQ(model_->GetItemName(kMaxFolderItems - 1),
+ model_->top_level_item_list()->item_at(1)->id());
+ EXPECT_EQ(model_->GetItemName(kMaxFolderItems),
+ model_->top_level_item_list()->item_at(2)->id());
+
+ gfx::Point from = GetItemTileRectAt(0, 1).CenterPoint();
+ gfx::Point to = GetItemTileRectAt(0, 0).CenterPoint();
+
+ // Dragging one item into the folder, the folder should accept the item.
+ SimulateDrag(AppsGridView::MOUSE, from, to);
+ apps_grid_view_->EndDrag(false);
+ EXPECT_EQ(2u, model_->top_level_item_list()->item_count());
+ EXPECT_EQ(folder_item->id(), model_->top_level_item_list()->item_at(0)->id());
+ EXPECT_EQ(kMaxFolderItems, folder_item->ChildItemCount());
+ EXPECT_EQ(model_->GetItemName(kMaxFolderItems),
+ model_->top_level_item_list()->item_at(1)->id());
+ test_api_->LayoutToIdealBounds();
+
+ // Dragging the last item over the folder, the folder won't accept the new
+ // item, instead, it will re-order the items.
+ SimulateDrag(AppsGridView::MOUSE, from, to);
+ apps_grid_view_->EndDrag(false);
+ EXPECT_EQ(2u, model_->top_level_item_list()->item_count());
+ EXPECT_EQ(model_->GetItemName(kMaxFolderItems),
+ model_->top_level_item_list()->item_at(0)->id());
+ EXPECT_EQ(folder_item->id(), model_->top_level_item_list()->item_at(1)->id());
+ EXPECT_EQ(kMaxFolderItems, folder_item->ChildItemCount());
+ test_api_->LayoutToIdealBounds();
+}
+
+TEST_F(AppsGridViewTest, MouseDragItemReorder) {
+ size_t kTotalItems = 2;
+ model_->PopulateApps(kTotalItems);
+ EXPECT_EQ(2u, model_->top_level_item_list()->item_count());
+ EXPECT_EQ(std::string("Item 0,Item 1"), model_->GetModelContent());
+
+ gfx::Point from = GetItemTileRectAt(0, 1).CenterPoint();
+ int reorder_offset = (GetItemTileRectAt(0, 1).CenterPoint() -
+ GetItemTileRectAt(0, 0).CenterPoint()).Length() -
+ kReorderDroppingCircleRadius -
+ kPreferredIconDimension / 2 + 5;
+ gfx::Point to = gfx::Point(from.x() - reorder_offset, from.y());
+
+ // Dragging item_1 closing to item_0 should leads to re-ordering these two
+ // items.
+ SimulateDrag(AppsGridView::MOUSE, from, to);
+ apps_grid_view_->EndDrag(false);
+ EXPECT_EQ(2u, model_->top_level_item_list()->item_count());
+ EXPECT_EQ(std::string("Item 1,Item 0"), model_->GetModelContent());
+ test_api_->LayoutToIdealBounds();
+}
+
+TEST_F(AppsGridViewTest, MouseDragFolderReorder) {
+ size_t kTotalItems = 2;
+ model_->CreateAndPopulateFolderWithApps(kTotalItems);
+ model_->PopulateAppWithId(kTotalItems);
+ EXPECT_EQ(2u, model_->top_level_item_list()->item_count());
+ EXPECT_EQ(AppListFolderItem::kItemType,
+ model_->top_level_item_list()->item_at(0)->GetItemType());
+ AppListFolderItem* folder_item = static_cast<AppListFolderItem*>(
+ model_->top_level_item_list()->item_at(0));
+ EXPECT_EQ("Item 2", model_->top_level_item_list()->item_at(1)->id());
+
+ gfx::Point from = GetItemTileRectAt(0, 0).CenterPoint();
+ gfx::Point to = GetItemTileRectAt(0, 1).CenterPoint();
+
+ // Dragging folder over item_1 should leads to re-ordering these two
+ // items.
+ SimulateDrag(AppsGridView::MOUSE, from, to);
+ apps_grid_view_->EndDrag(false);
+ EXPECT_EQ(2u, model_->top_level_item_list()->item_count());
+ EXPECT_EQ("Item 2", model_->top_level_item_list()->item_at(0)->id());
+ EXPECT_EQ(folder_item->id(), model_->top_level_item_list()->item_at(1)->id());
+ test_api_->LayoutToIdealBounds();
+}
+
+TEST_F(AppsGridViewTest, MouseDragWithCancelDeleteAddItem) {
+ size_t kTotalItems = 4;
+ model_->PopulateApps(kTotalItems);
+ EXPECT_EQ(model_->top_level_item_list()->item_count(), kTotalItems);
+ EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"),
+ model_->GetModelContent());
+
+ gfx::Point from = GetItemTileRectAt(0, 0).CenterPoint();
+ gfx::Point to = GetItemTileRectAt(0, 1).CenterPoint();
+
+ // Canceling drag should keep existing order.
+ SimulateDrag(AppsGridView::MOUSE, from, to);
+ apps_grid_view_->EndDrag(true);
+ EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"),
+ model_->GetModelContent());
+ test_api_->LayoutToIdealBounds();
+
+ // Deleting an item keeps remaining intact.
+ SimulateDrag(AppsGridView::MOUSE, from, to);
+ model_->DeleteItem(model_->GetItemName(2));
+ apps_grid_view_->EndDrag(false);
+ EXPECT_EQ(std::string("Item 0,Item 1,Item 3"), model_->GetModelContent());
+ test_api_->LayoutToIdealBounds();
+
+ // Adding a launcher item cancels the drag and respects the order.
+ SimulateDrag(AppsGridView::MOUSE, from, to);
+ model_->CreateAndAddItem("Extra");
+ apps_grid_view_->EndDrag(false);
+ EXPECT_EQ(std::string("Item 0,Item 1,Item 3,Extra"),
+ model_->GetModelContent());
+ test_api_->LayoutToIdealBounds();
+}
+
TEST_F(AppsGridViewTest, MouseDragFlipPage) {
test_api_->SetPageFlipDelay(10);
pagination_model_->SetTransitionDurations(10, 10);
@@ -352,6 +562,26 @@ TEST_F(AppsGridViewTest, SimultaneousDragWithFolderDisabled) {
test_api_->LayoutToIdealBounds();
}
+TEST_F(AppsGridViewTest, UpdateFolderBackgroundOnCancelDrag) {
+ const int kTotalItems = 4;
+ TestAppsGridViewFolderDelegate folder_delegate;
+ apps_grid_view_->set_folder_delegate(&folder_delegate);
+ model_->PopulateApps(kTotalItems);
+ EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"),
+ model_->GetModelContent());
+
+ gfx::Point mouse_from = GetItemTileRectAt(0, 0).CenterPoint();
+ gfx::Point mouse_to = GetItemTileRectAt(0, 1).CenterPoint();
+
+ // Starts a mouse drag and then cancels it.
+ SimulateDrag(AppsGridView::MOUSE, mouse_from, mouse_to);
+ EXPECT_TRUE(folder_delegate.show_bubble());
+ apps_grid_view_->EndDrag(true);
+ EXPECT_FALSE(folder_delegate.show_bubble());
+ EXPECT_EQ(std::string("Item 0,Item 1,Item 2,Item 3"),
+ model_->GetModelContent());
+}
+
TEST_F(AppsGridViewTest, HighlightWithKeyboard) {
const int kPages = 3;
const int kItems = (kPages - 1) * kTilesPerPage + 1;
diff --git a/ui/app_list/views/contents_view.cc b/ui/app_list/views/contents_view.cc
index 0121cf6d8d..60968c39aa 100644
--- a/ui/app_list/views/contents_view.cc
+++ b/ui/app_list/views/contents_view.cc
@@ -11,6 +11,7 @@
#include "ui/app_list/app_list_switches.h"
#include "ui/app_list/app_list_view_delegate.h"
#include "ui/app_list/pagination_model.h"
+#include "ui/app_list/views/app_list_folder_view.h"
#include "ui/app_list/views/app_list_main_view.h"
#include "ui/app_list/views/apps_container_view.h"
#include "ui/app_list/views/apps_grid_view.h"
@@ -58,10 +59,8 @@ ContentsView::ContentsView(AppListMainView* app_list_main_view,
kPageTransitionDurationInMs,
kOverscrollPageTransitionDurationMs);
- content::WebContents* start_page_contents =
- view_delegate ? view_delegate->GetStartPageContents() : NULL;
- apps_container_view_ = new AppsContainerView(
- app_list_main_view, pagination_model, model, start_page_contents);
+ apps_container_view_ =
+ new AppsContainerView(app_list_main_view, pagination_model, model);
AddChildView(apps_container_view_);
view_model_->Add(apps_container_view_, kIndexAppsContainer);
@@ -79,6 +78,12 @@ ContentsView::~ContentsView() {
void ContentsView::CancelDrag() {
if (apps_container_view_->apps_grid_view()->has_dragged_view())
apps_container_view_->apps_grid_view()->EndDrag(true);
+ if (apps_container_view_->app_list_folder_view()
+ ->items_grid_view()
+ ->has_dragged_view()) {
+ apps_container_view_->app_list_folder_view()->items_grid_view()->EndDrag(
+ true);
+ }
}
void ContentsView::SetDragAndDropHostOfCurrentAppList(
diff --git a/ui/app_list/views/folder_header_view.cc b/ui/app_list/views/folder_header_view.cc
index 9819b34165..7a2c0f237c 100644
--- a/ui/app_list/views/folder_header_view.cc
+++ b/ui/app_list/views/folder_header_view.cc
@@ -47,6 +47,12 @@ class FolderHeaderView::FolderNameView : public views::Textfield {
virtual ~FolderNameView() {
}
+ void Update() {
+ SetBackgroundColor(text().size() <= kMaxFolderNameChars
+ ? kContentsBackgroundColor
+ : SK_ColorRED);
+ }
+
private:
DISALLOW_COPY_AND_ASSIGN(FolderNameView);
};
@@ -91,8 +97,9 @@ void FolderHeaderView::SetFolderItem(AppListFolderItem* folder_item) {
return;
folder_item_->AddObserver(this);
- folder_name_view_->SetEnabled(folder_item->folder_type() !=
+ folder_name_view_->SetEnabled(folder_item_->folder_type() !=
AppListFolderItem::FOLDER_TYPE_OEM);
+
Update();
}
@@ -111,12 +118,26 @@ void FolderHeaderView::Update() {
return;
folder_name_view_->SetVisible(folder_name_visible_);
- if (folder_name_visible_)
+ if (folder_name_visible_) {
folder_name_view_->SetText(base::UTF8ToUTF16(folder_item_->name()));
+ folder_name_view_->Update();
+ }
Layout();
}
+const base::string16& FolderHeaderView::GetFolderNameForTest() {
+ return folder_name_view_->text();
+}
+
+void FolderHeaderView::SetFolderNameForTest(const base::string16& name) {
+ folder_name_view_->SetText(name);
+}
+
+bool FolderHeaderView::IsFolderNameEnabledForTest() const {
+ return folder_name_view_->enabled();
+}
+
gfx::Size FolderHeaderView::GetPreferredSize() {
return gfx::Size(kPreferredWidth, kPreferredHeight);
}
@@ -172,9 +193,13 @@ void FolderHeaderView::ContentsChanged(views::Textfield* sender,
if (!folder_item_)
return;
+ folder_name_view_->Update();
folder_item_->RemoveObserver(this);
- std::string name = base::UTF16ToUTF8(folder_name_view_->text());
- delegate_->SetItemName(folder_item_, name);
+ // Enforce the maximum folder name length in UI.
+ std::string name = base::UTF16ToUTF8(
+ folder_name_view_->text().substr(0, kMaxFolderNameChars));
+ if (name != folder_item_->name())
+ delegate_->SetItemName(folder_item_, name);
folder_item_->AddObserver(this);
Layout();
diff --git a/ui/app_list/views/folder_header_view.h b/ui/app_list/views/folder_header_view.h
index 6b1ca12f36..109c39a31f 100644
--- a/ui/app_list/views/folder_header_view.h
+++ b/ui/app_list/views/folder_header_view.h
@@ -7,6 +7,7 @@
#include <string>
+#include "ui/app_list/app_list_export.h"
#include "ui/app_list/app_list_item_observer.h"
#include "ui/views/controls/button/button.h"
#include "ui/views/controls/textfield/textfield_controller.h"
@@ -22,11 +23,15 @@ class AppListFolderItem;
class AppListFolderView;
class FolderHeaderViewDelegate;
+namespace test {
+class FolderHeaderViewTest;
+}
+
// FolderHeaderView contains a back button and an editable folder name field.
-class FolderHeaderView : public views::View,
- public views::TextfieldController,
- public views::ButtonListener,
- public AppListItemObserver {
+class APP_LIST_EXPORT FolderHeaderView : public views::View,
+ public views::TextfieldController,
+ public views::ButtonListener,
+ public AppListItemObserver {
public:
explicit FolderHeaderView(FolderHeaderViewDelegate* delegate);
virtual ~FolderHeaderView();
@@ -40,10 +45,18 @@ class FolderHeaderView : public views::View,
private:
class FolderNameView;
+ friend class test::FolderHeaderViewTest;
// Updates UI.
void Update();
+ // Gets and sets the folder name for test.
+ const base::string16& GetFolderNameForTest();
+ void SetFolderNameForTest(const base::string16& name);
+
+ // Returns true if folder name is enabled, only for testing use.
+ bool IsFolderNameEnabledForTest() const;
+
// views::View overrides:
virtual void Layout() OVERRIDE;
virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
diff --git a/ui/app_list/views/folder_header_view_delegate.h b/ui/app_list/views/folder_header_view_delegate.h
index 982920e64c..639b7fc815 100644
--- a/ui/app_list/views/folder_header_view_delegate.h
+++ b/ui/app_list/views/folder_header_view_delegate.h
@@ -25,7 +25,6 @@ class FolderHeaderViewDelegate {
virtual void SetItemName(AppListFolderItem* item,
const std::string& name) = 0;
- protected:
virtual ~FolderHeaderViewDelegate() {}
};
diff --git a/ui/app_list/views/folder_header_view_unittest.cc b/ui/app_list/views/folder_header_view_unittest.cc
new file mode 100644
index 0000000000..14e162fe9f
--- /dev/null
+++ b/ui/app_list/views/folder_header_view_unittest.cc
@@ -0,0 +1,136 @@
+// Copyright (c) 2014 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 "ui/app_list/views/folder_header_view.h"
+
+#include <string>
+
+#include "base/basictypes.h"
+#include "base/command_line.h"
+#include "base/compiler_specific.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/strings/utf_string_conversions.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/app_list/app_list_constants.h"
+#include "ui/app_list/app_list_folder_item.h"
+#include "ui/app_list/app_list_item.h"
+#include "ui/app_list/app_list_model.h"
+#include "ui/app_list/test/app_list_test_model.h"
+#include "ui/app_list/views/folder_header_view_delegate.h"
+#include "ui/views/test/views_test_base.h"
+
+namespace app_list {
+namespace test {
+
+namespace {
+
+class TestFolderHeaderViewDelegate : public FolderHeaderViewDelegate {
+ public:
+ TestFolderHeaderViewDelegate() {}
+ virtual ~TestFolderHeaderViewDelegate() {}
+
+ // FolderHeaderViewDelegate
+ virtual void NavigateBack(AppListFolderItem* item,
+ const ui::Event& event_flags) OVERRIDE {}
+
+ virtual void GiveBackFocusToSearchBox() OVERRIDE {}
+
+ virtual void SetItemName(AppListFolderItem* item,
+ const std::string& name) OVERRIDE {
+ folder_name_ = name;
+ }
+
+ const std::string& folder_name() const { return folder_name_; }
+
+ private:
+ std::string folder_name_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestFolderHeaderViewDelegate);
+};
+
+} // namespace
+
+class FolderHeaderViewTest : public views::ViewsTestBase {
+ public:
+ FolderHeaderViewTest() {}
+ virtual ~FolderHeaderViewTest() {}
+
+ // testing::Test overrides:
+ virtual void SetUp() OVERRIDE {
+ views::ViewsTestBase::SetUp();
+ model_.reset(new AppListTestModel);
+
+ delegate_.reset(new TestFolderHeaderViewDelegate);
+ folder_header_view_.reset(new FolderHeaderView(delegate_.get()));
+ }
+
+ virtual void TearDown() OVERRIDE {
+ folder_header_view_.reset(); // Release apps grid view before models.
+ delegate_.reset();
+ views::ViewsTestBase::TearDown();
+ }
+
+ protected:
+ void UpdateFolderName(const std::string& name) {
+ base::string16 folder_name = base::UTF8ToUTF16(name);
+ folder_header_view_->SetFolderNameForTest(folder_name);
+ folder_header_view_->ContentsChanged(NULL, folder_name);
+ }
+
+ const std::string GetFolderNameFromUI() {
+ return base::UTF16ToUTF8(folder_header_view_->GetFolderNameForTest());
+ }
+
+ bool CanEditFolderName() {
+ return folder_header_view_->IsFolderNameEnabledForTest();
+ }
+
+ scoped_ptr<AppListTestModel> model_;
+ scoped_ptr<FolderHeaderView> folder_header_view_;
+ scoped_ptr<TestFolderHeaderViewDelegate> delegate_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(FolderHeaderViewTest);
+};
+
+TEST_F(FolderHeaderViewTest, SetFolderName) {
+ // Creating a folder with empty folder name.
+ AppListFolderItem* folder_item = model_->CreateAndPopulateFolderWithApps(2);
+ folder_header_view_->SetFolderItem(folder_item);
+ EXPECT_EQ("", GetFolderNameFromUI());
+ EXPECT_TRUE(CanEditFolderName());
+
+ // Update UI to set folder name to "test folder".
+ UpdateFolderName("test folder");
+ EXPECT_EQ("test folder", delegate_->folder_name());
+}
+
+TEST_F(FolderHeaderViewTest, MaxFoldernNameLength) {
+ // Creating a folder with empty folder name.
+ AppListFolderItem* folder_item = model_->CreateAndPopulateFolderWithApps(2);
+ folder_header_view_->SetFolderItem(folder_item);
+ EXPECT_EQ("", GetFolderNameFromUI());
+ EXPECT_TRUE(CanEditFolderName());
+
+ // Update UI to set folder name to really long one beyond its maxium limit,
+ // The folder name should be trucated to the maximum length.
+ std::string max_len_name;
+ for (size_t i = 0; i < kMaxFolderNameChars; ++i)
+ max_len_name += "a";
+ UpdateFolderName(max_len_name);
+ EXPECT_EQ(max_len_name, delegate_->folder_name());
+ std::string too_long_name = max_len_name + "a";
+ UpdateFolderName(too_long_name);
+ EXPECT_EQ(max_len_name, delegate_->folder_name());
+}
+
+TEST_F(FolderHeaderViewTest, OemFolderNameNotEditable) {
+ AppListFolderItem* folder_item = model_->CreateAndAddOemFolder("oem folder");
+ folder_header_view_->SetFolderItem(folder_item);
+ EXPECT_EQ("", GetFolderNameFromUI());
+ EXPECT_FALSE(CanEditFolderName());
+}
+
+} // namespace test
+} // namespace app_list
diff --git a/ui/aura/aura.gyp b/ui/aura/aura.gyp
index cc94586fe0..6bf7b2efdc 100644
--- a/ui/aura/aura.gyp
+++ b/ui/aura/aura.gyp
@@ -27,14 +27,6 @@
'AURA_IMPLEMENTATION',
],
'sources': [
- 'client/activation_change_observer.h',
- 'client/activation_change_observer.cc',
- 'client/activation_client.cc',
- 'client/activation_client.h',
- 'client/activation_delegate.cc',
- 'client/activation_delegate.h',
- 'client/animation_host.cc',
- 'client/animation_host.h',
'client/aura_constants.cc',
'client/aura_constants.h',
'client/capture_client.cc',
@@ -48,30 +40,16 @@
'client/default_activation_client.h',
'client/default_capture_client.cc',
'client/default_capture_client.h',
- 'client/dispatcher_client.cc',
- 'client/dispatcher_client.h',
- 'client/drag_drop_client.cc',
- 'client/drag_drop_client.h',
- 'client/drag_drop_delegate.cc',
- 'client/drag_drop_delegate.h',
'client/event_client.cc',
'client/event_client.h',
'client/focus_change_observer.cc',
'client/focus_change_observer.h',
'client/focus_client.cc',
'client/focus_client.h',
- 'client/scoped_tooltip_disabler.cc',
- 'client/scoped_tooltip_disabler.h',
'client/screen_position_client.cc',
'client/screen_position_client.h',
- 'client/tooltip_client.cc',
- 'client/tooltip_client.h',
- 'client/transient_window_client.cc',
- 'client/transient_window_client.h',
'client/visibility_client.cc',
'client/visibility_client.h',
- 'client/window_move_client.cc',
- 'client/window_move_client.h',
'client/window_stacking_client.cc',
'client/window_stacking_client.h',
'client/window_tree_client.cc',
@@ -114,6 +92,28 @@
'window_tree_host_win.h',
'window_tree_host_x11.cc',
'window_tree_host_x11.h',
+ '../wm/public/activation_change_observer.h',
+ '../wm/public/activation_change_observer.cc',
+ '../wm/public/activation_client.cc',
+ '../wm/public/activation_client.h',
+ '../wm/public/activation_delegate.cc',
+ '../wm/public/activation_delegate.h',
+ '../wm/public/animation_host.cc',
+ '../wm/public/animation_host.h',
+ '../wm/public/dispatcher_client.cc',
+ '../wm/public/dispatcher_client.h',
+ '../wm/public/drag_drop_client.cc',
+ '../wm/public/drag_drop_client.h',
+ '../wm/public/drag_drop_delegate.cc',
+ '../wm/public/drag_drop_delegate.h',
+ '../wm/public/scoped_tooltip_disabler.cc',
+ '../wm/public/scoped_tooltip_disabler.h',
+ '../wm/public/tooltip_client.cc',
+ '../wm/public/tooltip_client.h',
+ '../wm/public/transient_window_client.cc',
+ '../wm/public/transient_window_client.h',
+ '../wm/public/window_move_client.cc',
+ '../wm/public/window_move_client.h',
],
'conditions': [
['use_x11==1', {
diff --git a/ui/aura/client/default_activation_client.cc b/ui/aura/client/default_activation_client.cc
index ccb660b81f..b11d7bfa3f 100644
--- a/ui/aura/client/default_activation_client.cc
+++ b/ui/aura/client/default_activation_client.cc
@@ -4,9 +4,9 @@
#include "ui/aura/client/default_activation_client.h"
-#include "ui/aura/client/activation_change_observer.h"
-#include "ui/aura/client/activation_delegate.h"
#include "ui/aura/window.h"
+#include "ui/wm/public/activation_change_observer.h"
+#include "ui/wm/public/activation_delegate.h"
namespace aura {
namespace client {
diff --git a/ui/aura/client/default_activation_client.h b/ui/aura/client/default_activation_client.h
index 842ee909d6..47e19dbc56 100644
--- a/ui/aura/client/default_activation_client.h
+++ b/ui/aura/client/default_activation_client.h
@@ -11,8 +11,8 @@
#include "base/logging.h"
#include "base/observer_list.h"
#include "ui/aura/aura_export.h"
-#include "ui/aura/client/activation_client.h"
#include "ui/aura/window_observer.h"
+#include "ui/wm/public/activation_client.h"
namespace aura {
namespace client {
diff --git a/ui/aura/demo/demo_main.cc b/ui/aura/demo/demo_main.cc
index b25406921d..548aeded7d 100644
--- a/ui/aura/demo/demo_main.cc
+++ b/ui/aura/demo/demo_main.cc
@@ -71,8 +71,6 @@ class DemoWindowDelegate : public aura::WindowDelegate {
virtual void OnWindowTargetVisibilityChanged(bool visible) OVERRIDE {}
virtual bool HasHitTestMask() const OVERRIDE { return false; }
virtual void GetHitTestMask(gfx::Path* mask) const OVERRIDE {}
- virtual void DidRecreateLayer(ui::Layer* old_layer,
- ui::Layer* new_layer) OVERRIDE {}
private:
SkColor color_;
diff --git a/ui/aura/test/test_window_delegate.cc b/ui/aura/test/test_window_delegate.cc
index e5ae364b5f..7f0ca1b7a1 100644
--- a/ui/aura/test/test_window_delegate.cc
+++ b/ui/aura/test/test_window_delegate.cc
@@ -96,10 +96,6 @@ bool TestWindowDelegate::HasHitTestMask() const {
void TestWindowDelegate::GetHitTestMask(gfx::Path* mask) const {
}
-void TestWindowDelegate::DidRecreateLayer(ui::Layer *old_layer,
- ui::Layer *new_layer) {
-}
-
////////////////////////////////////////////////////////////////////////////////
// ColorTestWindowDelegate
diff --git a/ui/aura/test/test_window_delegate.h b/ui/aura/test/test_window_delegate.h
index 5a1341005e..6f36e445f5 100644
--- a/ui/aura/test/test_window_delegate.h
+++ b/ui/aura/test/test_window_delegate.h
@@ -60,8 +60,6 @@ class TestWindowDelegate : public WindowDelegate {
virtual void OnWindowTargetVisibilityChanged(bool visible) OVERRIDE;
virtual bool HasHitTestMask() const OVERRIDE;
virtual void GetHitTestMask(gfx::Path* mask) const OVERRIDE;
- virtual void DidRecreateLayer(ui::Layer* old_layer,
- ui::Layer* new_layer) OVERRIDE;
private:
int window_component_;
diff --git a/ui/aura/window.cc b/ui/aura/window.cc
index 2d3300f801..86c9046f6d 100644
--- a/ui/aura/window.cc
+++ b/ui/aura/window.cc
@@ -27,7 +27,6 @@
#include "ui/aura/window_observer.h"
#include "ui/aura/window_tracker.h"
#include "ui/aura/window_tree_host.h"
-#include "ui/compositor/clone_layer.h"
#include "ui/compositor/compositor.h"
#include "ui/compositor/layer.h"
#include "ui/events/event_target_iterator.h"
@@ -227,10 +226,14 @@ Window::~Window() {
delegate_->OnWindowDestroying(this);
FOR_EACH_OBSERVER(WindowObserver, observers_, OnWindowDestroying(this));
- // Let the root know so that it can remove any references to us.
+ // TODO(beng): See comment in window_event_dispatcher.h. This shouldn't be
+ // necessary but unfortunately is right now due to ordering
+ // peculiarities. WED must be notified _after_ other observers
+ // are notified of pending teardown but before the hierarchy
+ // is actually torn down.
WindowTreeHost* host = GetHost();
if (host)
- host->dispatcher()->OnWindowDestroying(this);
+ host->dispatcher()->OnPostNotifiedWindowDestroying(this);
// Then destroy the children.
RemoveOrDestroyChildren();
@@ -297,6 +300,11 @@ void Window::SetTransparent(bool transparent) {
layer()->SetFillsBoundsOpaquely(!transparent_);
}
+void Window::SetFillsBoundsCompletely(bool fills_bounds) {
+ if (layer())
+ layer()->SetFillsBoundsCompletely(fills_bounds);
+}
+
Window* Window::GetRootWindow() {
return const_cast<Window*>(
static_cast<const Window*>(this)->GetRootWindow());
@@ -379,12 +387,11 @@ void Window::SetTransform(const gfx::Transform& transform) {
NOTREACHED();
return;
}
- WindowEventDispatcher* dispatcher = GetHost()->dispatcher();
- bool contained_mouse = IsVisible() && dispatcher &&
- ContainsPointInRoot(dispatcher->GetLastMouseLocationInRoot());
+ FOR_EACH_OBSERVER(WindowObserver, observers_,
+ OnWindowTransforming(this));
layer()->SetTransform(transform);
- if (dispatcher)
- dispatcher->OnWindowTransformed(this, contained_mouse);
+ FOR_EACH_OBSERVER(WindowObserver, observers_,
+ OnWindowTransformed(this));
}
void Window::SetLayoutManager(LayoutManager* layout_manager) {
@@ -571,11 +578,15 @@ void Window::ConvertPointToTarget(const Window* source,
if (source->GetRootWindow() != target->GetRootWindow()) {
client::ScreenPositionClient* source_client =
client::GetScreenPositionClient(source->GetRootWindow());
- source_client->ConvertPointToScreen(source, point);
+ // |source_client| can be NULL in tests.
+ if (source_client)
+ source_client->ConvertPointToScreen(source, point);
client::ScreenPositionClient* target_client =
client::GetScreenPositionClient(target->GetRootWindow());
- target_client->ConvertPointFromScreen(target, point);
+ // |target_client| can be NULL in tests.
+ if (target_client)
+ target_client->ConvertPointFromScreen(target, point);
} else if ((source != target) && (!source->layer() || !target->layer())) {
if (!source->layer()) {
gfx::Vector2d offset_to_layer;
@@ -593,6 +604,16 @@ void Window::ConvertPointToTarget(const Window* source,
}
}
+// static
+void Window::ConvertRectToTarget(const Window* source,
+ const Window* target,
+ gfx::Rect* rect) {
+ DCHECK(rect);
+ gfx::Point origin = rect->origin();
+ ConvertPointToTarget(source, target, &origin);
+ rect->set_origin(origin);
+}
+
void Window::MoveCursorTo(const gfx::Point& point_in_window) {
Window* root_window = GetRootWindow();
DCHECK(root_window);
@@ -753,17 +774,6 @@ void Window::OnDeviceScaleFactorChanged(float device_scale_factor) {
delegate_->OnDeviceScaleFactorChanged(device_scale_factor);
}
-scoped_ptr<ui::Layer> Window::RecreateLayer() {
- scoped_ptr<ui::Layer> old_layer(ui::CloneLayer(this));
- if (!old_layer)
- return old_layer.Pass();
-
- if (delegate_)
- delegate_->DidRecreateLayer(old_layer.get(), layer());
-
- return old_layer.Pass();
-}
-
#if !defined(NDEBUG)
std::string Window::GetDebugInfo() const {
return base::StringPrintf(
@@ -888,7 +898,7 @@ void Window::SetBoundsInternal(const gfx::Rect& new_bounds) {
// changed notification from the layer (this typically happens after animating
// hidden). We must notify ourselves.
if (!layer() || layer()->delegate() != this)
- OnWindowBoundsChanged(old_bounds, ContainsMouse());
+ OnWindowBoundsChanged(old_bounds);
}
void Window::SetVisible(bool visible) {
@@ -899,10 +909,6 @@ void Window::SetVisible(bool visible) {
FOR_EACH_OBSERVER(WindowObserver, observers_,
OnWindowVisibilityChanging(this, visible));
- WindowTreeHost* host = GetHost();
- if (host)
- host->dispatcher()->DispatchMouseExitToHidingWindow(this);
-
client::VisibilityClient* visibility_client =
client::GetVisibilityClient(this);
if (visibility_client)
@@ -918,9 +924,6 @@ void Window::SetVisible(bool visible) {
delegate_->OnWindowTargetVisibilityChanged(visible);
NotifyWindowVisibilityChanged(this, visible);
-
- if (host)
- host->dispatcher()->OnWindowVisibilityChanged(this, visible);
}
void Window::SchedulePaint() {
@@ -1008,11 +1011,8 @@ void Window::RemoveChildImpl(Window* child, Window* new_parent) {
FOR_EACH_OBSERVER(WindowObserver, observers_, OnWillRemoveWindow(child));
Window* root_window = child->GetRootWindow();
Window* new_root_window = new_parent ? new_parent->GetRootWindow() : NULL;
- if (root_window && root_window != new_root_window) {
- root_window->GetHost()->dispatcher()->OnWindowRemovedFromRootWindow(
- child, new_root_window);
- child->NotifyRemovingFromRootWindow();
- }
+ if (root_window && root_window != new_root_window)
+ child->NotifyRemovingFromRootWindow(new_root_window);
gfx::Vector2d offset;
GetAncestorWithLayer(&offset);
@@ -1181,12 +1181,12 @@ void Window::OnStackingChanged() {
FOR_EACH_OBSERVER(WindowObserver, observers_, OnWindowStackingChanged(this));
}
-void Window::NotifyRemovingFromRootWindow() {
+void Window::NotifyRemovingFromRootWindow(Window* new_root) {
FOR_EACH_OBSERVER(WindowObserver, observers_,
- OnWindowRemovingFromRootWindow(this));
+ OnWindowRemovingFromRootWindow(this, new_root));
for (Window::Windows::const_iterator it = children_.begin();
it != children_.end(); ++it) {
- (*it)->NotifyRemovingFromRootWindow();
+ (*it)->NotifyRemovingFromRootWindow(new_root);
}
}
@@ -1303,8 +1303,7 @@ void Window::NotifyWindowVisibilityChangedUp(aura::Window* target,
}
}
-void Window::OnWindowBoundsChanged(const gfx::Rect& old_bounds,
- bool contained_mouse) {
+void Window::OnWindowBoundsChanged(const gfx::Rect& old_bounds) {
if (layer()) {
bounds_ = layer()->bounds();
if (parent_ && !parent_->layer()) {
@@ -1323,9 +1322,6 @@ void Window::OnWindowBoundsChanged(const gfx::Rect& old_bounds,
FOR_EACH_OBSERVER(WindowObserver,
observers_,
OnWindowBoundsChanged(this, old_bounds, bounds()));
- WindowTreeHost* host = GetHost();
- if (host)
- host->dispatcher()->OnWindowBoundsChanged(this, contained_mouse);
}
void Window::OnPaintLayer(gfx::Canvas* canvas) {
@@ -1334,7 +1330,7 @@ void Window::OnPaintLayer(gfx::Canvas* canvas) {
base::Closure Window::PrepareForLayerBoundsChange() {
return base::Bind(&Window::OnWindowBoundsChanged, base::Unretained(this),
- bounds(), ContainsMouse());
+ bounds());
}
bool Window::CanAcceptEvent(const ui::Event& event) {
diff --git a/ui/aura/window.h b/ui/aura/window.h
index b508d35bfe..2324533bc3 100644
--- a/ui/aura/window.h
+++ b/ui/aura/window.h
@@ -101,6 +101,9 @@ class AURA_EXPORT Window : public ui::LayerDelegate,
bool transparent() const { return transparent_; }
void SetTransparent(bool transparent);
+ // See description in Layer::SetFillsBoundsCompletely.
+ void SetFillsBoundsCompletely(bool fills_bounds);
+
WindowDelegate* delegate() { return delegate_; }
const WindowDelegate* delegate() const { return delegate_; }
@@ -207,6 +210,9 @@ class AURA_EXPORT Window : public ui::LayerDelegate,
static void ConvertPointToTarget(const Window* source,
const Window* target,
gfx::Point* point);
+ static void ConvertRectToTarget(const Window* source,
+ const Window* target,
+ gfx::Rect* rect);
// Moves the cursor to the specified location relative to the window.
virtual void MoveCursorTo(const gfx::Point& point_in_window);
@@ -314,9 +320,6 @@ class AURA_EXPORT Window : public ui::LayerDelegate,
// Overridden from ui::LayerDelegate:
virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE;
- // Overriden from ui::LayerOwner.
- virtual scoped_ptr<ui::Layer> RecreateLayer() OVERRIDE;
-
#if !defined(NDEBUG)
// These methods are useful when debugging.
std::string GetDebugInfo() const;
@@ -414,7 +417,7 @@ class AURA_EXPORT Window : public ui::LayerDelegate,
// Notifies observers registered with this Window (and its subtree) when the
// Window has been added or is about to be removed from a RootWindow.
- void NotifyRemovingFromRootWindow();
+ void NotifyRemovingFromRootWindow(Window* new_root);
void NotifyAddedToRootWindow();
// Methods implementing hierarchy change notifications. See WindowObserver for
@@ -447,10 +450,8 @@ class AURA_EXPORT Window : public ui::LayerDelegate,
// Invoked when the bounds of the window changes. This may be invoked directly
// by us, or from the closure returned by PrepareForLayerBoundsChange() after
- // the bounds of the layer has changed. |old_bounds| is the previous bounds,
- // and |contained_mouse| is true if the mouse was previously within the
- // window's bounds.
- void OnWindowBoundsChanged(const gfx::Rect& old_bounds, bool contained_mouse);
+ // the bounds of the layer has changed. |old_bounds| is the previous bounds.
+ void OnWindowBoundsChanged(const gfx::Rect& old_bounds);
// Overridden from ui::LayerDelegate:
virtual void OnPaintLayer(gfx::Canvas* canvas) OVERRIDE;
diff --git a/ui/aura/window_delegate.h b/ui/aura/window_delegate.h
index 7a4f550009..90e978a39c 100644
--- a/ui/aura/window_delegate.h
+++ b/ui/aura/window_delegate.h
@@ -100,13 +100,6 @@ class AURA_EXPORT WindowDelegate : public ui::EventHandler {
// above returns true.
virtual void GetHitTestMask(gfx::Path* mask) const = 0;
- // Called from RecreateLayer() after the new layer was created. old_layer is
- // the layer that will be returned to the caller of RecreateLayer, new_layer
- // will be the layer now used on the Window. The implementation only has to do
- // anything if the layer has external content (SetExternalTexture /
- // SetTextureMailbox / SetDelegatedFrame was called).
- virtual void DidRecreateLayer(ui::Layer* old_layer, ui::Layer* new_layer) = 0;
-
protected:
virtual ~WindowDelegate() {}
};
diff --git a/ui/aura/window_event_dispatcher.cc b/ui/aura/window_event_dispatcher.cc
index 170d51345e..5489596ac8 100644
--- a/ui/aura/window_event_dispatcher.cc
+++ b/ui/aura/window_event_dispatcher.cc
@@ -82,13 +82,16 @@ WindowEventDispatcher::WindowEventDispatcher(WindowTreeHost* host)
synthesize_mouse_move_(false),
move_hold_count_(0),
dispatching_held_event_(false),
+ observer_manager_(this),
repost_event_factory_(this),
held_event_factory_(this) {
ui::GestureRecognizer::Get()->AddGestureEventHelper(this);
+ Env::GetInstance()->AddObserver(this);
}
WindowEventDispatcher::~WindowEventDispatcher() {
TRACE_EVENT0("shutdown", "WindowEventDispatcher::Destructor");
+ Env::GetInstance()->RemoveObserver(this);
ui::GestureRecognizer::Get()->RemoveGestureEventHelper(this);
}
@@ -118,7 +121,7 @@ void WindowEventDispatcher::RepostEvent(const ui::LocatedEvent& event) {
void WindowEventDispatcher::OnMouseEventsEnableStateChanged(bool enabled) {
// Send entered / exited so that visual state can be updated to match
// mouse events state.
- PostMouseMoveEventAfterWindowChange();
+ PostSynthesizeMouseMove();
// TODO(mazda): Add code to disable mouse events when |enabled| == false.
}
@@ -133,21 +136,6 @@ void WindowEventDispatcher::DispatchCancelModeEvent() {
return;
}
-Window* WindowEventDispatcher::GetGestureTarget(ui::GestureEvent* event) {
- Window* target = NULL;
- if (!event->IsEndingEvent()) {
- // The window that received the start event (e.g. scroll begin) needs to
- // receive the end event (e.g. scroll end).
- target = client::GetCaptureWindow(window());
- }
- if (!target) {
- target = ConsumerToWindow(
- ui::GestureRecognizer::Get()->GetTargetForGestureEvent(*event));
- }
-
- return target;
-}
-
void WindowEventDispatcher::DispatchGestureEvent(ui::GestureEvent* event) {
DispatchDetails details = DispatchHeldEvents();
if (details.dispatcher_destroyed)
@@ -162,39 +150,6 @@ void WindowEventDispatcher::DispatchGestureEvent(ui::GestureEvent* event) {
}
}
-void WindowEventDispatcher::OnWindowDestroying(Window* window) {
- DispatchMouseExitToHidingWindow(window);
- if (window->IsVisible() &&
- window->ContainsPointInRoot(GetLastMouseLocationInRoot())) {
- PostMouseMoveEventAfterWindowChange();
- }
-
- // Hiding the window releases capture which can implicitly destroy the window
- // so the window may no longer be valid after this call.
- OnWindowHidden(window, WINDOW_DESTROYED);
-}
-
-void WindowEventDispatcher::OnWindowBoundsChanged(Window* window,
- bool contained_mouse_point) {
- if (contained_mouse_point ||
- (window->IsVisible() &&
- window->ContainsPointInRoot(GetLastMouseLocationInRoot()))) {
- PostMouseMoveEventAfterWindowChange();
- }
-}
-
-void WindowEventDispatcher::DispatchMouseExitToHidingWindow(Window* window) {
- // The mouse capture is intentionally ignored. Think that a mouse enters
- // to a window, the window sets the capture, the mouse exits the window,
- // and then it releases the capture. In that case OnMouseExited won't
- // be called. So it is natural not to emit OnMouseExited even though
- // |window| is the capture window.
- gfx::Point last_mouse_location = GetLastMouseLocationInRoot();
- if (window->Contains(mouse_moved_handler_) &&
- window->ContainsPointInRoot(last_mouse_location))
- DispatchMouseExitAtPoint(last_mouse_location);
-}
-
void WindowEventDispatcher::DispatchMouseExitAtPoint(const gfx::Point& point) {
ui::MouseEvent event(ui::ET_MOUSE_EXITED, point, point, ui::EF_NONE,
ui::EF_NONE);
@@ -204,26 +159,6 @@ void WindowEventDispatcher::DispatchMouseExitAtPoint(const gfx::Point& point) {
return;
}
-void WindowEventDispatcher::OnWindowVisibilityChanged(Window* window,
- bool is_visible) {
- if (window->ContainsPointInRoot(GetLastMouseLocationInRoot()))
- PostMouseMoveEventAfterWindowChange();
-
- // Hiding the window releases capture which can implicitly destroy the window
- // so the window may no longer be valid after this call.
- if (!is_visible)
- OnWindowHidden(window, WINDOW_HIDDEN);
-}
-
-void WindowEventDispatcher::OnWindowTransformed(Window* window,
- bool contained_mouse) {
- if (contained_mouse ||
- (window->IsVisible() &&
- window->ContainsPointInRoot(GetLastMouseLocationInRoot()))) {
- PostMouseMoveEventAfterWindowChange();
- }
-}
-
void WindowEventDispatcher::ProcessedTouchEvent(ui::TouchEvent* event,
Window* window,
ui::EventResult result) {
@@ -273,29 +208,16 @@ void WindowEventDispatcher::OnHostLostMouseGrab() {
mouse_moved_handler_ = NULL;
}
-void WindowEventDispatcher::OnHostResized(const gfx::Size& size) {
- TRACE_EVENT1("ui", "WindowEventDispatcher::OnHostResized",
- "size", size.ToString());
-
- DispatchDetails details = DispatchHeldEvents();
- if (details.dispatcher_destroyed)
- return;
-
- // Constrain the mouse position within the new root Window size.
- gfx::Point point;
- if (host_->QueryMouseLocation(&point)) {
- SetLastMouseLocation(window(),
- ui::ConvertPointToDIP(window()->layer(), point));
- }
- synthesize_mouse_move_ = false;
-}
-
void WindowEventDispatcher::OnCursorMovedToRootLocation(
const gfx::Point& root_location) {
SetLastMouseLocation(window(), root_location);
synthesize_mouse_move_ = false;
}
+void WindowEventDispatcher::OnPostNotifiedWindowDestroying(Window* window) {
+ OnWindowHidden(window, WINDOW_DESTROYED);
+}
+
////////////////////////////////////////////////////////////////////////////////
// WindowEventDispatcher, private:
@@ -312,6 +234,18 @@ void WindowEventDispatcher::TransformEventForDeviceScaleFactor(
event->UpdateForRootTransform(host_->GetInverseRootTransform());
}
+void WindowEventDispatcher::DispatchMouseExitToHidingWindow(Window* window) {
+ // The mouse capture is intentionally ignored. Think that a mouse enters
+ // to a window, the window sets the capture, the mouse exits the window,
+ // and then it releases the capture. In that case OnMouseExited won't
+ // be called. So it is natural not to emit OnMouseExited even though
+ // |window| is the capture window.
+ gfx::Point last_mouse_location = GetLastMouseLocationInRoot();
+ if (window->Contains(mouse_moved_handler_) &&
+ window->ContainsPointInRoot(last_mouse_location))
+ DispatchMouseExitAtPoint(last_mouse_location);
+}
+
ui::EventDispatchDetails WindowEventDispatcher::DispatchMouseEnterOrExit(
const ui::MouseEvent& event,
ui::EventType type) {
@@ -357,28 +291,6 @@ ui::EventDispatchDetails WindowEventDispatcher::ProcessGestures(
return details;
}
-void WindowEventDispatcher::OnWindowAddedToRootWindow(Window* attached) {
- if (attached->IsVisible() &&
- attached->ContainsPointInRoot(GetLastMouseLocationInRoot())) {
- PostMouseMoveEventAfterWindowChange();
- }
-}
-
-void WindowEventDispatcher::OnWindowRemovedFromRootWindow(Window* detached,
- Window* new_root) {
- DCHECK(aura::client::GetCaptureWindow(window()) != window());
-
- DispatchMouseExitToHidingWindow(detached);
- if (detached->IsVisible() &&
- detached->ContainsPointInRoot(GetLastMouseLocationInRoot())) {
- PostMouseMoveEventAfterWindowChange();
- }
-
- // Hiding the window releases capture which can implicitly destroy the window
- // so the window may no longer be valid after this call.
- OnWindowHidden(detached, new_root ? WINDOW_MOVING : WINDOW_HIDDEN);
-}
-
void WindowEventDispatcher::OnWindowHidden(Window* invisible,
WindowHiddenReason reason) {
// If the window the mouse was pressed in becomes invisible, it should no
@@ -398,12 +310,17 @@ void WindowEventDispatcher::OnWindowHidden(Window* invisible,
CleanupGestureState(invisible);
// Do not clear the capture, and the |event_dispatch_target_| if the
- // window is moving across root windows, because the target itself
- // is actually still visible and clearing them stops further event
- // processing, which can cause unexpected behaviors. See
- // crbug.com/157583
+ // window is moving across hosts, because the target itself is actually still
+ // visible and clearing them stops further event processing, which can cause
+ // unexpected behaviors. See crbug.com/157583
if (reason != WINDOW_MOVING) {
- Window* capture_window = aura::client::GetCaptureWindow(window());
+ // We don't ask |invisible| here, because invisible may have been removed
+ // from the window hierarchy already by the time this function is called
+ // (OnWindowDestroyed).
+ client::CaptureClient* capture_client =
+ client::GetCaptureClient(host_->window());
+ Window* capture_window =
+ capture_client ? capture_client->GetCaptureWindow() : NULL;
if (invisible->Contains(event_dispatch_target_))
event_dispatch_target_ = NULL;
@@ -427,6 +344,21 @@ void WindowEventDispatcher::CleanupGestureState(Window* window) {
}
}
+Window* WindowEventDispatcher::GetGestureTarget(ui::GestureEvent* event) {
+ Window* target = NULL;
+ if (!event->IsEndingEvent()) {
+ // The window that received the start event (e.g. scroll begin) needs to
+ // receive the end event (e.g. scroll end).
+ target = client::GetCaptureWindow(window());
+ }
+ if (!target) {
+ target = ConsumerToWindow(
+ ui::GestureRecognizer::Get()->GetTargetForGestureEvent(*event));
+ }
+
+ return target;
+}
+
////////////////////////////////////////////////////////////////////////////////
// WindowEventDispatcher, aura::client::CaptureDelegate implementation:
@@ -586,6 +518,129 @@ void WindowEventDispatcher::DispatchCancelTouchEvent(ui::TouchEvent* event) {
}
////////////////////////////////////////////////////////////////////////////////
+// WindowEventDispatcher, WindowObserver implementation:
+
+void WindowEventDispatcher::OnWindowDestroying(Window* window) {
+ if (!host_->window()->Contains(window))
+ return;
+
+ DispatchMouseExitToHidingWindow(window);
+ SynthesizeMouseMoveAfterChangeToWindow(window);
+}
+
+void WindowEventDispatcher::OnWindowDestroyed(Window* window) {
+ // We observe all windows regardless of what root Window (if any) they're
+ // attached to.
+ observer_manager_.Remove(window);
+}
+
+void WindowEventDispatcher::OnWindowAddedToRootWindow(Window* attached) {
+ if (!observer_manager_.IsObserving(attached))
+ observer_manager_.Add(attached);
+
+ if (!host_->window()->Contains(attached))
+ return;
+
+ SynthesizeMouseMoveAfterChangeToWindow(attached);
+}
+
+void WindowEventDispatcher::OnWindowRemovingFromRootWindow(Window* detached,
+ Window* new_root) {
+ if (!host_->window()->Contains(detached))
+ return;
+
+ DCHECK(client::GetCaptureWindow(window()) != window());
+
+ DispatchMouseExitToHidingWindow(detached);
+ SynthesizeMouseMoveAfterChangeToWindow(detached);
+
+ // Hiding the window releases capture which can implicitly destroy the window
+ // so the window may no longer be valid after this call.
+ OnWindowHidden(detached, new_root ? WINDOW_MOVING : WINDOW_HIDDEN);
+}
+
+void WindowEventDispatcher::OnWindowVisibilityChanging(Window* window,
+ bool visible) {
+ if (!host_->window()->Contains(window))
+ return;
+
+ DispatchMouseExitToHidingWindow(window);
+}
+
+void WindowEventDispatcher::OnWindowVisibilityChanged(Window* window,
+ bool visible) {
+ if (!host_->window()->Contains(window))
+ return;
+
+ if (window->ContainsPointInRoot(GetLastMouseLocationInRoot()))
+ PostSynthesizeMouseMove();
+
+ // Hiding the window releases capture which can implicitly destroy the window
+ // so the window may no longer be valid after this call.
+ if (!visible)
+ OnWindowHidden(window, WINDOW_HIDDEN);
+}
+
+void WindowEventDispatcher::OnWindowBoundsChanged(Window* window,
+ const gfx::Rect& old_bounds,
+ const gfx::Rect& new_bounds) {
+ if (!host_->window()->Contains(window))
+ return;
+
+ if (window == host_->window()) {
+ TRACE_EVENT1("ui", "WindowEventDispatcher::OnWindowBoundsChanged(root)",
+ "size", new_bounds.size().ToString());
+
+ DispatchDetails details = DispatchHeldEvents();
+ if (details.dispatcher_destroyed)
+ return;
+
+ // Constrain the mouse position within the new root Window size.
+ gfx::Point point;
+ if (host_->QueryMouseLocation(&point)) {
+ SetLastMouseLocation(
+ host_->window(),
+ ui::ConvertPointToDIP(host_->window()->layer(), point));
+ }
+ synthesize_mouse_move_ = false;
+ }
+
+ if (window->IsVisible()) {
+ gfx::Rect old_bounds_in_root = old_bounds, new_bounds_in_root = new_bounds;
+ Window::ConvertRectToTarget(window->parent(), host_->window(),
+ &old_bounds_in_root);
+ Window::ConvertRectToTarget(window->parent(), host_->window(),
+ &new_bounds_in_root);
+ gfx::Point last_mouse_location = GetLastMouseLocationInRoot();
+ if (old_bounds_in_root.Contains(last_mouse_location) !=
+ new_bounds_in_root.Contains(last_mouse_location)) {
+ PostSynthesizeMouseMove();
+ }
+ }
+}
+
+void WindowEventDispatcher::OnWindowTransforming(Window* window) {
+ if (!host_->window()->Contains(window))
+ return;
+
+ SynthesizeMouseMoveAfterChangeToWindow(window);
+}
+
+void WindowEventDispatcher::OnWindowTransformed(Window* window) {
+ if (!host_->window()->Contains(window))
+ return;
+
+ SynthesizeMouseMoveAfterChangeToWindow(window);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// WindowEventDispatcher, EnvObserver implementation:
+
+void WindowEventDispatcher::OnWindowInitialized(Window* window) {
+ observer_manager_.Add(window);
+}
+
+////////////////////////////////////////////////////////////////////////////////
// WindowEventDispatcher, private:
ui::EventDispatchDetails WindowEventDispatcher::DispatchHeldEvents() {
@@ -625,7 +680,7 @@ ui::EventDispatchDetails WindowEventDispatcher::DispatchHeldEvents() {
return dispatch_details;
}
-void WindowEventDispatcher::PostMouseMoveEventAfterWindowChange() {
+void WindowEventDispatcher::PostSynthesizeMouseMove() {
if (synthesize_mouse_move_)
return;
synthesize_mouse_move_ = true;
@@ -636,6 +691,14 @@ void WindowEventDispatcher::PostMouseMoveEventAfterWindowChange() {
held_event_factory_.GetWeakPtr()));
}
+void WindowEventDispatcher::SynthesizeMouseMoveAfterChangeToWindow(
+ Window* window) {
+ if (window->IsVisible() &&
+ window->ContainsPointInRoot(GetLastMouseLocationInRoot())) {
+ PostSynthesizeMouseMove();
+ }
+}
+
ui::EventDispatchDetails WindowEventDispatcher::SynthesizeMouseMoveEvent() {
DispatchDetails details;
if (!synthesize_mouse_move_)
diff --git a/ui/aura/window_event_dispatcher.h b/ui/aura/window_event_dispatcher.h
index c7826490e4..f0cb67fc38 100644
--- a/ui/aura/window_event_dispatcher.h
+++ b/ui/aura/window_event_dispatcher.h
@@ -13,8 +13,11 @@
#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/message_loop/message_loop.h"
+#include "base/scoped_observer.h"
#include "ui/aura/aura_export.h"
#include "ui/aura/client/capture_delegate.h"
+#include "ui/aura/env_observer.h"
+#include "ui/aura/window_observer.h"
#include "ui/base/cursor/cursor.h"
#include "ui/events/event_constants.h"
#include "ui/events/event_processor.h"
@@ -39,7 +42,6 @@ class TouchEvent;
}
namespace aura {
-class RootWindowObserver;
class TestScreen;
class WindowTargeter;
class WindowTreeHost;
@@ -50,7 +52,9 @@ class WindowTreeHost;
// event dispatch.
class AURA_EXPORT WindowEventDispatcher : public ui::EventProcessor,
public ui::GestureEventHelper,
- public client::CaptureDelegate {
+ public client::CaptureDelegate,
+ public WindowObserver,
+ public EnvObserver {
public:
explicit WindowEventDispatcher(WindowTreeHost* host);
virtual ~WindowEventDispatcher();
@@ -68,35 +72,15 @@ class AURA_EXPORT WindowEventDispatcher : public ui::EventProcessor,
void DispatchCancelModeEvent();
- // Returns a target window for the given gesture event.
- Window* GetGestureTarget(ui::GestureEvent* event);
-
// Handles a gesture event. Returns true if handled. Unlike the other
// event-dispatching function (e.g. for touch/mouse/keyboard events), gesture
// events are dispatched from GestureRecognizer instead of WindowTreeHost.
void DispatchGestureEvent(ui::GestureEvent* event);
- // Invoked when |window| is being destroyed.
- void OnWindowDestroying(Window* window);
-
- // Invoked when |window|'s bounds have changed. |contained_mouse| indicates if
- // the bounds before change contained the |last_moust_location()|.
- void OnWindowBoundsChanged(Window* window, bool contained_mouse);
-
- // Dispatches OnMouseExited to the |window| which is hiding if necessary.
- void DispatchMouseExitToHidingWindow(Window* window);
-
// Dispatches a ui::ET_MOUSE_EXITED event at |point|.
+ // TODO(beng): needed only for WTH::OnCursorVisibilityChanged().
void DispatchMouseExitAtPoint(const gfx::Point& point);
- // Invoked when |window|'s visibility has changed.
- void OnWindowVisibilityChanged(Window* window, bool is_visible);
-
- // Invoked when |window|'s transform has changed. |contained_mouse|
- // indicates if the bounds before change contained the
- // |last_moust_location()|.
- void OnWindowTransformed(Window* window, bool contained_mouse);
-
// Gesture Recognition -------------------------------------------------------
// When a touch event is dispatched to a Window, it may want to process the
@@ -124,10 +108,17 @@ class AURA_EXPORT WindowEventDispatcher : public ui::EventProcessor,
gfx::Point GetLastMouseLocationInRoot() const;
void OnHostLostMouseGrab();
- // TODO(beng): replace with a window observer.
- void OnHostResized(const gfx::Size& size);
void OnCursorMovedToRootLocation(const gfx::Point& root_location);
+ // TODO(beng): This is only needed because this cleanup needs to happen after
+ // all other observers are notified of OnWindowDestroying() but
+ // before OnWindowDestroyed() is sent (i.e. while the window
+ // hierarchy is still intact). This didn't seem worth adding a
+ // generic notification for as only this class needs to implement
+ // it. I would however like to find a way to do this via an
+ // observer.
+ void OnPostNotifiedWindowDestroying(Window* window);
+
private:
FRIEND_TEST_ALL_PREFIXES(WindowEventDispatcherTest,
KeepTranslatedEventInRoot);
@@ -153,6 +144,9 @@ class AURA_EXPORT WindowEventDispatcher : public ui::EventProcessor,
// the event received from the host.
void TransformEventForDeviceScaleFactor(ui::LocatedEvent* event);
+ // Dispatches OnMouseExited to the |window| which is hiding if necessary.
+ void DispatchMouseExitToHidingWindow(Window* window);
+
// Dispatches the specified event type (intended for enter/exit) to the
// |mouse_moved_handler_|.
ui::EventDispatchDetails DispatchMouseEnterOrExit(
@@ -161,11 +155,6 @@ class AURA_EXPORT WindowEventDispatcher : public ui::EventProcessor,
ui::EventDispatchDetails ProcessGestures(
ui::GestureRecognizer::Gestures* gestures) WARN_UNUSED_RESULT;
- // Called when a Window is attached or detached from the
- // WindowEventDispatcher.
- void OnWindowAddedToRootWindow(Window* window);
- void OnWindowRemovedFromRootWindow(Window* window, Window* new_root);
-
// Called when a window becomes invisible, either by being removed
// from root window hierarchy, via SetVisible(false) or being destroyed.
// |reason| specifies what triggered the hiding. Note that becoming invisible
@@ -177,6 +166,9 @@ class AURA_EXPORT WindowEventDispatcher : public ui::EventProcessor,
// |window| itself). This includes cancelling active touch points.
void CleanupGestureState(Window* window);
+ // Returns a target window for the given gesture event.
+ Window* GetGestureTarget(ui::GestureEvent* event);
+
// Overridden from aura::client::CaptureDelegate:
virtual void UpdateCapture(Window* old_capture, Window* new_capture) OVERRIDE;
virtual void OnOtherRootGotCapture() OVERRIDE;
@@ -199,6 +191,24 @@ class AURA_EXPORT WindowEventDispatcher : public ui::EventProcessor,
virtual void DispatchPostponedGestureEvent(ui::GestureEvent* event) OVERRIDE;
virtual void DispatchCancelTouchEvent(ui::TouchEvent* event) OVERRIDE;
+ // Overridden from WindowObserver:
+ virtual void OnWindowDestroying(Window* window) OVERRIDE;
+ virtual void OnWindowDestroyed(Window* window) OVERRIDE;
+ virtual void OnWindowAddedToRootWindow(Window* window) OVERRIDE;
+ virtual void OnWindowRemovingFromRootWindow(Window* window,
+ Window* new_root) OVERRIDE;
+ virtual void OnWindowVisibilityChanging(Window* window,
+ bool visible) OVERRIDE;
+ virtual void OnWindowVisibilityChanged(Window* window, bool visible) OVERRIDE;
+ virtual void OnWindowBoundsChanged(Window* window,
+ const gfx::Rect& old_bounds,
+ const gfx::Rect& new_bounds) OVERRIDE;
+ virtual void OnWindowTransforming(Window* window) OVERRIDE;
+ virtual void OnWindowTransformed(Window* window) OVERRIDE;
+
+ // Overridden from EnvObserver:
+ virtual void OnWindowInitialized(Window* window) OVERRIDE;
+
// We hold and aggregate mouse drags and touch moves as a way of throttling
// resizes when HoldMouseMoves() is called. The following methods are used to
// dispatch held and newly incoming mouse and touch events, typically when an
@@ -206,17 +216,19 @@ class AURA_EXPORT WindowEventDispatcher : public ui::EventProcessor,
// ReleaseMouseMoves()/ReleaseTouchMoves() is called. NOTE: because these
// methods dispatch events from WindowTreeHost the coordinates are in terms of
// the root.
-
ui::EventDispatchDetails DispatchHeldEvents() WARN_UNUSED_RESULT;
+
+ // Posts a task to send synthesized mouse move event if there is no a pending
+ // task.
+ void PostSynthesizeMouseMove();
+
// Creates and dispatches synthesized mouse move event using the
// current mouse location.
ui::EventDispatchDetails SynthesizeMouseMoveEvent() WARN_UNUSED_RESULT;
- void SynthesizeMouseMoveEventAsync();
-
- // Posts a task to send synthesized mouse move event if there
- // is no a pending task.
- void PostMouseMoveEventAfterWindowChange();
+ // Calls SynthesizeMouseMove() if |window| is currently visible and contains
+ // the mouse cursor.
+ void SynthesizeMouseMoveAfterChangeToWindow(Window* window);
void PreDispatchLocatedEvent(Window* target, ui::LocatedEvent* event);
void PreDispatchMouseEvent(Window* target, ui::MouseEvent* event);
@@ -246,6 +258,8 @@ class AURA_EXPORT WindowEventDispatcher : public ui::EventProcessor,
// Set when dispatching a held event.
bool dispatching_held_event_;
+ ScopedObserver<aura::Window, aura::WindowObserver> observer_manager_;
+
// Used to schedule reposting an event.
base::WeakPtrFactory<WindowEventDispatcher> repost_event_factory_;
diff --git a/ui/aura/window_observer.h b/ui/aura/window_observer.h
index bd909d879d..926e5c4428 100644
--- a/ui/aura/window_observer.h
+++ b/ui/aura/window_observer.h
@@ -75,6 +75,10 @@ class AURA_EXPORT WindowObserver {
const gfx::Rect& old_bounds,
const gfx::Rect& new_bounds) {}
+ // Invoked when SetTransform() is invoked on |window|.
+ virtual void OnWindowTransforming(Window* window) {}
+ virtual void OnWindowTransformed(Window* window) {}
+
// Invoked when |window|'s position among its siblings in the stacking order
// has changed.
virtual void OnWindowStackingChanged(Window* window) {}
@@ -100,8 +104,11 @@ class AURA_EXPORT WindowObserver {
// Called when a Window has been added to a RootWindow.
virtual void OnWindowAddedToRootWindow(Window* window) {}
- // Called when a Window is about to be removed from a RootWindow.
- virtual void OnWindowRemovingFromRootWindow(Window* window) {}
+ // Called when a Window is about to be removed from a root Window.
+ // |new_root| contains the new root Window if it is being added to one
+ // atomically.
+ virtual void OnWindowRemovingFromRootWindow(Window* window,
+ Window* new_root) {}
protected:
virtual ~WindowObserver() {}
diff --git a/ui/aura/window_tree_host.cc b/ui/aura/window_tree_host.cc
index 4958c419d7..9c3cf1244d 100644
--- a/ui/aura/window_tree_host.cc
+++ b/ui/aura/window_tree_host.cc
@@ -287,7 +287,6 @@ void WindowTreeHost::OnHostResized(const gfx::Size& new_size) {
// transformed size of the root window.
UpdateRootWindowSize(layer_size);
FOR_EACH_OBSERVER(WindowTreeHostObserver, observers_, OnHostResized(this));
- dispatcher()->OnHostResized(layer_size);
}
void WindowTreeHost::OnHostCloseRequested() {
diff --git a/ui/aura/window_tree_host_x11.cc b/ui/aura/window_tree_host_x11.cc
index 4048a5d758..a57f2a9a34 100644
--- a/ui/aura/window_tree_host_x11.cc
+++ b/ui/aura/window_tree_host_x11.cc
@@ -39,6 +39,7 @@
#include "ui/compositor/dip_util.h"
#include "ui/compositor/layer.h"
#include "ui/events/event.h"
+#include "ui/events/event_switches.h"
#include "ui/events/event_utils.h"
#include "ui/events/keycodes/keyboard_codes.h"
#include "ui/events/x/device_data_manager.h"
diff --git a/ui/aura/window_unittest.cc b/ui/aura/window_unittest.cc
index ba183cf277..986929b0b1 100644
--- a/ui/aura/window_unittest.cc
+++ b/ui/aura/window_unittest.cc
@@ -2129,7 +2129,8 @@ class RootWindowAttachmentObserver : public WindowObserver {
virtual void OnWindowAddedToRootWindow(Window* window) OVERRIDE {
++added_count_;
}
- virtual void OnWindowRemovingFromRootWindow(Window* window) OVERRIDE {
+ virtual void OnWindowRemovingFromRootWindow(Window* window,
+ Window* new_root) OVERRIDE {
++removed_count_;
}
@@ -2391,7 +2392,8 @@ class AddChildNotificationsObserver : public WindowObserver {
virtual void OnWindowAddedToRootWindow(Window* window) OVERRIDE {
added_count_++;
}
- virtual void OnWindowRemovingFromRootWindow(Window* window) OVERRIDE {
+ virtual void OnWindowRemovingFromRootWindow(Window* window,
+ Window* new_root) OVERRIDE {
removed_count_++;
}
diff --git a/ui/base/clipboard/clipboard_aurax11.cc b/ui/base/clipboard/clipboard_aurax11.cc
index dde85fe723..70768444b0 100644
--- a/ui/base/clipboard/clipboard_aurax11.cc
+++ b/ui/base/clipboard/clipboard_aurax11.cc
@@ -762,8 +762,11 @@ void Clipboard::WriteBookmark(const char* title_data,
// Write an extra flavor that signifies WebKit was the last to modify the
// pasteboard. This flavor has no data.
void Clipboard::WriteWebSmartPaste() {
- aurax11_details_->InsertMapping(kMimeTypeWebkitSmartPaste,
- scoped_refptr<base::RefCountedMemory>());
+ std::string empty;
+ aurax11_details_->InsertMapping(
+ kMimeTypeWebkitSmartPaste,
+ scoped_refptr<base::RefCountedMemory>(
+ base::RefCountedString::TakeString(&empty)));
}
void Clipboard::WriteBitmap(const SkBitmap& bitmap) {
diff --git a/ui/base/cocoa/underlay_opengl_hosting_window.mm b/ui/base/cocoa/underlay_opengl_hosting_window.mm
index 4e208360cd..39a3036044 100644
--- a/ui/base/cocoa/underlay_opengl_hosting_window.mm
+++ b/ui/base/cocoa/underlay_opengl_hosting_window.mm
@@ -33,8 +33,8 @@
namespace {
bool CoreAnimationIsEnabled() {
- static bool is_enabled = CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableCoreAnimation);
+ static bool is_enabled = !CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kDisableCoreAnimation);
return is_enabled;
}
diff --git a/ui/base/cursor/cursor_loader_x11.cc b/ui/base/cursor/cursor_loader_x11.cc
index 8cfcce6e6f..0161da29b2 100644
--- a/ui/base/cursor/cursor_loader_x11.cc
+++ b/ui/base/cursor/cursor_loader_x11.cc
@@ -12,6 +12,7 @@
#include "grit/ui_resources.h"
#include "skia/ext/image_operations.h"
#include "ui/base/cursor/cursor.h"
+#include "ui/base/cursor/cursor_util.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/base/x/x11_util.h"
#include "ui/gfx/image/image.h"
@@ -259,48 +260,4 @@ bool CursorLoaderX11::IsImageCursor(gfx::NativeCursor native_cursor) {
return GetXCursor(CursorShapeFromNative(native_cursor));
}
-void ScaleAndRotateCursorBitmapAndHotpoint(float scale,
- gfx::Display::Rotation rotation,
- SkBitmap* bitmap,
- gfx::Point* hotpoint) {
- switch (rotation) {
- case gfx::Display::ROTATE_0:
- break;
- case gfx::Display::ROTATE_90:
- hotpoint->SetPoint(bitmap->height() - hotpoint->y(), hotpoint->x());
- *bitmap = SkBitmapOperations::Rotate(
- *bitmap, SkBitmapOperations::ROTATION_90_CW);
- break;
- case gfx::Display::ROTATE_180:
- hotpoint->SetPoint(
- bitmap->width() - hotpoint->x(), bitmap->height() - hotpoint->y());
- *bitmap = SkBitmapOperations::Rotate(
- *bitmap, SkBitmapOperations::ROTATION_180_CW);
- break;
- case gfx::Display::ROTATE_270:
- hotpoint->SetPoint(hotpoint->y(), bitmap->width() - hotpoint->x());
- *bitmap = SkBitmapOperations::Rotate(
- *bitmap, SkBitmapOperations::ROTATION_270_CW);
- break;
- }
-
- if (scale < FLT_EPSILON) {
- NOTREACHED() << "Scale must be larger than 0.";
- scale = 1.0f;
- }
-
- if (scale == 1.0f)
- return;
-
- gfx::Size scaled_size = gfx::ToFlooredSize(
- gfx::ScaleSize(gfx::Size(bitmap->width(), bitmap->height()), scale));
-
- *bitmap = skia::ImageOperations::Resize(
- *bitmap,
- skia::ImageOperations::RESIZE_BETTER,
- scaled_size.width(),
- scaled_size.height());
- *hotpoint = gfx::ToFlooredPoint(gfx::ScalePoint(*hotpoint, scale));
-}
-
} // namespace ui
diff --git a/ui/base/cursor/cursor_loader_x11.h b/ui/base/cursor/cursor_loader_x11.h
index d493b1e157..34edc9136f 100644
--- a/ui/base/cursor/cursor_loader_x11.h
+++ b/ui/base/cursor/cursor_loader_x11.h
@@ -56,15 +56,6 @@ class UI_BASE_EXPORT CursorLoaderX11 : public CursorLoader {
DISALLOW_COPY_AND_ASSIGN(CursorLoaderX11);
};
-// Scale and rotate the cursor's bitmap and hotpoint.
-// |bitmap_in_out| and |hotpoint_in_out| are used as
-// both input and output.
-UI_BASE_EXPORT void ScaleAndRotateCursorBitmapAndHotpoint(
- float scale,
- gfx::Display::Rotation rotation,
- SkBitmap* bitmap_in_out,
- gfx::Point* hotpoint_in_out);
-
} // namespace ui
#endif // UI_BASE_CURSOR_CURSOR_LOADER_X11_H_
diff --git a/ui/base/cursor/cursor_loader_x11_unittest.cc b/ui/base/cursor/cursor_loader_x11_unittest.cc
index c2413b6acf..75ea12bef4 100644
--- a/ui/base/cursor/cursor_loader_x11_unittest.cc
+++ b/ui/base/cursor/cursor_loader_x11_unittest.cc
@@ -10,6 +10,7 @@
#include "base/logging.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/skia/include/core/SkBitmap.h"
+#include "ui/base/cursor/cursor_util.h"
namespace ui {
diff --git a/ui/base/cursor/cursor_ozone.cc b/ui/base/cursor/cursor_ozone.cc
index d60e2dbd68..deb17c2f9d 100644
--- a/ui/base/cursor/cursor_ozone.cc
+++ b/ui/base/cursor/cursor_ozone.cc
@@ -9,11 +9,13 @@
namespace ui {
void Cursor::RefCustomCursor() {
- CursorFactoryOzone::GetInstance()->RefImageCursor(platform_cursor_);
+ if (platform_cursor_)
+ CursorFactoryOzone::GetInstance()->RefImageCursor(platform_cursor_);
}
void Cursor::UnrefCustomCursor() {
- CursorFactoryOzone::GetInstance()->UnrefImageCursor(platform_cursor_);
+ if (platform_cursor_)
+ CursorFactoryOzone::GetInstance()->UnrefImageCursor(platform_cursor_);
}
} // namespace ui
diff --git a/ui/base/cursor/cursor_util.cc b/ui/base/cursor/cursor_util.cc
new file mode 100644
index 0000000000..a17d944795
--- /dev/null
+++ b/ui/base/cursor/cursor_util.cc
@@ -0,0 +1,60 @@
+// Copyright 2014 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 "ui/base/cursor/cursor_util.h"
+
+#include "base/logging.h"
+#include "skia/ext/image_operations.h"
+#include "ui/gfx/point_conversions.h"
+#include "ui/gfx/size_conversions.h"
+#include "ui/gfx/skbitmap_operations.h"
+#include "ui/gfx/skia_util.h"
+
+namespace ui {
+
+void ScaleAndRotateCursorBitmapAndHotpoint(float scale,
+ gfx::Display::Rotation rotation,
+ SkBitmap* bitmap,
+ gfx::Point* hotpoint) {
+ switch (rotation) {
+ case gfx::Display::ROTATE_0:
+ break;
+ case gfx::Display::ROTATE_90:
+ hotpoint->SetPoint(bitmap->height() - hotpoint->y(), hotpoint->x());
+ *bitmap = SkBitmapOperations::Rotate(
+ *bitmap, SkBitmapOperations::ROTATION_90_CW);
+ break;
+ case gfx::Display::ROTATE_180:
+ hotpoint->SetPoint(
+ bitmap->width() - hotpoint->x(), bitmap->height() - hotpoint->y());
+ *bitmap = SkBitmapOperations::Rotate(
+ *bitmap, SkBitmapOperations::ROTATION_180_CW);
+ break;
+ case gfx::Display::ROTATE_270:
+ hotpoint->SetPoint(hotpoint->y(), bitmap->width() - hotpoint->x());
+ *bitmap = SkBitmapOperations::Rotate(
+ *bitmap, SkBitmapOperations::ROTATION_270_CW);
+ break;
+ }
+
+ if (scale < FLT_EPSILON) {
+ NOTREACHED() << "Scale must be larger than 0.";
+ scale = 1.0f;
+ }
+
+ if (scale == 1.0f)
+ return;
+
+ gfx::Size scaled_size = gfx::ToFlooredSize(
+ gfx::ScaleSize(gfx::Size(bitmap->width(), bitmap->height()), scale));
+
+ *bitmap = skia::ImageOperations::Resize(
+ *bitmap,
+ skia::ImageOperations::RESIZE_BETTER,
+ scaled_size.width(),
+ scaled_size.height());
+ *hotpoint = gfx::ToFlooredPoint(gfx::ScalePoint(*hotpoint, scale));
+}
+
+} // namespace ui
diff --git a/ui/base/cursor/cursor_util.h b/ui/base/cursor/cursor_util.h
new file mode 100644
index 0000000000..1625156e7a
--- /dev/null
+++ b/ui/base/cursor/cursor_util.h
@@ -0,0 +1,27 @@
+// Copyright 2014 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 UI_BASE_CURSOR_CURSOR_UTIL_H_
+#define UI_BASE_CURSOR_CURSOR_UTIL_H_
+
+#include "base/compiler_specific.h"
+#include "third_party/skia/include/core/SkBitmap.h"
+#include "ui/base/ui_base_export.h"
+#include "ui/gfx/display.h"
+#include "ui/gfx/geometry/point.h"
+
+namespace ui {
+
+// Scale and rotate the cursor's bitmap and hotpoint.
+// |bitmap_in_out| and |hotpoint_in_out| are used as
+// both input and output.
+UI_BASE_EXPORT void ScaleAndRotateCursorBitmapAndHotpoint(
+ float scale,
+ gfx::Display::Rotation rotation,
+ SkBitmap* bitmap_in_out,
+ gfx::Point* hotpoint_in_out);
+
+} // namespace ui
+
+#endif // UI_BASE_CURSOR_CURSOR_UTIL_H_
diff --git a/ui/base/cursor/ozone/bitmap_cursor_factory_ozone.cc b/ui/base/cursor/ozone/bitmap_cursor_factory_ozone.cc
index 4472023a95..c24c80fd9c 100644
--- a/ui/base/cursor/ozone/bitmap_cursor_factory_ozone.cc
+++ b/ui/base/cursor/ozone/bitmap_cursor_factory_ozone.cc
@@ -5,6 +5,8 @@
#include "ui/base/cursor/ozone/bitmap_cursor_factory_ozone.h"
#include "base/logging.h"
+#include "third_party/skia/include/core/SkBitmap.h"
+#include "ui/base/cursor/cursors_aura.h"
namespace ui {
@@ -27,9 +29,17 @@ BitmapCursorFactoryOzone::~BitmapCursorFactoryOzone() {}
PlatformCursor BitmapCursorFactoryOzone::GetDefaultCursor(int type) {
if (type == kCursorNone)
return NULL; // NULL is used for hidden cursor.
- // TODO(spang): Use ChromeOS cursor bitmaps as default cursors.
- LOG(FATAL) << "default cursors not yet supported";
- return NULL; // not reached
+
+ if (!default_cursors_.count(type)) {
+ // Create new owned image cursor from default aura bitmap for this type.
+ SkBitmap bitmap;
+ gfx::Point hotspot;
+ CHECK(GetCursorBitmap(type, &bitmap, &hotspot));
+ default_cursors_[type] = new BitmapCursorOzone(bitmap, hotspot);
+ }
+
+ // Returned owned default cursor for this type.
+ return default_cursors_[type];
}
PlatformCursor BitmapCursorFactoryOzone::CreateImageCursor(
diff --git a/ui/base/cursor/ozone/bitmap_cursor_factory_ozone.h b/ui/base/cursor/ozone/bitmap_cursor_factory_ozone.h
index 88b2404814..aef4d7ce72 100644
--- a/ui/base/cursor/ozone/bitmap_cursor_factory_ozone.h
+++ b/ui/base/cursor/ozone/bitmap_cursor_factory_ozone.h
@@ -5,6 +5,8 @@
#ifndef UI_BASE_CURSOR_OZONE_BITMAP_CURSOR_FACTORY_OZONE_H_
#define UI_BASE_CURSOR_OZONE_BITMAP_CURSOR_FACTORY_OZONE_H_
+#include <map>
+
#include "base/memory/ref_counted.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/base/cursor/cursor.h"
@@ -30,6 +32,8 @@ class UI_BASE_EXPORT BitmapCursorOzone
SkBitmap bitmap_;
gfx::Point hotspot_;
+
+ DISALLOW_COPY_AND_ASSIGN(BitmapCursorOzone);
};
// CursorFactoryOzone implementation for bitmapped cursors.
@@ -57,6 +61,13 @@ class UI_BASE_EXPORT BitmapCursorFactoryOzone : public CursorFactoryOzone {
// subclasses. If the cursor is hidden (kCursorNone) then cursor is NULL.
virtual void SetBitmapCursor(gfx::AcceleratedWidget window,
scoped_refptr<BitmapCursorOzone> cursor);
+
+ private:
+ // Default cursors are cached & owned by the factory.
+ typedef std::map<int, scoped_refptr<BitmapCursorOzone> > DefaultCursorMap;
+ DefaultCursorMap default_cursors_;
+
+ DISALLOW_COPY_AND_ASSIGN(BitmapCursorFactoryOzone);
};
} // namespace ui
diff --git a/ui/base/dragdrop/drag_utils.cc b/ui/base/dragdrop/drag_utils.cc
index d2caaeb58c..7be094f95f 100644
--- a/ui/base/dragdrop/drag_utils.cc
+++ b/ui/base/dragdrop/drag_utils.cc
@@ -41,8 +41,10 @@ class FileDragImageSource : public gfx::CanvasImageSource {
// Overridden from gfx::CanvasImageSource.
virtual void Draw(gfx::Canvas* canvas) OVERRIDE {
- // Paint the icon.
- canvas->DrawImageInt(icon_, (size().width() - icon_.width()) / 2, 0);
+ if (!icon_.isNull()) {
+ // Paint the icon.
+ canvas->DrawImageInt(icon_, (size().width() - icon_.width()) / 2, 0);
+ }
base::string16 name = file_name_.BaseName().LossyDisplayName();
const int flags = gfx::Canvas::TEXT_ALIGN_CENTER;
@@ -81,11 +83,10 @@ class FileDragImageSource : public gfx::CanvasImageSource {
} // namespace
void CreateDragImageForFile(const base::FilePath& file_name,
- const gfx::ImageSkia* icon,
+ const gfx::ImageSkia& icon,
ui::OSExchangeData* data_object) {
- DCHECK(icon);
DCHECK(data_object);
- gfx::CanvasImageSource* source = new FileDragImageSource(file_name, *icon);
+ gfx::CanvasImageSource* source = new FileDragImageSource(file_name, icon);
gfx::Size size = source->size();
// ImageSkia takes ownership of |source|.
gfx::ImageSkia image = gfx::ImageSkia(source, size);
diff --git a/ui/base/dragdrop/drag_utils.h b/ui/base/dragdrop/drag_utils.h
index 5b7235fbdf..f035561b4b 100644
--- a/ui/base/dragdrop/drag_utils.h
+++ b/ui/base/dragdrop/drag_utils.h
@@ -28,10 +28,10 @@ namespace drag_utils {
// Creates a dragging image to be displayed when the user drags a file from
// Chrome (via the download manager, for example). The drag image is set into
-// the supplied data_object. 'file_name' can be a full path, but the directory
-// portion will be truncated in the drag image.
+// the supplied data_object. |file_name| can be a full path, but the directory
+// portion will be truncated in the drag image. |icon| can be empty.
UI_BASE_EXPORT void CreateDragImageForFile(const base::FilePath& file_name,
- const gfx::ImageSkia* icon,
+ const gfx::ImageSkia& icon,
ui::OSExchangeData* data_object);
// Sets the drag image on data_object from the supplied canvas. width/height
diff --git a/ui/base/dragdrop/file_info.cc b/ui/base/dragdrop/file_info.cc
new file mode 100644
index 0000000000..e5b894a020
--- /dev/null
+++ b/ui/base/dragdrop/file_info.cc
@@ -0,0 +1,17 @@
+// Copyright 2014 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 "ui/base/dragdrop/file_info.h"
+
+namespace ui {
+
+FileInfo::FileInfo() {}
+
+FileInfo::FileInfo(const base::FilePath& path,
+ const base::FilePath& display_name)
+ : path(path), display_name(display_name) {}
+
+FileInfo::~FileInfo() {}
+
+} // namespace ui
diff --git a/ui/base/dragdrop/file_info.h b/ui/base/dragdrop/file_info.h
new file mode 100644
index 0000000000..6e4f456147
--- /dev/null
+++ b/ui/base/dragdrop/file_info.h
@@ -0,0 +1,25 @@
+// Copyright 2014 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 UI_BASE_DRAGDROP_FILE_INFO_H_
+#define UI_BASE_DRAGDROP_FILE_INFO_H_
+
+#include "base/files/file_path.h"
+#include "ui/base/ui_base_export.h"
+
+namespace ui {
+
+// struct that bundles a file's path with an optional display name.
+struct UI_BASE_EXPORT FileInfo {
+ FileInfo();
+ FileInfo(const base::FilePath& path, const base::FilePath& display_name);
+ ~FileInfo();
+
+ base::FilePath path;
+ base::FilePath display_name; // Optional.
+};
+
+} // namespace ui
+
+#endif // UI_BASE_DRAGDROP_FILE_INFO_H_
diff --git a/ui/base/dragdrop/gtk_dnd_util.cc b/ui/base/dragdrop/gtk_dnd_util.cc
index 163dce43c6..1282723e4f 100644
--- a/ui/base/dragdrop/gtk_dnd_util.cc
+++ b/ui/base/dragdrop/gtk_dnd_util.cc
@@ -55,6 +55,11 @@ void AddTargetToList(GtkTargetList* targets, int target_code) {
ui::GetAtomForTarget(ui::CUSTOM_DATA), 0, ui::CUSTOM_DATA);
break;
+ case ui::RENDERER_TAINT:
+ gtk_target_list_add(targets,
+ ui::GetAtomForTarget(ui::RENDERER_TAINT), 0, ui::RENDERER_TAINT);
+ break;
+
default:
NOTREACHED() << " Unexpected target code: " << target_code;
}
@@ -114,6 +119,11 @@ GdkAtom GetAtomForTarget(int target) {
kMimeTypeWebCustomData, false);
return kCustomData;
+ case RENDERER_TAINT:
+ static const GdkAtom kRendererTaint = gdk_atom_intern(
+ "chromium/x-renderer-taint", false);
+ return kRendererTaint;
+
default:
NOTREACHED();
}
diff --git a/ui/base/dragdrop/gtk_dnd_util.h b/ui/base/dragdrop/gtk_dnd_util.h
index b07a86dbcb..33ee837c7c 100644
--- a/ui/base/dragdrop/gtk_dnd_util.h
+++ b/ui/base/dragdrop/gtk_dnd_util.h
@@ -39,7 +39,11 @@ enum {
// Custom data for web drag/drop.
CUSTOM_DATA = 1 << 10,
- INVALID_TARGET = 1 << 11,
+
+ // Tracks if the drag originated from the renderer.
+ RENDERER_TAINT = 1 << 11,
+
+ INVALID_TARGET = 1 << 12,
};
// Get the atom for a given target (of the above enum type). Will return NULL
diff --git a/ui/base/dragdrop/os_exchange_data.cc b/ui/base/dragdrop/os_exchange_data.cc
index cc816935ea..64c8093527 100644
--- a/ui/base/dragdrop/os_exchange_data.cc
+++ b/ui/base/dragdrop/os_exchange_data.cc
@@ -18,15 +18,6 @@ OSExchangeData::DownloadFileInfo::DownloadFileInfo(
OSExchangeData::DownloadFileInfo::~DownloadFileInfo() {}
-OSExchangeData::FileInfo::FileInfo(
- const base::FilePath& path,
- const base::FilePath& display_name)
- : path(path),
- display_name(display_name) {
-}
-
-OSExchangeData::FileInfo::~FileInfo() {}
-
OSExchangeData::OSExchangeData() : provider_(CreateProvider()) {
}
@@ -36,6 +27,14 @@ OSExchangeData::OSExchangeData(Provider* provider) : provider_(provider) {
OSExchangeData::~OSExchangeData() {
}
+void OSExchangeData::MarkOriginatedFromRenderer() {
+ provider_->MarkOriginatedFromRenderer();
+}
+
+bool OSExchangeData::DidOriginateFromRenderer() const {
+ return provider_->DidOriginateFromRenderer();
+}
+
void OSExchangeData::SetString(const base::string16& data) {
provider_->SetString(data);
}
@@ -137,10 +136,6 @@ bool OSExchangeData::GetFileContents(base::FilePath* filename,
void OSExchangeData::SetDownloadFileInfo(const DownloadFileInfo& download) {
provider_->SetDownloadFileInfo(download);
}
-
-void OSExchangeData::SetInDragLoop(bool in_drag_loop) {
- provider_->SetInDragLoop(in_drag_loop);
-}
#endif
#if defined(OS_WIN) || defined(USE_AURA)
diff --git a/ui/base/dragdrop/os_exchange_data.h b/ui/base/dragdrop/os_exchange_data.h
index 8b848ce9ae..5a1cbd507e 100644
--- a/ui/base/dragdrop/os_exchange_data.h
+++ b/ui/base/dragdrop/os_exchange_data.h
@@ -33,6 +33,8 @@ class Vector2d;
namespace ui {
+struct FileInfo;
+
///////////////////////////////////////////////////////////////////////////////
//
// OSExchangeData
@@ -82,17 +84,6 @@ class UI_BASE_EXPORT OSExchangeData {
scoped_refptr<DownloadFileProvider> downloader;
};
- // Encapsulates the info about a file.
- struct UI_BASE_EXPORT FileInfo {
- FileInfo(const base::FilePath& path, const base::FilePath& display_name);
- ~FileInfo();
-
- // The path of the file.
- base::FilePath path;
- // The display name of the file. This field is optional.
- base::FilePath display_name;
- };
-
// Provider defines the platform specific part of OSExchangeData that
// interacts with the native system.
class UI_BASE_EXPORT Provider {
@@ -102,6 +93,9 @@ class UI_BASE_EXPORT OSExchangeData {
virtual Provider* Clone() const = 0;
+ virtual void MarkOriginatedFromRenderer() = 0;
+ virtual bool DidOriginateFromRenderer() const = 0;
+
virtual void SetString(const base::string16& data) = 0;
virtual void SetURL(const GURL& url, const base::string16& title) = 0;
virtual void SetFilename(const base::FilePath& path) = 0;
@@ -125,14 +119,15 @@ class UI_BASE_EXPORT OSExchangeData {
virtual bool HasFile() const = 0;
virtual bool HasCustomFormat(const CustomFormat& format) const = 0;
-#if defined(OS_WIN)
+#if (!defined(OS_CHROMEOS) && defined(USE_X11)) || defined(OS_WIN)
virtual void SetFileContents(const base::FilePath& filename,
const std::string& file_contents) = 0;
+#endif
+#if defined(OS_WIN)
virtual bool GetFileContents(base::FilePath* filename,
std::string* file_contents) const = 0;
virtual bool HasFileContents() const = 0;
virtual void SetDownloadFileInfo(const DownloadFileInfo& download) = 0;
- virtual void SetInDragLoop(bool in_drag_loop) = 0;
#endif
#if defined(OS_WIN) || defined(USE_AURA)
@@ -163,6 +158,12 @@ class UI_BASE_EXPORT OSExchangeData {
const Provider& provider() const { return *provider_; }
Provider& provider() { return *provider_; }
+ // Marks drag data as tainted if it originates from the renderer. This is used
+ // to avoid granting privileges to a renderer when dragging in tainted data,
+ // since it could allow potential escalation of privileges.
+ void MarkOriginatedFromRenderer();
+ bool DidOriginateFromRenderer() const;
+
// These functions add data to the OSExchangeData object of various Chrome
// types. The OSExchangeData object takes care of translating the data into
// a format suitable for exchange with the OS.
@@ -211,7 +212,8 @@ class UI_BASE_EXPORT OSExchangeData {
const std::set<CustomFormat>& custom_formats) const;
#if defined(OS_WIN)
- // Adds the bytes of a file (CFSTR_FILECONTENTS and CFSTR_FILEDESCRIPTOR).
+ // Adds the bytes of a file (CFSTR_FILECONTENTS and CFSTR_FILEDESCRIPTOR on
+ // Windows).
void SetFileContents(const base::FilePath& filename,
const std::string& file_contents);
bool GetFileContents(base::FilePath* filename,
@@ -219,8 +221,6 @@ class UI_BASE_EXPORT OSExchangeData {
// Adds a download file with full path (CF_HDROP).
void SetDownloadFileInfo(const DownloadFileInfo& download);
-
- void SetInDragLoop(bool in_drag_loop);
#endif
#if defined(OS_WIN) || defined(USE_AURA)
diff --git a/ui/base/dragdrop/os_exchange_data_provider_aura.cc b/ui/base/dragdrop/os_exchange_data_provider_aura.cc
index f98cf9cc02..2a44793d07 100644
--- a/ui/base/dragdrop/os_exchange_data_provider_aura.cc
+++ b/ui/base/dragdrop/os_exchange_data_provider_aura.cc
@@ -9,6 +9,7 @@
#include "net/base/net_util.h"
#include "ui/base/clipboard/clipboard.h"
#include "ui/base/clipboard/scoped_clipboard_writer.h"
+#include "ui/base/dragdrop/file_info.h"
namespace ui {
@@ -33,6 +34,15 @@ OSExchangeData::Provider* OSExchangeDataProviderAura::Clone() const {
return ret;
}
+void OSExchangeDataProviderAura::MarkOriginatedFromRenderer() {
+ // TODO(dcheng): Currently unneeded because ChromeOS Aura correctly separates
+ // URL and filename metadata, and does not implement the DownloadURL protocol.
+}
+
+bool OSExchangeDataProviderAura::DidOriginateFromRenderer() const {
+ return false;
+}
+
void OSExchangeDataProviderAura::SetString(const base::string16& data) {
string_ = data;
formats_ |= OSExchangeData::STRING;
@@ -49,12 +59,12 @@ void OSExchangeDataProviderAura::SetURL(const GURL& url,
void OSExchangeDataProviderAura::SetFilename(const base::FilePath& path) {
filenames_.clear();
- filenames_.push_back(OSExchangeData::FileInfo(path, base::FilePath()));
+ filenames_.push_back(FileInfo(path, base::FilePath()));
formats_ |= OSExchangeData::FILE_NAME;
}
void OSExchangeDataProviderAura::SetFilenames(
- const std::vector<OSExchangeData::FileInfo>& filenames) {
+ const std::vector<FileInfo>& filenames) {
filenames_ = filenames;
formats_ |= OSExchangeData::FILE_NAME;
}
@@ -100,7 +110,7 @@ bool OSExchangeDataProviderAura::GetFilename(base::FilePath* path) const {
}
bool OSExchangeDataProviderAura::GetFilenames(
- std::vector<OSExchangeData::FileInfo>* filenames) const {
+ std::vector<FileInfo>* filenames) const {
if ((formats_ & OSExchangeData::FILE_NAME) == 0)
return false;
*filenames = filenames_;
diff --git a/ui/base/dragdrop/os_exchange_data_provider_aura.h b/ui/base/dragdrop/os_exchange_data_provider_aura.h
index 410bc86835..e54a2fdfe2 100644
--- a/ui/base/dragdrop/os_exchange_data_provider_aura.h
+++ b/ui/base/dragdrop/os_exchange_data_provider_aura.h
@@ -27,11 +27,12 @@ class UI_BASE_EXPORT OSExchangeDataProviderAura
// Overridden from OSExchangeData::Provider:
virtual Provider* Clone() const OVERRIDE;
+ virtual void MarkOriginatedFromRenderer() OVERRIDE;
+ virtual bool DidOriginateFromRenderer() const OVERRIDE;
virtual void SetString(const base::string16& data) OVERRIDE;
virtual void SetURL(const GURL& url, const base::string16& title) OVERRIDE;
virtual void SetFilename(const base::FilePath& path) OVERRIDE;
- virtual void SetFilenames(
- const std::vector<OSExchangeData::FileInfo>& filenames) OVERRIDE;
+ virtual void SetFilenames(const std::vector<FileInfo>& filenames) OVERRIDE;
virtual void SetPickledData(const OSExchangeData::CustomFormat& format,
const Pickle& data) OVERRIDE;
virtual bool GetString(base::string16* data) const OVERRIDE;
@@ -39,8 +40,7 @@ class UI_BASE_EXPORT OSExchangeDataProviderAura
GURL* url,
base::string16* title) const OVERRIDE;
virtual bool GetFilename(base::FilePath* path) const OVERRIDE;
- virtual bool GetFilenames(
- std::vector<OSExchangeData::FileInfo>* filenames) const OVERRIDE;
+ virtual bool GetFilenames(std::vector<FileInfo>* filenames) const OVERRIDE;
virtual bool GetPickledData(const OSExchangeData::CustomFormat& format,
Pickle* data) const OVERRIDE;
virtual bool HasString() const OVERRIDE;
@@ -78,7 +78,7 @@ class UI_BASE_EXPORT OSExchangeDataProviderAura
base::string16 title_;
// File name.
- std::vector<OSExchangeData::FileInfo> filenames_;
+ std::vector<FileInfo> filenames_;
// PICKLED_DATA contents.
PickleData pickle_data_;
diff --git a/ui/base/dragdrop/os_exchange_data_provider_aurax11.cc b/ui/base/dragdrop/os_exchange_data_provider_aurax11.cc
index 15ab97d357..2f013ecb88 100644
--- a/ui/base/dragdrop/os_exchange_data_provider_aurax11.cc
+++ b/ui/base/dragdrop/os_exchange_data_provider_aurax11.cc
@@ -12,6 +12,7 @@
#include "net/base/net_util.h"
#include "ui/base/clipboard/clipboard.h"
#include "ui/base/clipboard/scoped_clipboard_writer.h"
+#include "ui/base/dragdrop/file_info.h"
#include "ui/base/x/selection_utils.h"
#include "ui/base/x/x11_util.h"
@@ -25,6 +26,9 @@ namespace ui {
namespace {
const char kDndSelection[] = "XdndSelection";
+const char kRendererTaint[] = "chromium/x-renderer-taint";
+
+const char kNetscapeURL[] = "_NETSCAPE_URL";
const char* kAtomsToCache[] = {
kString,
@@ -33,7 +37,9 @@ const char* kAtomsToCache[] = {
kDndSelection,
Clipboard::kMimeTypeURIList,
kMimeTypeMozillaURL,
+ kNetscapeURL,
Clipboard::kMimeTypeText,
+ kRendererTaint,
NULL
};
@@ -108,6 +114,18 @@ OSExchangeData::Provider* OSExchangeDataProviderAuraX11::Clone() const {
return ret;
}
+void OSExchangeDataProviderAuraX11::MarkOriginatedFromRenderer() {
+ std::string empty;
+ format_map_.Insert(atom_cache_.GetAtom(kRendererTaint),
+ scoped_refptr<base::RefCountedMemory>(
+ base::RefCountedString::TakeString(&empty)));
+}
+
+bool OSExchangeDataProviderAuraX11::DidOriginateFromRenderer() const {
+ return format_map_.find(atom_cache_.GetAtom(kRendererTaint)) !=
+ format_map_.end();
+}
+
void OSExchangeDataProviderAuraX11::SetString(const base::string16& text_data) {
std::string utf8 = base::UTF16ToUTF8(text_data);
scoped_refptr<base::RefCountedMemory> mem(
@@ -121,8 +139,10 @@ void OSExchangeDataProviderAuraX11::SetString(const base::string16& text_data) {
void OSExchangeDataProviderAuraX11::SetURL(const GURL& url,
const base::string16& title) {
- // Mozilla's URL format: (UTF16: URL, newline, title)
+ // TODO(dcheng): The original GTK code tries very hard to avoid writing out an
+ // empty title. Is this necessary?
if (url.is_valid()) {
+ // Mozilla's URL format: (UTF16: URL, newline, title)
base::string16 spec = base::UTF8ToUTF16(url.spec());
std::vector<unsigned char> data;
@@ -134,21 +154,34 @@ void OSExchangeDataProviderAuraX11::SetURL(const GURL& url,
format_map_.Insert(atom_cache_.GetAtom(kMimeTypeMozillaURL), mem);
+ // Set _NETSCAPE_URL as well, since some file managers like Nautilus use it
+ // to create a link to the URL. Setting text/uri-list doesn't work as well,
+ // because Nautilus tries to fetch the contents of the URL instead.
+ // Format is UTF8: URL + "\n" + title.
+ std::string netscape_url = url.spec();
+ netscape_url += "\n";
+ netscape_url += base::UTF16ToUTF8(title);
+ format_map_.Insert(atom_cache_.GetAtom(kNetscapeURL),
+ scoped_refptr<base::RefCountedMemory>(
+ base::RefCountedString::TakeString(&netscape_url)));
+
+ // And finally a string fallback as well.
SetString(spec);
}
}
void OSExchangeDataProviderAuraX11::SetFilename(const base::FilePath& path) {
- std::vector<OSExchangeData::FileInfo> data;
- data.push_back(OSExchangeData::FileInfo(path, base::FilePath()));
+ std::vector<FileInfo> data;
+ data.push_back(FileInfo(path, base::FilePath()));
SetFilenames(data);
}
void OSExchangeDataProviderAuraX11::SetFilenames(
- const std::vector<OSExchangeData::FileInfo>& filenames) {
+ const std::vector<FileInfo>& filenames) {
std::vector<std::string> paths;
- for (std::vector<OSExchangeData::FileInfo>::const_iterator it =
- filenames.begin(); it != filenames.end(); ++it) {
+ for (std::vector<FileInfo>::const_iterator it = filenames.begin();
+ it != filenames.end();
+ ++it) {
std::string url_spec = net::FilePathToFileURL(it->path).spec();
if (!url_spec.empty())
paths.push_back(url_spec);
@@ -246,7 +279,7 @@ bool OSExchangeDataProviderAuraX11::GetURLAndTitle(
}
bool OSExchangeDataProviderAuraX11::GetFilename(base::FilePath* path) const {
- std::vector<OSExchangeData::FileInfo> filenames;
+ std::vector<FileInfo> filenames;
if (GetFilenames(&filenames)) {
*path = filenames.front().path;
return true;
@@ -256,7 +289,7 @@ bool OSExchangeDataProviderAuraX11::GetFilename(base::FilePath* path) const {
}
bool OSExchangeDataProviderAuraX11::GetFilenames(
- std::vector<OSExchangeData::FileInfo>* filenames) const {
+ std::vector<FileInfo>* filenames) const {
std::vector< ::Atom> url_atoms = ui::GetURIListAtomsFrom(&atom_cache_);
std::vector< ::Atom> requested_types;
ui::GetAtomIntersection(url_atoms, GetTargets(), &requested_types);
@@ -270,8 +303,7 @@ bool OSExchangeDataProviderAuraX11::GetFilenames(
GURL url(*it);
base::FilePath file_path;
if (url.SchemeIsFile() && net::FileURLToFilePath(url, &file_path)) {
- filenames->push_back(OSExchangeData::FileInfo(file_path,
- base::FilePath()));
+ filenames->push_back(FileInfo(file_path, base::FilePath()));
}
}
}
@@ -373,6 +405,40 @@ bool OSExchangeDataProviderAuraX11::HasCustomFormat(
return !requested_types.empty();
}
+void OSExchangeDataProviderAuraX11::SetFileContents(
+ const base::FilePath& filename,
+ const std::string& file_contents) {
+ DCHECK(!filename.empty());
+
+ file_contents_name_ = filename;
+
+ // Direct save handling is a complicated juggling affair between this class,
+ // SelectionFormat, and DesktopDragDropClientAuraX11. The general idea behind
+ // the protocol is this:
+ // - The source window sets its XdndDirectSave0 window property to the
+ // proposed filename.
+ // - When a target window receives the drop, it updates the XdndDirectSave0
+ // property on the source window to the filename it would like the contents
+ // to be saved to and then requests the XdndDirectSave0 type from the
+ // source.
+ // - The source is supposed to copy the file here and return success (S),
+ // failure (F), or error (E).
+ // - In this case, failure means the destination should try to populate the
+ // file itself by copying the data from application/octet-stream. To make
+ // things simpler for Chrome, we always 'fail' and let the destination do
+ // the work.
+ std::string failure("F");
+ format_map_.Insert(
+ atom_cache_.GetAtom("XdndDirectSave0"),
+ scoped_refptr<base::RefCountedMemory>(
+ base::RefCountedString::TakeString(&failure)));
+ std::string file_contents_copy = file_contents;
+ format_map_.Insert(
+ atom_cache_.GetAtom("application/octet-stream"),
+ scoped_refptr<base::RefCountedMemory>(
+ base::RefCountedString::TakeString(&file_contents_copy)));
+}
+
void OSExchangeDataProviderAuraX11::SetHtml(const base::string16& html,
const GURL& base_url) {
std::vector<unsigned char> bytes;
diff --git a/ui/base/dragdrop/os_exchange_data_provider_aurax11.h b/ui/base/dragdrop/os_exchange_data_provider_aurax11.h
index a336206cda..40c0deb101 100644
--- a/ui/base/dragdrop/os_exchange_data_provider_aurax11.h
+++ b/ui/base/dragdrop/os_exchange_data_provider_aurax11.h
@@ -56,13 +56,18 @@ class UI_BASE_EXPORT OSExchangeDataProviderAuraX11
// Makes a copy of the format map currently being offered.
SelectionFormatMap GetFormatMap() const;
+ const base::FilePath& file_contents_name() const {
+ return file_contents_name_;
+ }
+
// Overridden from OSExchangeData::Provider:
virtual Provider* Clone() const OVERRIDE;
+ virtual void MarkOriginatedFromRenderer() OVERRIDE;
+ virtual bool DidOriginateFromRenderer() const OVERRIDE;
virtual void SetString(const base::string16& data) OVERRIDE;
virtual void SetURL(const GURL& url, const base::string16& title) OVERRIDE;
virtual void SetFilename(const base::FilePath& path) OVERRIDE;
- virtual void SetFilenames(
- const std::vector<OSExchangeData::FileInfo>& filenames) OVERRIDE;
+ virtual void SetFilenames(const std::vector<FileInfo>& filenames) OVERRIDE;
virtual void SetPickledData(const OSExchangeData::CustomFormat& format,
const Pickle& pickle) OVERRIDE;
virtual bool GetString(base::string16* data) const OVERRIDE;
@@ -70,8 +75,7 @@ class UI_BASE_EXPORT OSExchangeDataProviderAuraX11
GURL* url,
base::string16* title) const OVERRIDE;
virtual bool GetFilename(base::FilePath* path) const OVERRIDE;
- virtual bool GetFilenames(
- std::vector<OSExchangeData::FileInfo>* filenames) const OVERRIDE;
+ virtual bool GetFilenames(std::vector<FileInfo>* filenames) const OVERRIDE;
virtual bool GetPickledData(const OSExchangeData::CustomFormat& format,
Pickle* pickle) const OVERRIDE;
virtual bool HasString() const OVERRIDE;
@@ -81,6 +85,9 @@ class UI_BASE_EXPORT OSExchangeDataProviderAuraX11
virtual bool HasCustomFormat(const OSExchangeData::CustomFormat& format) const
OVERRIDE;
+ virtual void SetFileContents(const base::FilePath& filename,
+ const std::string& file_contents) OVERRIDE;
+
virtual void SetHtml(const base::string16& html,
const GURL& base_url) OVERRIDE;
virtual bool GetHtml(base::string16* html, GURL* base_url) const OVERRIDE;
@@ -129,6 +136,9 @@ class UI_BASE_EXPORT OSExchangeDataProviderAuraX11
// to |selection_owner_| when we take the selection.
SelectionFormatMap format_map_;
+ // Auxilary data for the X Direct Save protocol.
+ base::FilePath file_contents_name_;
+
// Takes a snapshot of |format_map_| and offers it to other windows.
mutable SelectionOwner selection_owner_;
diff --git a/ui/base/dragdrop/os_exchange_data_provider_aurax11_unittest.cc b/ui/base/dragdrop/os_exchange_data_provider_aurax11_unittest.cc
index b62e0d9d79..1601007624 100644
--- a/ui/base/dragdrop/os_exchange_data_provider_aurax11_unittest.cc
+++ b/ui/base/dragdrop/os_exchange_data_provider_aurax11_unittest.cc
@@ -12,6 +12,7 @@
#include "base/strings/string16.h"
#include "base/strings/utf_string_conversions.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/base/dragdrop/file_info.h"
#include "url/gurl.h"
const char kFileURL[] = "file:///home/user/file.txt";
@@ -88,7 +89,7 @@ TEST_F(OSExchangeDataProviderAuraX11Test, URIListWithBoth) {
EXPECT_TRUE(provider.HasURL(ui::OSExchangeData::DO_NOT_CONVERT_FILENAMES));
// We should only receive the file from GetFilenames().
- std::vector<OSExchangeData::FileInfo> filenames;
+ std::vector<FileInfo> filenames;
EXPECT_TRUE(provider.GetFilenames(&filenames));
ASSERT_EQ(1u, filenames.size());
EXPECT_EQ(kFileName, filenames[0].path.value());
diff --git a/ui/base/dragdrop/os_exchange_data_provider_win.cc b/ui/base/dragdrop/os_exchange_data_provider_win.cc
index fa2052a10b..e4f117eaf2 100644
--- a/ui/base/dragdrop/os_exchange_data_provider_win.cc
+++ b/ui/base/dragdrop/os_exchange_data_provider_win.cc
@@ -18,11 +18,20 @@
#include "net/base/net_util.h"
#include "ui/base/clipboard/clipboard.h"
#include "ui/base/clipboard/clipboard_util_win.h"
+#include "ui/base/dragdrop/file_info.h"
#include "ui/base/l10n/l10n_util.h"
#include "url/gurl.h"
namespace ui {
+static const OSExchangeData::CustomFormat& GetRendererTaintCustomType() {
+ CR_DEFINE_STATIC_LOCAL(
+ ui::OSExchangeData::CustomFormat,
+ format,
+ (ui::Clipboard::GetFormatType("chromium/x-renderer-taint")));
+ return format;
+}
+
// Creates a new STGMEDIUM object to hold the specified text. The caller
// owns the resulting object. The "Bytes" version does not NULL terminate, the
// string version does.
@@ -269,6 +278,16 @@ OSExchangeData::Provider* OSExchangeDataProviderWin::Clone() const {
return new OSExchangeDataProviderWin(data_object());
}
+void OSExchangeDataProviderWin::MarkOriginatedFromRenderer() {
+ STGMEDIUM* storage = GetStorageForString(std::string());
+ data_->contents_.push_back(new DataObjectImpl::StoredDataInfo(
+ GetRendererTaintCustomType().ToFormatEtc(), storage));
+}
+
+bool OSExchangeDataProviderWin::DidOriginateFromRenderer() const {
+ return HasCustomFormat(GetRendererTaintCustomType());
+}
+
void OSExchangeDataProviderWin::SetString(const base::string16& data) {
STGMEDIUM* storage = GetStorageForString(data);
data_->contents_.push_back(new DataObjectImpl::StoredDataInfo(
@@ -334,7 +353,7 @@ void OSExchangeDataProviderWin::SetFilename(const base::FilePath& path) {
}
void OSExchangeDataProviderWin::SetFilenames(
- const std::vector<OSExchangeData::FileInfo>& filenames) {
+ const std::vector<FileInfo>& filenames) {
for (size_t i = 0; i < filenames.size(); ++i) {
STGMEDIUM* storage = GetStorageForFileName(filenames[i].path);
DataObjectImpl::StoredDataInfo* info = new DataObjectImpl::StoredDataInfo(
@@ -421,14 +440,13 @@ bool OSExchangeDataProviderWin::GetFilename(base::FilePath* path) const {
}
bool OSExchangeDataProviderWin::GetFilenames(
- std::vector<OSExchangeData::FileInfo>* filenames) const {
+ std::vector<FileInfo>* filenames) const {
std::vector<base::string16> filenames_local;
bool success = ClipboardUtil::GetFilenames(source_object_, &filenames_local);
if (success) {
for (size_t i = 0; i < filenames_local.size(); ++i)
filenames->push_back(
- OSExchangeData::FileInfo(base::FilePath(filenames_local[i]),
- base::FilePath()));
+ FileInfo(base::FilePath(filenames_local[i]), base::FilePath()));
}
return success;
}
@@ -519,11 +537,6 @@ void OSExchangeDataProviderWin::SetDownloadFileInfo(
info->downloader = download.downloader;
data_->contents_.push_back(info);
}
-
-void OSExchangeDataProviderWin::SetInDragLoop(bool in_drag_loop) {
- data_->set_in_drag_loop(in_drag_loop);
-}
-
#if defined(USE_AURA)
void OSExchangeDataProviderWin::SetDragImage(
diff --git a/ui/base/dragdrop/os_exchange_data_provider_win.h b/ui/base/dragdrop/os_exchange_data_provider_win.h
index 111ef3b9b8..ffe37e7890 100644
--- a/ui/base/dragdrop/os_exchange_data_provider_win.h
+++ b/ui/base/dragdrop/os_exchange_data_provider_win.h
@@ -149,11 +149,12 @@ class UI_BASE_EXPORT OSExchangeDataProviderWin
// OSExchangeData::Provider methods.
virtual Provider* Clone() const;
+ virtual void MarkOriginatedFromRenderer();
+ virtual bool DidOriginateFromRenderer() const;
virtual void SetString(const base::string16& data);
virtual void SetURL(const GURL& url, const base::string16& title);
virtual void SetFilename(const base::FilePath& path);
- virtual void SetFilenames(
- const std::vector<OSExchangeData::FileInfo>& filenames);
+ virtual void SetFilenames(const std::vector<FileInfo>& filenames);
virtual void SetPickledData(const OSExchangeData::CustomFormat& format,
const Pickle& data);
virtual void SetFileContents(const base::FilePath& filename,
@@ -165,8 +166,7 @@ class UI_BASE_EXPORT OSExchangeDataProviderWin
GURL* url,
base::string16* title) const;
virtual bool GetFilename(base::FilePath* path) const;
- virtual bool GetFilenames(
- std::vector<OSExchangeData::FileInfo>* filenames) const;
+ virtual bool GetFilenames(std::vector<FileInfo>* filenames) const;
virtual bool GetPickledData(const OSExchangeData::CustomFormat& format,
Pickle* data) const;
virtual bool GetFileContents(base::FilePath* filename,
@@ -181,7 +181,6 @@ class UI_BASE_EXPORT OSExchangeDataProviderWin
const OSExchangeData::CustomFormat& format) const;
virtual void SetDownloadFileInfo(
const OSExchangeData::DownloadFileInfo& download_info);
- virtual void SetInDragLoop(bool in_drag_loop) OVERRIDE;
#if defined(USE_AURA)
virtual void SetDragImage(const gfx::ImageSkia& image,
const gfx::Vector2d& cursor_offset) OVERRIDE;
diff --git a/ui/base/ime/OWNERS b/ui/base/ime/OWNERS
index ec3410f4af..bc96702ccd 100644
--- a/ui/base/ime/OWNERS
+++ b/ui/base/ime/OWNERS
@@ -1,11 +1,10 @@
-nona@chromium.org
-penghuang@chromium.org
+# primary reviewer.
+yukishiino@chromium.org
-# Chrome OS IME
+# backup reviewers.
komatsu@chromium.org
+mukai@chromium.org
+nona@chromium.org
-# Windows Aura IME
+# For Windows.
yukawa@chromium.org
-
-# Linux Aura IME
-yukishiino@chromium.org
diff --git a/ui/base/ime/dummy_text_input_client.cc b/ui/base/ime/dummy_text_input_client.cc
index 711dfddb58..b5cd729637 100644
--- a/ui/base/ime/dummy_text_input_client.cc
+++ b/ui/base/ime/dummy_text_input_client.cc
@@ -7,14 +7,17 @@
namespace ui {
-DummyTextInputClient::DummyTextInputClient() {
-}
+DummyTextInputClient::DummyTextInputClient()
+ : text_input_type_(TEXT_INPUT_TYPE_NONE) {}
+
+DummyTextInputClient::DummyTextInputClient(TextInputType text_input_type)
+ : text_input_type_(text_input_type) {}
DummyTextInputClient::~DummyTextInputClient() {
}
void DummyTextInputClient::SetCompositionText(
- const ui::CompositionText& composition) {
+ const CompositionText& composition) {
}
void DummyTextInputClient::ConfirmCompositionText() {
@@ -33,11 +36,11 @@ gfx::NativeWindow DummyTextInputClient::GetAttachedWindow() const {
return NULL;
}
-ui::TextInputType DummyTextInputClient::GetTextInputType() const {
- return TEXT_INPUT_TYPE_NONE;
+TextInputType DummyTextInputClient::GetTextInputType() const {
+ return text_input_type_;
}
-ui::TextInputMode DummyTextInputClient::GetTextInputMode() const {
+TextInputMode DummyTextInputClient::GetTextInputMode() const {
return TEXT_INPUT_MODE_DEFAULT;
}
diff --git a/ui/base/ime/dummy_text_input_client.h b/ui/base/ime/dummy_text_input_client.h
index 5c8a52efbf..3961302874 100644
--- a/ui/base/ime/dummy_text_input_client.h
+++ b/ui/base/ime/dummy_text_input_client.h
@@ -13,18 +13,18 @@ namespace ui {
class DummyTextInputClient : public TextInputClient {
public:
DummyTextInputClient();
+ explicit DummyTextInputClient(TextInputType text_input_type);
virtual ~DummyTextInputClient();
// Overriden from TextInputClient.
- virtual void SetCompositionText(
- const ui::CompositionText& composition) OVERRIDE;
+ virtual void SetCompositionText(const CompositionText& composition) OVERRIDE;
virtual void ConfirmCompositionText() OVERRIDE;
virtual void ClearCompositionText() OVERRIDE;
virtual void InsertText(const base::string16& text) OVERRIDE;
virtual void InsertChar(base::char16 ch, int flags) OVERRIDE;
virtual gfx::NativeWindow GetAttachedWindow() const OVERRIDE;
- virtual ui::TextInputType GetTextInputType() const OVERRIDE;
- virtual ui::TextInputMode GetTextInputMode() const OVERRIDE;
+ virtual TextInputType GetTextInputType() const OVERRIDE;
+ virtual TextInputMode GetTextInputMode() const OVERRIDE;
virtual bool CanComposeInline() const OVERRIDE;
virtual gfx::Rect GetCaretBounds() const OVERRIDE;
virtual bool GetCompositionCharacterBounds(uint32 index,
@@ -45,6 +45,10 @@ class DummyTextInputClient : public TextInputClient {
virtual void OnCandidateWindowShown() OVERRIDE;
virtual void OnCandidateWindowUpdated() OVERRIDE;
virtual void OnCandidateWindowHidden() OVERRIDE;
+
+ TextInputType text_input_type_;
+
+ DISALLOW_COPY_AND_ASSIGN(DummyTextInputClient);
};
} // namespace ui
diff --git a/ui/base/layout.cc b/ui/base/layout.cc
index 2c1fb51a39..01c38f1d54 100644
--- a/ui/base/layout.cc
+++ b/ui/base/layout.cc
@@ -20,6 +20,7 @@
#if defined(OS_WIN)
#include "base/win/metro.h"
+#include "ui/gfx/win/dpi.h"
#include <Windows.h>
#endif // defined(OS_WIN)
@@ -90,7 +91,7 @@ void SetSupportedScaleFactors(
for (std::vector<ScaleFactor>::const_iterator it =
g_supported_scale_factors->begin();
it != g_supported_scale_factors->end(); ++it) {
- scales.push_back(GetImageScale(*it));
+ scales.push_back(kScaleFactorScales[*it]);
}
gfx::ImageSkia::SetSupportedScales(scales);
}
@@ -117,7 +118,11 @@ ScaleFactor GetSupportedScaleFactor(float scale) {
}
float GetImageScale(ScaleFactor scale_factor) {
- return kScaleFactorScales[scale_factor];
+#if defined(OS_WIN)
+ if (gfx::IsHighDPIEnabled())
+ return gfx::win::GetDeviceScaleFactor();
+#endif
+ return GetScaleForScaleFactor(scale_factor);
}
bool IsScaleFactorSupported(ScaleFactor scale_factor) {
@@ -144,6 +149,10 @@ ScaleFactor FindClosestScaleFactorUnsafe(float scale) {
return closest_match;
}
+float GetScaleForScaleFactor(ScaleFactor scale_factor) {
+ return kScaleFactorScales[scale_factor];
+}
+
namespace test {
ScopedSetSupportedScaleFactors::ScopedSetSupportedScaleFactors(
diff --git a/ui/base/layout.h b/ui/base/layout.h
index 2ea39a289e..690335aabc 100644
--- a/ui/base/layout.h
+++ b/ui/base/layout.h
@@ -57,7 +57,8 @@ UI_BASE_EXPORT void SetSupportedScaleFactors(
// platform, in ascending order.
UI_BASE_EXPORT const std::vector<ScaleFactor>& GetSupportedScaleFactors();
-// Returns the float scale value for |scale_factor|.
+// Returns the actual image scale to be used for the scale factor passed in.
+// On Windows high dpi, this returns the dpi scale for the display.
UI_BASE_EXPORT float GetImageScale(ScaleFactor scale_factor);
// Returns the supported ScaleFactor which most closely matches |scale|.
@@ -77,6 +78,9 @@ UI_BASE_EXPORT bool IsScaleFactorSupported(ScaleFactor scale_factor);
// Finding the closest match is inefficient and shouldn't be done frequently.
UI_BASE_EXPORT ScaleFactor FindClosestScaleFactorUnsafe(float scale);
+// Returns the image scale for the scale factor passed in.
+UI_BASE_EXPORT float GetScaleForScaleFactor(ScaleFactor scale_factor);
+
namespace test {
// Class which changes the value of GetSupportedScaleFactors() to
// |new_scale_factors| for the duration of its lifetime.
diff --git a/ui/base/models/simple_menu_model.h b/ui/base/models/simple_menu_model.h
index 8cd936b2ce..78c8fd6ec3 100644
--- a/ui/base/models/simple_menu_model.h
+++ b/ui/base/models/simple_menu_model.h
@@ -27,6 +27,8 @@ class UI_BASE_EXPORT SimpleMenuModel : public MenuModel {
public:
class UI_BASE_EXPORT Delegate {
public:
+ virtual ~Delegate() {}
+
// Methods for determining the state of specific command ids.
virtual bool IsCommandIdChecked(int command_id) const = 0;
virtual bool IsCommandIdEnabled(int command_id) const = 0;
@@ -63,9 +65,6 @@ class UI_BASE_EXPORT SimpleMenuModel : public MenuModel {
// Notifies the delegate that the menu has closed.
virtual void MenuClosed(SimpleMenuModel* source);
-
- protected:
- virtual ~Delegate() {}
};
// The Delegate can be NULL, though if it is items can't be checked or
diff --git a/ui/base/resource/resource_bundle.cc b/ui/base/resource/resource_bundle.cc
index 36f0e77c70..daea33fe88 100644
--- a/ui/base/resource/resource_bundle.cc
+++ b/ui/base/resource/resource_bundle.cc
@@ -106,8 +106,6 @@ class ResourceBundle::ResourceBundleImageSource : public gfx::ImageSkiaSource {
ScaleFactor scale_factor = GetSupportedScaleFactor(scale);
bool found = rb_->LoadBitmap(resource_id_, &scale_factor,
&image, &fell_back_to_1x);
- // Force to a supported scale.
- scale = ui::GetImageScale(scale_factor);
if (!found)
return gfx::ImageSkiaRep();
@@ -131,8 +129,11 @@ class ResourceBundle::ResourceBundleImageSource : public gfx::ImageSkiaSource {
mask.eraseColor(SK_ColorRED);
image = SkBitmapOperations::CreateBlendedBitmap(image, mask, 0.2);
}
+ } else {
+ image = PlatformScaleImage(image,
+ ui::GetScaleForScaleFactor(scale_factor),
+ scale);
}
-
return gfx::ImageSkiaRep(image, scale);
}
@@ -353,12 +354,13 @@ gfx::Image& ResourceBundle::GetImageNamed(int resource_id) {
"Missing call to SetResourcesDataDLL?";
#if defined(OS_CHROMEOS) || defined(OS_WIN)
- ui::ScaleFactor scale_factor_to_load = GetMaxScaleFactor();
+ ui::ScaleFactor scale_factor_to_load = GetMaxScaleFactor();
#else
- ui::ScaleFactor scale_factor_to_load = ui::SCALE_FACTOR_100P;
+ ui::ScaleFactor scale_factor_to_load = ui::SCALE_FACTOR_100P;
#endif
float scale = GetImageScale(scale_factor_to_load);
+
// TODO(oshima): Consider reading the image size from png IHDR chunk and
// skip decoding here and remove #ifdef below.
// ResourceBundle::GetSharedInstance() is destroyed after the
@@ -820,4 +822,13 @@ bool ResourceBundle::DecodePNG(const unsigned char* buf,
return gfx::PNGCodec::Decode(buf, size, bitmap);
}
+#if !defined(OS_WIN)
+// static
+SkBitmap ResourceBundle::PlatformScaleImage(const SkBitmap& image,
+ float loaded_image_scale,
+ float desired_scale) {
+ return image;
+}
+#endif
+
} // namespace ui
diff --git a/ui/base/resource/resource_bundle.h b/ui/base/resource/resource_bundle.h
index 809b112515..93b50ea717 100644
--- a/ui/base/resource/resource_bundle.h
+++ b/ui/base/resource/resource_bundle.h
@@ -353,6 +353,16 @@ class UI_BASE_EXPORT ResourceBundle {
const base::FilePath& GetOverriddenPakPath();
+ // Platform specific image scaling is done here. Currently only implemented
+ // for Windows.
+ // |image| is the bitmap to be scaled.
+ // |loaded_image_scale| is the current scale of the bitmap.
+ // |desired_scale| is the desired scale of the bitmap.
+ // Returns the scaled bitmap or the original bitmap.
+ static SkBitmap PlatformScaleImage(const SkBitmap& image,
+ float loaded_image_scale,
+ float desired_scale);
+
// This pointer is guaranteed to outlive the ResourceBundle instance and may
// be NULL.
Delegate* delegate_;
diff --git a/ui/base/resource/resource_bundle_win.cc b/ui/base/resource/resource_bundle_win.cc
index be730854b6..13f74e032f 100644
--- a/ui/base/resource/resource_bundle_win.cc
+++ b/ui/base/resource/resource_bundle_win.cc
@@ -7,9 +7,13 @@
#include "base/logging.h"
#include "base/path_service.h"
#include "base/strings/utf_string_conversions.h"
+#include "skia/ext/image_operations.h"
#include "ui/base/layout.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/base/resource/resource_data_dll_win.h"
+#include "ui/gfx/geometry/size_conversions.h"
+#include "ui/gfx/image/image_skia.h"
+#include "ui/gfx/image/image_skia_source.h"
#include "ui/gfx/win/dpi.h"
namespace ui {
@@ -61,6 +65,34 @@ gfx::Image& ResourceBundle::GetNativeImageNamed(int resource_id, ImageRTL rtl) {
return GetImageNamed(resource_id);
}
+// static
+SkBitmap ResourceBundle::PlatformScaleImage(const SkBitmap& image,
+ float loaded_image_scale,
+ float desired_bitmap_scale) {
+ if (!gfx::IsHighDPIEnabled())
+ return image;
+
+ // On Windows we can have multiple device scales like 1/1.25/1.5/2, etc.
+ // We only have 1x and 2x data packs. We need to scale the bitmaps
+ // accordingly.
+ if (loaded_image_scale == desired_bitmap_scale)
+ return image;
+
+ SkBitmap scaled_image;
+ gfx::Size unscaled_size(image.width(), image.height());
+ gfx::Size scaled_size = ToCeiledSize(
+ gfx::ScaleSize(unscaled_size,
+ desired_bitmap_scale / loaded_image_scale));
+ scaled_image = skia::ImageOperations::Resize(
+ image,
+ skia::ImageOperations::RESIZE_LANCZOS3,
+ scaled_size.width(),
+ scaled_size.height());
+ DCHECK_EQ(scaled_image.width(), scaled_size.width());
+ DCHECK_EQ(scaled_image.height(), scaled_size.height());
+ return scaled_image;
+}
+
void SetResourcesDataDLL(HINSTANCE handle) {
resources_data_dll = handle;
}
diff --git a/ui/base/strings/app_locale_settings_ar.xtb b/ui/base/strings/app_locale_settings_ar.xtb
index bc74a3b600..6eb1ddc20e 100644
--- a/ui/base/strings/app_locale_settings_ar.xtb
+++ b/ui/base/strings/app_locale_settings_ar.xtb
@@ -2,8 +2,8 @@
<!DOCTYPE translationbundle>
<translationbundle lang="ar">
<translation id="IDS_MINIMUM_UI_FONT_SIZE">10</translation>
-<translation id="IDS_UI_FONT_FAMILY_CROS">Noto Sans UI,Droid Arabic Kufi,ui-sans, 13px</translation>
+<translation id="IDS_UI_FONT_FAMILY_CROS">Noto Sans UI, Noto Naskh Arabic UI, ui-sans, 13px</translation>
<if expr="chromeos">
- <translation id="IDS_WEB_FONT_FAMILY">Noto Sans UI, Droid Arabic Naskh, sans-serif</translation>
+ <translation id="IDS_WEB_FONT_FAMILY">Noto Sans UI, Noto Naskh Arabic UI, sans-serif</translation>
</if>
</translationbundle>
diff --git a/ui/base/strings/ui_strings.grd b/ui/base/strings/ui_strings.grd
index 3ff50142e9..9b0d714484 100644
--- a/ui/base/strings/ui_strings.grd
+++ b/ui/base/strings/ui_strings.grd
@@ -1878,7 +1878,7 @@ need to be translated for each locale.-->
Scroll Down
</message>
- <!-- Edit field context menu item labels. -->
+ <!-- Textfield context menu item labels. -->
<message name="IDS_APP_UNDO" desc="The text label of the Undo menu item">
&amp;Undo
</message>
@@ -1898,6 +1898,66 @@ need to be translated for each locale.-->
Select &amp;all
</message>
+ <!-- Textfield editing commands; their actual string contents are unused. -->
+ <!-- These match third_party/WebKit/Source/core/editing/EditorCommand.cpp. -->
+ <message name="IDS_DELETE_BACKWARD" desc="A command to delete backward.">
+ Delete Backward
+ </message>
+ <message name="IDS_DELETE_FORWARD" desc="A command to delete forward.">
+ Delete Forward
+ </message>
+ <message name="IDS_DELETE_TO_BEGINNING_OF_LINE" desc="A command to delete to the beginning of the line.">
+ Delete To Beginning Of Line
+ </message>
+ <message name="IDS_DELETE_TO_END_OF_LINE" desc="A command to delete to the end of the line.">
+ Delete To End Of Line
+ </message>
+ <message name="IDS_DELETE_WORD_BACKWARD" desc="A command to delete backward by a word.">
+ Delete Word Backward
+ </message>
+ <message name="IDS_DELETE_WORD_FORWARD" desc="A command to delete forward by a word.">
+ Delete Word Forward
+ </message>
+ <message name="IDS_MOVE_LEFT" desc="A command to move the cursor left.">
+ Move Left
+ </message>
+ <message name="IDS_MOVE_LEFT_AND_MODIFY_SELECTION" desc="A command to move the cursor left and modify the selection.">
+ Move Left And Modify Selection
+ </message>
+ <message name="IDS_MOVE_RIGHT" desc="A command to move the cursor right.">
+ Move Right
+ </message>
+ <message name="IDS_MOVE_RIGHT_AND_MODIFY_SELECTION" desc="A command to move the cursor right and modify the selection.">
+ Move Right And Modify Selection
+ </message>
+ <message name="IDS_MOVE_WORD_LEFT" desc="A command to move the cursor left to the next word break.">
+ Move Word Left
+ </message>
+ <message name="IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION" desc="A command to move the cursor left to the next word break and modify the selection.">
+ Move Word Left And Modify Selection
+ </message>
+ <message name="IDS_MOVE_WORD_RIGHT" desc="A command to move the cursor right to the next word break.">
+ Move Word Right
+ </message>
+ <message name="IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION" desc="A command to move the cursor right to the next word break and modify the selection.">
+ Move Word Right And Modify Selection
+ </message>
+ <message name="IDS_MOVE_TO_BEGINNING_OF_LINE" desc="A command to move the cursor to the beginning of the line.">
+ Move To Beginning Of Line
+ </message>
+ <message name="IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION" desc="A command to move the cursor to the beginning of the line and modify the selection.">
+ Move To Beginning Of Line And Modify Selection
+ </message>
+ <message name="IDS_MOVE_TO_END_OF_LINE" desc="A command to move the cursor to the end of the line.">
+ Move To End Of Line
+ </message>
+ <message name="IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION" desc="A command to move the cursor to the end of the line and modify the selection.">
+ Move To End Of Line And Modify Selection
+ </message>
+ <message name="IDS_APP_REDO" desc="A command to redo an action.">
+ Redo
+ </message>
+
<!-- Generic terms -->
<message name="IDS_APP_OK" desc="Used for Ok on buttons">
OK
diff --git a/ui/base/strings/ui_strings.gyp b/ui/base/strings/ui_strings.gyp
index a9f2bf77f0..1fee51929f 100644
--- a/ui/base/strings/ui_strings.gyp
+++ b/ui/base/strings/ui_strings.gyp
@@ -37,53 +37,4 @@
},
},
],
- 'conditions': [
- ['OS != "mac"', {
- 'targets': [{
- 'target_name': 'ui_unittest_strings',
- 'type': 'none',
- 'dependencies': [
- 'ui_strings',
- ],
- 'variables': {
- 'repack_path': '<(DEPTH)/tools/grit/grit/format/repack.py',
- 'conditions': [
- ['OS == "ios"', {
- 'pak_output': '<(PRODUCT_DIR)/ui_unittests_strings/en.lproj/locale.pak',
- }, {
- 'pak_output': '<(PRODUCT_DIR)/ui_unittests_strings/en-US.pak',
- }],
- ],
- },
- 'actions': [
- {
- 'action_name': 'repack_ui_unittest_strings',
- 'variables': {
- 'pak_inputs': [
- '<(grit_base_out_dir)/ui_strings/ui_strings_en-US.pak',
- '<(grit_base_out_dir)/app_locale_settings/app_locale_settings_en-US.pak',
- ],
- },
- 'inputs': [
- '<(repack_path)',
- '<@(pak_inputs)',
- ],
- 'outputs': [
- '<(pak_output)',
- ],
- 'action': ['python', '<(repack_path)', '<@(_outputs)',
- '<@(pak_inputs)'],
- },
- ],
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/ui_unittests_strings',
- 'files': [
- '<(grit_base_out_dir)/ui_resources/ui_resources_100_percent.pak',
- ],
- },
- ],
- }],
- }],
- ],
}
diff --git a/ui/base/strings/ui_strings.target.darwin-x86.mk b/ui/base/strings/ui_strings.target.darwin-x86.mk
index 0c8238e2bd..139194e1f6 100644
--- a/ui/base/strings/ui_strings.target.darwin-x86.mk
+++ b/ui/base/strings/ui_strings.target.darwin-x86.mk
@@ -20,7 +20,7 @@ $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h: gyp_shared_inter
$(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
$(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/base/strings/ui_strings.grd $(LOCAL_PATH)/ui/base/strings/ui_strings_am.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ar.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_bg.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_bn.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ca.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_cs.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_da.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_de.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_el.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_en-GB.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_es-419.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_es.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_et.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_fa.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_fi.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_fil.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_fr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_gu.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_hi.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_hr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_hu.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_id.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_it.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_iw.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ja.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_kn.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ko.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_lt.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_lv.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ml.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_mr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ms.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_nl.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_no.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_pl.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_pt-BR.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_pt-PT.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ro.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ru.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sk.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sl.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sv.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sw.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ta.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_te.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_th.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_tr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_uk.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_vi.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_zh-CN.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_zh-TW.xtb $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: Generating resources from ui_strings.grd ($@)"
- $(hide)cd $(gyp_local_path)/ui/base/strings; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_strings $(gyp_shared_intermediate_dir)/ui/ui_strings/grit; python ../../../tools/grit/grit.py -i ui_strings.grd build -f ../../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_strings" -D _chromium -E "CHROMIUM_BUILD=chromium" -D use_webaudio_enable_message -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+ $(hide)cd $(gyp_local_path)/ui/base/strings; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_strings $(gyp_shared_intermediate_dir)/ui/ui_strings/grit; python ../../../tools/grit/grit.py -i ui_strings.grd build -f ../../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_strings" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_am.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ar.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
@@ -84,7 +84,7 @@ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h
$(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
$(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/base/strings/app_locale_settings.grd $(LOCAL_PATH)/ui/base/strings/app_locale_settings_am.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ar.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_bg.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_bn.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ca.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_cs.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_da.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_de.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_el.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_en-GB.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_es-419.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_es.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_et.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_fa.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_fi.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_fil.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_fr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_gu.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_he.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_hi.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_hr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_hu.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_id.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_it.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ja.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_kn.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ko.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_lt.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_lv.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ml.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_mr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ms.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_nb.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_nl.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_pl.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_pt-BR.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_pt-PT.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ro.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ru.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sk.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sl.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sv.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sw.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ta.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_te.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_th.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_tr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_uk.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_vi.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_zh-CN.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_zh-TW.xtb $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: Generating resources from app_locale_settings.grd ($@)"
- $(hide)cd $(gyp_local_path)/ui/base/strings; mkdir -p $(gyp_shared_intermediate_dir)/ui/app_locale_settings $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit; python ../../../tools/grit/grit.py -i app_locale_settings.grd build -f ../../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/app_locale_settings" -D _chromium -E "CHROMIUM_BUILD=chromium" -D use_webaudio_enable_message -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+ $(hide)cd $(gyp_local_path)/ui/base/strings; mkdir -p $(gyp_shared_intermediate_dir)/ui/app_locale_settings $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit; python ../../../tools/grit/grit.py -i app_locale_settings.grd build -f ../../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/app_locale_settings" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_am.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ar.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
diff --git a/ui/base/strings/ui_strings.target.darwin-x86_64.mk b/ui/base/strings/ui_strings.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..139194e1f6
--- /dev/null
+++ b/ui/base/strings/ui_strings.target.darwin-x86_64.mk
@@ -0,0 +1,277 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := ui_base_strings_ui_strings_gyp
+LOCAL_MODULE_STEM := ui_strings
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "ui_strings":
+$(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/base/strings/ui_strings.grd $(LOCAL_PATH)/ui/base/strings/ui_strings_am.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ar.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_bg.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_bn.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ca.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_cs.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_da.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_de.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_el.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_en-GB.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_es-419.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_es.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_et.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_fa.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_fi.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_fil.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_fr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_gu.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_hi.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_hr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_hu.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_id.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_it.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_iw.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ja.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_kn.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ko.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_lt.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_lv.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ml.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_mr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ms.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_nl.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_no.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_pl.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_pt-BR.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_pt-PT.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ro.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ru.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sk.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sl.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sv.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sw.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ta.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_te.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_th.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_tr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_uk.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_vi.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_zh-CN.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_zh-TW.xtb $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating resources from ui_strings.grd ($@)"
+ $(hide)cd $(gyp_local_path)/ui/base/strings; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_strings $(gyp_shared_intermediate_dir)/ui/ui_strings/grit; python ../../../tools/grit/grit.py -i ui_strings.grd build -f ../../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_strings" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_am.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ar.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_bg.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_bn.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ca.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_cs.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_da.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_de.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_el.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_en-GB.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_en-US.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_es.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_es-419.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_et.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fa.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fake-bidi.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fi.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fil.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fr.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_gu.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_he.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_hi.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_hr.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_hu.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_id.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_it.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ja.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_kn.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ko.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_lt.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_lv.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ml.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_mr.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ms.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_nl.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_nb.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_pl.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_pt-BR.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_pt-PT.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ro.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ru.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sk.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sl.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sr.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sv.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sw.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ta.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_te.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_th.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_tr.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_uk.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_vi.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_zh-CN.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_zh-TW.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+
+### Rules for action "app_locale_settings":
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/base/strings/app_locale_settings.grd $(LOCAL_PATH)/ui/base/strings/app_locale_settings_am.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ar.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_bg.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_bn.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ca.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_cs.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_da.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_de.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_el.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_en-GB.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_es-419.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_es.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_et.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_fa.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_fi.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_fil.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_fr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_gu.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_he.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_hi.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_hr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_hu.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_id.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_it.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ja.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_kn.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ko.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_lt.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_lv.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ml.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_mr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ms.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_nb.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_nl.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_pl.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_pt-BR.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_pt-PT.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ro.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ru.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sk.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sl.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sv.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sw.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ta.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_te.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_th.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_tr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_uk.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_vi.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_zh-CN.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_zh-TW.xtb $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating resources from app_locale_settings.grd ($@)"
+ $(hide)cd $(gyp_local_path)/ui/base/strings; mkdir -p $(gyp_shared_intermediate_dir)/ui/app_locale_settings $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit; python ../../../tools/grit/grit.py -i app_locale_settings.grd build -f ../../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/app_locale_settings" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_am.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ar.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_bg.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_bn.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ca.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_cs.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_da.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_de.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_el.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_en-GB.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_en-US.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_es.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_es-419.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_et.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fa.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fake-bidi.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fi.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fil.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fr.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_gu.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_he.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_hi.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_hr.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_hu.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_id.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_it.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ja.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_kn.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ko.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_lt.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_lv.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ml.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_mr.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ms.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_nl.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_nb.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_pl.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_pt-BR.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_pt-PT.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ro.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ru.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sk.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sl.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sr.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sv.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sw.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ta.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_te.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_th.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_tr.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_uk.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_vi.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_zh-CN.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_zh-TW.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_am.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ar.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_bg.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_bn.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ca.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_cs.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_da.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_de.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_el.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_en-GB.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_en-US.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_es.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_es-419.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_et.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fa.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fake-bidi.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fi.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fil.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fr.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_gu.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_he.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_hi.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_hr.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_hu.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_id.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_it.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ja.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_kn.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ko.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_lt.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_lv.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ml.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_mr.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ms.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_nl.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_nb.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_pl.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_pt-BR.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_pt-PT.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ro.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ru.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sk.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sl.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sr.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sv.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sw.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ta.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_te.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_th.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_tr.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_uk.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_vi.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_zh-CN.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_zh-TW.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_am.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ar.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_bg.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_bn.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ca.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_cs.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_da.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_de.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_el.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_en-GB.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_en-US.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_es.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_es-419.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_et.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fa.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fake-bidi.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fi.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fil.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fr.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_gu.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_he.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_hi.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_hr.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_hu.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_id.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_it.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ja.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_kn.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ko.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_lt.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_lv.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ml.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_mr.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ms.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_nl.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_nb.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_pl.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_pt-BR.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_pt-PT.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ro.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ru.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sk.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sl.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sr.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sv.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sw.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ta.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_te.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_th.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_tr.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_uk.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_vi.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_zh-CN.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_zh-TW.pak
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_base_strings_ui_strings_gyp
+
+# Alias gyp target name.
+.PHONY: ui_strings
+ui_strings: ui_base_strings_ui_strings_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/ui/base/strings/ui_strings.target.linux-x86.mk b/ui/base/strings/ui_strings.target.linux-x86.mk
index 0c8238e2bd..139194e1f6 100644
--- a/ui/base/strings/ui_strings.target.linux-x86.mk
+++ b/ui/base/strings/ui_strings.target.linux-x86.mk
@@ -20,7 +20,7 @@ $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h: gyp_shared_inter
$(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
$(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/base/strings/ui_strings.grd $(LOCAL_PATH)/ui/base/strings/ui_strings_am.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ar.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_bg.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_bn.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ca.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_cs.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_da.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_de.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_el.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_en-GB.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_es-419.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_es.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_et.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_fa.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_fi.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_fil.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_fr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_gu.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_hi.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_hr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_hu.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_id.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_it.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_iw.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ja.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_kn.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ko.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_lt.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_lv.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ml.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_mr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ms.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_nl.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_no.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_pl.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_pt-BR.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_pt-PT.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ro.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ru.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sk.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sl.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sv.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sw.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ta.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_te.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_th.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_tr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_uk.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_vi.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_zh-CN.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_zh-TW.xtb $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: Generating resources from ui_strings.grd ($@)"
- $(hide)cd $(gyp_local_path)/ui/base/strings; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_strings $(gyp_shared_intermediate_dir)/ui/ui_strings/grit; python ../../../tools/grit/grit.py -i ui_strings.grd build -f ../../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_strings" -D _chromium -E "CHROMIUM_BUILD=chromium" -D use_webaudio_enable_message -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+ $(hide)cd $(gyp_local_path)/ui/base/strings; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_strings $(gyp_shared_intermediate_dir)/ui/ui_strings/grit; python ../../../tools/grit/grit.py -i ui_strings.grd build -f ../../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_strings" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_am.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ar.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
@@ -84,7 +84,7 @@ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h
$(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
$(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/base/strings/app_locale_settings.grd $(LOCAL_PATH)/ui/base/strings/app_locale_settings_am.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ar.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_bg.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_bn.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ca.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_cs.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_da.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_de.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_el.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_en-GB.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_es-419.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_es.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_et.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_fa.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_fi.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_fil.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_fr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_gu.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_he.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_hi.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_hr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_hu.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_id.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_it.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ja.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_kn.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ko.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_lt.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_lv.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ml.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_mr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ms.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_nb.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_nl.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_pl.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_pt-BR.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_pt-PT.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ro.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ru.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sk.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sl.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sv.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sw.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ta.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_te.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_th.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_tr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_uk.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_vi.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_zh-CN.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_zh-TW.xtb $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: Generating resources from app_locale_settings.grd ($@)"
- $(hide)cd $(gyp_local_path)/ui/base/strings; mkdir -p $(gyp_shared_intermediate_dir)/ui/app_locale_settings $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit; python ../../../tools/grit/grit.py -i app_locale_settings.grd build -f ../../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/app_locale_settings" -D _chromium -E "CHROMIUM_BUILD=chromium" -D use_webaudio_enable_message -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+ $(hide)cd $(gyp_local_path)/ui/base/strings; mkdir -p $(gyp_shared_intermediate_dir)/ui/app_locale_settings $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit; python ../../../tools/grit/grit.py -i app_locale_settings.grd build -f ../../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/app_locale_settings" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_am.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ar.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
diff --git a/ui/base/strings/ui_strings.target.linux-x86_64.mk b/ui/base/strings/ui_strings.target.linux-x86_64.mk
new file mode 100644
index 0000000000..139194e1f6
--- /dev/null
+++ b/ui/base/strings/ui_strings.target.linux-x86_64.mk
@@ -0,0 +1,277 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := ui_base_strings_ui_strings_gyp
+LOCAL_MODULE_STEM := ui_strings
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "ui_strings":
+$(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/base/strings/ui_strings.grd $(LOCAL_PATH)/ui/base/strings/ui_strings_am.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ar.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_bg.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_bn.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ca.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_cs.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_da.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_de.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_el.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_en-GB.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_es-419.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_es.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_et.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_fa.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_fi.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_fil.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_fr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_gu.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_hi.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_hr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_hu.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_id.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_it.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_iw.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ja.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_kn.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ko.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_lt.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_lv.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ml.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_mr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ms.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_nl.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_no.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_pl.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_pt-BR.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_pt-PT.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ro.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ru.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sk.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sl.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sv.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_sw.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_ta.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_te.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_th.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_tr.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_uk.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_vi.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_zh-CN.xtb $(LOCAL_PATH)/ui/base/strings/ui_strings_zh-TW.xtb $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating resources from ui_strings.grd ($@)"
+ $(hide)cd $(gyp_local_path)/ui/base/strings; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_strings $(gyp_shared_intermediate_dir)/ui/ui_strings/grit; python ../../../tools/grit/grit.py -i ui_strings.grd build -f ../../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_strings" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_am.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ar.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_bg.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_bn.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ca.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_cs.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_da.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_de.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_el.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_en-GB.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_en-US.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_es.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_es-419.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_et.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fa.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fake-bidi.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fi.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fil.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fr.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_gu.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_he.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_hi.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_hr.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_hu.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_id.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_it.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ja.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_kn.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ko.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_lt.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_lv.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ml.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_mr.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ms.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_nl.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_nb.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_pl.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_pt-BR.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_pt-PT.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ro.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ru.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sk.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sl.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sr.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sv.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sw.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ta.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_te.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_th.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_tr.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_uk.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_vi.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_zh-CN.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_zh-TW.pak: $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h ;
+
+### Rules for action "app_locale_settings":
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/base/strings/app_locale_settings.grd $(LOCAL_PATH)/ui/base/strings/app_locale_settings_am.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ar.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_bg.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_bn.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ca.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_cs.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_da.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_de.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_el.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_en-GB.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_es-419.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_es.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_et.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_fa.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_fi.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_fil.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_fr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_gu.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_he.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_hi.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_hr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_hu.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_id.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_it.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ja.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_kn.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ko.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_lt.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_lv.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ml.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_mr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ms.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_nb.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_nl.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_pl.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_pt-BR.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_pt-PT.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ro.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ru.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sk.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sl.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sv.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_sw.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_ta.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_te.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_th.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_tr.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_uk.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_vi.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_zh-CN.xtb $(LOCAL_PATH)/ui/base/strings/app_locale_settings_zh-TW.xtb $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating resources from app_locale_settings.grd ($@)"
+ $(hide)cd $(gyp_local_path)/ui/base/strings; mkdir -p $(gyp_shared_intermediate_dir)/ui/app_locale_settings $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit; python ../../../tools/grit/grit.py -i app_locale_settings.grd build -f ../../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/app_locale_settings" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_am.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ar.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_bg.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_bn.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ca.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_cs.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_da.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_de.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_el.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_en-GB.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_en-US.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_es.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_es-419.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_et.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fa.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fake-bidi.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fi.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fil.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fr.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_gu.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_he.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_hi.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_hr.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_hu.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_id.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_it.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ja.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_kn.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ko.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_lt.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_lv.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ml.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_mr.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ms.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_nl.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_nb.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_pl.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_pt-BR.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_pt-PT.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ro.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ru.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sk.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sl.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sr.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sv.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sw.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ta.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_te.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_th.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_tr.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_uk.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_vi.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_zh-CN.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+$(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_zh-TW.pak: $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h ;
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/grit/ui_strings.h \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_am.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ar.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_bg.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_bn.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ca.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_cs.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_da.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_de.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_el.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_en-GB.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_en-US.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_es.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_es-419.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_et.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fa.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fake-bidi.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fi.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fil.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_fr.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_gu.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_he.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_hi.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_hr.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_hu.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_id.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_it.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ja.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_kn.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ko.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_lt.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_lv.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ml.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_mr.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ms.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_nl.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_nb.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_pl.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_pt-BR.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_pt-PT.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ro.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ru.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sk.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sl.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sr.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sv.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_sw.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_ta.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_te.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_th.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_tr.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_uk.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_vi.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_zh-CN.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings/ui_strings_zh-TW.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/grit/app_locale_settings.h \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_am.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ar.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_bg.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_bn.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ca.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_cs.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_da.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_de.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_el.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_en-GB.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_en-US.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_es.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_es-419.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_et.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fa.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fake-bidi.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fi.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fil.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_fr.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_gu.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_he.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_hi.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_hr.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_hu.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_id.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_it.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ja.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_kn.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ko.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_lt.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_lv.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ml.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_mr.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ms.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_nl.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_nb.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_pl.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_pt-BR.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_pt-PT.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ro.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ru.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sk.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sl.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sr.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sv.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_sw.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_ta.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_te.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_th.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_tr.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_uk.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_vi.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_zh-CN.pak \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings/app_locale_settings_zh-TW.pak
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_base_strings_ui_strings_gyp
+
+# Alias gyp target name.
+.PHONY: ui_strings
+ui_strings: ui_base_strings_ui_strings_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/ui/base/strings/ui_strings_am.xtb b/ui/base/strings/ui_strings_am.xtb
index 9d218d9a60..349f686bd1 100644
--- a/ui/base/strings/ui_strings_am.xtb
+++ b/ui/base/strings/ui_strings_am.xtb
@@ -20,7 +20,7 @@
<translation id="7511635910912978956"><ph name="NUMBER_FEW"/> ሰዓቶች ይቀራሉ</translation>
<translation id="8717309436826820190"><ph name="NUMBER_OF_NOTIFICATIONS"/> ተጨማሪ ከ<ph name="SOURCE_OF_NOTIFICATIONS"/></translation>
<translation id="5948410903763073882">Alt+<ph name="KEY_COMBO_NAME"/></translation>
-<translation id="7658239707568436148">ሰርዝ</translation>
+<translation id="7658239707568436148">ይቅር</translation>
<translation id="7222373446505536781">F11</translation>
<translation id="1761785978543082658"><ph name="QUANTITY"/> ባ</translation>
<translation id="3660179305079774227">የላይ ቀስት</translation>
diff --git a/ui/base/strings/ui_strings_th.xtb b/ui/base/strings/ui_strings_th.xtb
index 639298f204..a3fb41976b 100644
--- a/ui/base/strings/ui_strings_th.xtb
+++ b/ui/base/strings/ui_strings_th.xtb
@@ -186,7 +186,7 @@
<translation id="3759876923365568382">เหลือ <ph name="NUMBER_FEW"/> วัน</translation>
<translation id="6907759265145635167"><ph name="QUANTITY"/> PB/วินาที</translation>
<translation id="2743387203779672305">คัดลอกไว้ที่คลิปบอร์ด</translation>
-<translation id="8371695176452482769">พูดเดี๋ยวนี้</translation>
+<translation id="8371695176452482769">เชิญพูดเลย</translation>
<translation id="6965382102122355670">ตกลง</translation>
<translation id="7850320739366109486">ห้ามรบกวน</translation>
<translation id="6978839998405419496"><ph name="NUMBER_ZERO"/> days ago</translation>
diff --git a/ui/base/test/run_all_unittests.cc b/ui/base/test/run_all_unittests.cc
index 9d40ebbf0b..8573da0850 100644
--- a/ui/base/test/run_all_unittests.cc
+++ b/ui/base/test/run_all_unittests.cc
@@ -75,10 +75,8 @@ void UIBaseTestSuite::Initialize() {
exe_path.AppendASCII("ui_test.pak"));
// ui_unittests can't depend on the locales folder which Chrome will make
- // later, so use the path created by ui_unittest_strings.
- PathService::Override(
- ui::DIR_LOCALES,
- exe_path.AppendASCII("ui_unittests_strings"));
+ // later, so use the path created by ui_test_pak.
+ PathService::Override(ui::DIR_LOCALES, exe_path.AppendASCII("ui"));
#endif
}
diff --git a/ui/base/ui_base.gyp b/ui/base/ui_base.gyp
index cab62df59b..16737cba83 100644
--- a/ui/base/ui_base.gyp
+++ b/ui/base/ui_base.gyp
@@ -129,6 +129,8 @@
'cursor/cursor_loader_x11.h',
'cursor/cursor_ozone.cc',
'cursor/cursor_mac.mm',
+ 'cursor/cursor_util.cc',
+ 'cursor/cursor_util.h',
'cursor/cursor_win.cc',
'cursor/cursor_x11.cc',
'cursor/cursors_aura.cc',
@@ -158,6 +160,8 @@
'dragdrop/drop_target_event.h',
'dragdrop/drop_target_win.cc',
'dragdrop/drop_target_win.h',
+ 'dragdrop/file_info.cc',
+ 'dragdrop/file_info.h',
'dragdrop/gtk_dnd_util.cc',
'dragdrop/gtk_dnd_util.h',
'dragdrop/os_exchange_data.cc',
@@ -326,6 +330,8 @@
'x/selection_utils.h',
'x/work_area_watcher_x.cc',
'x/work_area_watcher_x.h',
+ 'x/x11_menu_list.cc',
+ 'x/x11_menu_list.h',
'x/x11_util.cc',
'x/x11_util.h',
'x/x11_util_internal.h',
@@ -601,15 +607,6 @@
}],
],
},
- {
- 'target_name': 'webui_test_support',
- 'type': 'none',
- 'direct_dependent_settings': {
- 'include_dirs': [
- '<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources',
- ]
- }
- },
],
'conditions': [
['OS=="android"' , {
diff --git a/ui/base/ui_base.target.darwin-arm.mk b/ui/base/ui_base.target.darwin-arm.mk
index b499c74cc6..ce3623040a 100644
--- a/ui/base/ui_base.target.darwin-arm.mk
+++ b/ui/base/ui_base.target.darwin-arm.mk
@@ -41,7 +41,9 @@ LOCAL_SRC_FILES := \
ui/base/clipboard/clipboard_constants.cc \
ui/base/clipboard/custom_data_helper.cc \
ui/base/clipboard/scoped_clipboard_writer.cc \
+ ui/base/cursor/cursor_util.cc \
ui/base/device_form_factor_android.cc \
+ ui/base/dragdrop/file_info.cc \
ui/base/l10n/formatter.cc \
ui/base/l10n/l10n_util.cc \
ui/base/l10n/l10n_util_android.cc \
@@ -139,9 +141,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -150,6 +150,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -263,9 +264,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -274,6 +273,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/base/ui_base.target.darwin-mips.mk b/ui/base/ui_base.target.darwin-mips.mk
index e9533e1811..7dcf3662be 100644
--- a/ui/base/ui_base.target.darwin-mips.mk
+++ b/ui/base/ui_base.target.darwin-mips.mk
@@ -41,7 +41,9 @@ LOCAL_SRC_FILES := \
ui/base/clipboard/clipboard_constants.cc \
ui/base/clipboard/custom_data_helper.cc \
ui/base/clipboard/scoped_clipboard_writer.cc \
+ ui/base/cursor/cursor_util.cc \
ui/base/device_form_factor_android.cc \
+ ui/base/dragdrop/file_info.cc \
ui/base/l10n/formatter.cc \
ui/base/l10n/l10n_util.cc \
ui/base/l10n/l10n_util_android.cc \
@@ -138,9 +140,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -149,6 +149,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -261,9 +262,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -272,6 +271,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/base/ui_base.target.darwin-x86.mk b/ui/base/ui_base.target.darwin-x86.mk
index 37c23fb569..deb89df3b5 100644
--- a/ui/base/ui_base.target.darwin-x86.mk
+++ b/ui/base/ui_base.target.darwin-x86.mk
@@ -41,7 +41,9 @@ LOCAL_SRC_FILES := \
ui/base/clipboard/clipboard_constants.cc \
ui/base/clipboard/custom_data_helper.cc \
ui/base/clipboard/scoped_clipboard_writer.cc \
+ ui/base/cursor/cursor_util.cc \
ui/base/device_form_factor_android.cc \
+ ui/base/dragdrop/file_info.cc \
ui/base/l10n/formatter.cc \
ui/base/l10n/l10n_util.cc \
ui/base/l10n/l10n_util_android.cc \
@@ -139,9 +141,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -150,6 +150,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -262,9 +263,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -273,6 +272,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/base/ui_base.target.darwin-x86_64.mk b/ui/base/ui_base.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..b25b8becca
--- /dev/null
+++ b/ui/base/ui_base.target.darwin-x86_64.mk
@@ -0,0 +1,390 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_base_ui_base_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,skia_skia_gyp)/skia.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a \
+ $(call intermediates-dir-for,GYP,third_party_icu_icui18n_gyp)/icui18n.stamp \
+ $(call intermediates-dir-for,GYP,third_party_icu_icuuc_gyp)/icuuc.stamp \
+ $(call intermediates-dir-for,GYP,ui_resources_ui_resources_gyp)/ui_resources.stamp \
+ $(call intermediates-dir-for,GYP,ui_base_strings_ui_strings_gyp)/ui_strings.stamp \
+ $(call intermediates-dir-for,GYP,ui_base_ui_base_jni_headers_gyp)/ui_base_jni_headers.stamp
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/base/accelerators/accelerator.cc \
+ ui/base/accelerators/accelerator_manager.cc \
+ ui/base/android/ui_base_jni_registrar.cc \
+ ui/base/android/view_android.cc \
+ ui/base/android/window_android.cc \
+ ui/base/base_window.cc \
+ ui/base/clipboard/clipboard.cc \
+ ui/base/clipboard/clipboard_android.cc \
+ ui/base/clipboard/clipboard_constants.cc \
+ ui/base/clipboard/custom_data_helper.cc \
+ ui/base/clipboard/scoped_clipboard_writer.cc \
+ ui/base/cursor/cursor_util.cc \
+ ui/base/device_form_factor_android.cc \
+ ui/base/dragdrop/file_info.cc \
+ ui/base/l10n/formatter.cc \
+ ui/base/l10n/l10n_util.cc \
+ ui/base/l10n/l10n_util_android.cc \
+ ui/base/l10n/l10n_util_plurals.cc \
+ ui/base/l10n/l10n_util_posix.cc \
+ ui/base/l10n/time_format.cc \
+ ui/base/layout.cc \
+ ui/base/models/combobox_model.cc \
+ ui/base/models/list_selection_model.cc \
+ ui/base/models/menu_model.cc \
+ ui/base/models/simple_menu_model.cc \
+ ui/base/models/table_model.cc \
+ ui/base/models/tree_model.cc \
+ ui/base/resource/data_pack.cc \
+ ui/base/resource/resource_bundle.cc \
+ ui/base/resource/resource_bundle_android.cc \
+ ui/base/text/bytes_formatting.cc \
+ ui/base/touch/touch_device_android.cc \
+ ui/base/touch/touch_enabled.cc \
+ ui/base/ui_base_exports.cc \
+ ui/base/ui_base_paths.cc \
+ ui/base/ui_base_switches.cc \
+ ui/base/ui_base_switches_util.cc \
+ ui/base/webui/jstemplate_builder.cc \
+ ui/base/webui/web_ui_util.cc \
+ ui/base/window_open_disposition.cc \
+ ui/base/ime/candidate_window.cc \
+ ui/base/ime/composition_text.cc \
+ ui/base/ime/dummy_input_method_delegate.cc \
+ ui/base/ime/infolist_entry.cc \
+ ui/base/ime/input_method_base.cc \
+ ui/base/ime/input_method_initializer.cc \
+ ui/base/ime/mock_input_method.cc \
+ ui/base/ime/text_input_client.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUI_BASE_IMPLEMENTATION' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings \
+ $(gyp_shared_intermediate_dir)/ui \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUI_BASE_IMPLEMENTATION' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings \
+ $(gyp_shared_intermediate_dir)/ui \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_base_ui_base_gyp
+
+# Alias gyp target name.
+.PHONY: ui_base
+ui_base: ui_base_ui_base_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/base/ui_base.target.linux-arm.mk b/ui/base/ui_base.target.linux-arm.mk
index b499c74cc6..ce3623040a 100644
--- a/ui/base/ui_base.target.linux-arm.mk
+++ b/ui/base/ui_base.target.linux-arm.mk
@@ -41,7 +41,9 @@ LOCAL_SRC_FILES := \
ui/base/clipboard/clipboard_constants.cc \
ui/base/clipboard/custom_data_helper.cc \
ui/base/clipboard/scoped_clipboard_writer.cc \
+ ui/base/cursor/cursor_util.cc \
ui/base/device_form_factor_android.cc \
+ ui/base/dragdrop/file_info.cc \
ui/base/l10n/formatter.cc \
ui/base/l10n/l10n_util.cc \
ui/base/l10n/l10n_util_android.cc \
@@ -139,9 +141,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -150,6 +150,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -263,9 +264,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -274,6 +273,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/base/ui_base.target.linux-mips.mk b/ui/base/ui_base.target.linux-mips.mk
index e9533e1811..7dcf3662be 100644
--- a/ui/base/ui_base.target.linux-mips.mk
+++ b/ui/base/ui_base.target.linux-mips.mk
@@ -41,7 +41,9 @@ LOCAL_SRC_FILES := \
ui/base/clipboard/clipboard_constants.cc \
ui/base/clipboard/custom_data_helper.cc \
ui/base/clipboard/scoped_clipboard_writer.cc \
+ ui/base/cursor/cursor_util.cc \
ui/base/device_form_factor_android.cc \
+ ui/base/dragdrop/file_info.cc \
ui/base/l10n/formatter.cc \
ui/base/l10n/l10n_util.cc \
ui/base/l10n/l10n_util_android.cc \
@@ -138,9 +140,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -149,6 +149,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -261,9 +262,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -272,6 +271,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/base/ui_base.target.linux-x86.mk b/ui/base/ui_base.target.linux-x86.mk
index 37c23fb569..deb89df3b5 100644
--- a/ui/base/ui_base.target.linux-x86.mk
+++ b/ui/base/ui_base.target.linux-x86.mk
@@ -41,7 +41,9 @@ LOCAL_SRC_FILES := \
ui/base/clipboard/clipboard_constants.cc \
ui/base/clipboard/custom_data_helper.cc \
ui/base/clipboard/scoped_clipboard_writer.cc \
+ ui/base/cursor/cursor_util.cc \
ui/base/device_form_factor_android.cc \
+ ui/base/dragdrop/file_info.cc \
ui/base/l10n/formatter.cc \
ui/base/l10n/l10n_util.cc \
ui/base/l10n/l10n_util_android.cc \
@@ -139,9 +141,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -150,6 +150,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -262,9 +263,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -273,6 +272,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/base/ui_base.target.linux-x86_64.mk b/ui/base/ui_base.target.linux-x86_64.mk
new file mode 100644
index 0000000000..b25b8becca
--- /dev/null
+++ b/ui/base/ui_base.target.linux-x86_64.mk
@@ -0,0 +1,390 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_base_ui_base_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,skia_skia_gyp)/skia.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a \
+ $(call intermediates-dir-for,GYP,third_party_icu_icui18n_gyp)/icui18n.stamp \
+ $(call intermediates-dir-for,GYP,third_party_icu_icuuc_gyp)/icuuc.stamp \
+ $(call intermediates-dir-for,GYP,ui_resources_ui_resources_gyp)/ui_resources.stamp \
+ $(call intermediates-dir-for,GYP,ui_base_strings_ui_strings_gyp)/ui_strings.stamp \
+ $(call intermediates-dir-for,GYP,ui_base_ui_base_jni_headers_gyp)/ui_base_jni_headers.stamp
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/base/accelerators/accelerator.cc \
+ ui/base/accelerators/accelerator_manager.cc \
+ ui/base/android/ui_base_jni_registrar.cc \
+ ui/base/android/view_android.cc \
+ ui/base/android/window_android.cc \
+ ui/base/base_window.cc \
+ ui/base/clipboard/clipboard.cc \
+ ui/base/clipboard/clipboard_android.cc \
+ ui/base/clipboard/clipboard_constants.cc \
+ ui/base/clipboard/custom_data_helper.cc \
+ ui/base/clipboard/scoped_clipboard_writer.cc \
+ ui/base/cursor/cursor_util.cc \
+ ui/base/device_form_factor_android.cc \
+ ui/base/dragdrop/file_info.cc \
+ ui/base/l10n/formatter.cc \
+ ui/base/l10n/l10n_util.cc \
+ ui/base/l10n/l10n_util_android.cc \
+ ui/base/l10n/l10n_util_plurals.cc \
+ ui/base/l10n/l10n_util_posix.cc \
+ ui/base/l10n/time_format.cc \
+ ui/base/layout.cc \
+ ui/base/models/combobox_model.cc \
+ ui/base/models/list_selection_model.cc \
+ ui/base/models/menu_model.cc \
+ ui/base/models/simple_menu_model.cc \
+ ui/base/models/table_model.cc \
+ ui/base/models/tree_model.cc \
+ ui/base/resource/data_pack.cc \
+ ui/base/resource/resource_bundle.cc \
+ ui/base/resource/resource_bundle_android.cc \
+ ui/base/text/bytes_formatting.cc \
+ ui/base/touch/touch_device_android.cc \
+ ui/base/touch/touch_enabled.cc \
+ ui/base/ui_base_exports.cc \
+ ui/base/ui_base_paths.cc \
+ ui/base/ui_base_switches.cc \
+ ui/base/ui_base_switches_util.cc \
+ ui/base/webui/jstemplate_builder.cc \
+ ui/base/webui/web_ui_util.cc \
+ ui/base/window_open_disposition.cc \
+ ui/base/ime/candidate_window.cc \
+ ui/base/ime/composition_text.cc \
+ ui/base/ime/dummy_input_method_delegate.cc \
+ ui/base/ime/infolist_entry.cc \
+ ui/base/ime/input_method_base.cc \
+ ui/base/ime/input_method_initializer.cc \
+ ui/base/ime/mock_input_method.cc \
+ ui/base/ime/text_input_client.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUI_BASE_IMPLEMENTATION' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings \
+ $(gyp_shared_intermediate_dir)/ui \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUI_BASE_IMPLEMENTATION' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings \
+ $(gyp_shared_intermediate_dir)/ui \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_base_ui_base_gyp
+
+# Alias gyp target name.
+.PHONY: ui_base
+ui_base: ui_base_ui_base_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/base/ui_base_jni_headers.target.darwin-arm.mk b/ui/base/ui_base_jni_headers.target.darwin-arm.mk
index 584e853965..4e565eaef4 100644
--- a/ui/base/ui_base_jni_headers.target.darwin-arm.mk
+++ b/ui/base/ui_base_jni_headers.target.darwin-arm.mk
@@ -155,6 +155,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -237,6 +238,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/base/ui_base_jni_headers.target.darwin-mips.mk b/ui/base/ui_base_jni_headers.target.darwin-mips.mk
index 0e4e185d04..eafcb07f94 100644
--- a/ui/base/ui_base_jni_headers.target.darwin-mips.mk
+++ b/ui/base/ui_base_jni_headers.target.darwin-mips.mk
@@ -154,6 +154,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -235,6 +236,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/base/ui_base_jni_headers.target.darwin-x86.mk b/ui/base/ui_base_jni_headers.target.darwin-x86.mk
index 226d36ca41..f2182e731c 100644
--- a/ui/base/ui_base_jni_headers.target.darwin-x86.mk
+++ b/ui/base/ui_base_jni_headers.target.darwin-x86.mk
@@ -156,6 +156,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -238,6 +239,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/base/ui_base_jni_headers.target.darwin-x86_64.mk b/ui/base/ui_base_jni_headers.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..0885c53625
--- /dev/null
+++ b/ui/base/ui_base_jni_headers.target.darwin-x86_64.mk
@@ -0,0 +1,294 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := ui_base_ui_base_jni_headers_gyp
+LOCAL_MODULE_STEM := ui_base_jni_headers
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+
+### Generated for rule "ui_base_ui_base_gyp_ui_base_jni_headers_target_generate_jni_headers":
+# "{'inputs': ['../../base/android/jni_generator/jni_generator.py', '../../android_webview/build/jarjar-rules.txt'], 'process_outputs_as_sources': '1', 'extension': 'java', 'outputs': ['$(gyp_shared_intermediate_dir)/ui/jni/%(INPUT_ROOT)s_jni.h'], 'rule_name': 'generate_jni_headers', 'rule_sources': ['../android/java/src/org/chromium/ui/base/Clipboard.java', '../android/java/src/org/chromium/ui/base/LocalizationUtils.java', '../android/java/src/org/chromium/ui/base/SelectFileDialog.java', '../android/java/src/org/chromium/ui/base/TouchDevice.java', '../android/java/src/org/chromium/ui/base/ViewAndroid.java', '../android/java/src/org/chromium/ui/base/WindowAndroid.java'], 'action': ['../../base/android/jni_generator/jni_generator.py', '--input_file', '$(RULE_SOURCES)', '--output_dir', '$(gyp_shared_intermediate_dir)/ui/jni', '--includes', 'base/android/jni_generator/jni_generator_helper.h', '--optimize_generation', '0', '--jarjar', '../../android_webview/build/jarjar-rules.txt', '--ptr_type', 'long'], 'message': 'Generating JNI bindings from $(RULE_SOURCES)'}":
+$(gyp_shared_intermediate_dir)/ui/jni/Clipboard_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/jni/Clipboard_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/Clipboard_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/Clipboard_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/jni/Clipboard_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/base/Clipboard.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/jni; cd $(gyp_local_path)/ui/base; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/base/Clipboard.java --output_dir "$(gyp_shared_intermediate_dir)/ui/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_base_ui_base_jni_headers_gyp_rule_trigger
+ui_base_ui_base_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/jni/Clipboard_jni.h
+
+$(gyp_shared_intermediate_dir)/ui/jni/LocalizationUtils_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/jni/LocalizationUtils_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/LocalizationUtils_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/LocalizationUtils_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/jni/LocalizationUtils_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/base/LocalizationUtils.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/jni; cd $(gyp_local_path)/ui/base; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/base/LocalizationUtils.java --output_dir "$(gyp_shared_intermediate_dir)/ui/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_base_ui_base_jni_headers_gyp_rule_trigger
+ui_base_ui_base_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/jni/LocalizationUtils_jni.h
+
+$(gyp_shared_intermediate_dir)/ui/jni/SelectFileDialog_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/jni/SelectFileDialog_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/SelectFileDialog_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/SelectFileDialog_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/jni/SelectFileDialog_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/jni; cd $(gyp_local_path)/ui/base; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/base/SelectFileDialog.java --output_dir "$(gyp_shared_intermediate_dir)/ui/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_base_ui_base_jni_headers_gyp_rule_trigger
+ui_base_ui_base_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/jni/SelectFileDialog_jni.h
+
+$(gyp_shared_intermediate_dir)/ui/jni/TouchDevice_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/jni/TouchDevice_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/TouchDevice_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/TouchDevice_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/jni/TouchDevice_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/base/TouchDevice.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/jni; cd $(gyp_local_path)/ui/base; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/base/TouchDevice.java --output_dir "$(gyp_shared_intermediate_dir)/ui/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_base_ui_base_jni_headers_gyp_rule_trigger
+ui_base_ui_base_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/jni/TouchDevice_jni.h
+
+$(gyp_shared_intermediate_dir)/ui/jni/ViewAndroid_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/jni/ViewAndroid_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/ViewAndroid_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/ViewAndroid_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/jni/ViewAndroid_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/base/ViewAndroid.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/jni; cd $(gyp_local_path)/ui/base; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/base/ViewAndroid.java --output_dir "$(gyp_shared_intermediate_dir)/ui/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_base_ui_base_jni_headers_gyp_rule_trigger
+ui_base_ui_base_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/jni/ViewAndroid_jni.h
+
+$(gyp_shared_intermediate_dir)/ui/jni/WindowAndroid_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/jni/WindowAndroid_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/WindowAndroid_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/WindowAndroid_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/jni/WindowAndroid_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/jni; cd $(gyp_local_path)/ui/base; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/base/WindowAndroid.java --output_dir "$(gyp_shared_intermediate_dir)/ui/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_base_ui_base_jni_headers_gyp_rule_trigger
+ui_base_ui_base_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/jni/WindowAndroid_jni.h
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/ui/jni/Clipboard_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/LocalizationUtils_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/SelectFileDialog_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/TouchDevice_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/ViewAndroid_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/WindowAndroid_jni.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_GENERATED_SOURCES := \
+ $(gyp_shared_intermediate_dir)/ui/jni/Clipboard_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/LocalizationUtils_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/SelectFileDialog_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/TouchDevice_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/ViewAndroid_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/WindowAndroid_jni.h \
+ ui_base_ui_base_jni_headers_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_base_ui_base_jni_headers_gyp
+
+# Alias gyp target name.
+.PHONY: ui_base_jni_headers
+ui_base_jni_headers: ui_base_ui_base_jni_headers_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/ui/base/ui_base_jni_headers.target.linux-arm.mk b/ui/base/ui_base_jni_headers.target.linux-arm.mk
index 584e853965..4e565eaef4 100644
--- a/ui/base/ui_base_jni_headers.target.linux-arm.mk
+++ b/ui/base/ui_base_jni_headers.target.linux-arm.mk
@@ -155,6 +155,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -237,6 +238,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/base/ui_base_jni_headers.target.linux-mips.mk b/ui/base/ui_base_jni_headers.target.linux-mips.mk
index 0e4e185d04..eafcb07f94 100644
--- a/ui/base/ui_base_jni_headers.target.linux-mips.mk
+++ b/ui/base/ui_base_jni_headers.target.linux-mips.mk
@@ -154,6 +154,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -235,6 +236,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/base/ui_base_jni_headers.target.linux-x86.mk b/ui/base/ui_base_jni_headers.target.linux-x86.mk
index 226d36ca41..f2182e731c 100644
--- a/ui/base/ui_base_jni_headers.target.linux-x86.mk
+++ b/ui/base/ui_base_jni_headers.target.linux-x86.mk
@@ -156,6 +156,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -238,6 +239,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/base/ui_base_jni_headers.target.linux-x86_64.mk b/ui/base/ui_base_jni_headers.target.linux-x86_64.mk
new file mode 100644
index 0000000000..0885c53625
--- /dev/null
+++ b/ui/base/ui_base_jni_headers.target.linux-x86_64.mk
@@ -0,0 +1,294 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := ui_base_ui_base_jni_headers_gyp
+LOCAL_MODULE_STEM := ui_base_jni_headers
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+
+### Generated for rule "ui_base_ui_base_gyp_ui_base_jni_headers_target_generate_jni_headers":
+# "{'inputs': ['../../base/android/jni_generator/jni_generator.py', '../../android_webview/build/jarjar-rules.txt'], 'process_outputs_as_sources': '1', 'extension': 'java', 'outputs': ['$(gyp_shared_intermediate_dir)/ui/jni/%(INPUT_ROOT)s_jni.h'], 'rule_name': 'generate_jni_headers', 'rule_sources': ['../android/java/src/org/chromium/ui/base/Clipboard.java', '../android/java/src/org/chromium/ui/base/LocalizationUtils.java', '../android/java/src/org/chromium/ui/base/SelectFileDialog.java', '../android/java/src/org/chromium/ui/base/TouchDevice.java', '../android/java/src/org/chromium/ui/base/ViewAndroid.java', '../android/java/src/org/chromium/ui/base/WindowAndroid.java'], 'action': ['../../base/android/jni_generator/jni_generator.py', '--input_file', '$(RULE_SOURCES)', '--output_dir', '$(gyp_shared_intermediate_dir)/ui/jni', '--includes', 'base/android/jni_generator/jni_generator_helper.h', '--optimize_generation', '0', '--jarjar', '../../android_webview/build/jarjar-rules.txt', '--ptr_type', 'long'], 'message': 'Generating JNI bindings from $(RULE_SOURCES)'}":
+$(gyp_shared_intermediate_dir)/ui/jni/Clipboard_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/jni/Clipboard_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/Clipboard_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/Clipboard_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/jni/Clipboard_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/base/Clipboard.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/jni; cd $(gyp_local_path)/ui/base; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/base/Clipboard.java --output_dir "$(gyp_shared_intermediate_dir)/ui/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_base_ui_base_jni_headers_gyp_rule_trigger
+ui_base_ui_base_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/jni/Clipboard_jni.h
+
+$(gyp_shared_intermediate_dir)/ui/jni/LocalizationUtils_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/jni/LocalizationUtils_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/LocalizationUtils_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/LocalizationUtils_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/jni/LocalizationUtils_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/base/LocalizationUtils.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/jni; cd $(gyp_local_path)/ui/base; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/base/LocalizationUtils.java --output_dir "$(gyp_shared_intermediate_dir)/ui/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_base_ui_base_jni_headers_gyp_rule_trigger
+ui_base_ui_base_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/jni/LocalizationUtils_jni.h
+
+$(gyp_shared_intermediate_dir)/ui/jni/SelectFileDialog_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/jni/SelectFileDialog_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/SelectFileDialog_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/SelectFileDialog_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/jni/SelectFileDialog_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/jni; cd $(gyp_local_path)/ui/base; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/base/SelectFileDialog.java --output_dir "$(gyp_shared_intermediate_dir)/ui/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_base_ui_base_jni_headers_gyp_rule_trigger
+ui_base_ui_base_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/jni/SelectFileDialog_jni.h
+
+$(gyp_shared_intermediate_dir)/ui/jni/TouchDevice_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/jni/TouchDevice_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/TouchDevice_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/TouchDevice_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/jni/TouchDevice_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/base/TouchDevice.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/jni; cd $(gyp_local_path)/ui/base; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/base/TouchDevice.java --output_dir "$(gyp_shared_intermediate_dir)/ui/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_base_ui_base_jni_headers_gyp_rule_trigger
+ui_base_ui_base_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/jni/TouchDevice_jni.h
+
+$(gyp_shared_intermediate_dir)/ui/jni/ViewAndroid_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/jni/ViewAndroid_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/ViewAndroid_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/ViewAndroid_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/jni/ViewAndroid_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/base/ViewAndroid.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/jni; cd $(gyp_local_path)/ui/base; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/base/ViewAndroid.java --output_dir "$(gyp_shared_intermediate_dir)/ui/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_base_ui_base_jni_headers_gyp_rule_trigger
+ui_base_ui_base_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/jni/ViewAndroid_jni.h
+
+$(gyp_shared_intermediate_dir)/ui/jni/WindowAndroid_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/jni/WindowAndroid_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/WindowAndroid_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/jni/WindowAndroid_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/jni/WindowAndroid_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/jni; cd $(gyp_local_path)/ui/base; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/base/WindowAndroid.java --output_dir "$(gyp_shared_intermediate_dir)/ui/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_base_ui_base_jni_headers_gyp_rule_trigger
+ui_base_ui_base_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/jni/WindowAndroid_jni.h
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/ui/jni/Clipboard_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/LocalizationUtils_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/SelectFileDialog_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/TouchDevice_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/ViewAndroid_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/WindowAndroid_jni.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_GENERATED_SOURCES := \
+ $(gyp_shared_intermediate_dir)/ui/jni/Clipboard_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/LocalizationUtils_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/SelectFileDialog_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/TouchDevice_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/ViewAndroid_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/jni/WindowAndroid_jni.h \
+ ui_base_ui_base_jni_headers_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_base_ui_base_jni_headers_gyp
+
+# Alias gyp target name.
+.PHONY: ui_base_jni_headers
+ui_base_jni_headers: ui_base_ui_base_jni_headers_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/ui/base/ui_base_switches.cc b/ui/base/ui_base_switches.cc
index 91fc9a9688..99e93c18df 100644
--- a/ui/base/ui_base_switches.cc
+++ b/ui/base/ui_base_switches.cc
@@ -7,8 +7,8 @@
namespace switches {
#if defined(OS_MACOSX) && !defined(OS_IOS)
-// Enable use of CoreAnimation to draw on the Mac.
-const char kEnableCoreAnimation[] = "enable-core-animation";
+// Disable use of CoreAnimation to draw on the Mac.
+const char kDisableCoreAnimation[] = "disable-core-animation";
#endif
// Disables use of DWM composition for top level windows.
@@ -68,9 +68,4 @@ const char kTouchOptimizedUIDisabled[] = "disabled";
const char kTabletUI[] = "tablet-ui";
#endif
-#if defined(USE_XI2_MT)
-// The calibration factors given as "<left>,<right>,<top>,<bottom>".
-const char kTouchCalibration[] = "touch-calibration";
-#endif
-
} // namespace switches
diff --git a/ui/base/ui_base_switches.h b/ui/base/ui_base_switches.h
index 3a3ea3a8fb..fbdce7ef7c 100644
--- a/ui/base/ui_base_switches.h
+++ b/ui/base/ui_base_switches.h
@@ -13,7 +13,7 @@
namespace switches {
#if defined(OS_MACOSX) && !defined(OS_IOS)
-UI_BASE_EXPORT extern const char kEnableCoreAnimation[];
+UI_BASE_EXPORT extern const char kDisableCoreAnimation[];
#endif
UI_BASE_EXPORT extern const char kDisableDwmComposition[];
@@ -35,10 +35,6 @@ UI_BASE_EXPORT extern const char kTouchOptimizedUIEnabled[];
UI_BASE_EXPORT extern const char kTabletUI[];
#endif
-#if defined(USE_XI2_MT)
-UI_BASE_EXPORT extern const char kTouchCalibration[];
-#endif
-
} // namespace switches
#endif // UI_BASE_UI_BASE_SWITCHES_H_
diff --git a/ui/base/x/selection_requestor.cc b/ui/base/x/selection_requestor.cc
index f044cf8ae3..158028d515 100644
--- a/ui/base/x/selection_requestor.cc
+++ b/ui/base/x/selection_requestor.cc
@@ -55,6 +55,13 @@ bool SelectionRequestor::PerformBlockingConvertSelection(
base::MessageLoop::ScopedNestableTaskAllower allow_nested(loop);
base::RunLoop run_loop;
+ // Stop waiting for a response after a certain amount of time.
+ const int kMaxWaitTimeForClipboardResponse = 300;
+ loop->PostDelayedTask(
+ FROM_HERE,
+ run_loop.QuitClosure(),
+ base::TimeDelta::FromMilliseconds(kMaxWaitTimeForClipboardResponse));
+
PendingRequest pending_request(target, run_loop.QuitClosure());
pending_requests_.push_back(&pending_request);
run_loop.Run();
diff --git a/ui/base/x/selection_utils.cc b/ui/base/x/selection_utils.cc
index 82b1051f60..d5ce1c03cf 100644
--- a/ui/base/x/selection_utils.cc
+++ b/ui/base/x/selection_utils.cc
@@ -19,12 +19,16 @@ namespace ui {
const char kMimeTypeMozillaURL[] = "text/x-moz-url";
const char kString[] = "STRING";
const char kText[] = "TEXT";
+const char kTextPlain[] = "text/plain";
+const char kTextPlainUtf8[] = "text/plain;charset=utf-8";
const char kUtf8String[] = "UTF8_STRING";
const char* kSelectionDataAtoms[] = {
Clipboard::kMimeTypeHTML,
kString,
kText,
+ kTextPlain,
+ kTextPlainUtf8,
kUtf8String,
NULL
};
@@ -34,6 +38,8 @@ std::vector< ::Atom> GetTextAtomsFrom(const X11AtomCache* atom_cache) {
atoms.push_back(atom_cache->GetAtom(kUtf8String));
atoms.push_back(atom_cache->GetAtom(kString));
atoms.push_back(atom_cache->GetAtom(kText));
+ atoms.push_back(atom_cache->GetAtom(kTextPlain));
+ atoms.push_back(atom_cache->GetAtom(kTextPlainUtf8));
return atoms;
}
@@ -192,9 +198,11 @@ size_t SelectionData::GetSize() const {
std::string SelectionData::GetText() const {
if (type_ == atom_cache_.GetAtom(kUtf8String) ||
- type_ == atom_cache_.GetAtom(kText)) {
+ type_ == atom_cache_.GetAtom(kText) ||
+ type_ == atom_cache_.GetAtom(kTextPlainUtf8)) {
return RefCountedMemoryToString(memory_);
- } else if (type_ == atom_cache_.GetAtom(kString)) {
+ } else if (type_ == atom_cache_.GetAtom(kString) ||
+ type_ == atom_cache_.GetAtom(kTextPlain)) {
std::string result;
base::ConvertToUtf8AndNormalize(RefCountedMemoryToString(memory_),
base::kCodepageLatin1,
diff --git a/ui/base/x/x11_menu_list.cc b/ui/base/x/x11_menu_list.cc
new file mode 100644
index 0000000000..3396e57840
--- /dev/null
+++ b/ui/base/x/x11_menu_list.cc
@@ -0,0 +1,46 @@
+// Copyright (c) 2014 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 "ui/base/x/x11_menu_list.h"
+
+#include "base/memory/singleton.h"
+#include "ui/base/x/x11_util.h"
+
+namespace ui {
+
+// static
+XMenuList* XMenuList::GetInstance() {
+ return Singleton<XMenuList>::get();
+}
+
+XMenuList::XMenuList()
+ : menu_type_atom_(GetAtom("_NET_WM_WINDOW_TYPE_MENU")) {
+}
+
+XMenuList::~XMenuList() {
+ menus_.clear();
+}
+
+void XMenuList::MaybeRegisterMenu(XID menu) {
+ int value = 0;
+ if (!GetIntProperty(menu, "_NET_WM_WINDOW_TYPE", &value) ||
+ static_cast<Atom>(value) != menu_type_atom_) {
+ return;
+ }
+ menus_.push_back(menu);
+}
+
+void XMenuList::MaybeUnregisterMenu(XID menu) {
+ std::vector<XID>::iterator iter = std::find(menus_.begin(), menus_.end(),
+ menu);
+ if (iter == menus_.end())
+ return;
+ menus_.erase(iter);
+}
+
+void XMenuList::InsertMenuWindowXIDs(std::vector<XID>* stack) {
+ stack->insert(stack->begin(), menus_.begin(), menus_.end());
+}
+
+} // namespace ui
diff --git a/ui/base/x/x11_menu_list.h b/ui/base/x/x11_menu_list.h
new file mode 100644
index 0000000000..4e8476aea0
--- /dev/null
+++ b/ui/base/x/x11_menu_list.h
@@ -0,0 +1,48 @@
+// Copyright (c) 2014 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 UI_BASE_X_X11_MENU_LIST_H_
+#define UI_BASE_X_X11_MENU_LIST_H_
+
+#include <vector>
+
+#include "base/basictypes.h"
+#include "ui/base/ui_base_export.h"
+#include "ui/gfx/x/x11_types.h"
+
+typedef unsigned long Atom;
+
+// A process wide singleton cache for X menus.
+template <typename T> struct DefaultSingletonTraits;
+
+namespace ui {
+
+// Keeps track of created and destroyed top level menu windows.
+class UI_BASE_EXPORT XMenuList {
+ public:
+ static XMenuList* GetInstance();
+
+ // Checks if |menu| has _NET_WM_WINDOW_TYPE property set to
+ // "_NET_WM_WINDOW_TYPE_MENU" atom and if so caches it.
+ void MaybeRegisterMenu(XID menu);
+
+ // Finds |menu| in cache and if found removes it.
+ void MaybeUnregisterMenu(XID menu);
+
+ // Inserts cached menu XIDs at the beginning of |stack|.
+ void InsertMenuWindowXIDs(std::vector<XID>* stack);
+
+ private:
+ friend struct DefaultSingletonTraits<XMenuList>;
+ XMenuList();
+ ~XMenuList();
+
+ std::vector<XID> menus_;
+ ::Atom menu_type_atom_;
+ DISALLOW_COPY_AND_ASSIGN(XMenuList);
+};
+
+} // namespace ui
+
+#endif // UI_BASE_X_X11_MENU_LIST_H_
diff --git a/ui/base/x/x11_util.cc b/ui/base/x/x11_util.cc
index 007157c821..708f962634 100644
--- a/ui/base/x/x11_util.cc
+++ b/ui/base/x/x11_util.cc
@@ -35,6 +35,7 @@
#include "base/threading/thread.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "third_party/skia/include/core/SkPostConfig.h"
+#include "ui/base/x/x11_menu_list.h"
#include "ui/base/x/x11_util_internal.h"
#include "ui/events/event_utils.h"
#include "ui/events/keycodes/keyboard_code_conversion_x.h"
@@ -965,6 +966,22 @@ bool SetAtomArrayProperty(XID window,
return !err_tracker.FoundNewError();
}
+bool SetStringProperty(XID window,
+ Atom property,
+ Atom type,
+ const std::string& value) {
+ gfx::X11ErrorTracker err_tracker;
+ XChangeProperty(gfx::GetXDisplay(),
+ window,
+ property,
+ type,
+ 8,
+ PropModeReplace,
+ reinterpret_cast<const unsigned char*>(value.c_str()),
+ value.size());
+ return !err_tracker.FoundNewError();
+}
+
Atom GetAtom(const char* name) {
#if defined(TOOLKIT_GTK)
return gdk_x11_get_xatom_by_name_for_display(
@@ -1067,6 +1084,18 @@ bool EnumerateChildren(EnumerateWindowsDelegate* delegate, XID window,
if (depth > max_depth)
return false;
+ std::vector<XID> windows;
+ std::vector<XID>::iterator iter;
+ if (depth == 0) {
+ XMenuList::GetInstance()->InsertMenuWindowXIDs(&windows);
+ // Enumerate the menus first.
+ for (iter = windows.begin(); iter != windows.end(); iter++) {
+ if (delegate->ShouldStopIterating(*iter))
+ return true;
+ }
+ windows.clear();
+ }
+
XID root, parent, *children;
unsigned int num_children;
int status = XQueryTree(gfx::GetXDisplay(), window, &root, &parent, &children,
@@ -1074,7 +1103,6 @@ bool EnumerateChildren(EnumerateWindowsDelegate* delegate, XID window,
if (status == 0)
return false;
- std::vector<XID> windows;
for (int i = static_cast<int>(num_children) - 1; i >= 0; i--)
windows.push_back(children[i]);
@@ -1082,7 +1110,6 @@ bool EnumerateChildren(EnumerateWindowsDelegate* delegate, XID window,
// XQueryTree returns the children of |window| in bottom-to-top order, so
// reverse-iterate the list to check the windows from top-to-bottom.
- std::vector<XID>::iterator iter;
for (iter = windows.begin(); iter != windows.end(); iter++) {
if (IsWindowNamed(*iter) && delegate->ShouldStopIterating(*iter))
return true;
@@ -1118,6 +1145,7 @@ void EnumerateTopLevelWindows(ui::EnumerateWindowsDelegate* delegate) {
ui::EnumerateAllWindows(delegate, kMaxSearchDepth);
return;
}
+ XMenuList::GetInstance()->InsertMenuWindowXIDs(&stack);
std::vector<XID>::iterator iter;
for (iter = stack.begin(); iter != stack.end(); iter++) {
diff --git a/ui/base/x/x11_util.h b/ui/base/x/x11_util.h
index dbcd987b9d..519b149cf2 100644
--- a/ui/base/x/x11_util.h
+++ b/ui/base/x/x11_util.h
@@ -203,6 +203,10 @@ UI_BASE_EXPORT bool SetAtomArrayProperty(XID window,
const std::string& name,
const std::string& type,
const std::vector<Atom>& value);
+UI_BASE_EXPORT bool SetStringProperty(XID window,
+ Atom property,
+ Atom type,
+ const std::string& value);
// Gets the X atom for default display corresponding to atom_name.
Atom GetAtom(const char* atom_name);
diff --git a/ui/compositor/clone_layer.cc b/ui/compositor/clone_layer.cc
deleted file mode 100644
index f1337b0c67..0000000000
--- a/ui/compositor/clone_layer.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2014 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 "ui/compositor/clone_layer.h"
-
-#include "ui/compositor/layer.h"
-#include "ui/compositor/layer_delegate.h"
-#include "ui/compositor/layer_owner.h"
-
-namespace ui {
-
-scoped_ptr<ui::Layer> CloneLayer(LayerOwner* layer_owner) {
- scoped_ptr<ui::Layer> old_layer(layer_owner->AcquireLayer());
- if (!old_layer)
- return old_layer.Pass();
-
- LayerDelegate* old_delegate = old_layer->delegate();
- old_layer->set_delegate(NULL);
-
- const gfx::Rect layer_bounds(old_layer->bounds());
- Layer* new_layer = new ui::Layer(old_layer->type());
- layer_owner->SetLayer(new_layer);
- new_layer->SetVisible(old_layer->visible());
- new_layer->set_scale_content(old_layer->scale_content());
- new_layer->SetBounds(layer_bounds);
- new_layer->SetMasksToBounds(old_layer->GetMasksToBounds());
- new_layer->set_name(old_layer->name());
- new_layer->SetFillsBoundsOpaquely(old_layer->fills_bounds_opaquely());
-
- // Install new layer as a sibling of the old layer, stacked below it.
- if (old_layer->parent()) {
- old_layer->parent()->Add(new_layer);
- old_layer->parent()->StackBelow(new_layer, old_layer.get());
- }
-
- // Migrate all the child layers over to the new layer. Copy the list because
- // the items are removed during iteration.
- std::vector<ui::Layer*> children_copy = old_layer->children();
- for (std::vector<ui::Layer*>::const_iterator it = children_copy.begin();
- it != children_copy.end();
- ++it) {
- ui::Layer* child = *it;
- new_layer->Add(child);
- }
-
- // Install the delegate last so that the delegate isn't notified as we copy
- // state to the new layer.
- new_layer->set_delegate(old_delegate);
-
- return old_layer.Pass();
-}
-
-} // namespace ui
diff --git a/ui/compositor/clone_layer.h b/ui/compositor/clone_layer.h
deleted file mode 100644
index 4e439ce233..0000000000
--- a/ui/compositor/clone_layer.h
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2014 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 UI_COMPOSITOR_CLONE_LAYER_H_
-#define UI_COMPOSITOR_CLONE_LAYER_H_
-
-#include "base/memory/scoped_ptr.h"
-#include "ui/compositor/compositor_export.h"
-
-namespace ui {
-
-class Layer;
-class LayerOwner;
-
-// Creates a new Layer for |layer_owner| returning the old. This does NOT
-// recurse. All the existing children of the layer are moved to the new layer.
-// This does nothing if |layer_owner| currently has no layer.
-COMPOSITOR_EXPORT scoped_ptr<ui::Layer> CloneLayer(LayerOwner* layer_owner);
-
-} // namespace ui
-
-#endif // UI_COMPOSITOR_CLONE_LAYER_H_
diff --git a/ui/compositor/compositor.gyp b/ui/compositor/compositor.gyp
index 64e69c057b..18f6c8ccf7 100644
--- a/ui/compositor/compositor.gyp
+++ b/ui/compositor/compositor.gyp
@@ -24,8 +24,6 @@
'COMPOSITOR_IMPLEMENTATION',
],
'sources': [
- 'clone_layer.cc',
- 'clone_layer.h',
'compositor.cc',
'compositor.h',
'compositor_export.h',
diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc
index f4c735b8bd..1637d5e745 100644
--- a/ui/compositor/layer.cc
+++ b/ui/compositor/layer.cc
@@ -61,6 +61,7 @@ Layer::Layer()
visible_(true),
force_render_surface_(false),
fills_bounds_opaquely_(true),
+ fills_bounds_completely_(false),
background_blur_radius_(0),
layer_saturation_(0.0f),
layer_brightness_(0.0f),
@@ -85,6 +86,7 @@ Layer::Layer(LayerType type)
visible_(true),
force_render_surface_(false),
fills_bounds_opaquely_(true),
+ fills_bounds_completely_(false),
background_blur_radius_(0),
layer_saturation_(0.0f),
layer_brightness_(0.0f),
@@ -444,6 +446,10 @@ void Layer::SetFillsBoundsOpaquely(bool fills_bounds_opaquely) {
cc_layer_->SetContentsOpaque(fills_bounds_opaquely);
}
+void Layer::SetFillsBoundsCompletely(bool fills_bounds_completely) {
+ fills_bounds_completely_ = fills_bounds_completely;
+}
+
void Layer::SwitchToLayer(scoped_refptr<cc::Layer> new_layer) {
// Finish animations being handled by cc_layer_.
if (animator_.get()) {
@@ -662,6 +668,8 @@ void Layer::PaintContents(SkCanvas* sk_canvas,
canvas->Restore();
}
+bool Layer::FillsBoundsCompletely() const { return fills_bounds_completely_; }
+
unsigned Layer::PrepareTexture() {
DCHECK(texture_layer_.get());
return texture_->PrepareTexture();
diff --git a/ui/compositor/layer.h b/ui/compositor/layer.h
index 209e99e5fa..ed805bf134 100644
--- a/ui/compositor/layer.h
+++ b/ui/compositor/layer.h
@@ -249,6 +249,10 @@ class COMPOSITOR_EXPORT Layer
void SetFillsBoundsOpaquely(bool fills_bounds_opaquely);
bool fills_bounds_opaquely() const { return fills_bounds_opaquely_; }
+ // Set to true if this layer always paints completely within its bounds. If so
+ // we can omit an unnecessary clear, even if the layer is transparent.
+ void SetFillsBoundsCompletely(bool fills_bounds_completely);
+
const std::string& name() const { return name_; }
void set_name(const std::string& name) { name_ = name; }
@@ -318,6 +322,7 @@ class COMPOSITOR_EXPORT Layer
virtual void PaintContents(
SkCanvas* canvas, const gfx::Rect& clip, gfx::RectF* opaque) OVERRIDE;
virtual void DidChangeLayerCanUseLCDText() OVERRIDE {}
+ virtual bool FillsBoundsCompletely() const OVERRIDE;
cc::Layer* cc_layer() { return cc_layer_; }
@@ -424,6 +429,7 @@ class COMPOSITOR_EXPORT Layer
bool force_render_surface_;
bool fills_bounds_opaquely_;
+ bool fills_bounds_completely_;
// Union of damaged rects, in pixel coordinates, to be used when
// compositor is ready to paint the content.
diff --git a/ui/compositor/layer_owner.cc b/ui/compositor/layer_owner.cc
index c00b7fcdb1..a797a0c5a2 100644
--- a/ui/compositor/layer_owner.cc
+++ b/ui/compositor/layer_owner.cc
@@ -4,9 +4,11 @@
#include "ui/compositor/layer_owner.h"
+#include "ui/compositor/layer_owner_delegate.h"
+
namespace ui {
-LayerOwner::LayerOwner() : layer_(NULL) {
+LayerOwner::LayerOwner() : layer_(NULL), layer_owner_delegate_(NULL) {
}
LayerOwner::~LayerOwner() {
@@ -26,7 +28,48 @@ Layer* LayerOwner::AcquireLayer() {
}
scoped_ptr<Layer> LayerOwner::RecreateLayer() {
- return scoped_ptr<ui::Layer>();
+ scoped_ptr<ui::Layer> old_layer(AcquireLayer());
+ if (!old_layer)
+ return old_layer.Pass();
+
+ LayerDelegate* old_delegate = old_layer->delegate();
+ old_layer->set_delegate(NULL);
+
+ const gfx::Rect layer_bounds(old_layer->bounds());
+ Layer* new_layer = new ui::Layer(old_layer->type());
+ SetLayer(new_layer);
+ new_layer->SetVisible(old_layer->visible());
+ new_layer->set_scale_content(old_layer->scale_content());
+ new_layer->SetBounds(layer_bounds);
+ new_layer->SetMasksToBounds(old_layer->GetMasksToBounds());
+ new_layer->set_name(old_layer->name());
+ new_layer->SetFillsBoundsOpaquely(old_layer->fills_bounds_opaquely());
+ new_layer->SetFillsBoundsCompletely(old_layer->FillsBoundsCompletely());
+
+ // Install new layer as a sibling of the old layer, stacked below it.
+ if (old_layer->parent()) {
+ old_layer->parent()->Add(new_layer);
+ old_layer->parent()->StackBelow(new_layer, old_layer.get());
+ }
+
+ // Migrate all the child layers over to the new layer. Copy the list because
+ // the items are removed during iteration.
+ std::vector<ui::Layer*> children_copy = old_layer->children();
+ for (std::vector<ui::Layer*>::const_iterator it = children_copy.begin();
+ it != children_copy.end();
+ ++it) {
+ ui::Layer* child = *it;
+ new_layer->Add(child);
+ }
+
+ // Install the delegate last so that the delegate isn't notified as we copy
+ // state to the new layer.
+ new_layer->set_delegate(old_delegate);
+
+ if (layer_owner_delegate_)
+ layer_owner_delegate_->OnLayerRecreated(old_layer.get(), new_layer);
+
+ return old_layer.Pass();
}
void LayerOwner::DestroyLayer() {
diff --git a/ui/compositor/layer_owner.h b/ui/compositor/layer_owner.h
index b442badfdc..4828e7406f 100644
--- a/ui/compositor/layer_owner.h
+++ b/ui/compositor/layer_owner.h
@@ -11,6 +11,7 @@
#include "ui/compositor/layer.h"
namespace ui {
+class LayerOwnerDelegate;
class COMPOSITOR_EXPORT LayerOwner {
public:
@@ -32,11 +33,15 @@ class COMPOSITOR_EXPORT LayerOwner {
//
// This does not recurse. Existing children of the layer are moved to the new
// layer.
- virtual scoped_ptr<Layer> RecreateLayer();
+ scoped_ptr<Layer> RecreateLayer();
ui::Layer* layer() { return layer_; }
const ui::Layer* layer() const { return layer_; }
+ void set_layer_owner_delegate(LayerOwnerDelegate* delegate) {
+ layer_owner_delegate_ = delegate;
+ }
+
protected:
void DestroyLayer();
@@ -51,6 +56,8 @@ class COMPOSITOR_EXPORT LayerOwner {
scoped_ptr<Layer> layer_owner_;
Layer* layer_;
+ LayerOwnerDelegate* layer_owner_delegate_;
+
DISALLOW_COPY_AND_ASSIGN(LayerOwner);
};
diff --git a/ui/compositor/layer_owner_delegate.h b/ui/compositor/layer_owner_delegate.h
new file mode 100644
index 0000000000..e5362d923d
--- /dev/null
+++ b/ui/compositor/layer_owner_delegate.h
@@ -0,0 +1,27 @@
+// Copyright 2014 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 UI_COMPOSITOR_LAYER_OWNER_DELEGATE_H_
+#define UI_COMPOSITOR_LAYER_OWNER_DELEGATE_H_
+
+#include "ui/compositor/compositor_export.h"
+
+namespace ui {
+class Layer;
+
+// Called from RecreateLayer() after the new layer was created. old_layer is
+// the layer that will be returned to the caller of RecreateLayer, new_layer
+// will be the layer now used. Used when the layer has external content
+// (SetExternalTexture / SetTextureMailbox / SetDelegatedFrame was called).
+class COMPOSITOR_EXPORT LayerOwnerDelegate {
+ public:
+ virtual void OnLayerRecreated(Layer* old_layer, Layer* new_layer) = 0;
+
+ protected:
+ virtual ~LayerOwnerDelegate() {}
+};
+
+} // namespace ui
+
+#endif // UI_COMPOSITOR_LAYER_OWNER_DELEGATE_H_
diff --git a/ui/display/chromeos/native_display_delegate.h b/ui/display/chromeos/native_display_delegate.h
index 2b3b776a4b..8322ecf0ea 100644
--- a/ui/display/chromeos/native_display_delegate.h
+++ b/ui/display/chromeos/native_display_delegate.h
@@ -5,6 +5,10 @@
#ifndef UI_DISPLAY_CHROMEOS_NATIVE_DISPLAY_DELEGATE_H_
#define UI_DISPLAY_CHROMEOS_NATIVE_DISPLAY_DELEGATE_H_
+#include <stdint.h>
+
+#include <vector>
+
#include "ui/display/display_constants.h"
#include "ui/display/display_export.h"
@@ -38,7 +42,7 @@ class DISPLAY_EXPORT NativeDisplayDelegate {
virtual void SyncWithServer() = 0;
// Sets the window's background color to |color_argb|.
- virtual void SetBackgroundColor(uint32 color_argb) = 0;
+ virtual void SetBackgroundColor(uint32_t color_argb) = 0;
// Enables DPMS and forces it to the "on" state.
virtual void ForceDPMSOn() = 0;
@@ -71,6 +75,11 @@ class DISPLAY_EXPORT NativeDisplayDelegate {
virtual bool SetHDCPState(const ui::DisplaySnapshot& output,
ui::HDCPState state) = 0;
+ // Gets the available list of color calibrations.
+ virtual std::vector<ui::ColorCalibrationProfile>
+ GetAvailableColorCalibrationProfiles(
+ const ui::DisplaySnapshot& output) = 0;
+
// Sets the color calibration of |output| to |new_profile|.
virtual bool SetColorCalibrationProfile(
const ui::DisplaySnapshot& output,
diff --git a/ui/display/chromeos/output_configurator.cc b/ui/display/chromeos/output_configurator.cc
index 1a98b1d8b2..9523afe5f4 100644
--- a/ui/display/chromeos/output_configurator.cc
+++ b/ui/display/chromeos/output_configurator.cc
@@ -12,8 +12,15 @@
#include "base/time/time.h"
#include "ui/display/chromeos/display_mode.h"
#include "ui/display/chromeos/display_snapshot.h"
+#include "ui/display/chromeos/native_display_delegate.h"
+
+#if defined(USE_OZONE)
+#include "ui/display/chromeos/ozone/native_display_delegate_ozone.h"
+#include "ui/display/chromeos/ozone/touchscreen_delegate_ozone.h"
+#elif defined(USE_X11)
#include "ui/display/chromeos/x11/native_display_delegate_x11.h"
#include "ui/display/chromeos/x11/touchscreen_delegate_x11.h"
+#endif
namespace ui {
@@ -23,7 +30,7 @@ typedef std::vector<const DisplayMode*> DisplayModeList;
// The delay to perform configuration after RRNotify. See the comment
// in |Dispatch()|.
-const int64 kConfigureDelayMs = 500;
+const int kConfigureDelayMs = 500;
// Returns a string describing |state|.
std::string DisplayPowerStateToString(chromeos::DisplayPowerState state) {
@@ -98,8 +105,6 @@ OutputConfigurator::DisplayState::DisplayState()
selected_mode(NULL),
mirror_mode(NULL) {}
-OutputConfigurator::DisplayState::~DisplayState() {}
-
bool OutputConfigurator::TestApi::TriggerConfigureTimeout() {
if (configurator_->configure_timer_.get() &&
configurator_->configure_timer_->IsRunning()) {
@@ -191,15 +196,28 @@ void OutputConfigurator::Init(bool is_panel_fitting_enabled) {
return;
if (!native_display_delegate_) {
+#if defined(USE_OZONE)
+ native_display_delegate_.reset(new NativeDisplayDelegateOzone());
+#elif defined(USE_X11)
native_display_delegate_.reset(new NativeDisplayDelegateX11());
+#else
+ NOTREACHED();
+#endif
native_display_delegate_->AddObserver(this);
}
- if (!touchscreen_delegate_)
+ if (!touchscreen_delegate_) {
+#if defined(USE_OZONE)
+ touchscreen_delegate_.reset(new TouchscreenDelegateOzone());
+#elif defined(USE_X11)
touchscreen_delegate_.reset(new TouchscreenDelegateX11());
+#else
+ NOTREACHED();
+#endif
+ }
}
-void OutputConfigurator::ForceInitialConfigure(uint32 background_color_argb) {
+void OutputConfigurator::ForceInitialConfigure(uint32_t background_color_argb) {
if (!configure_display_)
return;
@@ -287,7 +305,7 @@ void OutputConfigurator::UnregisterOutputProtectionClient(
bool OutputConfigurator::QueryOutputProtectionStatus(
OutputProtectionClientId client_id,
- int64 display_id,
+ int64_t display_id,
uint32_t* link_mask,
uint32_t* protection_mask) {
if (!configure_display_)
@@ -344,7 +362,7 @@ bool OutputConfigurator::QueryOutputProtectionStatus(
bool OutputConfigurator::EnableOutputProtection(
OutputProtectionClientId client_id,
- int64 display_id,
+ int64_t display_id,
uint32_t desired_method_mask) {
if (!configure_display_)
return false;
@@ -381,19 +399,26 @@ bool OutputConfigurator::EnableOutputProtection(
return true;
}
+std::vector<ui::ColorCalibrationProfile>
+OutputConfigurator::GetAvailableColorCalibrationProfiles(
+ int64_t display_id) {
+ for (size_t i = 0; i < cached_outputs_.size(); ++i) {
+ if (cached_outputs_[i].display &&
+ cached_outputs_[i].display->display_id() == display_id) {
+ return native_display_delegate_->GetAvailableColorCalibrationProfiles(
+ *cached_outputs_[i].display);
+ }
+ }
+
+ return std::vector<ui::ColorCalibrationProfile>();
+}
+
bool OutputConfigurator::SetColorCalibrationProfile(
- int64 display_id,
+ int64_t display_id,
ui::ColorCalibrationProfile new_profile) {
for (size_t i = 0; i < cached_outputs_.size(); ++i) {
if (cached_outputs_[i].display &&
cached_outputs_[i].display->display_id() == display_id) {
- std::vector<ColorCalibrationProfile>::const_iterator iter =
- std::find(cached_outputs_[i].available_color_profiles.begin(),
- cached_outputs_[i].available_color_profiles.end(),
- new_profile);
- if (iter == cached_outputs_[i].available_color_profiles.end())
- return false;
-
return native_display_delegate_->SetColorCalibrationProfile(
*cached_outputs_[i].display, new_profile);
}
@@ -907,9 +932,11 @@ OutputState OutputConfigurator::ChooseOutputState(
// state so that its native mode will be used.
return OUTPUT_STATE_SINGLE;
} else {
+ if (!state_controller_)
+ return OUTPUT_STATE_DUAL_EXTENDED;
// With either both outputs on or both outputs off, use one of the
// dual modes.
- std::vector<int64> display_ids;
+ std::vector<int64_t> display_ids;
for (size_t i = 0; i < cached_outputs_.size(); ++i) {
// If display id isn't available, switch to extended mode.
if (!cached_outputs_[i].display->has_proper_display_id())
diff --git a/ui/display/chromeos/output_configurator.h b/ui/display/chromeos/output_configurator.h
index d23621b382..c89f4bc824 100644
--- a/ui/display/chromeos/output_configurator.h
+++ b/ui/display/chromeos/output_configurator.h
@@ -5,11 +5,12 @@
#ifndef UI_DISPLAY_CHROMEOS_OUTPUT_CONFIGURATOR_H_
#define UI_DISPLAY_CHROMEOS_OUTPUT_CONFIGURATOR_H_
+#include <stdint.h>
+
#include <map>
#include <string>
#include <vector>
-#include "base/basictypes.h"
#include "base/event_types.h"
#include "base/memory/scoped_ptr.h"
#include "base/observer_list.h"
@@ -47,7 +48,6 @@ class DISPLAY_EXPORT OutputConfigurator : public NativeDisplayObserver {
struct DisplayState {
DisplayState();
- ~DisplayState();
DisplaySnapshot* display; // Not owned.
@@ -61,8 +61,6 @@ class DISPLAY_EXPORT OutputConfigurator : public NativeDisplayObserver {
// Mode used when displaying the same desktop on multiple outputs.
const DisplayMode* mirror_mode;
-
- std::vector<ui::ColorCalibrationProfile> available_color_profiles;
};
typedef std::vector<DisplayState> DisplayStateList;
@@ -91,11 +89,11 @@ class DISPLAY_EXPORT OutputConfigurator : public NativeDisplayObserver {
// Called when displays are detected.
virtual OutputState GetStateForDisplayIds(
- const std::vector<int64>& display_ids) const = 0;
+ const std::vector<int64_t>& display_ids) const = 0;
// Queries the resolution (|size|) in pixels to select output mode for the
// given display id.
- virtual bool GetResolutionForDisplayId(int64 display_id,
+ virtual bool GetResolutionForDisplayId(int64_t display_id,
gfx::Size* size) const = 0;
};
@@ -202,7 +200,7 @@ class DISPLAY_EXPORT OutputConfigurator : public NativeDisplayObserver {
// If |background_color_argb| is non zero and there are multiple displays,
// OutputConfigurator sets the background color of X's RootWindow to this
// color.
- void ForceInitialConfigure(uint32 background_color_argb);
+ void ForceInitialConfigure(uint32_t background_color_argb);
// Stop handling display configuration events/requests.
void PrepareForExit();
@@ -250,7 +248,7 @@ class DISPLAY_EXPORT OutputConfigurator : public NativeDisplayObserver {
// which is a bitmask of the OutputProtectionMethod values.
// Returns true on success.
bool QueryOutputProtectionStatus(OutputProtectionClientId client_id,
- int64 display_id,
+ int64_t display_id,
uint32_t* link_mask,
uint32_t* protection_mask);
@@ -259,17 +257,22 @@ class DISPLAY_EXPORT OutputConfigurator : public NativeDisplayObserver {
// of the OutputProtectionMethod values.
// Returns true when the protection request has been made.
bool EnableOutputProtection(OutputProtectionClientId client_id,
- int64 display_id,
+ int64_t display_id,
uint32_t desired_protection_mask);
+ // Checks the available color profiles for |display_id| and fills the result
+ // into |profiles|.
+ std::vector<ui::ColorCalibrationProfile> GetAvailableColorCalibrationProfiles(
+ int64_t display_id);
+
// Updates the color calibration to |new_profile|.
bool SetColorCalibrationProfile(
- int64 display_id,
+ int64_t display_id,
ui::ColorCalibrationProfile new_profile);
private:
// Mapping a display_id to a protection request bitmask.
- typedef std::map<int64, uint32_t> DisplayProtections;
+ typedef std::map<int64_t, uint32_t> DisplayProtections;
// Mapping a client to its protection request.
typedef std::map<OutputProtectionClientId, DisplayProtections>
ProtectionRequests;
diff --git a/ui/display/chromeos/output_configurator_unittest.cc b/ui/display/chromeos/output_configurator_unittest.cc
index 27b5446345..9dfafe5aa9 100644
--- a/ui/display/chromeos/output_configurator_unittest.cc
+++ b/ui/display/chromeos/output_configurator_unittest.cc
@@ -4,13 +4,14 @@
#include "ui/display/chromeos/output_configurator.h"
+#include <stdint.h>
+
#include <cmath>
#include <cstdarg>
#include <map>
#include <string>
#include <vector>
-#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/format_macros.h"
#include "base/memory/scoped_vector.h"
@@ -43,7 +44,7 @@ std::string DisplaySnapshotToString(const DisplaySnapshot& output) {
// Returns a string describing a TestNativeDisplayDelegate::SetBackgroundColor()
// call.
-std::string GetBackgroundAction(uint32 color_argb) {
+std::string GetBackgroundAction(uint32_t color_argb) {
return base::StringPrintf("background(0x%x)", color_argb);
}
@@ -212,7 +213,7 @@ class TestNativeDisplayDelegate : public NativeDisplayDelegate {
virtual void GrabServer() OVERRIDE { log_->AppendAction(kGrab); }
virtual void UngrabServer() OVERRIDE { log_->AppendAction(kUngrab); }
virtual void SyncWithServer() OVERRIDE { log_->AppendAction(kSync); }
- virtual void SetBackgroundColor(uint32 color_argb) OVERRIDE {
+ virtual void SetBackgroundColor(uint32_t color_argb) OVERRIDE {
log_->AppendAction(GetBackgroundAction(color_argb));
}
virtual void ForceDPMSOn() OVERRIDE { log_->AppendAction(kForceDPMS); }
@@ -254,6 +255,12 @@ class TestNativeDisplayDelegate : public NativeDisplayDelegate {
return true;
}
+ virtual std::vector<ui::ColorCalibrationProfile>
+ GetAvailableColorCalibrationProfiles(
+ const DisplaySnapshot& output) OVERRIDE {
+ return std::vector<ui::ColorCalibrationProfile>();
+ }
+
virtual bool SetColorCalibrationProfile(
const DisplaySnapshot& output,
ui::ColorCalibrationProfile new_profile) OVERRIDE {
@@ -343,10 +350,10 @@ class TestStateController : public OutputConfigurator::StateController {
// OutputConfigurator::StateController overrides:
virtual OutputState GetStateForDisplayIds(
- const std::vector<int64>& outputs) const OVERRIDE {
+ const std::vector<int64_t>& outputs) const OVERRIDE {
return state_;
}
- virtual bool GetResolutionForDisplayId(int64 display_id,
+ virtual bool GetResolutionForDisplayId(int64_t display_id,
gfx::Size* size) const OVERRIDE {
return false;
}
diff --git a/ui/display/chromeos/ozone/native_display_delegate_ozone.cc b/ui/display/chromeos/ozone/native_display_delegate_ozone.cc
new file mode 100644
index 0000000000..f9dc678530
--- /dev/null
+++ b/ui/display/chromeos/ozone/native_display_delegate_ozone.cc
@@ -0,0 +1,95 @@
+// Copyright 2014 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 "ui/display/chromeos/ozone/native_display_delegate_ozone.h"
+
+#include "base/logging.h"
+
+namespace ui {
+
+NativeDisplayDelegateOzone::NativeDisplayDelegateOzone() {}
+
+NativeDisplayDelegateOzone::~NativeDisplayDelegateOzone() {}
+
+void NativeDisplayDelegateOzone::Initialize() {
+ NOTIMPLEMENTED();
+}
+
+void NativeDisplayDelegateOzone::GrabServer() {
+ NOTIMPLEMENTED();
+}
+
+void NativeDisplayDelegateOzone::UngrabServer() {
+ NOTIMPLEMENTED();
+}
+
+void NativeDisplayDelegateOzone::SyncWithServer() {
+ NOTIMPLEMENTED();
+}
+
+void NativeDisplayDelegateOzone::SetBackgroundColor(uint32_t color_argb) {
+ NOTIMPLEMENTED();
+}
+
+void NativeDisplayDelegateOzone::ForceDPMSOn() {
+ NOTIMPLEMENTED();
+}
+
+std::vector<ui::DisplaySnapshot*> NativeDisplayDelegateOzone::GetOutputs() {
+ NOTIMPLEMENTED();
+ return std::vector<ui::DisplaySnapshot*>();
+}
+
+void NativeDisplayDelegateOzone::AddMode(const ui::DisplaySnapshot& output,
+ const ui::DisplayMode* mode) {
+ NOTIMPLEMENTED();
+}
+
+bool NativeDisplayDelegateOzone::Configure(const ui::DisplaySnapshot& output,
+ const ui::DisplayMode* mode,
+ const gfx::Point& origin) {
+ NOTIMPLEMENTED();
+ return false;
+}
+
+void NativeDisplayDelegateOzone::CreateFrameBuffer(const gfx::Size& size) {
+ NOTIMPLEMENTED();
+}
+
+bool NativeDisplayDelegateOzone::GetHDCPState(const ui::DisplaySnapshot& output,
+ ui::HDCPState* state) {
+ NOTIMPLEMENTED();
+ return false;
+}
+
+bool NativeDisplayDelegateOzone::SetHDCPState(const ui::DisplaySnapshot& output,
+ ui::HDCPState state) {
+ NOTIMPLEMENTED();
+ return false;
+}
+
+std::vector<ui::ColorCalibrationProfile>
+NativeDisplayDelegateOzone::GetAvailableColorCalibrationProfiles(
+ const ui::DisplaySnapshot& output) {
+ NOTIMPLEMENTED();
+ return std::vector<ui::ColorCalibrationProfile>();
+}
+
+bool NativeDisplayDelegateOzone::SetColorCalibrationProfile(
+ const ui::DisplaySnapshot& output,
+ ui::ColorCalibrationProfile new_profile) {
+ NOTIMPLEMENTED();
+ return false;
+}
+
+void NativeDisplayDelegateOzone::AddObserver(NativeDisplayObserver* observer) {
+ NOTIMPLEMENTED();
+}
+
+void NativeDisplayDelegateOzone::RemoveObserver(
+ NativeDisplayObserver* observer) {
+ NOTIMPLEMENTED();
+}
+
+} // namespace ui
diff --git a/ui/display/chromeos/ozone/native_display_delegate_ozone.h b/ui/display/chromeos/ozone/native_display_delegate_ozone.h
new file mode 100644
index 0000000000..1519b852c7
--- /dev/null
+++ b/ui/display/chromeos/ozone/native_display_delegate_ozone.h
@@ -0,0 +1,51 @@
+// Copyright 2014 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 UI_DISPLAY_CHROMEOS_OZONE_NATIVE_DISPLAY_DELEGATE_OZONE_H_
+#define UI_DISPLAY_CHROMEOS_OZONE_NATIVE_DISPLAY_DELEGATE_OZONE_H_
+
+#include "base/macros.h"
+#include "ui/display/chromeos/native_display_delegate.h"
+
+namespace ui {
+
+class NativeDisplayDelegateOzone : public NativeDisplayDelegate {
+ public:
+ NativeDisplayDelegateOzone();
+ virtual ~NativeDisplayDelegateOzone();
+
+ // NativeDisplayDelegate overrides:
+ virtual void Initialize() OVERRIDE;
+ virtual void GrabServer() OVERRIDE;
+ virtual void UngrabServer() OVERRIDE;
+ virtual void SyncWithServer() OVERRIDE;
+ virtual void SetBackgroundColor(uint32_t color_argb) OVERRIDE;
+ virtual void ForceDPMSOn() OVERRIDE;
+ virtual std::vector<ui::DisplaySnapshot*> GetOutputs() OVERRIDE;
+ virtual void AddMode(const ui::DisplaySnapshot& output,
+ const ui::DisplayMode* mode) OVERRIDE;
+ virtual bool Configure(const ui::DisplaySnapshot& output,
+ const ui::DisplayMode* mode,
+ const gfx::Point& origin) OVERRIDE;
+ virtual void CreateFrameBuffer(const gfx::Size& size) OVERRIDE;
+ virtual bool GetHDCPState(const ui::DisplaySnapshot& output,
+ ui::HDCPState* state) OVERRIDE;
+ virtual bool SetHDCPState(const ui::DisplaySnapshot& output,
+ ui::HDCPState state) OVERRIDE;
+ virtual std::vector<ui::ColorCalibrationProfile>
+ GetAvailableColorCalibrationProfiles(
+ const ui::DisplaySnapshot& output) OVERRIDE;
+ virtual bool SetColorCalibrationProfile(
+ const ui::DisplaySnapshot& output,
+ ui::ColorCalibrationProfile new_profile) OVERRIDE;
+ virtual void AddObserver(NativeDisplayObserver* observer) OVERRIDE;
+ virtual void RemoveObserver(NativeDisplayObserver* observer) OVERRIDE;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(NativeDisplayDelegateOzone);
+};
+
+} // namespace ui
+
+#endif // UI_DISPLAY_CHROMEOS_OZONE_NATIVE_DISPLAY_DELEGATE_OZONE_H_
diff --git a/ui/display/chromeos/ozone/touchscreen_delegate_ozone.cc b/ui/display/chromeos/ozone/touchscreen_delegate_ozone.cc
new file mode 100644
index 0000000000..f25f359990
--- /dev/null
+++ b/ui/display/chromeos/ozone/touchscreen_delegate_ozone.cc
@@ -0,0 +1,24 @@
+// Copyright 2014 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 "ui/display/chromeos/ozone/touchscreen_delegate_ozone.h"
+
+namespace ui {
+
+TouchscreenDelegateOzone::TouchscreenDelegateOzone() {}
+
+TouchscreenDelegateOzone::~TouchscreenDelegateOzone() {}
+
+void TouchscreenDelegateOzone::AssociateTouchscreens(
+ std::vector<OutputConfigurator::DisplayState>* outputs) {
+ NOTIMPLEMENTED();
+}
+
+void TouchscreenDelegateOzone::ConfigureCTM(
+ int touch_device_id,
+ const OutputConfigurator::CoordinateTransformation& ctm) {
+ NOTIMPLEMENTED();
+}
+
+} // namespace ui
diff --git a/ui/display/chromeos/ozone/touchscreen_delegate_ozone.h b/ui/display/chromeos/ozone/touchscreen_delegate_ozone.h
new file mode 100644
index 0000000000..f9fd34a756
--- /dev/null
+++ b/ui/display/chromeos/ozone/touchscreen_delegate_ozone.h
@@ -0,0 +1,31 @@
+// Copyright 2014 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 UI_DISPLAY_CHROMEOS_OZONE_TOUCHSCREEN_DELEGATE_OZONE_H_
+#define UI_DISPLAY_CHROMEOS_OZONE_TOUCHSCREEN_DELEGATE_OZONE_H_
+
+#include "ui/display/chromeos/output_configurator.h"
+
+namespace ui {
+
+class TouchscreenDelegateOzone
+ : public OutputConfigurator::TouchscreenDelegate {
+ public:
+ TouchscreenDelegateOzone();
+ virtual ~TouchscreenDelegateOzone();
+
+ // OutputConfigurator::TouchscreenDelegate overrides:
+ virtual void AssociateTouchscreens(
+ std::vector<OutputConfigurator::DisplayState>* outputs) OVERRIDE;
+ virtual void ConfigureCTM(
+ int touch_device_id,
+ const OutputConfigurator::CoordinateTransformation& ctm) OVERRIDE;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(TouchscreenDelegateOzone);
+};
+
+} // namespace ui
+
+#endif // UI_DISPLAY_CHROMEOS_OZONE_TOUCHSCREEN_DELEGATE_OZONE_H_
diff --git a/ui/display/chromeos/x11/display_snapshot_x11.cc b/ui/display/chromeos/x11/display_snapshot_x11.cc
index 366a1f3cc3..9228a07c4e 100644
--- a/ui/display/chromeos/x11/display_snapshot_x11.cc
+++ b/ui/display/chromeos/x11/display_snapshot_x11.cc
@@ -6,7 +6,7 @@
#include "base/strings/stringprintf.h"
#include "ui/display/chromeos/x11/display_mode_x11.h"
-#include "ui/display/chromeos/x11/display_util.h"
+#include "ui/display/x11/edid_parser_x11.h"
namespace ui {
diff --git a/ui/display/chromeos/x11/display_util.cc b/ui/display/chromeos/x11/display_util.cc
deleted file mode 100644
index 107d8be5fe..0000000000
--- a/ui/display/chromeos/x11/display_util.cc
+++ /dev/null
@@ -1,161 +0,0 @@
-// Copyright 2014 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 "ui/display/chromeos/x11/display_util.h"
-
-#include <X11/extensions/Xrandr.h>
-#include <X11/Xatom.h>
-#include <X11/Xlib.h>
-
-#include "base/macros.h"
-#include "base/strings/string_util.h"
-#include "base/x11/edid_parser_x11.h"
-
-namespace ui {
-
-namespace {
-
-struct OutputTypeMapping {
- // Prefix of output name.
- std::string name;
- OutputType type;
-};
-
-const OutputTypeMapping kOutputTypeMapping[] = {
- {"LVDS", OUTPUT_TYPE_INTERNAL},
- {"eDP", OUTPUT_TYPE_INTERNAL},
- {"DSI", OUTPUT_TYPE_INTERNAL},
- {"VGA", OUTPUT_TYPE_VGA},
- {"HDMI", OUTPUT_TYPE_HDMI},
- {"DVI", OUTPUT_TYPE_DVI},
- {"DP", OUTPUT_TYPE_DISPLAYPORT}
-};
-
-// Gets some useful data from the specified output device, such like
-// manufacturer's ID, product code, and human readable name. Returns false if it
-// fails to get those data and doesn't touch manufacturer ID/product code/name.
-// NULL can be passed for unwanted output parameters.
-bool GetOutputDeviceData(XID output,
- uint16* manufacturer_id,
- std::string* human_readable_name) {
- unsigned long nitems = 0;
- unsigned char* prop = NULL;
- if (!base::GetEDIDProperty(output, &nitems, &prop))
- return false;
-
- bool result = base::ParseOutputDeviceData(
- prop, nitems, manufacturer_id, human_readable_name);
- XFree(prop);
- return result;
-}
-
-} // namespace
-
-OutputType GetOutputTypeFromName(const std::string& name) {
- for (unsigned int i = 0; i < arraysize(kOutputTypeMapping); ++i) {
- if (name.find(kOutputTypeMapping[i].name) == 0) {
- return kOutputTypeMapping[i].type;
- }
- }
-
- return OUTPUT_TYPE_UNKNOWN;
-}
-
-std::string GetDisplayName(RROutput output) {
- std::string display_name;
- GetOutputDeviceData(output, NULL, &display_name);
- return display_name;
-}
-
-bool GetOutputOverscanFlag(RROutput output, bool* flag) {
- unsigned long nitems = 0;
- unsigned char* prop = NULL;
- if (!base::GetEDIDProperty(output, &nitems, &prop))
- return false;
-
- bool found = ParseOutputOverscanFlag(prop, nitems, flag);
- XFree(prop);
- return found;
-}
-
-bool ParseOutputOverscanFlag(const unsigned char* prop,
- unsigned long nitems,
- bool* flag) {
- // See http://en.wikipedia.org/wiki/Extended_display_identification_data
- // for the extension format of EDID. Also see EIA/CEA-861 spec for
- // the format of the extensions and how video capability is encoded.
- // - byte 0: tag. should be 02h.
- // - byte 1: revision. only cares revision 3 (03h).
- // - byte 4-: data block.
- const unsigned int kExtensionBase = 128;
- const unsigned int kExtensionSize = 128;
- const unsigned int kNumExtensionsOffset = 126;
- const unsigned int kDataBlockOffset = 4;
- const unsigned char kCEAExtensionTag = '\x02';
- const unsigned char kExpectedExtensionRevision = '\x03';
- const unsigned char kExtendedTag = 7;
- const unsigned char kExtendedVideoCapabilityTag = 0;
- const unsigned int kPTOverscan = 4;
- const unsigned int kITOverscan = 2;
- const unsigned int kCEOverscan = 0;
-
- if (nitems <= kNumExtensionsOffset)
- return false;
-
- unsigned char num_extensions = prop[kNumExtensionsOffset];
-
- for (size_t i = 0; i < num_extensions; ++i) {
- // Skip parsing the whole extension if size is not enough.
- if (nitems < kExtensionBase + (i + 1) * kExtensionSize)
- break;
-
- const unsigned char* extension = prop + kExtensionBase + i * kExtensionSize;
- unsigned char tag = extension[0];
- unsigned char revision = extension[1];
- if (tag != kCEAExtensionTag || revision != kExpectedExtensionRevision)
- continue;
-
- unsigned char timing_descriptors_start =
- std::min(extension[2], static_cast<unsigned char>(kExtensionSize));
- const unsigned char* data_block = extension + kDataBlockOffset;
- while (data_block < extension + timing_descriptors_start) {
- // A data block is encoded as:
- // - byte 1 high 3 bits: tag. '07' for extended tags.
- // - byte 1 remaining bits: the length of data block.
- // - byte 2: the extended tag. '0' for video capability.
- // - byte 3: the capability.
- unsigned char tag = data_block[0] >> 5;
- unsigned char payload_length = data_block[0] & 0x1f;
- if (static_cast<unsigned long>(data_block + payload_length - prop) >
- nitems)
- break;
-
- if (tag != kExtendedTag || payload_length < 2) {
- data_block += payload_length + 1;
- continue;
- }
-
- unsigned char extended_tag_code = data_block[1];
- if (extended_tag_code != kExtendedVideoCapabilityTag) {
- data_block += payload_length + 1;
- continue;
- }
-
- // The difference between preferred, IT, and CE video formats
- // doesn't matter. Sets |flag| to true if any of these flags are true.
- if ((data_block[2] & (1 << kPTOverscan)) ||
- (data_block[2] & (1 << kITOverscan)) ||
- (data_block[2] & (1 << kCEOverscan))) {
- *flag = true;
- } else {
- *flag = false;
- }
- return true;
- }
- }
-
- return false;
-}
-
-} // namespace ui
diff --git a/ui/display/chromeos/x11/display_util_unittest.cc b/ui/display/chromeos/x11/display_util_unittest.cc
deleted file mode 100644
index 03a6af5406..0000000000
--- a/ui/display/chromeos/x11/display_util_unittest.cc
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copyright 2014 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 "ui/display/chromeos/x11/display_util.h"
-
-#include "base/memory/scoped_ptr.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-#include <X11/extensions/Xrandr.h>
-
-namespace ui {
-
-namespace {
-
-// Returns the number of characters in the string literal but doesn't count its
-// terminator NULL byte.
-#define charsize(str) (arraysize(str) - 1)
-
-// Sample EDID data extracted from real devices.
-const unsigned char kNormalDisplay[] =
- "\x00\xff\xff\xff\xff\xff\xff\x00\x22\xf0\x6c\x28\x01\x01\x01\x01"
- "\x02\x16\x01\x04\xb5\x40\x28\x78\xe2\x8d\x85\xad\x4f\x35\xb1\x25"
- "\x0e\x50\x54\x00\x00\x00\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"
- "\x01\x01\x01\x01\x01\x01\xe2\x68\x00\xa0\xa0\x40\x2e\x60\x30\x20"
- "\x36\x00\x81\x90\x21\x00\x00\x1a\xbc\x1b\x00\xa0\x50\x20\x17\x30"
- "\x30\x20\x36\x00\x81\x90\x21\x00\x00\x1a\x00\x00\x00\xfc\x00\x48"
- "\x50\x20\x5a\x52\x33\x30\x77\x0a\x20\x20\x20\x20\x00\x00\x00\xff"
- "\x00\x43\x4e\x34\x32\x30\x32\x31\x33\x37\x51\x0a\x20\x20\x00\x71";
-
-const unsigned char kInternalDisplay[] =
- "\x00\xff\xff\xff\xff\xff\xff\x00\x4c\xa3\x42\x31\x00\x00\x00\x00"
- "\x00\x15\x01\x03\x80\x1a\x10\x78\x0a\xd3\xe5\x95\x5c\x60\x90\x27"
- "\x19\x50\x54\x00\x00\x00\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"
- "\x01\x01\x01\x01\x01\x01\x9e\x1b\x00\xa0\x50\x20\x12\x30\x10\x30"
- "\x13\x00\x05\xa3\x10\x00\x00\x19\x00\x00\x00\x0f\x00\x00\x00\x00"
- "\x00\x00\x00\x00\x00\x23\x87\x02\x64\x00\x00\x00\x00\xfe\x00\x53"
- "\x41\x4d\x53\x55\x4e\x47\x0a\x20\x20\x20\x20\x20\x00\x00\x00\xfe"
- "\x00\x31\x32\x31\x41\x54\x31\x31\x2d\x38\x30\x31\x0a\x20\x00\x45";
-
-const unsigned char kOverscanDisplay[] =
- "\x00\xff\xff\xff\xff\xff\xff\x00\x4c\x2d\xfe\x08\x00\x00\x00\x00"
- "\x29\x15\x01\x03\x80\x10\x09\x78\x0a\xee\x91\xa3\x54\x4c\x99\x26"
- "\x0f\x50\x54\xbd\xef\x80\x71\x4f\x81\xc0\x81\x00\x81\x80\x95\x00"
- "\xa9\xc0\xb3\x00\x01\x01\x02\x3a\x80\x18\x71\x38\x2d\x40\x58\x2c"
- "\x45\x00\xa0\x5a\x00\x00\x00\x1e\x66\x21\x56\xaa\x51\x00\x1e\x30"
- "\x46\x8f\x33\x00\xa0\x5a\x00\x00\x00\x1e\x00\x00\x00\xfd\x00\x18"
- "\x4b\x0f\x51\x17\x00\x0a\x20\x20\x20\x20\x20\x20\x00\x00\x00\xfc"
- "\x00\x53\x41\x4d\x53\x55\x4e\x47\x0a\x20\x20\x20\x20\x20\x01\x1d"
- "\x02\x03\x1f\xf1\x47\x90\x04\x05\x03\x20\x22\x07\x23\x09\x07\x07"
- "\x83\x01\x00\x00\xe2\x00\x0f\x67\x03\x0c\x00\x20\x00\xb8\x2d\x01"
- "\x1d\x80\x18\x71\x1c\x16\x20\x58\x2c\x25\x00\xa0\x5a\x00\x00\x00"
- "\x9e\x01\x1d\x00\x72\x51\xd0\x1e\x20\x6e\x28\x55\x00\xa0\x5a\x00"
- "\x00\x00\x1e\x8c\x0a\xd0\x8a\x20\xe0\x2d\x10\x10\x3e\x96\x00\xa0"
- "\x5a\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
- "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
- "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6";
-
-// The EDID info misdetecting overscan once. see crbug.com/226318
-const unsigned char kMisdetecedDisplay[] =
- "\x00\xff\xff\xff\xff\xff\xff\x00\x10\xac\x64\x40\x4c\x30\x30\x32"
- "\x0c\x15\x01\x03\x80\x40\x28\x78\xea\x8d\x85\xad\x4f\x35\xb1\x25"
- "\x0e\x50\x54\xa5\x4b\x00\x71\x4f\x81\x00\x81\x80\xd1\x00\xa9\x40"
- "\x01\x01\x01\x01\x01\x01\x28\x3c\x80\xa0\x70\xb0\x23\x40\x30\x20"
- "\x36\x00\x81\x91\x21\x00\x00\x1a\x00\x00\x00\xff\x00\x50\x48\x35"
- "\x4e\x59\x31\x33\x4e\x32\x30\x30\x4c\x0a\x00\x00\x00\xfc\x00\x44"
- "\x45\x4c\x4c\x20\x55\x33\x30\x31\x31\x0a\x20\x20\x00\x00\x00\xfd"
- "\x00\x31\x56\x1d\x5e\x12\x00\x0a\x20\x20\x20\x20\x20\x20\x01\x38"
- "\x02\x03\x29\xf1\x50\x90\x05\x04\x03\x02\x07\x16\x01\x06\x11\x12"
- "\x15\x13\x14\x1f\x20\x23\x0d\x7f\x07\x83\x0f\x00\x00\x67\x03\x0c"
- "\x00\x10\x00\x38\x2d\xe3\x05\x03\x01\x02\x3a\x80\x18\x71\x38\x2d"
- "\x40\x58\x2c\x45\x00\x81\x91\x21\x00\x00\x1e\x01\x1d\x80\x18\x71"
- "\x1c\x16\x20\x58\x2c\x25\x00\x81\x91\x21\x00\x00\x9e\x01\x1d\x00"
- "\x72\x51\xd0\x1e\x20\x6e\x28\x55\x00\x81\x91\x21\x00\x00\x1e\x8c"
- "\x0a\xd0\x8a\x20\xe0\x2d\x10\x10\x3e\x96\x00\x81\x91\x21\x00\x00"
- "\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94";
-
-} // namespace
-
-TEST(DisplayUtilTest, ParseOverscanFlag) {
- bool flag = false;
- EXPECT_FALSE(
- ParseOutputOverscanFlag(kNormalDisplay, charsize(kNormalDisplay), &flag));
-
- flag = false;
- EXPECT_FALSE(ParseOutputOverscanFlag(
- kInternalDisplay, charsize(kInternalDisplay), &flag));
-
- flag = false;
- EXPECT_TRUE(ParseOutputOverscanFlag(
- kOverscanDisplay, charsize(kOverscanDisplay), &flag));
- EXPECT_TRUE(flag);
-
- flag = false;
- EXPECT_FALSE(ParseOutputOverscanFlag(
- kMisdetecedDisplay, charsize(kMisdetecedDisplay), &flag));
-
- flag = false;
- // Copy |kOverscanDisplay| and set flags to false in it. The overscan flags
- // are embedded at byte 150 in this specific example. Fix here too when the
- // contents of kOverscanDisplay is altered.
- std::string display_data(reinterpret_cast<const char*>(kOverscanDisplay),
- charsize(kOverscanDisplay));
- display_data[150] = '\0';
- EXPECT_TRUE(ParseOutputOverscanFlag(
- reinterpret_cast<const unsigned char*>(display_data.data()),
- display_data.size(),
- &flag));
- EXPECT_FALSE(flag);
-}
-
-TEST(DisplayUtilTest, ParseBrokenOverscanData) {
- // Do not fill valid data here because it anyway fails to parse the data.
- scoped_ptr<unsigned char[]> data(new unsigned char[126]);
- bool flag = false;
- EXPECT_FALSE(ParseOutputOverscanFlag(data.get(), 0, &flag));
- EXPECT_FALSE(ParseOutputOverscanFlag(data.get(), 126, &flag));
-
- // extending data because ParseOutputOverscanFlag() will access the data.
- data.reset(new unsigned char[150]);
- // The number of CEA extensions is stored at byte 126.
- data[126] = '\x01';
- EXPECT_FALSE(ParseOutputOverscanFlag(data.get(), 128, &flag));
- EXPECT_FALSE(ParseOutputOverscanFlag(data.get(), 150, &flag));
-}
-
-TEST(DisplayUtilTest, GetOutputTypeFromName) {
- EXPECT_EQ(OUTPUT_TYPE_INTERNAL, GetOutputTypeFromName("LVDS"));
- EXPECT_EQ(OUTPUT_TYPE_INTERNAL, GetOutputTypeFromName("eDP"));
- EXPECT_EQ(OUTPUT_TYPE_INTERNAL, GetOutputTypeFromName("DSI"));
- EXPECT_EQ(OUTPUT_TYPE_INTERNAL, GetOutputTypeFromName("LVDSxx"));
- EXPECT_EQ(OUTPUT_TYPE_INTERNAL, GetOutputTypeFromName("eDPzz"));
- EXPECT_EQ(OUTPUT_TYPE_INTERNAL, GetOutputTypeFromName("DSIyy"));
-
- EXPECT_EQ(OUTPUT_TYPE_VGA, GetOutputTypeFromName("VGA"));
- EXPECT_EQ(OUTPUT_TYPE_VGA, GetOutputTypeFromName("VGAxx"));
- EXPECT_EQ(OUTPUT_TYPE_HDMI, GetOutputTypeFromName("HDMI"));
- EXPECT_EQ(OUTPUT_TYPE_HDMI, GetOutputTypeFromName("HDMIyy"));
- EXPECT_EQ(OUTPUT_TYPE_DVI, GetOutputTypeFromName("DVI"));
- EXPECT_EQ(OUTPUT_TYPE_DVI, GetOutputTypeFromName("DVIzz"));
- EXPECT_EQ(OUTPUT_TYPE_DISPLAYPORT, GetOutputTypeFromName("DP"));
- EXPECT_EQ(OUTPUT_TYPE_DISPLAYPORT, GetOutputTypeFromName("DPww"));
-
- EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("xyz"));
- EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("abcLVDS"));
- EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("cdeeDP"));
- EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("abcDSI"));
- EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("LVD"));
- EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("eD"));
- EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("DS"));
- EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("VG"));
- EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("HDM"));
- EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("DV"));
- EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("D"));
-}
-
-} // namespace ui
diff --git a/ui/display/chromeos/x11/display_util_x11.cc b/ui/display/chromeos/x11/display_util_x11.cc
new file mode 100644
index 0000000000..f5a4f2701e
--- /dev/null
+++ b/ui/display/chromeos/x11/display_util_x11.cc
@@ -0,0 +1,41 @@
+// Copyright 2014 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 "ui/display/chromeos/x11/display_util_x11.h"
+
+#include "base/macros.h"
+
+namespace ui {
+
+namespace {
+
+struct OutputTypeMapping {
+ // Prefix of output name.
+ const char* name;
+ OutputType type;
+};
+
+const OutputTypeMapping kOutputTypeMapping[] = {
+ {"LVDS", OUTPUT_TYPE_INTERNAL},
+ {"eDP", OUTPUT_TYPE_INTERNAL},
+ {"DSI", OUTPUT_TYPE_INTERNAL},
+ {"VGA", OUTPUT_TYPE_VGA},
+ {"HDMI", OUTPUT_TYPE_HDMI},
+ {"DVI", OUTPUT_TYPE_DVI},
+ {"DP", OUTPUT_TYPE_DISPLAYPORT}
+};
+
+} // namespace
+
+OutputType GetOutputTypeFromName(const std::string& name) {
+ for (unsigned int i = 0; i < arraysize(kOutputTypeMapping); ++i) {
+ if (name.find(kOutputTypeMapping[i].name) == 0) {
+ return kOutputTypeMapping[i].type;
+ }
+ }
+
+ return OUTPUT_TYPE_UNKNOWN;
+}
+
+} // namespace ui
diff --git a/ui/display/chromeos/x11/display_util_x11.h b/ui/display/chromeos/x11/display_util_x11.h
new file mode 100644
index 0000000000..c8a783710b
--- /dev/null
+++ b/ui/display/chromeos/x11/display_util_x11.h
@@ -0,0 +1,24 @@
+// Copyright 2014 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 UI_DISPLAY_CHROMEOS_DISPLAY_UTIL_X11_H_
+#define UI_DISPLAY_CHROMEOS_DISPLAY_UTIL_X11_H_
+
+#include <string>
+
+#include "ui/display/display_constants.h"
+#include "ui/display/display_export.h"
+
+typedef unsigned long XID;
+typedef XID RROutput;
+
+namespace ui {
+
+// Returns the OutputType by matching known type prefixes to |name|. Returns
+// OUTPUT_TYPE_UNKNOWN if no valid match.
+DISPLAY_EXPORT OutputType GetOutputTypeFromName(const std::string& name);
+
+} // namespace ui
+
+#endif // UI_DISPLAY_CHROMEOS_DISPLAY_UTIL_X11_H_
diff --git a/ui/display/chromeos/x11/display_util_x11_unittest.cc b/ui/display/chromeos/x11/display_util_x11_unittest.cc
new file mode 100644
index 0000000000..e178f7fb5e
--- /dev/null
+++ b/ui/display/chromeos/x11/display_util_x11_unittest.cc
@@ -0,0 +1,42 @@
+// Copyright 2014 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 "ui/display/chromeos/x11/display_util_x11.h"
+
+#include "base/memory/scoped_ptr.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace ui {
+
+TEST(DisplayUtilX11Test, GetOutputTypeFromName) {
+ EXPECT_EQ(OUTPUT_TYPE_INTERNAL, GetOutputTypeFromName("LVDS"));
+ EXPECT_EQ(OUTPUT_TYPE_INTERNAL, GetOutputTypeFromName("eDP"));
+ EXPECT_EQ(OUTPUT_TYPE_INTERNAL, GetOutputTypeFromName("DSI"));
+ EXPECT_EQ(OUTPUT_TYPE_INTERNAL, GetOutputTypeFromName("LVDSxx"));
+ EXPECT_EQ(OUTPUT_TYPE_INTERNAL, GetOutputTypeFromName("eDPzz"));
+ EXPECT_EQ(OUTPUT_TYPE_INTERNAL, GetOutputTypeFromName("DSIyy"));
+
+ EXPECT_EQ(OUTPUT_TYPE_VGA, GetOutputTypeFromName("VGA"));
+ EXPECT_EQ(OUTPUT_TYPE_VGA, GetOutputTypeFromName("VGAxx"));
+ EXPECT_EQ(OUTPUT_TYPE_HDMI, GetOutputTypeFromName("HDMI"));
+ EXPECT_EQ(OUTPUT_TYPE_HDMI, GetOutputTypeFromName("HDMIyy"));
+ EXPECT_EQ(OUTPUT_TYPE_DVI, GetOutputTypeFromName("DVI"));
+ EXPECT_EQ(OUTPUT_TYPE_DVI, GetOutputTypeFromName("DVIzz"));
+ EXPECT_EQ(OUTPUT_TYPE_DISPLAYPORT, GetOutputTypeFromName("DP"));
+ EXPECT_EQ(OUTPUT_TYPE_DISPLAYPORT, GetOutputTypeFromName("DPww"));
+
+ EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("xyz"));
+ EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("abcLVDS"));
+ EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("cdeeDP"));
+ EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("abcDSI"));
+ EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("LVD"));
+ EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("eD"));
+ EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("DS"));
+ EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("VG"));
+ EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("HDM"));
+ EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("DV"));
+ EXPECT_EQ(OUTPUT_TYPE_UNKNOWN, GetOutputTypeFromName("D"));
+}
+
+} // namespace ui
diff --git a/ui/display/chromeos/x11/native_display_delegate_x11.cc b/ui/display/chromeos/x11/native_display_delegate_x11.cc
index 2135ad9c7b..8f687c9924 100644
--- a/ui/display/chromeos/x11/native_display_delegate_x11.cc
+++ b/ui/display/chromeos/x11/native_display_delegate_x11.cc
@@ -16,12 +16,12 @@
#include "base/message_loop/message_loop.h"
#include "base/message_loop/message_pump_x11.h"
#include "base/stl_util.h"
-#include "base/x11/edid_parser_x11.h"
#include "ui/display/chromeos/native_display_observer.h"
#include "ui/display/chromeos/x11/display_mode_x11.h"
#include "ui/display/chromeos/x11/display_snapshot_x11.h"
-#include "ui/display/chromeos/x11/display_util.h"
+#include "ui/display/chromeos/x11/display_util_x11.h"
#include "ui/display/chromeos/x11/native_display_event_dispatcher_x11.h"
+#include "ui/display/x11/edid_parser_x11.h"
#include "ui/gfx/x/x11_error_tracker.h"
namespace ui {
@@ -195,7 +195,7 @@ void NativeDisplayDelegateX11::UngrabServer() {
void NativeDisplayDelegateX11::SyncWithServer() { XSync(display_, 0); }
-void NativeDisplayDelegateX11::SetBackgroundColor(uint32 color_argb) {
+void NativeDisplayDelegateX11::SetBackgroundColor(uint32_t color_argb) {
// Configuring CRTCs/Framebuffer clears the boot screen image. Set the
// same background color while configuring the display to minimize the
// duration of black screen at boot time. The background is filled with
@@ -343,7 +343,8 @@ DisplaySnapshotX11* NativeDisplayDelegateX11::InitDisplaySnapshot(
RRCrtc* last_used_crtc,
int index) {
int64_t display_id = 0;
- bool has_display_id = base::GetDisplayId(id, index, &display_id);
+ bool has_display_id = GetDisplayId(
+ id, static_cast<uint8_t>(index), &display_id);
OutputType type = GetOutputTypeFromName(info->name);
if (type == OUTPUT_TYPE_UNKNOWN)
@@ -384,9 +385,6 @@ DisplaySnapshotX11* NativeDisplayDelegateX11::InitDisplaySnapshot(
const DisplayMode* native_mode = NULL;
std::vector<const DisplayMode*> display_modes;
- // TODO(mukai|marcheu): check the system status and fill the correct list of
- // available color profiles.
-
for (int i = 0; i < info->nmode; ++i) {
const RRMode mode = info->modes[i];
if (modes_.find(mode) != modes_.end()) {
@@ -607,6 +605,15 @@ bool NativeDisplayDelegateX11::IsOutputAspectPreservingScaling(RROutput id) {
return ret;
}
+
+std::vector<ColorCalibrationProfile>
+NativeDisplayDelegateX11::GetAvailableColorCalibrationProfiles(
+ const DisplaySnapshot& output) {
+ // TODO(mukai|marcheu): Checks the system data and fills the result.
+ // Note that the order would be Dynamic -> Standard -> Movie -> Reading.
+ return std::vector<ColorCalibrationProfile>();
+}
+
bool NativeDisplayDelegateX11::SetColorCalibrationProfile(
const DisplaySnapshot& output,
ColorCalibrationProfile new_profile) {
diff --git a/ui/display/chromeos/x11/native_display_delegate_x11.h b/ui/display/chromeos/x11/native_display_delegate_x11.h
index 1affda4734..d4b608d15d 100644
--- a/ui/display/chromeos/x11/native_display_delegate_x11.h
+++ b/ui/display/chromeos/x11/native_display_delegate_x11.h
@@ -5,10 +5,11 @@
#ifndef UI_DISPLAY_CHROMEOS_X11_NATIVE_DISPLAY_DELEGATE_X11_H_
#define UI_DISPLAY_CHROMEOS_X11_NATIVE_DISPLAY_DELEGATE_X11_H_
+#include <stdint.h>
+
#include <map>
#include <vector>
-#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/event_types.h"
#include "base/memory/scoped_ptr.h"
@@ -70,7 +71,7 @@ class DISPLAY_EXPORT NativeDisplayDelegateX11 : public NativeDisplayDelegate {
virtual void GrabServer() OVERRIDE;
virtual void UngrabServer() OVERRIDE;
virtual void SyncWithServer() OVERRIDE;
- virtual void SetBackgroundColor(uint32 color_argb) OVERRIDE;
+ virtual void SetBackgroundColor(uint32_t color_argb) OVERRIDE;
virtual void ForceDPMSOn() OVERRIDE;
virtual std::vector<DisplaySnapshot*> GetOutputs() OVERRIDE;
virtual void AddMode(const DisplaySnapshot& output,
@@ -83,6 +84,9 @@ class DISPLAY_EXPORT NativeDisplayDelegateX11 : public NativeDisplayDelegate {
HDCPState* state) OVERRIDE;
virtual bool SetHDCPState(const DisplaySnapshot& output,
HDCPState state) OVERRIDE;
+ virtual std::vector<ColorCalibrationProfile>
+ GetAvailableColorCalibrationProfiles(
+ const DisplaySnapshot& output) OVERRIDE;
virtual bool SetColorCalibrationProfile(
const DisplaySnapshot& output,
ColorCalibrationProfile new_profile) OVERRIDE;
diff --git a/ui/display/chromeos/x11/native_display_event_dispatcher_x11.cc b/ui/display/chromeos/x11/native_display_event_dispatcher_x11.cc
index 786d865d22..613608aa28 100644
--- a/ui/display/chromeos/x11/native_display_event_dispatcher_x11.cc
+++ b/ui/display/chromeos/x11/native_display_event_dispatcher_x11.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/time/default_tick_clock.h"
#include "ui/display/chromeos/x11/native_display_event_dispatcher_x11.h"
#include "ui/display/chromeos/x11/display_mode_x11.h"
#include "ui/display/chromeos/x11/display_snapshot_x11.h"
@@ -10,10 +11,15 @@
namespace ui {
+// static
+const int NativeDisplayEventDispatcherX11::kCachedOutputsExpirationMs = 5000;
+
NativeDisplayEventDispatcherX11::NativeDisplayEventDispatcherX11(
NativeDisplayDelegateX11::HelperDelegate* delegate,
int xrandr_event_base)
- : delegate_(delegate), xrandr_event_base_(xrandr_event_base) {}
+ : delegate_(delegate),
+ xrandr_event_base_(xrandr_event_base),
+ tick_clock_(new base::DefaultTickClock) {}
NativeDisplayEventDispatcherX11::~NativeDisplayEventDispatcherX11() {}
@@ -45,37 +51,49 @@ uint32_t NativeDisplayEventDispatcherX11::Dispatch(
<< " mode=" << output_change_event->mode
<< " action=" << (connected ? "connected" : "disconnected");
- bool found_changed_output = false;
- const std::vector<DisplaySnapshot*>& cached_outputs =
- delegate_->GetCachedOutputs();
- for (std::vector<DisplaySnapshot*>::const_iterator it =
- cached_outputs.begin();
- it != cached_outputs.end();
- ++it) {
- const DisplaySnapshotX11* x11_output =
- static_cast<const DisplaySnapshotX11*>(*it);
- const DisplayModeX11* x11_mode =
- static_cast<const DisplayModeX11*>(x11_output->current_mode());
-
- if (x11_output->output() == output_change_event->output) {
- if (connected && x11_output->crtc() == output_change_event->crtc &&
- x11_mode->mode_id() == output_change_event->mode) {
- VLOG(1) << "Ignoring event describing already-cached state";
- return POST_DISPATCH_PERFORM_DEFAULT;
+ bool force_notify = last_notified_time_.is_null() ||
+ (tick_clock_->NowTicks() - last_notified_time_).InMilliseconds() >=
+ kCachedOutputsExpirationMs;
+ if (!force_notify) {
+ bool found_changed_output = false;
+ const std::vector<DisplaySnapshot*>& cached_outputs =
+ delegate_->GetCachedOutputs();
+ for (std::vector<DisplaySnapshot*>::const_iterator it =
+ cached_outputs.begin();
+ it != cached_outputs.end();
+ ++it) {
+ const DisplaySnapshotX11* x11_output =
+ static_cast<const DisplaySnapshotX11*>(*it);
+ const DisplayModeX11* x11_mode =
+ static_cast<const DisplayModeX11*>(x11_output->current_mode());
+
+ if (x11_output->output() == output_change_event->output) {
+ if (connected && x11_output->crtc() == output_change_event->crtc &&
+ x11_mode->mode_id() == output_change_event->mode) {
+ VLOG(1) << "Ignoring event describing already-cached state";
+ return POST_DISPATCH_PERFORM_DEFAULT;
+ }
+ found_changed_output = true;
+ break;
}
- found_changed_output = true;
- break;
}
- }
- if (!connected && !found_changed_output) {
- VLOG(1) << "Ignoring event describing already-disconnected output";
- return POST_DISPATCH_PERFORM_DEFAULT;
+ if (!connected && !found_changed_output) {
+ VLOG(1) << "Ignoring event describing already-disconnected output";
+ return POST_DISPATCH_PERFORM_DEFAULT;
+ }
}
+ last_notified_time_ = tick_clock_->NowTicks();
+
delegate_->NotifyDisplayObservers();
return POST_DISPATCH_PERFORM_DEFAULT;
}
+void NativeDisplayEventDispatcherX11::SetTickClockForTest(
+ scoped_ptr<base::TickClock> tick_clock) {
+ tick_clock_ = tick_clock.Pass();
+}
+
} // namespace ui
diff --git a/ui/display/chromeos/x11/native_display_event_dispatcher_x11.h b/ui/display/chromeos/x11/native_display_event_dispatcher_x11.h
index 94034b680e..d173efdb90 100644
--- a/ui/display/chromeos/x11/native_display_event_dispatcher_x11.h
+++ b/ui/display/chromeos/x11/native_display_event_dispatcher_x11.h
@@ -6,6 +6,8 @@
#define UI_DISPLAY_CHROMEOS_X11_NATIVE_DISPLAY_EVENT_DISPATCHER_X11_H_
#include "base/message_loop/message_pump_dispatcher.h"
+#include "base/time/tick_clock.h"
+#include "base/time/time.h"
#include "ui/display/chromeos/x11/native_display_delegate_x11.h"
namespace ui {
@@ -27,6 +29,11 @@ class DISPLAY_EXPORT NativeDisplayEventDispatcherX11
// Spurious events will have no effect.
virtual uint32_t Dispatch(const base::NativeEvent& event) OVERRIDE;
+ void SetTickClockForTest(scoped_ptr<base::TickClock> tick_clock);
+
+ // How long the cached output is valid.
+ static const int kCachedOutputsExpirationMs;
+
private:
NativeDisplayDelegateX11::HelperDelegate* delegate_; // Not owned.
@@ -34,6 +41,11 @@ class DISPLAY_EXPORT NativeDisplayEventDispatcherX11
// decoding events regarding output add/remove.
int xrandr_event_base_;
+ // The last time display observers were notified.
+ base::TimeTicks last_notified_time_;
+
+ scoped_ptr<base::TickClock> tick_clock_;
+
DISALLOW_COPY_AND_ASSIGN(NativeDisplayEventDispatcherX11);
};
diff --git a/ui/display/chromeos/x11/native_display_event_dispatcher_x11_unittest.cc b/ui/display/chromeos/x11/native_display_event_dispatcher_x11_unittest.cc
index abb42375cd..d43a630713 100644
--- a/ui/display/chromeos/x11/native_display_event_dispatcher_x11_unittest.cc
+++ b/ui/display/chromeos/x11/native_display_event_dispatcher_x11_unittest.cc
@@ -7,6 +7,7 @@
#undef Bool
#undef None
+#include "base/test/simple_test_tick_clock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/display/chromeos/x11/display_mode_x11.h"
#include "ui/display/chromeos/x11/display_snapshot_x11.h"
@@ -105,6 +106,7 @@ class NativeDisplayEventDispatcherX11Test : public testing::Test {
int xrandr_event_base_;
scoped_ptr<TestHelperDelegate> helper_delegate_;
scoped_ptr<NativeDisplayEventDispatcherX11> dispatcher_;
+ base::SimpleTestTickClock* test_tick_clock_; // Owned by |dispatcher_|.
private:
DISALLOW_COPY_AND_ASSIGN(NativeDisplayEventDispatcherX11Test);
@@ -114,7 +116,12 @@ NativeDisplayEventDispatcherX11Test::NativeDisplayEventDispatcherX11Test()
: xrandr_event_base_(10),
helper_delegate_(new TestHelperDelegate()),
dispatcher_(new NativeDisplayEventDispatcherX11(helper_delegate_.get(),
- xrandr_event_base_)) {}
+ xrandr_event_base_)),
+ test_tick_clock_(new base::SimpleTestTickClock) {
+ test_tick_clock_->Advance(base::TimeDelta::FromMilliseconds(1));
+ dispatcher_->SetTickClockForTest(
+ scoped_ptr<base::TickClock>(test_tick_clock_));
+}
NativeDisplayEventDispatcherX11Test::~NativeDisplayEventDispatcherX11Test() {}
@@ -172,8 +179,12 @@ TEST_F(NativeDisplayEventDispatcherX11Test, AvoidNotificationOnDuplicateEvent) {
outputs.push_back(CreateOutput(1, 10));
helper_delegate_->set_cached_outputs(outputs.get());
+ // Very first event will not be ignored.
DispatchOutputChangeEvent(1, 10, 20, true);
- EXPECT_EQ(0, helper_delegate_->num_calls_notify_observers());
+ EXPECT_EQ(1, helper_delegate_->num_calls_notify_observers());
+
+ DispatchOutputChangeEvent(1, 10, 20, true);
+ EXPECT_EQ(1, helper_delegate_->num_calls_notify_observers());
}
TEST_F(NativeDisplayEventDispatcherX11Test, CheckNotificationOnDisconnect) {
@@ -241,4 +252,50 @@ TEST_F(NativeDisplayEventDispatcherX11Test,
EXPECT_EQ(1, helper_delegate_->num_calls_notify_observers());
}
+TEST_F(NativeDisplayEventDispatcherX11Test,
+ ForceUpdateAfterCacheExpiration) {
+ // +1 to compenstate a possible rounding error.
+ const int kHalfOfExpirationMs =
+ NativeDisplayEventDispatcherX11::kCachedOutputsExpirationMs / 2 + 1;
+
+ ScopedVector<DisplaySnapshot> outputs;
+ outputs.push_back(CreateOutput(1, 10));
+ outputs.push_back(CreateOutput(2, 11));
+ helper_delegate_->set_cached_outputs(outputs.get());
+
+ EXPECT_EQ(0, helper_delegate_->num_calls_notify_observers());
+
+ DispatchOutputChangeEvent(2, 11, 20, true);
+ EXPECT_EQ(1, helper_delegate_->num_calls_notify_observers());
+
+ // Duplicated event will be ignored.
+ DispatchOutputChangeEvent(2, 11, 20, true);
+ EXPECT_EQ(1, helper_delegate_->num_calls_notify_observers());
+
+ test_tick_clock_->Advance(base::TimeDelta::FromMilliseconds(
+ kHalfOfExpirationMs));
+
+ // Duplicated event will still be ignored.
+ DispatchOutputChangeEvent(2, 11, 20, true);
+ EXPECT_EQ(1, helper_delegate_->num_calls_notify_observers());
+
+ // Duplicated event does notify after expiration timeout.
+ test_tick_clock_->Advance(
+ base::TimeDelta::FromMilliseconds(kHalfOfExpirationMs));
+ DispatchOutputChangeEvent(2, 11, 20, true);
+ EXPECT_EQ(2, helper_delegate_->num_calls_notify_observers());
+
+ // Last update time has been updated, so next duplicated change event
+ // will be ignored.
+ DispatchOutputChangeEvent(2, 11, 20, true);
+ EXPECT_EQ(2, helper_delegate_->num_calls_notify_observers());
+
+ // Another duplicated change event arrived within expiration time will
+ // be ignored again.
+ test_tick_clock_->Advance(base::TimeDelta::FromMilliseconds(
+ kHalfOfExpirationMs));
+ DispatchOutputChangeEvent(2, 11, 20, true);
+ EXPECT_EQ(2, helper_delegate_->num_calls_notify_observers());
+}
+
} // namespace ui
diff --git a/ui/display/display.gyp b/ui/display/display.gyp
index 5f766ac415..da58929436 100644
--- a/ui/display/display.gyp
+++ b/ui/display/display.gyp
@@ -27,12 +27,16 @@
'chromeos/native_display_observer.h',
'chromeos/output_configurator.cc',
'chromeos/output_configurator.h',
- 'chromeos/x11/display_util.cc',
- 'chromeos/x11/display_util.h',
+ 'chromeos/ozone/native_display_delegate_ozone.cc',
+ 'chromeos/ozone/native_display_delegate_ozone.h',
+ 'chromeos/ozone/touchscreen_delegate_ozone.cc',
+ 'chromeos/ozone/touchscreen_delegate_ozone.h',
'chromeos/x11/display_mode_x11.cc',
'chromeos/x11/display_mode_x11.h',
'chromeos/x11/display_snapshot_x11.cc',
'chromeos/x11/display_snapshot_x11.h',
+ 'chromeos/x11/display_util_x11.cc',
+ 'chromeos/x11/display_util_x11.h',
'chromeos/x11/native_display_delegate_x11.cc',
'chromeos/x11/native_display_delegate_x11.h',
'chromeos/x11/native_display_event_dispatcher_x11.cc',
@@ -41,6 +45,10 @@
'chromeos/x11/touchscreen_delegate_x11.h',
'display_constants.h',
'display_export.h',
+ 'edid_parser.cc',
+ 'edid_parser.h',
+ 'x11/edid_parser_x11.cc',
+ 'x11/edid_parser_x11.h',
],
'conditions': [
['use_x11 == 1', {
diff --git a/ui/display/display_constants.h b/ui/display/display_constants.h
index df0f1cc480..7ad266495b 100644
--- a/ui/display/display_constants.h
+++ b/ui/display/display_constants.h
@@ -37,12 +37,14 @@ enum OutputProtectionMethod {
// HDCP protection state.
enum HDCPState { HDCP_STATE_UNDESIRED, HDCP_STATE_DESIRED, HDCP_STATE_ENABLED };
-// Color calibration profiles.
+// Color calibration profiles. Don't change the order, and edit
+// tools/metrics/histograms/histograms.xml when a new item is added.
enum ColorCalibrationProfile {
COLOR_PROFILE_STANDARD,
COLOR_PROFILE_DYNAMIC,
COLOR_PROFILE_MOVIE,
COLOR_PROFILE_READING,
+ NUM_COLOR_PROFILES,
};
} // namespace ui
diff --git a/ui/display/display_unittests.gypi b/ui/display/display_unittests.gypi
index 6597bb989f..591bde53a9 100644
--- a/ui/display/display_unittests.gypi
+++ b/ui/display/display_unittests.gypi
@@ -8,11 +8,13 @@
'dependencies': [
'../base/base.gyp:test_support_base',
'../testing/gtest.gyp:gtest',
+ '../ui/display/display.gyp:display',
'../ui/gfx/gfx.gyp:gfx_geometry',
],
'sources': [
+ 'edid_parser_unittest.cc',
'chromeos/output_configurator_unittest.cc',
- 'chromeos/x11/display_util_unittest.cc',
+ 'chromeos/x11/display_util_x11_unittest.cc',
'chromeos/x11/native_display_event_dispatcher_x11_unittest.cc',
],
'conditions': [
@@ -21,7 +23,6 @@
# not like empty libraries.
['chromeos == 1', {
'dependencies': [
- '../ui/display/display.gyp:display',
'../ui/display/display.gyp:display_test_util',
],
}],
diff --git a/ui/display/edid_parser.cc b/ui/display/edid_parser.cc
new file mode 100644
index 0000000000..686b07147c
--- /dev/null
+++ b/ui/display/edid_parser.cc
@@ -0,0 +1,197 @@
+// Copyright 2014 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 "ui/display/edid_parser.h"
+
+#include <algorithm>
+
+#include "base/hash.h"
+#include "base/strings/string_util.h"
+#include "base/sys_byteorder.h"
+
+namespace ui {
+
+namespace {
+
+// Returns 64-bit persistent ID for the specified manufacturer's ID and
+// product_code_hash, and the index of the output it is connected to.
+// |output_index| is used to distinguish the displays of the same type. For
+// example, swapping two identical display between two outputs will not be
+// treated as swap. The 'serial number' field in EDID isn't used here because
+// it is not guaranteed to have unique number and it may have the same fixed
+// value (like 0).
+int64_t GetID(uint16_t manufacturer_id,
+ uint32_t product_code_hash,
+ uint8_t output_index) {
+ return ((static_cast<int64_t>(manufacturer_id) << 40) |
+ (static_cast<int64_t>(product_code_hash) << 8) | output_index);
+}
+
+} // namespace
+
+bool GetDisplayIdFromEDID(const std::vector<uint8_t>& edid,
+ uint8_t output_index,
+ int64_t* display_id_out) {
+ uint16_t manufacturer_id = 0;
+ std::string product_name;
+
+ // ParseOutputDeviceData fails if it doesn't have product_name.
+ ParseOutputDeviceData(edid, &manufacturer_id, &product_name);
+
+ // Generates product specific value from product_name instead of product code.
+ // See crbug.com/240341
+ uint32_t product_code_hash = product_name.empty() ?
+ 0 : base::Hash(product_name);
+ if (manufacturer_id != 0) {
+ // An ID based on display's index will be assigned later if this call
+ // fails.
+ *display_id_out = GetID(
+ manufacturer_id, product_code_hash, output_index);
+ return true;
+ }
+ return false;
+}
+
+bool ParseOutputDeviceData(const std::vector<uint8_t>& edid,
+ uint16_t* manufacturer_id,
+ std::string* human_readable_name) {
+ // See http://en.wikipedia.org/wiki/Extended_display_identification_data
+ // for the details of EDID data format. We use the following data:
+ // bytes 8-9: manufacturer EISA ID, in big-endian
+ // bytes 54-125: four descriptors (18-bytes each) which may contain
+ // the display name.
+ const unsigned int kManufacturerOffset = 8;
+ const unsigned int kManufacturerLength = 2;
+ const unsigned int kDescriptorOffset = 54;
+ const unsigned int kNumDescriptors = 4;
+ const unsigned int kDescriptorLength = 18;
+ // The specifier types.
+ const unsigned char kMonitorNameDescriptor = 0xfc;
+
+ if (manufacturer_id) {
+ if (edid.size() < kManufacturerOffset + kManufacturerLength) {
+ LOG(ERROR) << "too short EDID data: manifacturer id";
+ return false;
+ }
+
+ *manufacturer_id =
+ *reinterpret_cast<const uint16_t*>(&edid[kManufacturerOffset]);
+#if defined(ARCH_CPU_LITTLE_ENDIAN)
+ *manufacturer_id = base::ByteSwap(*manufacturer_id);
+#endif
+ }
+
+ if (!human_readable_name)
+ return true;
+
+ human_readable_name->clear();
+ for (unsigned int i = 0; i < kNumDescriptors; ++i) {
+ if (edid.size() < kDescriptorOffset + (i + 1) * kDescriptorLength)
+ break;
+
+ size_t offset = kDescriptorOffset + i * kDescriptorLength;
+ // If the descriptor contains the display name, it has the following
+ // structure:
+ // bytes 0-2, 4: \0
+ // byte 3: descriptor type, defined above.
+ // bytes 5-17: text data, ending with \r, padding with spaces
+ // we should check bytes 0-2 and 4, since it may have other values in
+ // case that the descriptor contains other type of data.
+ if (edid[offset] == 0 && edid[offset + 1] == 0 && edid[offset + 2] == 0 &&
+ edid[offset + 3] == kMonitorNameDescriptor && edid[offset + 4] == 0) {
+ std::string found_name(reinterpret_cast<const char*>(&edid[offset + 5]),
+ kDescriptorLength - 5);
+ base::TrimWhitespaceASCII(
+ found_name, base::TRIM_TRAILING, human_readable_name);
+ break;
+ }
+ }
+
+ // Verify if the |human_readable_name| consists of printable characters only.
+ for (size_t i = 0; i < human_readable_name->size(); ++i) {
+ char c = (*human_readable_name)[i];
+ if (!isascii(c) || !isprint(c)) {
+ human_readable_name->clear();
+ LOG(ERROR) << "invalid EDID: human unreadable char in name";
+ return false;
+ }
+ }
+
+ return true;
+}
+
+bool ParseOutputOverscanFlag(const std::vector<uint8_t>& edid,
+ bool* flag) {
+ // See http://en.wikipedia.org/wiki/Extended_display_identification_data
+ // for the extension format of EDID. Also see EIA/CEA-861 spec for
+ // the format of the extensions and how video capability is encoded.
+ // - byte 0: tag. should be 02h.
+ // - byte 1: revision. only cares revision 3 (03h).
+ // - byte 4-: data block.
+ const unsigned int kExtensionBase = 128;
+ const unsigned int kExtensionSize = 128;
+ const unsigned int kNumExtensionsOffset = 126;
+ const unsigned int kDataBlockOffset = 4;
+ const unsigned char kCEAExtensionTag = '\x02';
+ const unsigned char kExpectedExtensionRevision = '\x03';
+ const unsigned char kExtendedTag = 7;
+ const unsigned char kExtendedVideoCapabilityTag = 0;
+ const unsigned int kPTOverscan = 4;
+ const unsigned int kITOverscan = 2;
+ const unsigned int kCEOverscan = 0;
+
+ if (edid.size() <= kNumExtensionsOffset)
+ return false;
+
+ unsigned char num_extensions = edid[kNumExtensionsOffset];
+
+ for (size_t i = 0; i < num_extensions; ++i) {
+ // Skip parsing the whole extension if size is not enough.
+ if (edid.size() < kExtensionBase + (i + 1) * kExtensionSize)
+ break;
+
+ size_t extension_offset = kExtensionBase + i * kExtensionSize;
+ unsigned char tag = edid[extension_offset];
+ unsigned char revision = edid[extension_offset + 1];
+ if (tag != kCEAExtensionTag || revision != kExpectedExtensionRevision)
+ continue;
+
+ unsigned char timing_descriptors_start = std::min(
+ edid[extension_offset + 2], static_cast<unsigned char>(kExtensionSize));
+
+ for (size_t data_offset = extension_offset + kDataBlockOffset;
+ data_offset < extension_offset + timing_descriptors_start;) {
+ // A data block is encoded as:
+ // - byte 1 high 3 bits: tag. '07' for extended tags.
+ // - byte 1 remaining bits: the length of data block.
+ // - byte 2: the extended tag. '0' for video capability.
+ // - byte 3: the capability.
+ unsigned char tag = edid[data_offset] >> 5;
+ unsigned char payload_length = edid[data_offset] & 0x1f;
+ if (data_offset + payload_length > edid.size())
+ break;
+
+ if (tag != kExtendedTag || payload_length < 2 ||
+ edid[data_offset + 1] != kExtendedVideoCapabilityTag) {
+ data_offset += payload_length + 1;
+ continue;
+ }
+
+ // The difference between preferred, IT, and CE video formats
+ // doesn't matter. Sets |flag| to true if any of these flags are true.
+ if ((edid[data_offset + 2] & (1 << kPTOverscan)) ||
+ (edid[data_offset + 2] & (1 << kITOverscan)) ||
+ (edid[data_offset + 2] & (1 << kCEOverscan))) {
+ *flag = true;
+ } else {
+ *flag = false;
+ }
+ return true;
+ }
+ }
+
+ return false;
+}
+
+} // namespace ui
diff --git a/ui/display/edid_parser.h b/ui/display/edid_parser.h
new file mode 100644
index 0000000000..2527abf86d
--- /dev/null
+++ b/ui/display/edid_parser.h
@@ -0,0 +1,40 @@
+// Copyright 2014 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 UI_DISPLAY_EDID_PARSER_H_
+#define UI_DISPLAY_EDID_PARSER_H_
+
+#include <stdint.h>
+
+#include <string>
+#include <vector>
+
+#include "ui/display/display_export.h"
+
+// EDID (Extended Display Identification Data) is a format for monitor
+// metadata. This provides a parser for the data.
+
+namespace ui {
+
+// Generates the display id for the pair of |edid| and |index|, and store in
+// |display_id_out|. Returns true if the display id is successfully generated,
+// or false otherwise.
+DISPLAY_EXPORT bool GetDisplayIdFromEDID(const std::vector<uint8_t>& edid,
+ uint8_t index,
+ int64_t* display_id_out);
+
+// Parses |edid| as EDID data and stores extracted data into |manufacturer_id|
+// and |human_readable_name| and returns true. NULL can be passed for unwanted
+// output parameters. Some devices (especially internal displays) may not have
+// the field for |human_readable_name|, and it will return true in that case.
+DISPLAY_EXPORT bool ParseOutputDeviceData(const std::vector<uint8_t>& edid,
+ uint16_t* manufacturer_id,
+ std::string* human_readable_name);
+
+DISPLAY_EXPORT bool ParseOutputOverscanFlag(const std::vector<uint8_t>& edid,
+ bool* flag);
+
+} // namespace ui
+
+#endif // UI_DISPLAY_EDID_PARSER_H_
diff --git a/ui/display/edid_parser_unittest.cc b/ui/display/edid_parser_unittest.cc
new file mode 100644
index 0000000000..cac630e860
--- /dev/null
+++ b/ui/display/edid_parser_unittest.cc
@@ -0,0 +1,229 @@
+// Copyright 2014 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 "ui/display/edid_parser.h"
+
+#include "base/memory/scoped_ptr.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace ui {
+
+namespace {
+
+// Returns the number of characters in the string literal but doesn't count its
+// terminator NULL byte.
+#define charsize(str) (arraysize(str) - 1)
+
+// Sample EDID data extracted from real devices.
+const unsigned char kNormalDisplay[] =
+ "\x00\xff\xff\xff\xff\xff\xff\x00\x22\xf0\x6c\x28\x01\x01\x01\x01"
+ "\x02\x16\x01\x04\xb5\x40\x28\x78\xe2\x8d\x85\xad\x4f\x35\xb1\x25"
+ "\x0e\x50\x54\x00\x00\x00\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"
+ "\x01\x01\x01\x01\x01\x01\xe2\x68\x00\xa0\xa0\x40\x2e\x60\x30\x20"
+ "\x36\x00\x81\x90\x21\x00\x00\x1a\xbc\x1b\x00\xa0\x50\x20\x17\x30"
+ "\x30\x20\x36\x00\x81\x90\x21\x00\x00\x1a\x00\x00\x00\xfc\x00\x48"
+ "\x50\x20\x5a\x52\x33\x30\x77\x0a\x20\x20\x20\x20\x00\x00\x00\xff"
+ "\x00\x43\x4e\x34\x32\x30\x32\x31\x33\x37\x51\x0a\x20\x20\x00\x71";
+
+const unsigned char kInternalDisplay[] =
+ "\x00\xff\xff\xff\xff\xff\xff\x00\x4c\xa3\x42\x31\x00\x00\x00\x00"
+ "\x00\x15\x01\x03\x80\x1a\x10\x78\x0a\xd3\xe5\x95\x5c\x60\x90\x27"
+ "\x19\x50\x54\x00\x00\x00\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"
+ "\x01\x01\x01\x01\x01\x01\x9e\x1b\x00\xa0\x50\x20\x12\x30\x10\x30"
+ "\x13\x00\x05\xa3\x10\x00\x00\x19\x00\x00\x00\x0f\x00\x00\x00\x00"
+ "\x00\x00\x00\x00\x00\x23\x87\x02\x64\x00\x00\x00\x00\xfe\x00\x53"
+ "\x41\x4d\x53\x55\x4e\x47\x0a\x20\x20\x20\x20\x20\x00\x00\x00\xfe"
+ "\x00\x31\x32\x31\x41\x54\x31\x31\x2d\x38\x30\x31\x0a\x20\x00\x45";
+
+const unsigned char kOverscanDisplay[] =
+ "\x00\xff\xff\xff\xff\xff\xff\x00\x4c\x2d\xfe\x08\x00\x00\x00\x00"
+ "\x29\x15\x01\x03\x80\x10\x09\x78\x0a\xee\x91\xa3\x54\x4c\x99\x26"
+ "\x0f\x50\x54\xbd\xef\x80\x71\x4f\x81\xc0\x81\x00\x81\x80\x95\x00"
+ "\xa9\xc0\xb3\x00\x01\x01\x02\x3a\x80\x18\x71\x38\x2d\x40\x58\x2c"
+ "\x45\x00\xa0\x5a\x00\x00\x00\x1e\x66\x21\x56\xaa\x51\x00\x1e\x30"
+ "\x46\x8f\x33\x00\xa0\x5a\x00\x00\x00\x1e\x00\x00\x00\xfd\x00\x18"
+ "\x4b\x0f\x51\x17\x00\x0a\x20\x20\x20\x20\x20\x20\x00\x00\x00\xfc"
+ "\x00\x53\x41\x4d\x53\x55\x4e\x47\x0a\x20\x20\x20\x20\x20\x01\x1d"
+ "\x02\x03\x1f\xf1\x47\x90\x04\x05\x03\x20\x22\x07\x23\x09\x07\x07"
+ "\x83\x01\x00\x00\xe2\x00\x0f\x67\x03\x0c\x00\x20\x00\xb8\x2d\x01"
+ "\x1d\x80\x18\x71\x1c\x16\x20\x58\x2c\x25\x00\xa0\x5a\x00\x00\x00"
+ "\x9e\x01\x1d\x00\x72\x51\xd0\x1e\x20\x6e\x28\x55\x00\xa0\x5a\x00"
+ "\x00\x00\x1e\x8c\x0a\xd0\x8a\x20\xe0\x2d\x10\x10\x3e\x96\x00\xa0"
+ "\x5a\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+ "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6";
+
+// The EDID info misdetecting overscan once. see crbug.com/226318
+const unsigned char kMisdetectedDisplay[] =
+ "\x00\xff\xff\xff\xff\xff\xff\x00\x10\xac\x64\x40\x4c\x30\x30\x32"
+ "\x0c\x15\x01\x03\x80\x40\x28\x78\xea\x8d\x85\xad\x4f\x35\xb1\x25"
+ "\x0e\x50\x54\xa5\x4b\x00\x71\x4f\x81\x00\x81\x80\xd1\x00\xa9\x40"
+ "\x01\x01\x01\x01\x01\x01\x28\x3c\x80\xa0\x70\xb0\x23\x40\x30\x20"
+ "\x36\x00\x81\x91\x21\x00\x00\x1a\x00\x00\x00\xff\x00\x50\x48\x35"
+ "\x4e\x59\x31\x33\x4e\x32\x30\x30\x4c\x0a\x00\x00\x00\xfc\x00\x44"
+ "\x45\x4c\x4c\x20\x55\x33\x30\x31\x31\x0a\x20\x20\x00\x00\x00\xfd"
+ "\x00\x31\x56\x1d\x5e\x12\x00\x0a\x20\x20\x20\x20\x20\x20\x01\x38"
+ "\x02\x03\x29\xf1\x50\x90\x05\x04\x03\x02\x07\x16\x01\x06\x11\x12"
+ "\x15\x13\x14\x1f\x20\x23\x0d\x7f\x07\x83\x0f\x00\x00\x67\x03\x0c"
+ "\x00\x10\x00\x38\x2d\xe3\x05\x03\x01\x02\x3a\x80\x18\x71\x38\x2d"
+ "\x40\x58\x2c\x45\x00\x81\x91\x21\x00\x00\x1e\x01\x1d\x80\x18\x71"
+ "\x1c\x16\x20\x58\x2c\x25\x00\x81\x91\x21\x00\x00\x9e\x01\x1d\x00"
+ "\x72\x51\xd0\x1e\x20\x6e\x28\x55\x00\x81\x91\x21\x00\x00\x1e\x8c"
+ "\x0a\xd0\x8a\x20\xe0\x2d\x10\x10\x3e\x96\x00\x81\x91\x21\x00\x00"
+ "\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94";
+
+const unsigned char kLP2565A[] =
+ "\x00\xFF\xFF\xFF\xFF\xFF\xFF\x00\x22\xF0\x76\x26\x01\x01\x01\x01"
+ "\x02\x12\x01\x03\x80\x34\x21\x78\xEE\xEF\x95\xA3\x54\x4C\x9B\x26"
+ "\x0F\x50\x54\xA5\x6B\x80\x81\x40\x81\x80\x81\x99\x71\x00\xA9\x00"
+ "\xA9\x40\xB3\x00\xD1\x00\x28\x3C\x80\xA0\x70\xB0\x23\x40\x30\x20"
+ "\x36\x00\x07\x44\x21\x00\x00\x1A\x00\x00\x00\xFD\x00\x30\x55\x1E"
+ "\x5E\x11\x00\x0A\x20\x20\x20\x20\x20\x20\x00\x00\x00\xFC\x00\x48"
+ "\x50\x20\x4C\x50\x32\x34\x36\x35\x0A\x20\x20\x20\x00\x00\x00\xFF"
+ "\x00\x43\x4E\x4B\x38\x30\x32\x30\x34\x48\x4D\x0A\x20\x20\x00\xA4";
+
+const unsigned char kLP2565B[] =
+ "\x00\xFF\xFF\xFF\xFF\xFF\xFF\x00\x22\xF0\x75\x26\x01\x01\x01\x01"
+ "\x02\x12\x01\x03\x6E\x34\x21\x78\xEE\xEF\x95\xA3\x54\x4C\x9B\x26"
+ "\x0F\x50\x54\xA5\x6B\x80\x81\x40\x71\x00\xA9\x00\xA9\x40\xA9\x4F"
+ "\xB3\x00\xD1\xC0\xD1\x00\x28\x3C\x80\xA0\x70\xB0\x23\x40\x30\x20"
+ "\x36\x00\x07\x44\x21\x00\x00\x1A\x00\x00\x00\xFD\x00\x30\x55\x1E"
+ "\x5E\x15\x00\x0A\x20\x20\x20\x20\x20\x20\x00\x00\x00\xFC\x00\x48"
+ "\x50\x20\x4C\x50\x32\x34\x36\x35\x0A\x20\x20\x20\x00\x00\x00\xFF"
+ "\x00\x43\x4E\x4B\x38\x30\x32\x30\x34\x48\x4D\x0A\x20\x20\x00\x45";
+
+} // namespace
+
+TEST(EDIDParserTest, ParseOverscanFlag) {
+ bool flag = false;
+ std::vector<uint8_t> edid(
+ kNormalDisplay, kNormalDisplay + charsize(kNormalDisplay));
+ EXPECT_FALSE(ParseOutputOverscanFlag(edid, &flag));
+
+ flag = false;
+ edid.assign(kInternalDisplay, kInternalDisplay + charsize(kInternalDisplay));
+ EXPECT_FALSE(ParseOutputOverscanFlag(edid, &flag));
+
+ flag = false;
+ edid.assign(kOverscanDisplay, kOverscanDisplay + charsize(kOverscanDisplay));
+ EXPECT_TRUE(ParseOutputOverscanFlag(edid, &flag));
+ EXPECT_TRUE(flag);
+
+ flag = false;
+ edid.assign(
+ kMisdetectedDisplay, kMisdetectedDisplay + charsize(kMisdetectedDisplay));
+ EXPECT_FALSE(ParseOutputOverscanFlag(edid, &flag));
+
+ flag = false;
+ // Copy |kOverscanDisplay| and set flags to false in it. The overscan flags
+ // are embedded at byte 150 in this specific example. Fix here too when the
+ // contents of kOverscanDisplay is altered.
+ edid.assign(kOverscanDisplay, kOverscanDisplay + charsize(kOverscanDisplay));
+ edid[150] = '\0';
+ EXPECT_TRUE(ParseOutputOverscanFlag(edid, &flag));
+ EXPECT_FALSE(flag);
+}
+
+TEST(EDIDParserTest, ParseBrokenOverscanData) {
+ // Do not fill valid data here because it anyway fails to parse the data.
+ std::vector<uint8_t> data;
+ bool flag = false;
+ EXPECT_FALSE(ParseOutputOverscanFlag(data, &flag));
+ data.assign(126, '\0');
+ EXPECT_FALSE(ParseOutputOverscanFlag(data, &flag));
+
+ // extending data because ParseOutputOverscanFlag() will access the data.
+ data.assign(128, '\0');
+ // The number of CEA extensions is stored at byte 126.
+ data[126] = '\x01';
+ EXPECT_FALSE(ParseOutputOverscanFlag(data, &flag));
+
+ data.assign(150, '\0');
+ data[126] = '\x01';
+ EXPECT_FALSE(ParseOutputOverscanFlag(data, &flag));
+}
+
+TEST(EDIDParserTest, ParseEDID) {
+ uint16_t manufacturer_id = 0;
+ std::string human_readable_name;
+ std::vector<uint8_t> edid(
+ kNormalDisplay, kNormalDisplay + charsize(kNormalDisplay));
+ EXPECT_TRUE(ParseOutputDeviceData(
+ edid, &manufacturer_id, &human_readable_name));
+ EXPECT_EQ(0x22f0u, manufacturer_id);
+ EXPECT_EQ("HP ZR30w", human_readable_name);
+
+ manufacturer_id = 0;
+ human_readable_name.clear();
+ edid.assign(kInternalDisplay, kInternalDisplay + charsize(kInternalDisplay));
+ EXPECT_TRUE(ParseOutputDeviceData(edid, &manufacturer_id, NULL));
+ EXPECT_EQ(0x4ca3u, manufacturer_id);
+ EXPECT_EQ("", human_readable_name);
+
+ // Internal display doesn't have name.
+ EXPECT_TRUE(ParseOutputDeviceData(edid, NULL, &human_readable_name));
+ EXPECT_TRUE(human_readable_name.empty());
+
+ manufacturer_id = 0;
+ human_readable_name.clear();
+ edid.assign(kOverscanDisplay, kOverscanDisplay + charsize(kOverscanDisplay));
+ EXPECT_TRUE(ParseOutputDeviceData(
+ edid, &manufacturer_id, &human_readable_name));
+ EXPECT_EQ(0x4c2du, manufacturer_id);
+ EXPECT_EQ("SAMSUNG", human_readable_name);
+}
+
+TEST(EDIDParserTest, ParseBrokenEDID) {
+ uint16_t manufacturer_id = 0;
+ std::string human_readable_name;
+ std::vector<uint8_t> edid;
+
+ // length == 0
+ EXPECT_FALSE(ParseOutputDeviceData(
+ edid, &manufacturer_id, &human_readable_name));
+
+ // name is broken. Copying kNormalDisplay and substitute its name data by
+ // some control code.
+ edid.assign(kNormalDisplay, kNormalDisplay + charsize(kNormalDisplay));
+
+ // display's name data is embedded in byte 95-107 in this specific example.
+ // Fix here too when the contents of kNormalDisplay is altered.
+ edid[97] = '\x1b';
+ EXPECT_FALSE(ParseOutputDeviceData(
+ edid, &manufacturer_id, &human_readable_name));
+
+ // If |human_readable_name| isn't specified, it skips parsing the name.
+ manufacturer_id = 0;
+ EXPECT_TRUE(ParseOutputDeviceData(edid, &manufacturer_id, NULL));
+ EXPECT_EQ(0x22f0u, manufacturer_id);
+}
+
+TEST(EDIDParserTest, GetDisplayId) {
+ // EDID of kLP2565A and B are slightly different but actually the same device.
+ int64_t id1 = -1;
+ int64_t id2 = -1;
+ std::vector<uint8_t> edid(kLP2565A, kLP2565A + charsize(kLP2565A));
+ EXPECT_TRUE(GetDisplayIdFromEDID(edid, 0, &id1));
+ edid.assign(kLP2565B, kLP2565B + charsize(kLP2565B));
+ EXPECT_TRUE(GetDisplayIdFromEDID(edid, 0, &id2));
+ EXPECT_EQ(id1, id2);
+ EXPECT_NE(-1, id1);
+}
+
+TEST(EDIDParserTest, GetDisplayIdFromInternal) {
+ int64_t id = -1;
+ std::vector<uint8_t> edid(
+ kInternalDisplay, kInternalDisplay + charsize(kInternalDisplay));
+ EXPECT_TRUE(GetDisplayIdFromEDID(edid, 0, &id));
+ EXPECT_NE(-1, id);
+}
+
+TEST(EDIDParserTest, GetDisplayIdFailure) {
+ int64_t id = -1;
+ std::vector<uint8_t> edid;
+ EXPECT_FALSE(GetDisplayIdFromEDID(edid, 0, &id));
+ EXPECT_EQ(-1, id);
+}
+
+} // namespace ui
diff --git a/ui/display/x11/edid_parser_x11.cc b/ui/display/x11/edid_parser_x11.cc
new file mode 100644
index 0000000000..c53bd897da
--- /dev/null
+++ b/ui/display/x11/edid_parser_x11.cc
@@ -0,0 +1,123 @@
+// Copyright 2014 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 "ui/display/x11/edid_parser_x11.h"
+
+#include <X11/extensions/Xrandr.h>
+#include <X11/Xatom.h>
+#include <X11/Xlib.h>
+
+#include "base/message_loop/message_loop.h"
+#include "base/strings/string_util.h"
+#include "ui/display/edid_parser.h"
+
+namespace ui {
+
+namespace {
+
+bool IsRandRAvailable() {
+ int randr_version_major = 0;
+ int randr_version_minor = 0;
+ static bool is_randr_available = XRRQueryVersion(
+ base::MessagePumpX11::GetDefaultXDisplay(),
+ &randr_version_major, &randr_version_minor);
+ return is_randr_available;
+}
+
+// Get the EDID data from the |output| and stores to |edid|.
+// Returns true if EDID property is successfully obtained. Otherwise returns
+// false and does not touch |edid|.
+bool GetEDIDProperty(XID output, std::vector<uint8_t>* edid) {
+ if (!IsRandRAvailable())
+ return false;
+
+ Display* display = base::MessagePumpX11::GetDefaultXDisplay();
+
+ static Atom edid_property = XInternAtom(
+ base::MessagePumpX11::GetDefaultXDisplay(),
+ RR_PROPERTY_RANDR_EDID, false);
+
+ bool has_edid_property = false;
+ int num_properties = 0;
+ Atom* properties = XRRListOutputProperties(display, output, &num_properties);
+ for (int i = 0; i < num_properties; ++i) {
+ if (properties[i] == edid_property) {
+ has_edid_property = true;
+ break;
+ }
+ }
+ XFree(properties);
+ if (!has_edid_property)
+ return false;
+
+ Atom actual_type;
+ int actual_format;
+ unsigned long bytes_after;
+ unsigned long nitems = 0;
+ unsigned char* prop = NULL;
+ XRRGetOutputProperty(display,
+ output,
+ edid_property,
+ 0, // offset
+ 128, // length
+ false, // _delete
+ false, // pending
+ AnyPropertyType, // req_type
+ &actual_type,
+ &actual_format,
+ &nitems,
+ &bytes_after,
+ &prop);
+ DCHECK_EQ(XA_INTEGER, actual_type);
+ DCHECK_EQ(8, actual_format);
+ edid->assign(prop, prop + nitems);
+ XFree(prop);
+ return true;
+}
+
+// Gets some useful data from the specified output device, such like
+// manufacturer's ID, product code, and human readable name. Returns false if it
+// fails to get those data and doesn't touch manufacturer ID/product code/name.
+// NULL can be passed for unwanted output parameters.
+bool GetOutputDeviceData(XID output,
+ uint16_t* manufacturer_id,
+ std::string* human_readable_name) {
+ std::vector<uint8_t> edid;
+ if (!GetEDIDProperty(output, &edid))
+ return false;
+
+ bool result = ParseOutputDeviceData(
+ edid, manufacturer_id, human_readable_name);
+ return result;
+}
+
+} // namespace
+
+bool GetDisplayId(XID output_id,
+ uint8_t output_index,
+ int64_t* display_id_out) {
+ std::vector<uint8_t> edid;
+ if (!GetEDIDProperty(output_id, &edid))
+ return false;
+
+ bool result = GetDisplayIdFromEDID(edid, output_index, display_id_out);
+ return result;
+}
+
+std::string GetDisplayName(RROutput output) {
+ std::string display_name;
+ GetOutputDeviceData(output, NULL, &display_name);
+ return display_name;
+}
+
+bool GetOutputOverscanFlag(RROutput output, bool* flag) {
+ std::vector<uint8_t> edid;
+ if (!GetEDIDProperty(output, &edid))
+ return false;
+
+ bool found = ParseOutputOverscanFlag(edid, flag);
+ return found;
+}
+
+} // namespace ui
diff --git a/ui/display/chromeos/x11/display_util.h b/ui/display/x11/edid_parser_x11.h
index 33d95452d1..951dd2f9b3 100644
--- a/ui/display/chromeos/x11/display_util.h
+++ b/ui/display/x11/edid_parser_x11.h
@@ -2,21 +2,28 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef UI_DISPLAY_CHROMEOS_DISPLAY_UTIL_H_
-#define UI_DISPLAY_CHROMEOS_DISPLAY_UTIL_H_
+#ifndef UI_DISPLAY_X11_EDID_PARSER_X11_H_
+#define UI_DISPLAY_X11_EDID_PARSER_X11_H_
+
+#include <stdint.h>
#include <string>
#include "ui/display/display_constants.h"
#include "ui/display/display_export.h"
-typedef unsigned long RROutput;
+typedef unsigned long XID;
+typedef XID RROutput;
+
+// Xrandr utility functions to help get EDID information.
namespace ui {
-// Returns the OutputType by matching known type prefixes to |name|. Returns
-// OUTPUT_TYPE_UNKNOWN if no valid match.
-DISPLAY_EXPORT OutputType GetOutputTypeFromName(const std::string& name);
+// Gets the EDID data from |output| and generates the display id through
+// |GetDisplayIdFromEDID|.
+DISPLAY_EXPORT bool GetDisplayId(XID output,
+ uint8_t index,
+ int64_t* display_id_out);
// Generate the human readable string from EDID obtained from |output|.
DISPLAY_EXPORT std::string GetDisplayName(RROutput output);
@@ -28,10 +35,6 @@ DISPLAY_EXPORT std::string GetDisplayName(RROutput output);
// false.
DISPLAY_EXPORT bool GetOutputOverscanFlag(RROutput output, bool* flag);
-DISPLAY_EXPORT bool ParseOutputOverscanFlag(const unsigned char* prop,
- unsigned long nitems,
- bool* flag);
-
} // namespace ui
-#endif // UI_DISPLAY_CHROMEOS_DISPLAY_UTIL_H_
+#endif // UI_DISPLAY_X11_EDID_PARSER_X11_H_
diff --git a/ui/events/dom4_keycode_converter.target.darwin-arm.mk b/ui/events/dom4_keycode_converter.target.darwin-arm.mk
index e37fb840e8..6560560cfe 100644
--- a/ui/events/dom4_keycode_converter.target.darwin-arm.mk
+++ b/ui/events/dom4_keycode_converter.target.darwin-arm.mk
@@ -78,6 +78,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -162,6 +163,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/dom4_keycode_converter.target.darwin-mips.mk b/ui/events/dom4_keycode_converter.target.darwin-mips.mk
index 78e7dc447b..1fe3550e80 100644
--- a/ui/events/dom4_keycode_converter.target.darwin-mips.mk
+++ b/ui/events/dom4_keycode_converter.target.darwin-mips.mk
@@ -77,6 +77,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -160,6 +161,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/dom4_keycode_converter.target.darwin-x86.mk b/ui/events/dom4_keycode_converter.target.darwin-x86.mk
index 81ac6c045d..beddd93b2f 100644
--- a/ui/events/dom4_keycode_converter.target.darwin-x86.mk
+++ b/ui/events/dom4_keycode_converter.target.darwin-x86.mk
@@ -79,6 +79,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -163,6 +164,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/dom4_keycode_converter.target.darwin-x86_64.mk b/ui/events/dom4_keycode_converter.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..ae4e5e9c1a
--- /dev/null
+++ b/ui/events/dom4_keycode_converter.target.darwin-x86_64.mk
@@ -0,0 +1,259 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_events_dom4_keycode_converter_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/events/keycodes/dom4/keycode_converter.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_events_dom4_keycode_converter_gyp
+
+# Alias gyp target name.
+.PHONY: dom4_keycode_converter
+dom4_keycode_converter: ui_events_dom4_keycode_converter_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/events/dom4_keycode_converter.target.linux-arm.mk b/ui/events/dom4_keycode_converter.target.linux-arm.mk
index e37fb840e8..6560560cfe 100644
--- a/ui/events/dom4_keycode_converter.target.linux-arm.mk
+++ b/ui/events/dom4_keycode_converter.target.linux-arm.mk
@@ -78,6 +78,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -162,6 +163,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/dom4_keycode_converter.target.linux-mips.mk b/ui/events/dom4_keycode_converter.target.linux-mips.mk
index 78e7dc447b..1fe3550e80 100644
--- a/ui/events/dom4_keycode_converter.target.linux-mips.mk
+++ b/ui/events/dom4_keycode_converter.target.linux-mips.mk
@@ -77,6 +77,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -160,6 +161,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/dom4_keycode_converter.target.linux-x86.mk b/ui/events/dom4_keycode_converter.target.linux-x86.mk
index 81ac6c045d..beddd93b2f 100644
--- a/ui/events/dom4_keycode_converter.target.linux-x86.mk
+++ b/ui/events/dom4_keycode_converter.target.linux-x86.mk
@@ -79,6 +79,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -163,6 +164,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/dom4_keycode_converter.target.linux-x86_64.mk b/ui/events/dom4_keycode_converter.target.linux-x86_64.mk
new file mode 100644
index 0000000000..ae4e5e9c1a
--- /dev/null
+++ b/ui/events/dom4_keycode_converter.target.linux-x86_64.mk
@@ -0,0 +1,259 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_events_dom4_keycode_converter_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/events/keycodes/dom4/keycode_converter.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_events_dom4_keycode_converter_gyp
+
+# Alias gyp target name.
+.PHONY: dom4_keycode_converter
+dom4_keycode_converter: ui_events_dom4_keycode_converter_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/events/event.h b/ui/events/event.h
index c7182fbc45..51d73f8adf 100644
--- a/ui/events/event.h
+++ b/ui/events/event.h
@@ -11,6 +11,7 @@
#include "base/logging.h"
#include "base/time/time.h"
#include "ui/events/event_constants.h"
+#include "ui/events/gesture_event_details.h"
#include "ui/events/gestures/gesture_types.h"
#include "ui/events/keycodes/keyboard_codes.h"
#include "ui/events/latency_info.h"
diff --git a/ui/events/event_processor.cc b/ui/events/event_processor.cc
index 1a50d2b741..3077cc85b1 100644
--- a/ui/events/event_processor.cc
+++ b/ui/events/event_processor.cc
@@ -14,12 +14,22 @@ EventDispatchDetails EventProcessor::OnEventFromSource(Event* event) {
CHECK(root);
EventTargeter* targeter = root->GetEventTargeter();
CHECK(targeter);
+
PrepareEventForDispatch(event);
EventTarget* target = targeter->FindTargetForEvent(root, event);
- if (!target)
- return EventDispatchDetails();
- return DispatchEvent(target, event);
+ while (target) {
+ EventDispatchDetails details = DispatchEvent(target, event);
+ if (details.dispatcher_destroyed ||
+ details.target_destroyed ||
+ event->handled()) {
+ return details;
+ }
+
+ target = targeter->FindNextBestTarget(target, event);
+ }
+
+ return EventDispatchDetails();
}
void EventProcessor::PrepareEventForDispatch(Event* event) {
diff --git a/ui/events/event_processor_unittest.cc b/ui/events/event_processor_unittest.cc
index 1511819404..048a4cdeae 100644
--- a/ui/events/event_processor_unittest.cc
+++ b/ui/events/event_processor_unittest.cc
@@ -2,12 +2,18 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <vector>
+
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/events/event.h"
#include "ui/events/event_targeter.h"
+#include "ui/events/test/events_test_utils.h"
+#include "ui/events/test/test_event_handler.h"
#include "ui/events/test/test_event_processor.h"
#include "ui/events/test/test_event_target.h"
+typedef std::vector<std::string> HandlerSequenceRecorder;
+
namespace ui {
namespace test {
@@ -188,7 +194,7 @@ TEST_F(EventProcessorTest, TargeterChecksOwningEventTarget) {
EXPECT_FALSE(root()->DidReceiveEvent(ET_MOUSE_MOVED));
root()->child_at(0)->ResetReceivedEvents();
- // Install an even handler on |child| which always prevents the target from
+ // Install an event handler on |child| which always prevents the target from
// receiving event.
root()->child_at(0)->SetEventTargeter(
scoped_ptr<EventTargeter>(new IgnoreEventTargeter()));
@@ -199,5 +205,170 @@ TEST_F(EventProcessorTest, TargeterChecksOwningEventTarget) {
EXPECT_TRUE(root()->DidReceiveEvent(ET_MOUSE_MOVED));
}
+// An EventTargeter which is used to allow a bubbling behaviour in event
+// dispatch: if an event is not handled after being dispatched to its
+// initial target, the event is dispatched to the next-best target as
+// specified by FindNextBestTarget().
+class BubblingEventTargeter : public EventTargeter {
+ public:
+ explicit BubblingEventTargeter(TestEventTarget* initial_target)
+ : initial_target_(initial_target) {}
+ virtual ~BubblingEventTargeter() {}
+
+ private:
+ // EventTargeter:
+ virtual EventTarget* FindTargetForEvent(EventTarget* root,
+ Event* event) OVERRIDE {
+ return initial_target_;
+ }
+
+ virtual EventTarget* FindNextBestTarget(EventTarget* previous_target,
+ Event* event) OVERRIDE {
+ return previous_target->GetParentTarget();
+ }
+
+ TestEventTarget* initial_target_;
+
+ DISALLOW_COPY_AND_ASSIGN(BubblingEventTargeter);
+};
+
+// Tests that unhandled events are correctly dispatched to the next-best
+// target as decided by the BubblingEventTargeter.
+TEST_F(EventProcessorTest, DispatchToNextBestTarget) {
+ scoped_ptr<TestEventTarget> child(new TestEventTarget());
+ scoped_ptr<TestEventTarget> grandchild(new TestEventTarget());
+
+ root()->SetEventTargeter(
+ scoped_ptr<EventTargeter>(new BubblingEventTargeter(grandchild.get())));
+ child->AddChild(grandchild.Pass());
+ root()->AddChild(child.Pass());
+
+ ASSERT_EQ(1u, root()->child_count());
+ ASSERT_EQ(1u, root()->child_at(0)->child_count());
+ ASSERT_EQ(0u, root()->child_at(0)->child_at(0)->child_count());
+
+ TestEventTarget* child_r = root()->child_at(0);
+ TestEventTarget* grandchild_r = child_r->child_at(0);
+
+ // When the root has a BubblingEventTargeter installed, events targeted
+ // at the grandchild target should be dispatched to all three targets.
+ KeyEvent key_event(ET_KEY_PRESSED, VKEY_ESCAPE, 0, false);
+ DispatchEvent(&key_event);
+ EXPECT_TRUE(root()->DidReceiveEvent(ET_KEY_PRESSED));
+ EXPECT_TRUE(child_r->DidReceiveEvent(ET_KEY_PRESSED));
+ EXPECT_TRUE(grandchild_r->DidReceiveEvent(ET_KEY_PRESSED));
+ root()->ResetReceivedEvents();
+ child_r->ResetReceivedEvents();
+ grandchild_r->ResetReceivedEvents();
+
+ // Add a pre-target handler on the child of the root that will mark the event
+ // as handled. No targets in the hierarchy should receive the event.
+ TestEventHandler handler;
+ child_r->AddPreTargetHandler(&handler);
+ key_event = KeyEvent(ET_KEY_PRESSED, VKEY_ESCAPE, 0, false);
+ DispatchEvent(&key_event);
+ EXPECT_FALSE(root()->DidReceiveEvent(ET_KEY_PRESSED));
+ EXPECT_FALSE(child_r->DidReceiveEvent(ET_KEY_PRESSED));
+ EXPECT_FALSE(grandchild_r->DidReceiveEvent(ET_KEY_PRESSED));
+ EXPECT_EQ(1, handler.num_key_events());
+ handler.Reset();
+
+ // Add a post-target handler on the child of the root that will mark the event
+ // as handled. Only the grandchild (the initial target) should receive the
+ // event.
+ child_r->RemovePreTargetHandler(&handler);
+ child_r->AddPostTargetHandler(&handler);
+ key_event = KeyEvent(ET_KEY_PRESSED, VKEY_ESCAPE, 0, false);
+ DispatchEvent(&key_event);
+ EXPECT_FALSE(root()->DidReceiveEvent(ET_KEY_PRESSED));
+ EXPECT_FALSE(child_r->DidReceiveEvent(ET_KEY_PRESSED));
+ EXPECT_TRUE(grandchild_r->DidReceiveEvent(ET_KEY_PRESSED));
+ EXPECT_EQ(1, handler.num_key_events());
+ handler.Reset();
+ grandchild_r->ResetReceivedEvents();
+ child_r->RemovePostTargetHandler(&handler);
+
+ // Mark the event as handled when it reaches the EP_TARGET phase of
+ // dispatch at the child of the root. The child and grandchild
+ // targets should both receive the event, but the root should not.
+ child_r->set_mark_events_as_handled(true);
+ key_event = KeyEvent(ET_KEY_PRESSED, VKEY_ESCAPE, 0, false);
+ DispatchEvent(&key_event);
+ EXPECT_FALSE(root()->DidReceiveEvent(ET_KEY_PRESSED));
+ EXPECT_TRUE(child_r->DidReceiveEvent(ET_KEY_PRESSED));
+ EXPECT_TRUE(grandchild_r->DidReceiveEvent(ET_KEY_PRESSED));
+ root()->ResetReceivedEvents();
+ child_r->ResetReceivedEvents();
+ grandchild_r->ResetReceivedEvents();
+ child_r->set_mark_events_as_handled(false);
+}
+
+// Tests that unhandled events are seen by the correct sequence of
+// targets, pre-target handlers, and post-target handlers when
+// a BubblingEventTargeter is installed on the root target.
+TEST_F(EventProcessorTest, HandlerSequence) {
+ scoped_ptr<TestEventTarget> child(new TestEventTarget());
+ scoped_ptr<TestEventTarget> grandchild(new TestEventTarget());
+
+ root()->SetEventTargeter(
+ scoped_ptr<EventTargeter>(new BubblingEventTargeter(grandchild.get())));
+ child->AddChild(grandchild.Pass());
+ root()->AddChild(child.Pass());
+
+ ASSERT_EQ(1u, root()->child_count());
+ ASSERT_EQ(1u, root()->child_at(0)->child_count());
+ ASSERT_EQ(0u, root()->child_at(0)->child_at(0)->child_count());
+
+ TestEventTarget* child_r = root()->child_at(0);
+ TestEventTarget* grandchild_r = child_r->child_at(0);
+
+ HandlerSequenceRecorder recorder;
+ root()->set_target_name("R");
+ root()->set_recorder(&recorder);
+ child_r->set_target_name("C");
+ child_r->set_recorder(&recorder);
+ grandchild_r->set_target_name("G");
+ grandchild_r->set_recorder(&recorder);
+
+ TestEventHandler pre_root;
+ pre_root.set_handler_name("PreR");
+ pre_root.set_recorder(&recorder);
+ root()->AddPreTargetHandler(&pre_root);
+
+ TestEventHandler pre_child;
+ pre_child.set_handler_name("PreC");
+ pre_child.set_recorder(&recorder);
+ child_r->AddPreTargetHandler(&pre_child);
+
+ TestEventHandler pre_grandchild;
+ pre_grandchild.set_handler_name("PreG");
+ pre_grandchild.set_recorder(&recorder);
+ grandchild_r->AddPreTargetHandler(&pre_grandchild);
+
+ TestEventHandler post_root;
+ post_root.set_handler_name("PostR");
+ post_root.set_recorder(&recorder);
+ root()->AddPostTargetHandler(&post_root);
+
+ TestEventHandler post_child;
+ post_child.set_handler_name("PostC");
+ post_child.set_recorder(&recorder);
+ child_r->AddPostTargetHandler(&post_child);
+
+ TestEventHandler post_grandchild;
+ post_grandchild.set_handler_name("PostG");
+ post_grandchild.set_recorder(&recorder);
+ grandchild_r->AddPostTargetHandler(&post_grandchild);
+
+ MouseEvent mouse(ET_MOUSE_MOVED, gfx::Point(10, 10), gfx::Point(10, 10),
+ EF_NONE, EF_NONE);
+ DispatchEvent(&mouse);
+
+ std::string expected[] = { "PreR", "PreC", "PreG", "G", "PostG", "PostC",
+ "PostR", "PreR", "PreC", "C", "PostC", "PostR", "PreR", "R", "PostR" };
+ EXPECT_EQ(std::vector<std::string>(
+ expected, expected + arraysize(expected)), recorder);
+}
+
} // namespace test
} // namespace ui
diff --git a/ui/events/event_rewriter.h b/ui/events/event_rewriter.h
new file mode 100644
index 0000000000..f948725709
--- /dev/null
+++ b/ui/events/event_rewriter.h
@@ -0,0 +1,68 @@
+// Copyright 2014 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 UI_EVENTS_EVENT_REWRITER_H_
+#define UI_EVENTS_EVENT_REWRITER_H_
+
+#include "base/memory/scoped_ptr.h"
+#include "ui/events/events_export.h"
+
+namespace ui {
+
+class Event;
+
+// Return status of EventRewriter operations; see that class below.
+enum EventRewriteStatus {
+ // Nothing was done; no rewritten event returned. Pass the original
+ // event to later rewriters, or send it to the EventProcessor if this
+ // was the final rewriter.
+ EVENT_REWRITE_CONTINUE,
+
+ // The event has been rewritten. Send the rewritten event to the
+ // EventProcessor instead of the original event (without sending
+ // either to any later rewriters).
+ EVENT_REWRITE_REWRITTEN,
+
+ // The event should be discarded, neither passing it to any later
+ // rewriters nor sending it to the EventProcessor.
+ EVENT_REWRITE_DISCARD,
+
+ // The event has been rewritten. As for EVENT_REWRITE_REWRITTEN,
+ // send the rewritten event to the EventProcessor instead of the
+ // original event (without sending either to any later rewriters).
+ // In addition the rewriter has one or more additional new events
+ // to be retrieved using |NextDispatchEvent()| and sent to the
+ // EventProcessor.
+ EVENT_REWRITE_DISPATCH_ANOTHER,
+};
+
+// EventRewriter provides a mechanism for Events to be rewritten
+// before being dispatched from EventSource to EventProcessor.
+class EVENTS_EXPORT EventRewriter {
+ public:
+ virtual ~EventRewriter() {}
+
+ // Potentially rewrites (replaces) an event, or requests it be discarded.
+ // or discards an event. If the rewriter wants to rewrite an event, and
+ // dispatch another event once the rewritten event is dispatched, it should
+ // return EVENT_REWRITE_DISPATCH_ANOTHER, and return the next event to
+ // dispatch from |NextDispatchEvent()|.
+ virtual EventRewriteStatus RewriteEvent(
+ const Event& event,
+ scoped_ptr<Event>* rewritten_event) = 0;
+
+ // Supplies an additional event to be dispatched. It is only valid to
+ // call this after the immediately previous call to |RewriteEvent()|
+ // or |NextDispatchEvent()| has returned EVENT_REWRITE_DISPATCH_ANOTHER.
+ // Should only return either EVENT_REWRITE_REWRITTEN or
+ // EVENT_REWRITE_DISPATCH_ANOTHER; otherwise the previous call should not
+ // have returned EVENT_REWRITE_DISPATCH_ANOTHER.
+ virtual EventRewriteStatus NextDispatchEvent(
+ const Event& last_event,
+ scoped_ptr<Event>* new_event) = 0;
+};
+
+} // namespace ui
+
+#endif // UI_EVENTS_EVENT_REWRITER_H_
diff --git a/ui/events/event_rewriter_unittest.cc b/ui/events/event_rewriter_unittest.cc
new file mode 100644
index 0000000000..11a05c9c15
--- /dev/null
+++ b/ui/events/event_rewriter_unittest.cc
@@ -0,0 +1,231 @@
+// Copyright 2014 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 "ui/events/event_rewriter.h"
+
+#include <list>
+#include <map>
+#include <set>
+#include <utility>
+
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/events/test/test_event_processor.h"
+
+namespace ui {
+
+namespace {
+
+// To test the handling of |EventRewriter|s through |EventSource|,
+// we rewrite and test event types.
+class TestEvent : public Event {
+ public:
+ explicit TestEvent(EventType type)
+ : Event(type, base::TimeDelta(), 0), unique_id_(next_unique_id_++) {}
+ virtual ~TestEvent() {}
+ int unique_id() const { return unique_id_; }
+
+ private:
+ static int next_unique_id_;
+ int unique_id_;
+};
+
+int TestEvent::next_unique_id_ = 0;
+
+// TestEventRewriteProcessor is set up with a sequence of event types,
+// and fails if the events received via OnEventFromSource() do not match
+// this sequence. These expected event types are consumed on receipt.
+class TestEventRewriteProcessor : public test::TestEventProcessor {
+ public:
+ TestEventRewriteProcessor() {}
+ virtual ~TestEventRewriteProcessor() { CheckAllReceived(); }
+
+ void AddExpectedEvent(EventType type) { expected_events_.push_back(type); }
+ // Test that all expected events have been received.
+ void CheckAllReceived() { EXPECT_TRUE(expected_events_.empty()); }
+
+ // EventProcessor:
+ virtual EventDispatchDetails OnEventFromSource(Event* event) OVERRIDE {
+ EXPECT_FALSE(expected_events_.empty());
+ EXPECT_EQ(expected_events_.front(), event->type());
+ expected_events_.pop_front();
+ return EventDispatchDetails();
+ }
+
+ private:
+ std::list<EventType> expected_events_;
+ DISALLOW_COPY_AND_ASSIGN(TestEventRewriteProcessor);
+};
+
+// Trivial EventSource that does nothing but send events.
+class TestEventRewriteSource : public EventSource {
+ public:
+ explicit TestEventRewriteSource(EventProcessor* processor)
+ : processor_(processor) {}
+ virtual EventProcessor* GetEventProcessor() OVERRIDE { return processor_; }
+ void Send(EventType type) {
+ scoped_ptr<Event> event(new TestEvent(type));
+ (void)SendEventToProcessor(event.get());
+ }
+
+ private:
+ EventProcessor* processor_;
+};
+
+// This EventRewriter always returns the same status, and if rewriting, the
+// same event type; it is used to test simple rewriting, and rewriter addition,
+// removal, and sequencing. Consequently EVENT_REWRITE_DISPATCH_ANOTHER is not
+// supported here (calls to NextDispatchEvent() would continue indefinitely).
+class TestConstantEventRewriter : public EventRewriter {
+ public:
+ TestConstantEventRewriter(EventRewriteStatus status, EventType type)
+ : status_(status), type_(type) {
+ CHECK_NE(EVENT_REWRITE_DISPATCH_ANOTHER, status);
+ }
+
+ virtual EventRewriteStatus RewriteEvent(const Event& event,
+ scoped_ptr<Event>* rewritten_event)
+ OVERRIDE {
+ if (status_ == EVENT_REWRITE_REWRITTEN)
+ rewritten_event->reset(new TestEvent(type_));
+ return status_;
+ }
+ virtual EventRewriteStatus NextDispatchEvent(const Event& last_event,
+ scoped_ptr<Event>* new_event)
+ OVERRIDE {
+ NOTREACHED();
+ return status_;
+ }
+
+ private:
+ EventRewriteStatus status_;
+ EventType type_;
+};
+
+// This EventRewriter runs a simple state machine; it is used to test
+// EVENT_REWRITE_DISPATCH_ANOTHER.
+class TestStateMachineEventRewriter : public EventRewriter {
+ public:
+ TestStateMachineEventRewriter() : last_rewritten_event_(0), state_(0) {}
+ void AddRule(int from_state, EventType from_type,
+ int to_state, EventType to_type, EventRewriteStatus to_status) {
+ RewriteResult r = {to_state, to_type, to_status};
+ rules_.insert(std::pair<RewriteCase, RewriteResult>(
+ RewriteCase(from_state, from_type), r));
+ }
+ virtual EventRewriteStatus RewriteEvent(const Event& event,
+ scoped_ptr<Event>* rewritten_event)
+ OVERRIDE {
+ RewriteRules::iterator find =
+ rules_.find(RewriteCase(state_, event.type()));
+ if (find == rules_.end())
+ return EVENT_REWRITE_CONTINUE;
+ if ((find->second.status == EVENT_REWRITE_REWRITTEN) ||
+ (find->second.status == EVENT_REWRITE_DISPATCH_ANOTHER)) {
+ last_rewritten_event_ = new TestEvent(find->second.type);
+ rewritten_event->reset(last_rewritten_event_);
+ } else {
+ last_rewritten_event_ = 0;
+ }
+ state_ = find->second.state;
+ return find->second.status;
+ }
+ virtual EventRewriteStatus NextDispatchEvent(const Event& last_event,
+ scoped_ptr<Event>* new_event)
+ OVERRIDE {
+ EXPECT_TRUE(last_rewritten_event_);
+ const TestEvent* arg_last = static_cast<const TestEvent*>(&last_event);
+ EXPECT_EQ(last_rewritten_event_->unique_id(), arg_last->unique_id());
+ const TestEvent* arg_new = static_cast<const TestEvent*>(new_event->get());
+ EXPECT_FALSE(arg_new && arg_last->unique_id() == arg_new->unique_id());
+ return RewriteEvent(last_event, new_event);
+ }
+
+ private:
+ typedef std::pair<int, EventType> RewriteCase;
+ struct RewriteResult {
+ int state;
+ EventType type;
+ EventRewriteStatus status;
+ };
+ typedef std::map<RewriteCase, RewriteResult> RewriteRules;
+ RewriteRules rules_;
+ TestEvent* last_rewritten_event_;
+ int state_;
+};
+
+} // namespace
+
+TEST(EventRewriterTest, EventRewriting) {
+ // TestEventRewriter r0 always rewrites events to ET_CANCEL_MODE;
+ // it is placed at the beginning of the chain and later removed,
+ // to verify that rewriter removal works.
+ TestConstantEventRewriter r0(EVENT_REWRITE_REWRITTEN, ET_CANCEL_MODE);
+
+ // TestEventRewriter r1 always returns EVENT_REWRITE_CONTINUE;
+ // it is placed at the beginning of the chain to verify that a
+ // later rewriter sees the events.
+ TestConstantEventRewriter r1(EVENT_REWRITE_CONTINUE, ET_UNKNOWN);
+
+ // TestEventRewriter r2 has a state machine, primarily to test
+ // |EVENT_REWRITE_DISPATCH_ANOTHER|.
+ TestStateMachineEventRewriter r2;
+
+ // TestEventRewriter r3 always rewrites events to ET_CANCEL_MODE;
+ // it is placed at the end of the chain to verify that previously
+ // rewritten events are not passed further down the chain.
+ TestConstantEventRewriter r3(EVENT_REWRITE_REWRITTEN, ET_CANCEL_MODE);
+
+ TestEventRewriteProcessor p;
+ TestEventRewriteSource s(&p);
+ s.AddEventRewriter(&r0);
+ s.AddEventRewriter(&r1);
+ s.AddEventRewriter(&r2);
+
+ // These events should be rewritten by r0 to ET_CANCEL_MODE.
+ p.AddExpectedEvent(ET_CANCEL_MODE);
+ s.Send(ET_MOUSE_DRAGGED);
+ p.AddExpectedEvent(ET_CANCEL_MODE);
+ s.Send(ET_MOUSE_PRESSED);
+ p.CheckAllReceived();
+
+ // Remove r0, and verify that it's gone and that events make it through.
+ s.AddEventRewriter(&r3);
+ s.RemoveEventRewriter(&r0);
+ r2.AddRule(0, ET_SCROLL_FLING_START,
+ 0, ET_SCROLL_FLING_CANCEL, EVENT_REWRITE_REWRITTEN);
+ p.AddExpectedEvent(ET_SCROLL_FLING_CANCEL);
+ s.Send(ET_SCROLL_FLING_START);
+ p.CheckAllReceived();
+ s.RemoveEventRewriter(&r3);
+
+ // Verify EVENT_REWRITE_DISPATCH_ANOTHER using a state machine
+ // (that happens to be analogous to sticky keys).
+ r2.AddRule(0, ET_KEY_PRESSED,
+ 1, ET_KEY_PRESSED, EVENT_REWRITE_CONTINUE);
+ r2.AddRule(1, ET_MOUSE_PRESSED,
+ 0, ET_MOUSE_PRESSED, EVENT_REWRITE_CONTINUE);
+ r2.AddRule(1, ET_KEY_RELEASED,
+ 2, ET_KEY_RELEASED, EVENT_REWRITE_DISCARD);
+ r2.AddRule(2, ET_MOUSE_RELEASED,
+ 3, ET_MOUSE_RELEASED, EVENT_REWRITE_DISPATCH_ANOTHER);
+ r2.AddRule(3, ET_MOUSE_RELEASED,
+ 0, ET_KEY_RELEASED, EVENT_REWRITE_REWRITTEN);
+ p.AddExpectedEvent(ET_KEY_PRESSED);
+ s.Send(ET_KEY_PRESSED);
+ s.Send(ET_KEY_RELEASED);
+ p.AddExpectedEvent(ET_MOUSE_PRESSED);
+ s.Send(ET_MOUSE_PRESSED);
+
+ // Removing rewriters r1 and r3 shouldn't affect r2.
+ s.RemoveEventRewriter(&r1);
+ s.RemoveEventRewriter(&r3);
+
+ // Continue with the state-based rewriting.
+ p.AddExpectedEvent(ET_MOUSE_RELEASED);
+ p.AddExpectedEvent(ET_KEY_RELEASED);
+ s.Send(ET_MOUSE_RELEASED);
+ p.CheckAllReceived();
+}
+
+} // namespace ui
diff --git a/ui/events/event_source.cc b/ui/events/event_source.cc
index a40813079d..0f3dfb80a0 100644
--- a/ui/events/event_source.cc
+++ b/ui/events/event_source.cc
@@ -4,11 +4,70 @@
#include "ui/events/event_source.h"
+#include <algorithm>
+
#include "ui/events/event_processor.h"
+#include "ui/events/event_rewriter.h"
namespace ui {
+EventSource::EventSource() {}
+
+EventSource::~EventSource() {}
+
+void EventSource::AddEventRewriter(EventRewriter* rewriter) {
+ DCHECK(rewriter);
+ DCHECK(rewriter_list_.end() ==
+ std::find(rewriter_list_.begin(), rewriter_list_.end(), rewriter));
+ rewriter_list_.push_back(rewriter);
+}
+
+void EventSource::RemoveEventRewriter(EventRewriter* rewriter) {
+ EventRewriterList::iterator find =
+ std::find(rewriter_list_.begin(), rewriter_list_.end(), rewriter);
+ if (find != rewriter_list_.end())
+ rewriter_list_.erase(find);
+}
+
EventDispatchDetails EventSource::SendEventToProcessor(Event* event) {
+ scoped_ptr<Event> rewritten_event;
+ EventRewriteStatus status = EVENT_REWRITE_CONTINUE;
+ EventRewriterList::const_iterator it = rewriter_list_.begin(),
+ end = rewriter_list_.end();
+ for (; it != end; ++it) {
+ status = (*it)->RewriteEvent(*event, &rewritten_event);
+ if (status == EVENT_REWRITE_DISCARD) {
+ CHECK(!rewritten_event);
+ return EventDispatchDetails();
+ }
+ if (status == EVENT_REWRITE_CONTINUE) {
+ CHECK(!rewritten_event);
+ continue;
+ }
+ break;
+ }
+ CHECK((it == end && !rewritten_event) || rewritten_event);
+ EventDispatchDetails details =
+ DeliverEventToProcessor(rewritten_event ? rewritten_event.get() : event);
+ if (details.dispatcher_destroyed)
+ return details;
+
+ while (status == EVENT_REWRITE_DISPATCH_ANOTHER) {
+ scoped_ptr<Event> new_event;
+ status = (*it)->NextDispatchEvent(*rewritten_event, &new_event);
+ if (status == EVENT_REWRITE_DISCARD)
+ return EventDispatchDetails();
+ CHECK_NE(EVENT_REWRITE_CONTINUE, status);
+ CHECK(new_event);
+ details = DeliverEventToProcessor(new_event.get());
+ if (details.dispatcher_destroyed)
+ return details;
+ rewritten_event.reset(new_event.release());
+ }
+ return EventDispatchDetails();
+}
+
+EventDispatchDetails EventSource::DeliverEventToProcessor(Event* event) {
EventProcessor* processor = GetEventProcessor();
CHECK(processor);
return processor->OnEventFromSource(event);
diff --git a/ui/events/event_source.h b/ui/events/event_source.h
index aba2c1f660..de22bda9dc 100644
--- a/ui/events/event_source.h
+++ b/ui/events/event_source.h
@@ -5,6 +5,8 @@
#ifndef UI_EVENTS_EVENT_SOURCE_H_
#define UI_EVENTS_EVENT_SOURCE_H_
+#include <vector>
+
#include "ui/events/event_dispatcher.h"
#include "ui/events/events_export.h"
@@ -12,17 +14,32 @@ namespace ui {
class Event;
class EventProcessor;
+class EventRewriter;
// EventSource receives events from the native platform (e.g. X11, win32 etc.)
// and sends the events to an EventProcessor.
class EVENTS_EXPORT EventSource {
public:
- virtual ~EventSource() {}
+ EventSource();
+ virtual ~EventSource();
virtual EventProcessor* GetEventProcessor() = 0;
+ // Adds a rewriter to modify events before they are sent to the
+ // EventProcessor. The rewriter must be explicitly removed from the
+ // EventSource before the rewriter is destroyed. The EventSource
+ // does not take ownership of the rewriter.
+ void AddEventRewriter(EventRewriter* rewriter);
+ void RemoveEventRewriter(EventRewriter* rewriter);
+
protected:
EventDispatchDetails SendEventToProcessor(Event* event);
+
+ private:
+ typedef std::vector<EventRewriter*> EventRewriterList;
+ EventDispatchDetails DeliverEventToProcessor(Event* event);
+ EventRewriterList rewriter_list_;
+ DISALLOW_COPY_AND_ASSIGN(EventSource);
};
} // namespace ui
diff --git a/ui/events/event_switches.cc b/ui/events/event_switches.cc
index 195e2bbdb4..314370af41 100644
--- a/ui/events/event_switches.cc
+++ b/ui/events/event_switches.cc
@@ -27,4 +27,9 @@ const char kTouchEventsDisabled[] = "disabled";
const char kTouchDevices[] = "touch-devices";
#endif
+#if defined(USE_XI2_MT)
+// The calibration factors given as "<left>,<right>,<top>,<bottom>".
+const char kTouchCalibration[] = "touch-calibration";
+#endif
+
} // namespace switches
diff --git a/ui/events/event_switches.h b/ui/events/event_switches.h
index d4343046e5..caaa779f46 100644
--- a/ui/events/event_switches.h
+++ b/ui/events/event_switches.h
@@ -20,6 +20,10 @@ EVENTS_BASE_EXPORT extern const char kTouchEventsDisabled[];
EVENTS_BASE_EXPORT extern const char kTouchDevices[];
#endif
+#if defined(USE_XI2_MT)
+EVENTS_BASE_EXPORT extern const char kTouchCalibration[];
+#endif
+
} // namespace switches
#endif // UI_EVENTS_EVENTS_SWITCHES_H_
diff --git a/ui/events/event_targeter.cc b/ui/events/event_targeter.cc
index 50fe7e9205..85b4c3f805 100644
--- a/ui/events/event_targeter.cc
+++ b/ui/events/event_targeter.cc
@@ -55,4 +55,9 @@ bool EventTargeter::SubtreeShouldBeExploredForEvent(EventTarget* target,
return true;
}
+EventTarget* EventTargeter::FindNextBestTarget(EventTarget* previous_target,
+ Event* event) {
+ return NULL;
+}
+
} // namespace ui
diff --git a/ui/events/event_targeter.h b/ui/events/event_targeter.h
index b93cc550b7..44ea2a05c2 100644
--- a/ui/events/event_targeter.h
+++ b/ui/events/event_targeter.h
@@ -26,8 +26,8 @@ class EVENTS_EXPORT EventTargeter {
// Same as FindTargetForEvent(), but used for positional events. The location
// etc. of |event| are in |root|'s coordinate system. When finding the target
- // for the event, the targeter can mutate the |event| (e.g. chnage the
- // coordinate to be in the returned target's coordinate sustem) so that it can
+ // for the event, the targeter can mutate the |event| (e.g. change the
+ // coordinate to be in the returned target's coordinate system) so that it can
// be dispatched to the target without any farther modification.
virtual EventTarget* FindTargetForLocatedEvent(EventTarget* root,
LocatedEvent* event);
@@ -37,6 +37,13 @@ class EVENTS_EXPORT EventTargeter {
// coordinate system.
virtual bool SubtreeShouldBeExploredForEvent(EventTarget* target,
const LocatedEvent& event);
+
+ // Returns the next best target for |event| as compared to |previous_target|.
+ // Also mutates |event| so that it can be dispatched to the returned target
+ // (e.g., by changing |event|'s location to be in the returned target's
+ // coordinate space).
+ virtual EventTarget* FindNextBestTarget(EventTarget* previous_target,
+ Event* event);
};
} // namespace ui
diff --git a/ui/events/events.gyp b/ui/events/events.gyp
index 30d2a41748..bb8107f3c3 100644
--- a/ui/events/events.gyp
+++ b/ui/events/events.gyp
@@ -25,16 +25,20 @@
'dependencies': [
'<(DEPTH)/base/base.gyp:base',
'<(DEPTH)/base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
+ '../gfx/gfx.gyp:gfx',
+ '../gfx/gfx.gyp:gfx_geometry',
'dom4_keycode_converter',
],
'defines': [
'EVENTS_BASE_IMPLEMENTATION',
],
'sources': [
- 'events_base_export.h',
'event_constants.h',
'event_switches.cc',
'event_switches.h',
+ 'events_base_export.h',
+ 'gesture_event_details.cc',
+ 'gesture_event_details.h',
'keycodes/keyboard_code_conversion.cc',
'keycodes/keyboard_code_conversion.h',
'keycodes/keyboard_code_conversion_android.cc',
@@ -90,6 +94,7 @@
'event_handler.h',
'event_processor.cc',
'event_processor.h',
+ 'event_rewriter.h',
'event_source.cc',
'event_source.h',
'event_target.cc',
@@ -110,7 +115,6 @@
'gestures/gesture_recognizer_impl.h',
'gestures/gesture_sequence.cc',
'gestures/gesture_sequence.h',
- 'gestures/gesture_types.cc',
'gestures/gesture_types.h',
'gestures/velocity_calculator.cc',
'gestures/velocity_calculator.h',
@@ -133,6 +137,15 @@
'ozone/event_factory_ozone.cc',
'ozone/event_factory_ozone.h',
'ozone/events_ozone.cc',
+ 'platform/platform_event_dispatcher.h',
+ 'platform/platform_event_observer.h',
+ 'platform/platform_event_source.cc',
+ 'platform/platform_event_source.h',
+ 'platform/platform_event_types.h',
+ 'platform/scoped_event_dispatcher.cc',
+ 'platform/scoped_event_dispatcher.h',
+ 'platform/x11/x11_event_source.cc',
+ 'platform/x11/x11_event_source.h',
'win/events_win.cc',
'x/events_x.cc',
],
@@ -149,6 +162,11 @@
'<(DEPTH)/build/linux/system.gyp:x11',
],
}],
+ ['use_glib==1', {
+ 'dependencies': [
+ '../../build/linux/system.gyp:glib',
+ ],
+ }],
['use_ozone_evdev==1', {
'defines': ['USE_OZONE_EVDEV=1'],
}],
@@ -272,6 +290,7 @@
'cocoa/cocoa_event_utils_unittest.mm',
'event_dispatcher_unittest.cc',
'event_processor_unittest.cc',
+ 'event_rewriter_unittest.cc',
'event_unittest.cc',
'gestures/velocity_calculator_unittest.cc',
'gesture_detection/bitset_32_unittest.cc',
@@ -284,6 +303,7 @@
'latency_info_unittest.cc',
'ozone/evdev/key_event_converter_evdev_unittest.cc',
'ozone/evdev/touch_event_converter_evdev_unittest.cc',
+ 'platform/platform_event_source_unittest.cc',
'x/events_x_unittest.cc',
],
'conditions': [
diff --git a/ui/events/events.target.darwin-arm.mk b/ui/events/events.target.darwin-arm.mk
index d6c03aac2c..b2aa2f1ada 100644
--- a/ui/events/events.target.darwin-arm.mk
+++ b/ui/events/events.target.darwin-arm.mk
@@ -38,8 +38,9 @@ LOCAL_SRC_FILES := \
ui/events/gestures/gesture_point.cc \
ui/events/gestures/gesture_recognizer_impl.cc \
ui/events/gestures/gesture_sequence.cc \
- ui/events/gestures/gesture_types.cc \
- ui/events/gestures/velocity_calculator.cc
+ ui/events/gestures/velocity_calculator.cc \
+ ui/events/platform/platform_event_source.cc \
+ ui/events/platform/scoped_event_dispatcher.cc
# Flags passed to both C and C++ files.
@@ -102,9 +103,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -113,6 +112,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -221,9 +221,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -232,6 +230,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/events.target.darwin-mips.mk b/ui/events/events.target.darwin-mips.mk
index 538b95a8c2..af24a6cfc1 100644
--- a/ui/events/events.target.darwin-mips.mk
+++ b/ui/events/events.target.darwin-mips.mk
@@ -38,8 +38,9 @@ LOCAL_SRC_FILES := \
ui/events/gestures/gesture_point.cc \
ui/events/gestures/gesture_recognizer_impl.cc \
ui/events/gestures/gesture_sequence.cc \
- ui/events/gestures/gesture_types.cc \
- ui/events/gestures/velocity_calculator.cc
+ ui/events/gestures/velocity_calculator.cc \
+ ui/events/platform/platform_event_source.cc \
+ ui/events/platform/scoped_event_dispatcher.cc
# Flags passed to both C and C++ files.
@@ -101,9 +102,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -112,6 +111,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -219,9 +219,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -230,6 +228,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/events.target.darwin-x86.mk b/ui/events/events.target.darwin-x86.mk
index b7d58163bd..7d4a44579c 100644
--- a/ui/events/events.target.darwin-x86.mk
+++ b/ui/events/events.target.darwin-x86.mk
@@ -38,8 +38,9 @@ LOCAL_SRC_FILES := \
ui/events/gestures/gesture_point.cc \
ui/events/gestures/gesture_recognizer_impl.cc \
ui/events/gestures/gesture_sequence.cc \
- ui/events/gestures/gesture_types.cc \
- ui/events/gestures/velocity_calculator.cc
+ ui/events/gestures/velocity_calculator.cc \
+ ui/events/platform/platform_event_source.cc \
+ ui/events/platform/scoped_event_dispatcher.cc
# Flags passed to both C and C++ files.
@@ -103,9 +104,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -114,6 +113,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -222,9 +222,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -233,6 +231,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/events.target.darwin-x86_64.mk b/ui/events/events.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..edc8312599
--- /dev/null
+++ b/ui/events/events.target.darwin-x86_64.mk
@@ -0,0 +1,343 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_events_events_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,skia_skia_gyp)/skia.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/events/event.cc \
+ ui/events/event_dispatcher.cc \
+ ui/events/event_handler.cc \
+ ui/events/event_processor.cc \
+ ui/events/event_source.cc \
+ ui/events/event_target.cc \
+ ui/events/event_targeter.cc \
+ ui/events/event_utils.cc \
+ ui/events/events_stub.cc \
+ ui/events/gestures/gesture_configuration.cc \
+ ui/events/gestures/gesture_point.cc \
+ ui/events/gestures/gesture_recognizer_impl.cc \
+ ui/events/gestures/gesture_sequence.cc \
+ ui/events/gestures/velocity_calculator.cc \
+ ui/events/platform/platform_event_source.cc \
+ ui/events/platform/scoped_event_dispatcher.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DEVENTS_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DEVENTS_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_events_events_gyp
+
+# Alias gyp target name.
+.PHONY: events
+events: ui_events_events_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/events/events.target.linux-arm.mk b/ui/events/events.target.linux-arm.mk
index d6c03aac2c..b2aa2f1ada 100644
--- a/ui/events/events.target.linux-arm.mk
+++ b/ui/events/events.target.linux-arm.mk
@@ -38,8 +38,9 @@ LOCAL_SRC_FILES := \
ui/events/gestures/gesture_point.cc \
ui/events/gestures/gesture_recognizer_impl.cc \
ui/events/gestures/gesture_sequence.cc \
- ui/events/gestures/gesture_types.cc \
- ui/events/gestures/velocity_calculator.cc
+ ui/events/gestures/velocity_calculator.cc \
+ ui/events/platform/platform_event_source.cc \
+ ui/events/platform/scoped_event_dispatcher.cc
# Flags passed to both C and C++ files.
@@ -102,9 +103,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -113,6 +112,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -221,9 +221,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -232,6 +230,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/events.target.linux-mips.mk b/ui/events/events.target.linux-mips.mk
index 538b95a8c2..af24a6cfc1 100644
--- a/ui/events/events.target.linux-mips.mk
+++ b/ui/events/events.target.linux-mips.mk
@@ -38,8 +38,9 @@ LOCAL_SRC_FILES := \
ui/events/gestures/gesture_point.cc \
ui/events/gestures/gesture_recognizer_impl.cc \
ui/events/gestures/gesture_sequence.cc \
- ui/events/gestures/gesture_types.cc \
- ui/events/gestures/velocity_calculator.cc
+ ui/events/gestures/velocity_calculator.cc \
+ ui/events/platform/platform_event_source.cc \
+ ui/events/platform/scoped_event_dispatcher.cc
# Flags passed to both C and C++ files.
@@ -101,9 +102,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -112,6 +111,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -219,9 +219,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -230,6 +228,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/events.target.linux-x86.mk b/ui/events/events.target.linux-x86.mk
index b7d58163bd..7d4a44579c 100644
--- a/ui/events/events.target.linux-x86.mk
+++ b/ui/events/events.target.linux-x86.mk
@@ -38,8 +38,9 @@ LOCAL_SRC_FILES := \
ui/events/gestures/gesture_point.cc \
ui/events/gestures/gesture_recognizer_impl.cc \
ui/events/gestures/gesture_sequence.cc \
- ui/events/gestures/gesture_types.cc \
- ui/events/gestures/velocity_calculator.cc
+ ui/events/gestures/velocity_calculator.cc \
+ ui/events/platform/platform_event_source.cc \
+ ui/events/platform/scoped_event_dispatcher.cc
# Flags passed to both C and C++ files.
@@ -103,9 +104,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -114,6 +113,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -222,9 +222,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -233,6 +231,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/events.target.linux-x86_64.mk b/ui/events/events.target.linux-x86_64.mk
new file mode 100644
index 0000000000..edc8312599
--- /dev/null
+++ b/ui/events/events.target.linux-x86_64.mk
@@ -0,0 +1,343 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_events_events_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,skia_skia_gyp)/skia.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/events/event.cc \
+ ui/events/event_dispatcher.cc \
+ ui/events/event_handler.cc \
+ ui/events/event_processor.cc \
+ ui/events/event_source.cc \
+ ui/events/event_target.cc \
+ ui/events/event_targeter.cc \
+ ui/events/event_utils.cc \
+ ui/events/events_stub.cc \
+ ui/events/gestures/gesture_configuration.cc \
+ ui/events/gestures/gesture_point.cc \
+ ui/events/gestures/gesture_recognizer_impl.cc \
+ ui/events/gestures/gesture_sequence.cc \
+ ui/events/gestures/velocity_calculator.cc \
+ ui/events/platform/platform_event_source.cc \
+ ui/events/platform/scoped_event_dispatcher.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DEVENTS_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DEVENTS_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_events_events_gyp
+
+# Alias gyp target name.
+.PHONY: events
+events: ui_events_events_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/events/events_base.target.darwin-arm.mk b/ui/events/events_base.target.darwin-arm.mk
index 691f6ba885..57a2902f16 100644
--- a/ui/events/events_base.target.darwin-arm.mk
+++ b/ui/events/events_base.target.darwin-arm.mk
@@ -10,7 +10,8 @@ gyp_intermediate_dir := $(call local-intermediates-dir)
gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
# Make sure our deps are built first.
-GYP_TARGET_DEPENDENCIES :=
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a
GYP_GENERATED_OUTPUTS :=
@@ -24,6 +25,7 @@ GYP_COPIED_SOURCE_ORIGIN_DIRS :=
LOCAL_SRC_FILES := \
ui/events/event_switches.cc \
+ ui/events/gesture_event_details.cc \
ui/events/keycodes/keyboard_code_conversion.cc \
ui/events/keycodes/keyboard_code_conversion_android.cc \
ui/events/latency_info.cc
@@ -81,7 +83,24 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DEVENTS_BASE_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -96,8 +115,24 @@ MY_DEFS_Debug := \
# Include paths placed before CFLAGS/CPPFLAGS
LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
$(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
$(PWD)/frameworks/wilhelm/include \
$(PWD)/bionic \
$(PWD)/external/stlport/stlport
@@ -166,7 +201,24 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DEVENTS_BASE_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -182,8 +234,24 @@ MY_DEFS_Release := \
# Include paths placed before CFLAGS/CPPFLAGS
LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
$(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
$(PWD)/frameworks/wilhelm/include \
$(PWD)/bionic \
$(PWD)/external/stlport/stlport
@@ -246,7 +314,8 @@ LOCAL_LDFLAGS_Release := \
LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
-LOCAL_STATIC_LIBRARIES :=
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
# Enable grouping to fix circular references
LOCAL_GROUP_STATIC_LIBRARIES := true
diff --git a/ui/events/events_base.target.darwin-mips.mk b/ui/events/events_base.target.darwin-mips.mk
index 6b3316e2f5..67b159b914 100644
--- a/ui/events/events_base.target.darwin-mips.mk
+++ b/ui/events/events_base.target.darwin-mips.mk
@@ -10,7 +10,8 @@ gyp_intermediate_dir := $(call local-intermediates-dir)
gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
# Make sure our deps are built first.
-GYP_TARGET_DEPENDENCIES :=
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a
GYP_GENERATED_OUTPUTS :=
@@ -24,6 +25,7 @@ GYP_COPIED_SOURCE_ORIGIN_DIRS :=
LOCAL_SRC_FILES := \
ui/events/event_switches.cc \
+ ui/events/gesture_event_details.cc \
ui/events/keycodes/keyboard_code_conversion.cc \
ui/events/keycodes/keyboard_code_conversion_android.cc \
ui/events/latency_info.cc
@@ -80,7 +82,24 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DEVENTS_BASE_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -95,8 +114,24 @@ MY_DEFS_Debug := \
# Include paths placed before CFLAGS/CPPFLAGS
LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
$(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
$(PWD)/frameworks/wilhelm/include \
$(PWD)/bionic \
$(PWD)/external/stlport/stlport
@@ -164,7 +199,24 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DEVENTS_BASE_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -180,8 +232,24 @@ MY_DEFS_Release := \
# Include paths placed before CFLAGS/CPPFLAGS
LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
$(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
$(PWD)/frameworks/wilhelm/include \
$(PWD)/bionic \
$(PWD)/external/stlport/stlport
@@ -240,7 +308,8 @@ LOCAL_LDFLAGS_Release := \
LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
-LOCAL_STATIC_LIBRARIES :=
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
# Enable grouping to fix circular references
LOCAL_GROUP_STATIC_LIBRARIES := true
diff --git a/ui/events/events_base.target.darwin-x86.mk b/ui/events/events_base.target.darwin-x86.mk
index 9d764e3277..6c58566af0 100644
--- a/ui/events/events_base.target.darwin-x86.mk
+++ b/ui/events/events_base.target.darwin-x86.mk
@@ -10,7 +10,8 @@ gyp_intermediate_dir := $(call local-intermediates-dir)
gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
# Make sure our deps are built first.
-GYP_TARGET_DEPENDENCIES :=
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a
GYP_GENERATED_OUTPUTS :=
@@ -24,6 +25,7 @@ GYP_COPIED_SOURCE_ORIGIN_DIRS :=
LOCAL_SRC_FILES := \
ui/events/event_switches.cc \
+ ui/events/gesture_event_details.cc \
ui/events/keycodes/keyboard_code_conversion.cc \
ui/events/keycodes/keyboard_code_conversion_android.cc \
ui/events/latency_info.cc
@@ -82,7 +84,24 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DEVENTS_BASE_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -97,8 +116,24 @@ MY_DEFS_Debug := \
# Include paths placed before CFLAGS/CPPFLAGS
LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
$(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
$(PWD)/frameworks/wilhelm/include \
$(PWD)/bionic \
$(PWD)/external/stlport/stlport
@@ -167,7 +202,24 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DEVENTS_BASE_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -183,8 +235,24 @@ MY_DEFS_Release := \
# Include paths placed before CFLAGS/CPPFLAGS
LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
$(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
$(PWD)/frameworks/wilhelm/include \
$(PWD)/bionic \
$(PWD)/external/stlport/stlport
@@ -242,7 +310,8 @@ LOCAL_LDFLAGS_Release := \
LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
-LOCAL_STATIC_LIBRARIES :=
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
# Enable grouping to fix circular references
LOCAL_GROUP_STATIC_LIBRARIES := true
diff --git a/ui/events/events_base.target.darwin-x86_64.mk b/ui/events/events_base.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..bcd4c1361a
--- /dev/null
+++ b/ui/events/events_base.target.darwin-x86_64.mk
@@ -0,0 +1,331 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_events_events_base_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/events/event_switches.cc \
+ ui/events/gesture_event_details.cc \
+ ui/events/keycodes/keyboard_code_conversion.cc \
+ ui/events/keycodes/keyboard_code_conversion_android.cc \
+ ui/events/latency_info.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DEVENTS_BASE_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DEVENTS_BASE_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_events_events_base_gyp
+
+# Alias gyp target name.
+.PHONY: events_base
+events_base: ui_events_events_base_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/events/events_base.target.linux-arm.mk b/ui/events/events_base.target.linux-arm.mk
index 691f6ba885..57a2902f16 100644
--- a/ui/events/events_base.target.linux-arm.mk
+++ b/ui/events/events_base.target.linux-arm.mk
@@ -10,7 +10,8 @@ gyp_intermediate_dir := $(call local-intermediates-dir)
gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
# Make sure our deps are built first.
-GYP_TARGET_DEPENDENCIES :=
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a
GYP_GENERATED_OUTPUTS :=
@@ -24,6 +25,7 @@ GYP_COPIED_SOURCE_ORIGIN_DIRS :=
LOCAL_SRC_FILES := \
ui/events/event_switches.cc \
+ ui/events/gesture_event_details.cc \
ui/events/keycodes/keyboard_code_conversion.cc \
ui/events/keycodes/keyboard_code_conversion_android.cc \
ui/events/latency_info.cc
@@ -81,7 +83,24 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DEVENTS_BASE_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -96,8 +115,24 @@ MY_DEFS_Debug := \
# Include paths placed before CFLAGS/CPPFLAGS
LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
$(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
$(PWD)/frameworks/wilhelm/include \
$(PWD)/bionic \
$(PWD)/external/stlport/stlport
@@ -166,7 +201,24 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DEVENTS_BASE_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -182,8 +234,24 @@ MY_DEFS_Release := \
# Include paths placed before CFLAGS/CPPFLAGS
LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
$(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
$(PWD)/frameworks/wilhelm/include \
$(PWD)/bionic \
$(PWD)/external/stlport/stlport
@@ -246,7 +314,8 @@ LOCAL_LDFLAGS_Release := \
LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
-LOCAL_STATIC_LIBRARIES :=
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
# Enable grouping to fix circular references
LOCAL_GROUP_STATIC_LIBRARIES := true
diff --git a/ui/events/events_base.target.linux-mips.mk b/ui/events/events_base.target.linux-mips.mk
index 6b3316e2f5..67b159b914 100644
--- a/ui/events/events_base.target.linux-mips.mk
+++ b/ui/events/events_base.target.linux-mips.mk
@@ -10,7 +10,8 @@ gyp_intermediate_dir := $(call local-intermediates-dir)
gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
# Make sure our deps are built first.
-GYP_TARGET_DEPENDENCIES :=
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a
GYP_GENERATED_OUTPUTS :=
@@ -24,6 +25,7 @@ GYP_COPIED_SOURCE_ORIGIN_DIRS :=
LOCAL_SRC_FILES := \
ui/events/event_switches.cc \
+ ui/events/gesture_event_details.cc \
ui/events/keycodes/keyboard_code_conversion.cc \
ui/events/keycodes/keyboard_code_conversion_android.cc \
ui/events/latency_info.cc
@@ -80,7 +82,24 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DEVENTS_BASE_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -95,8 +114,24 @@ MY_DEFS_Debug := \
# Include paths placed before CFLAGS/CPPFLAGS
LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
$(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
$(PWD)/frameworks/wilhelm/include \
$(PWD)/bionic \
$(PWD)/external/stlport/stlport
@@ -164,7 +199,24 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DEVENTS_BASE_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -180,8 +232,24 @@ MY_DEFS_Release := \
# Include paths placed before CFLAGS/CPPFLAGS
LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
$(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
$(PWD)/frameworks/wilhelm/include \
$(PWD)/bionic \
$(PWD)/external/stlport/stlport
@@ -240,7 +308,8 @@ LOCAL_LDFLAGS_Release := \
LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
-LOCAL_STATIC_LIBRARIES :=
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
# Enable grouping to fix circular references
LOCAL_GROUP_STATIC_LIBRARIES := true
diff --git a/ui/events/events_base.target.linux-x86.mk b/ui/events/events_base.target.linux-x86.mk
index 9d764e3277..6c58566af0 100644
--- a/ui/events/events_base.target.linux-x86.mk
+++ b/ui/events/events_base.target.linux-x86.mk
@@ -10,7 +10,8 @@ gyp_intermediate_dir := $(call local-intermediates-dir)
gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
# Make sure our deps are built first.
-GYP_TARGET_DEPENDENCIES :=
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a
GYP_GENERATED_OUTPUTS :=
@@ -24,6 +25,7 @@ GYP_COPIED_SOURCE_ORIGIN_DIRS :=
LOCAL_SRC_FILES := \
ui/events/event_switches.cc \
+ ui/events/gesture_event_details.cc \
ui/events/keycodes/keyboard_code_conversion.cc \
ui/events/keycodes/keyboard_code_conversion_android.cc \
ui/events/latency_info.cc
@@ -82,7 +84,24 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DEVENTS_BASE_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -97,8 +116,24 @@ MY_DEFS_Debug := \
# Include paths placed before CFLAGS/CPPFLAGS
LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
$(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
$(PWD)/frameworks/wilhelm/include \
$(PWD)/bionic \
$(PWD)/external/stlport/stlport
@@ -167,7 +202,24 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DEVENTS_BASE_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -183,8 +235,24 @@ MY_DEFS_Release := \
# Include paths placed before CFLAGS/CPPFLAGS
LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
$(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
$(PWD)/frameworks/wilhelm/include \
$(PWD)/bionic \
$(PWD)/external/stlport/stlport
@@ -242,7 +310,8 @@ LOCAL_LDFLAGS_Release := \
LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
-LOCAL_STATIC_LIBRARIES :=
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
# Enable grouping to fix circular references
LOCAL_GROUP_STATIC_LIBRARIES := true
diff --git a/ui/events/events_base.target.linux-x86_64.mk b/ui/events/events_base.target.linux-x86_64.mk
new file mode 100644
index 0000000000..bcd4c1361a
--- /dev/null
+++ b/ui/events/events_base.target.linux-x86_64.mk
@@ -0,0 +1,331 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_events_events_base_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/events/event_switches.cc \
+ ui/events/gesture_event_details.cc \
+ ui/events/keycodes/keyboard_code_conversion.cc \
+ ui/events/keycodes/keyboard_code_conversion_android.cc \
+ ui/events/latency_info.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DEVENTS_BASE_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DEVENTS_BASE_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_events_events_base_gyp
+
+# Alias gyp target name.
+.PHONY: events_base
+events_base: ui_events_events_base_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/events/gesture_detection.target.darwin-arm.mk b/ui/events/gesture_detection.target.darwin-arm.mk
index 70b3dc6cab..d8edaa1734 100644
--- a/ui/events/gesture_detection.target.darwin-arm.mk
+++ b/ui/events/gesture_detection.target.darwin-arm.mk
@@ -97,9 +97,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -108,6 +106,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -216,9 +215,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -227,6 +224,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/gesture_detection.target.darwin-mips.mk b/ui/events/gesture_detection.target.darwin-mips.mk
index 4b2e134b2f..38c9edb379 100644
--- a/ui/events/gesture_detection.target.darwin-mips.mk
+++ b/ui/events/gesture_detection.target.darwin-mips.mk
@@ -96,9 +96,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -107,6 +105,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -214,9 +213,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -225,6 +222,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/gesture_detection.target.darwin-x86.mk b/ui/events/gesture_detection.target.darwin-x86.mk
index 97954726d3..a387b8f00e 100644
--- a/ui/events/gesture_detection.target.darwin-x86.mk
+++ b/ui/events/gesture_detection.target.darwin-x86.mk
@@ -98,9 +98,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -109,6 +107,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -217,9 +216,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -228,6 +225,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/gesture_detection.target.darwin-x86_64.mk b/ui/events/gesture_detection.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..f2f816c998
--- /dev/null
+++ b/ui/events/gesture_detection.target.darwin-x86_64.mk
@@ -0,0 +1,337 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_events_gesture_detection_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/events/gesture_detection/filtered_gesture_provider.cc \
+ ui/events/gesture_detection/gesture_detector.cc \
+ ui/events/gesture_detection/gesture_event_data.cc \
+ ui/events/gesture_detection/gesture_event_data_packet.cc \
+ ui/events/gesture_detection/gesture_config_helper_android.cc \
+ ui/events/gesture_detection/gesture_provider.cc \
+ ui/events/gesture_detection/scale_gesture_detector.cc \
+ ui/events/gesture_detection/snap_scroll_controller.cc \
+ ui/events/gesture_detection/touch_disposition_gesture_filter.cc \
+ ui/events/gesture_detection/velocity_tracker_state.cc \
+ ui/events/gesture_detection/velocity_tracker.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DGESTURE_DETECTION_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DGESTURE_DETECTION_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_events_gesture_detection_gyp
+
+# Alias gyp target name.
+.PHONY: gesture_detection
+gesture_detection: ui_events_gesture_detection_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/events/gesture_detection.target.linux-arm.mk b/ui/events/gesture_detection.target.linux-arm.mk
index 70b3dc6cab..d8edaa1734 100644
--- a/ui/events/gesture_detection.target.linux-arm.mk
+++ b/ui/events/gesture_detection.target.linux-arm.mk
@@ -97,9 +97,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -108,6 +106,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -216,9 +215,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -227,6 +224,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/gesture_detection.target.linux-mips.mk b/ui/events/gesture_detection.target.linux-mips.mk
index 4b2e134b2f..38c9edb379 100644
--- a/ui/events/gesture_detection.target.linux-mips.mk
+++ b/ui/events/gesture_detection.target.linux-mips.mk
@@ -96,9 +96,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -107,6 +105,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -214,9 +213,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -225,6 +222,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/gesture_detection.target.linux-x86.mk b/ui/events/gesture_detection.target.linux-x86.mk
index 97954726d3..a387b8f00e 100644
--- a/ui/events/gesture_detection.target.linux-x86.mk
+++ b/ui/events/gesture_detection.target.linux-x86.mk
@@ -98,9 +98,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -109,6 +107,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -217,9 +216,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -228,6 +225,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/events/gesture_detection.target.linux-x86_64.mk b/ui/events/gesture_detection.target.linux-x86_64.mk
new file mode 100644
index 0000000000..f2f816c998
--- /dev/null
+++ b/ui/events/gesture_detection.target.linux-x86_64.mk
@@ -0,0 +1,337 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_events_gesture_detection_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/events/gesture_detection/filtered_gesture_provider.cc \
+ ui/events/gesture_detection/gesture_detector.cc \
+ ui/events/gesture_detection/gesture_event_data.cc \
+ ui/events/gesture_detection/gesture_event_data_packet.cc \
+ ui/events/gesture_detection/gesture_config_helper_android.cc \
+ ui/events/gesture_detection/gesture_provider.cc \
+ ui/events/gesture_detection/scale_gesture_detector.cc \
+ ui/events/gesture_detection/snap_scroll_controller.cc \
+ ui/events/gesture_detection/touch_disposition_gesture_filter.cc \
+ ui/events/gesture_detection/velocity_tracker_state.cc \
+ ui/events/gesture_detection/velocity_tracker.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DGESTURE_DETECTION_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DGESTURE_DETECTION_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_events_gesture_detection_gyp
+
+# Alias gyp target name.
+.PHONY: gesture_detection
+gesture_detection: ui_events_gesture_detection_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/events/gesture_detection/gesture_event_data.cc b/ui/events/gesture_detection/gesture_event_data.cc
index af5459214e..345b630e4b 100644
--- a/ui/events/gesture_detection/gesture_event_data.cc
+++ b/ui/events/gesture_detection/gesture_event_data.cc
@@ -8,18 +8,27 @@
namespace ui {
-GestureEventData::GestureEventData()
- : type(ET_UNKNOWN), x(0), y(0) {}
-
GestureEventData::GestureEventData(EventType type,
base::TimeTicks time,
float x,
float y,
- const Details& details)
+ const GestureEventDetails& details)
: type(type), time(time), x(x), y(y), details(details) {
DCHECK(ET_GESTURE_TYPE_START <= type && type <= ET_GESTURE_TYPE_END);
}
-GestureEventData::Details::Details() { memset(this, 0, sizeof(Details)); }
+GestureEventData::GestureEventData(EventType type,
+ base::TimeTicks time,
+ float x,
+ float y)
+ : type(type),
+ time(time),
+ x(x),
+ y(y),
+ details(GestureEventDetails(type, 0, 0)) {
+ DCHECK(ET_GESTURE_TYPE_START <= type && type <= ET_GESTURE_TYPE_END);
+}
+
+GestureEventData::GestureEventData() : type(ET_UNKNOWN), x(0), y(0) {}
} // namespace ui
diff --git a/ui/events/gesture_detection/gesture_event_data.h b/ui/events/gesture_detection/gesture_event_data.h
index 008ef3c1b6..280103a921 100644
--- a/ui/events/gesture_detection/gesture_event_data.h
+++ b/ui/events/gesture_detection/gesture_event_data.h
@@ -8,78 +8,30 @@
#include "base/time/time.h"
#include "ui/events/event_constants.h"
#include "ui/events/gesture_detection/gesture_detection_export.h"
+#include "ui/events/gesture_event_details.h"
namespace ui {
class GestureEventDataPacket;
-// Simple transport construct for gesture-related event data.
-// TODO(jdduke): Merge this class with ui::GestureEventDetails.
struct GESTURE_DETECTION_EXPORT GestureEventData {
- struct Details;
GestureEventData(EventType type,
base::TimeTicks time,
float x,
float y,
- const Details& details);
+ const GestureEventDetails& details);
+
+ GestureEventData(EventType type,
+ base::TimeTicks time,
+ float x,
+ float y);
EventType type;
base::TimeTicks time;
float x;
float y;
- // TODO(jdduke): Determine if we can simply re-use blink::WebGestureEvent, as
- // this is more or less straight up duplication.
- struct GESTURE_DETECTION_EXPORT Details {
- Details();
- union {
- // Tap information must be set for ET_GESTURE_TAP,
- // ET_GESTURE_TAP_UNCONFIRMED, and ET_GESTURE_DOUBLE_TAP events.
- struct {
- int tap_count;
- float width;
- float height;
- } tap;
-
- struct {
- float width;
- float height;
- } tap_down;
-
- struct {
- float width;
- float height;
- } show_press;
-
- struct {
- float width;
- float height;
- } long_press;
-
- struct {
- // Initial motion that triggered the scroll.
- // May be redundant with delta_x/delta_y in the first scroll_update.
- float delta_x_hint;
- float delta_y_hint;
- } scroll_begin;
-
- struct {
- float delta_x;
- float delta_y;
- float velocity_x;
- float velocity_y;
- } scroll_update;
-
- struct {
- float velocity_x;
- float velocity_y;
- } fling_start;
-
- struct {
- float scale;
- } pinch_update;
- };
- } details;
+ GestureEventDetails details;
private:
friend class GestureEventDataPacket;
diff --git a/ui/events/gestures/gesture_types.cc b/ui/events/gesture_detection/gesture_event_details.cc
index a086c665d6..1de178d55a 100644
--- a/ui/events/gestures/gesture_types.cc
+++ b/ui/events/gesture_detection/gesture_event_details.cc
@@ -1,11 +1,13 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright 2014 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 "ui/events/gestures/gesture_types.h"
+#include "ui/events/gesture_detection/gesture_event_details.h"
namespace ui {
+GestureEventDetails::GestureEventDetails() : type_(ET_UNKNOWN) {}
+
GestureEventDetails::GestureEventDetails(ui::EventType type,
float delta_x,
float delta_y)
diff --git a/ui/events/gesture_detection/gesture_event_details.h b/ui/events/gesture_detection/gesture_event_details.h
new file mode 100644
index 0000000000..8c924e71ab
--- /dev/null
+++ b/ui/events/gesture_detection/gesture_event_details.h
@@ -0,0 +1,201 @@
+// Copyright 2014 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 UI_EVENTS_GESTURE_DETECTION_GESTURE_EVENT_DETAILS_H_
+#define UI_EVENTS_GESTURE_DETECTION_GESTURE_EVENT_DETAILS_H_
+
+#include "base/logging.h"
+#include "ui/events/event_constants.h"
+#include "ui/events/events_base_export.h"
+#include "ui/gfx/rect.h"
+#include "ui/gfx/rect_conversions.h"
+
+namespace ui {
+
+struct EVENTS_BASE_EXPORT GestureEventDetails {
+ public:
+ GestureEventDetails();
+ GestureEventDetails(EventType type, float delta_x, float delta_y);
+ GestureEventDetails(EventType type,
+ float delta_x, float delta_y,
+ float delta_x_ordinal, float delta_y_ordinal);
+
+ EventType type() const { return type_; }
+
+ int touch_points() const { return touch_points_; }
+ void set_touch_points(int touch_points) { touch_points_ = touch_points; }
+
+ // TODO(tdresser): Return RectF. See crbug.com/337824.
+ const gfx::Rect bounding_box() const {
+ return ToEnclosingRect(bounding_box_);
+ }
+ void set_bounding_box(const gfx::RectF& box) { bounding_box_ = box; }
+
+ void SetScrollVelocity(float velocity_x, float velocity_y,
+ float velocity_x_ordinal, float velocity_y_ordinal);
+
+ float scroll_x_hint() const {
+ CHECK_EQ(ui::ET_GESTURE_SCROLL_BEGIN, type_);
+ return data.scroll_begin.x_hint;
+ }
+
+ float scroll_y_hint() const {
+ CHECK_EQ(ui::ET_GESTURE_SCROLL_BEGIN, type_);
+ return data.scroll_begin.y_hint;
+ }
+
+ float scroll_x() const {
+ CHECK_EQ(ui::ET_GESTURE_SCROLL_UPDATE, type_);
+ return data.scroll_update.x;
+ }
+
+ float scroll_y() const {
+ CHECK_EQ(ui::ET_GESTURE_SCROLL_UPDATE, type_);
+ return data.scroll_update.y;
+ }
+
+ float velocity_x() const {
+ CHECK(type_ == ui::ET_GESTURE_SCROLL_UPDATE ||
+ type_ == ui::ET_SCROLL_FLING_START);
+ return type_ == ui::ET_SCROLL_FLING_START ? data.fling_velocity.x :
+ data.scroll_update.velocity_x;
+ }
+
+ float velocity_y() const {
+ CHECK(type_ == ui::ET_GESTURE_SCROLL_UPDATE ||
+ type_ == ui::ET_SCROLL_FLING_START);
+ return type_ == ui::ET_SCROLL_FLING_START ? data.fling_velocity.y :
+ data.scroll_update.velocity_y;
+ }
+
+ // *_ordinal values are unmodified by rail based clamping.
+ float scroll_x_ordinal() const {
+ CHECK_EQ(ui::ET_GESTURE_SCROLL_UPDATE, type_);
+ return data.scroll_update.x_ordinal;
+ }
+
+ float scroll_y_ordinal() const {
+ CHECK_EQ(ui::ET_GESTURE_SCROLL_UPDATE, type_);
+ return data.scroll_update.y_ordinal;
+ }
+
+ float velocity_x_ordinal() const {
+ CHECK(type_ == ui::ET_GESTURE_SCROLL_UPDATE ||
+ type_ == ui::ET_SCROLL_FLING_START);
+ return type_ == ui::ET_SCROLL_FLING_START ?
+ data.fling_velocity.x_ordinal :
+ data.scroll_update.velocity_x_ordinal;
+ }
+
+ float velocity_y_ordinal() const {
+ CHECK(type_ == ui::ET_GESTURE_SCROLL_UPDATE ||
+ type_ == ui::ET_SCROLL_FLING_START);
+ return type_ == ui::ET_SCROLL_FLING_START ?
+ data.fling_velocity.y_ordinal :
+ data.scroll_update.velocity_y_ordinal;
+ }
+
+ int touch_id() const {
+ CHECK_EQ(ui::ET_GESTURE_LONG_PRESS, type_);
+ return data.touch_id;
+ }
+
+ float first_finger_width() const {
+ CHECK_EQ(ui::ET_GESTURE_TWO_FINGER_TAP, type_);
+ return data.first_finger_enclosing_rectangle.width;
+ }
+
+ float first_finger_height() const {
+ CHECK_EQ(ui::ET_GESTURE_TWO_FINGER_TAP, type_);
+ return data.first_finger_enclosing_rectangle.height;
+ }
+
+ float scale() const {
+ CHECK_EQ(ui::ET_GESTURE_PINCH_UPDATE, type_);
+ return data.scale;
+ }
+
+ bool swipe_left() const {
+ CHECK_EQ(ui::ET_GESTURE_MULTIFINGER_SWIPE, type_);
+ return data.swipe.left;
+ }
+
+ bool swipe_right() const {
+ CHECK_EQ(ui::ET_GESTURE_MULTIFINGER_SWIPE, type_);
+ return data.swipe.right;
+ }
+
+ bool swipe_up() const {
+ CHECK_EQ(ui::ET_GESTURE_MULTIFINGER_SWIPE, type_);
+ return data.swipe.up;
+ }
+
+ bool swipe_down() const {
+ CHECK_EQ(ui::ET_GESTURE_MULTIFINGER_SWIPE, type_);
+ return data.swipe.down;
+ }
+
+ int tap_count() const {
+ CHECK_EQ(ui::ET_GESTURE_TAP, type_);
+ return data.tap_count;
+ }
+
+ private:
+ ui::EventType type_;
+ union {
+ struct { // SCROLL start details.
+ // Distance that caused the scroll to start. Generally redundant with
+ // the x/y values from the first scroll_update.
+ float x_hint;
+ float y_hint;
+ } scroll_begin;
+
+ struct { // SCROLL delta.
+ float x;
+ float y;
+ float velocity_x;
+ float velocity_y;
+ float x_ordinal;
+ float y_ordinal;
+ float velocity_x_ordinal;
+ float velocity_y_ordinal;
+ } scroll_update;
+
+ float scale; // PINCH scale.
+
+ struct { // FLING velocity.
+ float x;
+ float y;
+ float x_ordinal;
+ float y_ordinal;
+ } fling_velocity;
+
+ int touch_id; // LONG_PRESS touch-id.
+
+ // Dimensions of the first finger's enclosing rectangle for TWO_FINGER_TAP.
+ struct {
+ float width;
+ float height;
+ } first_finger_enclosing_rectangle;
+
+ struct { // SWIPE direction.
+ bool left;
+ bool right;
+ bool up;
+ bool down;
+ } swipe;
+
+ int tap_count; // TAP repeat count.
+ } data;
+
+ int touch_points_; // Number of active touch points in the gesture.
+
+ // Bounding box is an axis-aligned rectangle that contains all the
+ // enclosing rectangles of the touch-points in the gesture.
+ gfx::RectF bounding_box_;
+};
+
+} // namespace ui
+
+#endif // UI_EVENTS_GESTURE_DETECTION_GESTURE_EVENT_DETAILS_H_
diff --git a/ui/events/gesture_detection/gesture_provider.cc b/ui/events/gesture_detection/gesture_provider.cc
index 35cd67b0e5..4deeba2580 100644
--- a/ui/events/gesture_detection/gesture_provider.cc
+++ b/ui/events/gesture_detection/gesture_provider.cc
@@ -34,7 +34,7 @@ GestureEventData CreateGesture(EventType type,
base::TimeTicks time,
float x,
float y,
- const GestureEventData::Details& details) {
+ const GestureEventDetails& details) {
return GestureEventData(type, time, x, y, details);
}
@@ -42,32 +42,33 @@ GestureEventData CreateGesture(EventType type,
base::TimeTicks time,
float x,
float y) {
- return CreateGesture(type, time, x, y, GestureEventData::Details());
-}
+ return GestureEventData(type, time, x, y);
+ }
GestureEventData CreateGesture(EventType type,
const MotionEvent& event,
- const GestureEventData::Details& details) {
+ const GestureEventDetails& details) {
return CreateGesture(
type, event.GetEventTime(), event.GetX(), event.GetY(), details);
}
GestureEventData CreateGesture(EventType type,
const MotionEvent& event) {
- return CreateGesture(type, event, GestureEventData::Details());
+ return CreateGesture(type, event.GetEventTime(), event.GetX(), event.GetY());
}
float Round(float f) {
return (f > 0.f) ? std::floor(f + 0.5f) : std::ceil(f - 0.5f);
}
-GestureEventData::Details CreateTapGestureDetails(const MotionEvent& event) {
- GestureEventData::Details tap_details;
+GestureEventDetails CreateTapGestureDetails(EventType type,
+ const MotionEvent& event) {
// Set the tap count to 1 even for ET_GESTURE_DOUBLE_TAP, in order to be
// consistent with double tap behavior on a mobile viewport. See
// crbug.com/234986 for context.
- tap_details.tap.tap_count = 1;
- tap_details.tap.width = tap_details.tap.height = event.GetTouchMajor();
+ GestureEventDetails tap_details(type, 1, 0);
+ tap_details.set_bounding_box(
+ gfx::RectF(event.GetTouchMajor(), event.GetTouchMajor()));
return tap_details;
}
@@ -129,8 +130,8 @@ class GestureProvider::ScaleGestureListenerImpl
detector.GetFocusX(),
detector.GetFocusY()));
}
- GestureEventData::Details pinch_details;
- pinch_details.pinch_update.scale = detector.GetScaleFactor();
+ GestureEventDetails pinch_details(
+ ET_GESTURE_PINCH_UPDATE, detector.GetScaleFactor(), 0);
provider_->Send(CreateGesture(ET_GESTURE_PINCH_UPDATE,
detector.GetEventTime(),
detector.GetFocusX(),
@@ -229,8 +230,9 @@ class GestureProvider::GestureListenerImpl
accumulated_scroll_error_x_ = 0;
accumulated_scroll_error_y_ = 0;
- GestureEventData::Details tap_details;
- tap_details.tap.width = tap_details.tap.height = e.GetTouchMajor();
+ GestureEventDetails tap_details(ET_GESTURE_TAP_DOWN, 0, 0);
+ tap_details.set_bounding_box(
+ gfx::RectF(e.GetTouchMajor(), e.GetTouchMajor()));
provider_->Send(CreateGesture(ET_GESTURE_TAP_DOWN, e, tap_details));
// Return true to indicate that we want to handle touch.
@@ -270,9 +272,8 @@ class GestureProvider::GestureListenerImpl
if (!provider_->IsScrollInProgress()) {
// Note that scroll start hints are in distance traveled, where
// scroll deltas are in the opposite direction.
- GestureEventData::Details scroll_details;
- scroll_details.scroll_begin.delta_x_hint = -raw_distance_x;
- scroll_details.scroll_begin.delta_y_hint = -raw_distance_y;
+ GestureEventDetails scroll_details(
+ ET_GESTURE_SCROLL_BEGIN, -raw_distance_x, -raw_distance_y);
provider_->Send(CreateGesture(ET_GESTURE_SCROLL_BEGIN,
e2.GetEventTime(),
e1.GetX(),
@@ -293,9 +294,7 @@ class GestureProvider::GestureListenerImpl
accumulated_scroll_error_y_ += (distance_y - dy);
if (dx || dy) {
- GestureEventData::Details scroll_details;
- scroll_details.scroll_update.delta_x = -dx;
- scroll_details.scroll_update.delta_y = -dy;
+ GestureEventDetails scroll_details(ET_GESTURE_SCROLL_UPDATE, -dx, -dy);
provider_->Send(
CreateGesture(ET_GESTURE_SCROLL_UPDATE, e2, scroll_details));
}
@@ -321,10 +320,10 @@ class GestureProvider::GestureListenerImpl
}
virtual void OnShowPress(const MotionEvent& e) OVERRIDE {
- GestureEventData::Details show_press_details;
+ GestureEventDetails show_press_details(ET_GESTURE_SHOW_PRESS, 0, 0);
// TODO(jdduke): Expose minor axis length and rotation in |MotionEvent|.
- show_press_details.show_press.width = e.GetTouchMajor();
- show_press_details.show_press.height = show_press_details.show_press.width;
+ show_press_details.set_bounding_box(
+ gfx::RectF(e.GetTouchMajor(), e.GetTouchMajor()));
provider_->Send(
CreateGesture(ET_GESTURE_SHOW_PRESS, e, show_press_details));
}
@@ -352,7 +351,9 @@ class GestureProvider::GestureListenerImpl
// Notify Blink about this tapUp event anyway, when none of the above
// conditions applied.
provider_->Send(CreateGesture(
- ET_GESTURE_TAP_UNCONFIRMED, e, CreateTapGestureDetails(e)));
+ ET_GESTURE_TAP_UNCONFIRMED,
+ e,
+ CreateTapGestureDetails(ET_GESTURE_TAP_UNCONFIRMED, e)));
}
}
@@ -370,8 +371,8 @@ class GestureProvider::GestureListenerImpl
ignore_single_tap_ = true;
- provider_->Send(
- CreateGesture(ET_GESTURE_TAP, e, CreateTapGestureDetails(e)));
+ provider_->Send(CreateGesture(
+ ET_GESTURE_TAP, e, CreateTapGestureDetails(ET_GESTURE_TAP, e)));
return true;
}
@@ -400,9 +401,8 @@ class GestureProvider::GestureListenerImpl
// Begin double-tap drag zoom mode if the move distance is
// further than the threshold.
if (IsDistanceGreaterThanTouchSlop(distance_x, distance_y)) {
- GestureEventData::Details scroll_details;
- scroll_details.scroll_begin.delta_x_hint = -distance_x;
- scroll_details.scroll_begin.delta_y_hint = -distance_y;
+ GestureEventDetails scroll_details(
+ ET_GESTURE_SCROLL_BEGIN, -distance_x, -distance_y);
provider_->Send(
CreateGesture(ET_GESTURE_SCROLL_BEGIN, e, scroll_details));
provider_->Send(
@@ -416,11 +416,10 @@ class GestureProvider::GestureListenerImpl
provider_->Send(CreateGesture(ET_GESTURE_SCROLL_UPDATE, e));
float dy = double_tap_y_ - e.GetY();
- GestureEventData::Details pinch_details;
- pinch_details.pinch_update.scale =
- std::pow(dy > 0 ? 1.0f - kDoubleTapDragZoomSpeed
- : 1.0f + kDoubleTapDragZoomSpeed,
- std::abs(dy * px_to_dp_));
+ float scale = std::pow(dy > 0 ? 1.0f - kDoubleTapDragZoomSpeed
+ : 1.0f + kDoubleTapDragZoomSpeed,
+ std::abs(dy * px_to_dp_));
+ GestureEventDetails pinch_details(ET_GESTURE_PINCH_UPDATE, scale, 0);
provider_->Send(CreateGesture(ET_GESTURE_PINCH_UPDATE,
e.GetEventTime(),
Round(double_tap_drag_zoom_anchor_x_),
@@ -431,8 +430,10 @@ class GestureProvider::GestureListenerImpl
case MotionEvent::ACTION_UP:
if (double_tap_mode_ != DOUBLE_TAP_MODE_DRAG_ZOOM) {
// Normal double-tap gesture.
- provider_->Send(CreateGesture(
- ET_GESTURE_DOUBLE_TAP, e, CreateTapGestureDetails(e)));
+ provider_->Send(
+ CreateGesture(ET_GESTURE_DOUBLE_TAP,
+ e,
+ CreateTapGestureDetails(ET_GESTURE_DOUBLE_TAP, e)));
}
EndDoubleTapDragIfNecessary(e);
break;
@@ -451,9 +452,9 @@ class GestureProvider::GestureListenerImpl
DCHECK(!IsDoubleTapInProgress());
SetIgnoreSingleTap(true);
- GestureEventData::Details long_press_details;
- long_press_details.long_press.width = e.GetTouchMajor();
- long_press_details.long_press.height = long_press_details.long_press.width;
+ GestureEventDetails long_press_details(ET_GESTURE_LONG_PRESS, 0, 0);
+ long_press_details.set_bounding_box(
+ gfx::RectF(e.GetTouchMajor(), e.GetTouchMajor()));
provider_->Send(
CreateGesture(ET_GESTURE_LONG_PRESS, e, long_press_details));
@@ -716,16 +717,14 @@ void GestureProvider::Fling(base::TimeTicks time,
// ET_SCROLL_FLING_START to send the fling to the correct target. Send if it
// has not sent. The distance traveled in one second is a reasonable scroll
// start hint.
- GestureEventData::Details scroll_details;
- scroll_details.scroll_begin.delta_x_hint = velocity_x;
- scroll_details.scroll_begin.delta_y_hint = velocity_y;
+ GestureEventDetails scroll_details(
+ ET_GESTURE_SCROLL_BEGIN, velocity_x, velocity_y);
Send(CreateGesture(ET_GESTURE_SCROLL_BEGIN, time, x, y, scroll_details));
}
EndTouchScrollIfNecessary(time, false);
- GestureEventData::Details fling_details;
- fling_details.fling_start.velocity_x = velocity_x;
- fling_details.fling_start.velocity_y = velocity_y;
+ GestureEventDetails fling_details(
+ ET_SCROLL_FLING_START, velocity_x, velocity_y);
Send(CreateGesture(ET_SCROLL_FLING_START, time, x, y, fling_details));
}
@@ -801,9 +800,9 @@ bool GestureProvider::SendLongTapIfNecessary(const MotionEvent& event) {
!current_longpress_time_.is_null() &&
!scale_gesture_listener_->IsScaleGestureDetectionInProgress()) {
SendTapCancelIfNecessary(event);
- GestureEventData::Details long_tap_details;
- long_tap_details.long_press.width = event.GetTouchMajor();
- long_tap_details.long_press.height = long_tap_details.long_press.width;
+ GestureEventDetails long_tap_details(ET_GESTURE_LONG_TAP, 0, 0);
+ long_tap_details.set_bounding_box(
+ gfx::RectF(event.GetTouchMajor(), event.GetTouchMajor()));
Send(CreateGesture(ET_GESTURE_LONG_TAP, event, long_tap_details));
return true;
}
diff --git a/ui/events/gesture_detection/gesture_provider_unittest.cc b/ui/events/gesture_detection/gesture_provider_unittest.cc
index 569abe51b8..1be9ec7fec 100644
--- a/ui/events/gesture_detection/gesture_provider_unittest.cc
+++ b/ui/events/gesture_detection/gesture_provider_unittest.cc
@@ -208,10 +208,9 @@ TEST_F(GestureProviderTest, GestureTapTap) {
EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType());
// Ensure tap details have been set.
- EXPECT_EQ(10, GetMostRecentGestureEvent().details.tap.width);
- EXPECT_EQ(10, GetMostRecentGestureEvent().details.tap.height);
- EXPECT_EQ(1, GetMostRecentGestureEvent().details.tap.tap_count);
-
+ EXPECT_EQ(10, GetMostRecentGestureEvent().details.bounding_box().width());
+ EXPECT_EQ(10, GetMostRecentGestureEvent().details.bounding_box().height());
+ EXPECT_EQ(1, GetMostRecentGestureEvent().details.tap_count());
}
// Verify that a DOWN followed shortly by an UP will trigger
@@ -231,9 +230,9 @@ TEST_F(GestureProviderTest, GestureTapTapWithDelay) {
EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
EXPECT_EQ(ET_GESTURE_TAP_UNCONFIRMED, GetMostRecentGestureEventType());
// Ensure tap details have been set.
- EXPECT_EQ(10, GetMostRecentGestureEvent().details.tap.width);
- EXPECT_EQ(10, GetMostRecentGestureEvent().details.tap.height);
- EXPECT_EQ(1, GetMostRecentGestureEvent().details.tap.tap_count);
+ EXPECT_EQ(10, GetMostRecentGestureEvent().details.bounding_box().width());
+ EXPECT_EQ(10, GetMostRecentGestureEvent().details.bounding_box().height());
+ EXPECT_EQ(1, GetMostRecentGestureEvent().details.tap_count());
EXPECT_FALSE(HasReceivedGesture(ET_GESTURE_TAP));
}
@@ -306,8 +305,8 @@ TEST_F(GestureProviderTest, FlingEventSequence) {
// We don't want to take a dependency here on exactly how hints are calculated
// for a fling (eg. may depend on velocity), so just validate the direction.
- int hint_x = GetReceivedGesture(2).details.scroll_begin.delta_x_hint;
- int hint_y = GetReceivedGesture(2).details.scroll_begin.delta_y_hint;
+ int hint_x = GetReceivedGesture(2).details.scroll_x_hint();
+ int hint_y = GetReceivedGesture(2).details.scroll_y_hint();
EXPECT_TRUE(hint_x > 0 && hint_y > 0 && hint_x > hint_y)
<< "ScrollBegin hint should be in positive X axis";
@@ -401,9 +400,9 @@ TEST_F(GestureProviderTest, DoubleTap) {
const GestureEventData& double_tap = GetMostRecentGestureEvent();
EXPECT_EQ(ET_GESTURE_DOUBLE_TAP, double_tap.type);
// Ensure tap details have been set.
- EXPECT_EQ(10, double_tap.details.tap.width);
- EXPECT_EQ(10, double_tap.details.tap.height);
- EXPECT_EQ(1, double_tap.details.tap.tap_count);
+ EXPECT_EQ(10, double_tap.details.bounding_box().width());
+ EXPECT_EQ(10, double_tap.details.bounding_box().height());
+ EXPECT_EQ(1, double_tap.details.tap_count());
}
TEST_F(GestureProviderTest, DoubleTapDragZoom) {
@@ -434,8 +433,8 @@ TEST_F(GestureProviderTest, DoubleTapDragZoom) {
EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_SCROLL_BEGIN));
const GestureEventData* scroll_begin_gesture = GetActiveScrollBeginEvent();
ASSERT_TRUE(!!scroll_begin_gesture);
- EXPECT_EQ(0, scroll_begin_gesture->details.scroll_begin.delta_x_hint);
- EXPECT_EQ(100, scroll_begin_gesture->details.scroll_begin.delta_y_hint);
+ EXPECT_EQ(0, scroll_begin_gesture->details.scroll_x_hint());
+ EXPECT_EQ(100, scroll_begin_gesture->details.scroll_y_hint());
EXPECT_EQ(ET_GESTURE_PINCH_BEGIN, GetMostRecentGestureEventType());
event = ObtainMotionEvent(down_time_2 + kOneMicrosecond * 2,
@@ -538,8 +537,8 @@ TEST_F(GestureProviderTest, ScrollUpdateValues) {
EXPECT_EQ(kFakeCoordY - delta_y, gesture.y);
// No horizontal delta because of snapping.
- EXPECT_EQ(0, gesture.details.scroll_update.delta_x);
- EXPECT_EQ(-delta_y / 2, gesture.details.scroll_update.delta_y);
+ EXPECT_EQ(0, gesture.details.scroll_x());
+ EXPECT_EQ(-delta_y / 2, gesture.details.scroll_y());
}
// Verify that fractional scroll deltas are rounded as expected and that
@@ -585,11 +584,11 @@ TEST_F(GestureProviderTest, FractionalScroll) {
// Verify that we're scrolling vertically by the expected amount
// (modulo rounding).
- EXPECT_GE(gesture.details.scroll_update.delta_y, (int)delta_y);
- EXPECT_LE(gesture.details.scroll_update.delta_y, ((int)delta_y) + 1);
+ EXPECT_GE(gesture.details.scroll_y(), (int)delta_y);
+ EXPECT_LE(gesture.details.scroll_y(), ((int)delta_y) + 1);
// And that there has been no horizontal motion at all.
- EXPECT_EQ(0, gesture.details.scroll_update.delta_x);
+ EXPECT_EQ(0, gesture.details.scroll_x());
}
}
@@ -623,8 +622,8 @@ TEST_F(GestureProviderTest, ScrollBeginValues) {
const GestureEventData* scroll_begin_gesture = GetActiveScrollBeginEvent();
ASSERT_TRUE(!!scroll_begin_gesture);
- EXPECT_EQ(delta_x, scroll_begin_gesture->details.scroll_begin.delta_x_hint);
- EXPECT_EQ(delta_y, scroll_begin_gesture->details.scroll_begin.delta_y_hint);
+ EXPECT_EQ(delta_x, scroll_begin_gesture->details.scroll_x_hint());
+ EXPECT_EQ(delta_y, scroll_begin_gesture->details.scroll_y_hint());
}
TEST_F(GestureProviderTest, LongPressAndTapCancelledWhenScrollBegins) {
@@ -764,8 +763,8 @@ TEST_F(GestureProviderTest, TouchSlopRemovedFromScroll) {
EXPECT_EQ(ET_GESTURE_SCROLL_UPDATE, GetMostRecentGestureEventType());
GestureEventData gesture = GetMostRecentGestureEvent();
- EXPECT_EQ(0, gesture.details.scroll_update.delta_x);
- EXPECT_EQ(scroll_delta, gesture.details.scroll_update.delta_y);
+ EXPECT_EQ(0, gesture.details.scroll_x());
+ EXPECT_EQ(scroll_delta, gesture.details.scroll_y());
}
TEST_F(GestureProviderTest, NoDoubleTapWhenExplicitlyDisabled) {
diff --git a/ui/events/gesture_detection/touch_disposition_gesture_filter.cc b/ui/events/gesture_detection/touch_disposition_gesture_filter.cc
index 414c46b3b5..a64c1b61fc 100644
--- a/ui/events/gesture_detection/touch_disposition_gesture_filter.cc
+++ b/ui/events/gesture_detection/touch_disposition_gesture_filter.cc
@@ -6,6 +6,7 @@
#include "base/auto_reset.h"
#include "base/logging.h"
+#include "ui/events/gesture_event_details.h"
namespace ui {
namespace {
@@ -16,7 +17,7 @@ COMPILE_ASSERT(ET_GESTURE_TYPE_END - ET_GESTURE_TYPE_START < 32,
GestureEventData CreateGesture(EventType type) {
return GestureEventData(
- type, base::TimeTicks(), 0, 0, GestureEventData::Details());
+ type, base::TimeTicks(), 0, 0, GestureEventDetails(type, 0, 0));
}
enum RequiredTouches {
diff --git a/ui/events/gesture_detection/touch_disposition_gesture_filter_unittest.cc b/ui/events/gesture_detection/touch_disposition_gesture_filter_unittest.cc
index 687a0b7b54..79f1096d5e 100644
--- a/ui/events/gesture_detection/touch_disposition_gesture_filter_unittest.cc
+++ b/ui/events/gesture_detection/touch_disposition_gesture_filter_unittest.cc
@@ -168,8 +168,7 @@ class TouchDispositionGestureFilterTest
}
static GestureEventData CreateGesture(EventType type) {
- return GestureEventData(
- type, base::TimeTicks(), 0, 0, GestureEventData::Details());
+ return GestureEventData(type, base::TimeTicks(), 0, 0);
}
private:
diff --git a/ui/events/gesture_event_details.cc b/ui/events/gesture_event_details.cc
new file mode 100644
index 0000000000..983d2a163f
--- /dev/null
+++ b/ui/events/gesture_event_details.cc
@@ -0,0 +1,118 @@
+// Copyright 2014 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 "ui/events/gesture_event_details.h"
+
+namespace ui {
+
+GestureEventDetails::GestureEventDetails() : type_(ET_UNKNOWN) {}
+
+GestureEventDetails::GestureEventDetails(ui::EventType type,
+ float delta_x,
+ float delta_y)
+ : type_(type),
+ touch_points_(1) {
+ switch (type_) {
+ case ui::ET_GESTURE_SCROLL_BEGIN:
+ data.scroll_begin.x_hint = delta_x;
+ data.scroll_begin.y_hint = delta_y;
+ break;
+
+ case ui::ET_GESTURE_SCROLL_UPDATE:
+ data.scroll_update.x = delta_x;
+ data.scroll_update.y = delta_y;
+ data.scroll_update.x_ordinal = delta_x;
+ data.scroll_update.y_ordinal = delta_y;
+ break;
+
+ case ui::ET_SCROLL_FLING_START:
+ data.fling_velocity.x = delta_x;
+ data.fling_velocity.y = delta_y;
+ data.fling_velocity.x_ordinal = delta_x;
+ data.fling_velocity.y_ordinal = delta_y;
+ break;
+
+ case ui::ET_GESTURE_LONG_PRESS:
+ data.touch_id = static_cast<int>(delta_x);
+ CHECK_EQ(0.f, delta_y) << "Unknown data in delta_y for long press.";
+ break;
+
+ case ui::ET_GESTURE_TWO_FINGER_TAP:
+ data.first_finger_enclosing_rectangle.width = delta_x;
+ data.first_finger_enclosing_rectangle.height = delta_y;
+ break;
+
+ case ui::ET_GESTURE_PINCH_UPDATE:
+ data.scale = delta_x;
+ CHECK_EQ(0.f, delta_y) << "Unknown data in delta_y for pinch";
+ break;
+
+ case ui::ET_GESTURE_MULTIFINGER_SWIPE:
+ data.swipe.left = delta_x < 0;
+ data.swipe.right = delta_x > 0;
+ data.swipe.up = delta_y < 0;
+ data.swipe.down = delta_y > 0;
+ break;
+
+ case ui::ET_GESTURE_TAP:
+ case ui::ET_GESTURE_DOUBLE_TAP:
+ case ui::ET_GESTURE_TAP_UNCONFIRMED:
+ data.tap_count = static_cast<int>(delta_x);
+ CHECK_EQ(0.f, delta_y) << "Unknown data in delta_y for tap.";
+ break;
+
+ default:
+ if (delta_x != 0.f || delta_y != 0.f) {
+ DLOG(WARNING) << "A gesture event (" << type << ") had unknown data: ("
+ << delta_x << "," << delta_y;
+ }
+ break;
+ }
+}
+
+GestureEventDetails::GestureEventDetails(ui::EventType type,
+ float delta_x,
+ float delta_y,
+ float delta_x_ordinal,
+ float delta_y_ordinal)
+ : type_(type),
+ touch_points_(1) {
+ CHECK(type == ui::ET_GESTURE_SCROLL_UPDATE ||
+ type == ui::ET_SCROLL_FLING_START);
+ switch (type_) {
+ case ui::ET_GESTURE_SCROLL_UPDATE:
+ data.scroll_update.x = delta_x;
+ data.scroll_update.y = delta_y;
+ data.scroll_update.x_ordinal = delta_x_ordinal;
+ data.scroll_update.y_ordinal = delta_y_ordinal;
+ break;
+
+ case ui::ET_SCROLL_FLING_START:
+ data.fling_velocity.x = delta_x;
+ data.fling_velocity.y = delta_y;
+ data.fling_velocity.x_ordinal = delta_x_ordinal;
+ data.fling_velocity.y_ordinal = delta_y_ordinal;
+ break;
+
+ default:
+ break;
+ }
+}
+
+void GestureEventDetails::SetScrollVelocity(float velocity_x,
+ float velocity_y,
+ float velocity_x_ordinal,
+ float velocity_y_ordinal) {
+ CHECK_EQ(ui::ET_GESTURE_SCROLL_UPDATE, type_);
+ data.scroll_update.velocity_x = velocity_x;
+ data.scroll_update.velocity_y = velocity_y;
+ data.scroll_update.velocity_x_ordinal = velocity_x_ordinal;
+ data.scroll_update.velocity_y_ordinal = velocity_y_ordinal;
+}
+
+GestureEventDetails::Details::Details() {
+ memset(this, 0, sizeof(Details));
+}
+
+} // namespace ui
diff --git a/ui/events/gesture_event_details.h b/ui/events/gesture_event_details.h
new file mode 100644
index 0000000000..f1c592f5f2
--- /dev/null
+++ b/ui/events/gesture_event_details.h
@@ -0,0 +1,212 @@
+// Copyright 2014 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 UI_EVENTS_GESTURE_DETECTION_GESTURE_EVENT_DETAILS_H_
+#define UI_EVENTS_GESTURE_DETECTION_GESTURE_EVENT_DETAILS_H_
+
+#include "base/logging.h"
+#include "ui/events/event_constants.h"
+#include "ui/events/events_base_export.h"
+#include "ui/gfx/rect.h"
+#include "ui/gfx/rect_conversions.h"
+
+namespace ui {
+
+struct EVENTS_BASE_EXPORT GestureEventDetails {
+ public:
+ GestureEventDetails();
+ GestureEventDetails(EventType type, float delta_x, float delta_y);
+ GestureEventDetails(EventType type,
+ float delta_x, float delta_y,
+ float delta_x_ordinal, float delta_y_ordinal);
+
+ EventType type() const { return type_; }
+
+ int touch_points() const { return touch_points_; }
+ void set_touch_points(int touch_points) { touch_points_ = touch_points; }
+
+ // TODO(tdresser): Return RectF. See crbug.com/337824.
+ const gfx::Rect bounding_box() const {
+ return ToEnclosingRect(bounding_box_);
+ }
+
+ const gfx::RectF& bounding_box_f() const {
+ return bounding_box_;
+ }
+
+ void set_bounding_box(const gfx::RectF& box) { bounding_box_ = box; }
+
+ void SetScrollVelocity(float velocity_x, float velocity_y,
+ float velocity_x_ordinal, float velocity_y_ordinal);
+
+ float scroll_x_hint() const {
+ DCHECK_EQ(ui::ET_GESTURE_SCROLL_BEGIN, type_);
+ return data.scroll_begin.x_hint;
+ }
+
+ float scroll_y_hint() const {
+ DCHECK_EQ(ui::ET_GESTURE_SCROLL_BEGIN, type_);
+ return data.scroll_begin.y_hint;
+ }
+
+ float scroll_x() const {
+ DCHECK_EQ(ui::ET_GESTURE_SCROLL_UPDATE, type_);
+ return data.scroll_update.x;
+ }
+
+ float scroll_y() const {
+ DCHECK_EQ(ui::ET_GESTURE_SCROLL_UPDATE, type_);
+ return data.scroll_update.y;
+ }
+
+ float velocity_x() const {
+ DCHECK(type_ == ui::ET_GESTURE_SCROLL_UPDATE ||
+ type_ == ui::ET_SCROLL_FLING_START);
+ return type_ == ui::ET_SCROLL_FLING_START ? data.fling_velocity.x :
+ data.scroll_update.velocity_x;
+ }
+
+ float velocity_y() const {
+ DCHECK(type_ == ui::ET_GESTURE_SCROLL_UPDATE ||
+ type_ == ui::ET_SCROLL_FLING_START);
+ return type_ == ui::ET_SCROLL_FLING_START ? data.fling_velocity.y :
+ data.scroll_update.velocity_y;
+ }
+
+ // *_ordinal values are unmodified by rail based clamping.
+ float scroll_x_ordinal() const {
+ DCHECK_EQ(ui::ET_GESTURE_SCROLL_UPDATE, type_);
+ return data.scroll_update.x_ordinal;
+ }
+
+ float scroll_y_ordinal() const {
+ DCHECK_EQ(ui::ET_GESTURE_SCROLL_UPDATE, type_);
+ return data.scroll_update.y_ordinal;
+ }
+
+ float velocity_x_ordinal() const {
+ DCHECK(type_ == ui::ET_GESTURE_SCROLL_UPDATE ||
+ type_ == ui::ET_SCROLL_FLING_START);
+ return type_ == ui::ET_SCROLL_FLING_START ?
+ data.fling_velocity.x_ordinal :
+ data.scroll_update.velocity_x_ordinal;
+ }
+
+ float velocity_y_ordinal() const {
+ DCHECK(type_ == ui::ET_GESTURE_SCROLL_UPDATE ||
+ type_ == ui::ET_SCROLL_FLING_START);
+ return type_ == ui::ET_SCROLL_FLING_START ?
+ data.fling_velocity.y_ordinal :
+ data.scroll_update.velocity_y_ordinal;
+ }
+
+ int touch_id() const {
+ DCHECK_EQ(ui::ET_GESTURE_LONG_PRESS, type_);
+ return data.touch_id;
+ }
+
+ float first_finger_width() const {
+ DCHECK_EQ(ui::ET_GESTURE_TWO_FINGER_TAP, type_);
+ return data.first_finger_enclosing_rectangle.width;
+ }
+
+ float first_finger_height() const {
+ DCHECK_EQ(ui::ET_GESTURE_TWO_FINGER_TAP, type_);
+ return data.first_finger_enclosing_rectangle.height;
+ }
+
+ float scale() const {
+ DCHECK_EQ(ui::ET_GESTURE_PINCH_UPDATE, type_);
+ return data.scale;
+ }
+
+ bool swipe_left() const {
+ DCHECK_EQ(ui::ET_GESTURE_MULTIFINGER_SWIPE, type_);
+ return data.swipe.left;
+ }
+
+ bool swipe_right() const {
+ DCHECK_EQ(ui::ET_GESTURE_MULTIFINGER_SWIPE, type_);
+ return data.swipe.right;
+ }
+
+ bool swipe_up() const {
+ DCHECK_EQ(ui::ET_GESTURE_MULTIFINGER_SWIPE, type_);
+ return data.swipe.up;
+ }
+
+ bool swipe_down() const {
+ DCHECK_EQ(ui::ET_GESTURE_MULTIFINGER_SWIPE, type_);
+ return data.swipe.down;
+ }
+
+ int tap_count() const {
+ DCHECK(type_ == ui::ET_GESTURE_TAP ||
+ type_ == ui::ET_GESTURE_TAP_UNCONFIRMED ||
+ type_ == ET_GESTURE_DOUBLE_TAP);
+ return data.tap_count;
+ }
+
+ private:
+ ui::EventType type_;
+ union Details {
+ Details();
+ struct { // SCROLL start details.
+ // Distance that caused the scroll to start. Generally redundant with
+ // the x/y values from the first scroll_update.
+ float x_hint;
+ float y_hint;
+ } scroll_begin;
+
+ struct { // SCROLL delta.
+ float x;
+ float y;
+ float velocity_x;
+ float velocity_y;
+ float x_ordinal;
+ float y_ordinal;
+ float velocity_x_ordinal;
+ float velocity_y_ordinal;
+ } scroll_update;
+
+ float scale; // PINCH scale.
+
+ struct { // FLING velocity.
+ float x;
+ float y;
+ float x_ordinal;
+ float y_ordinal;
+ } fling_velocity;
+
+ int touch_id; // LONG_PRESS touch-id.
+
+ // Dimensions of the first finger's enclosing rectangle for
+ // TWO_FINGER_TAP.
+ struct {
+ float width;
+ float height;
+ } first_finger_enclosing_rectangle;
+
+ struct { // SWIPE direction.
+ bool left;
+ bool right;
+ bool up;
+ bool down;
+ } swipe;
+
+ // Tap information must be set for ET_GESTURE_TAP,
+ // ET_GESTURE_TAP_UNCONFIRMED, and ET_GESTURE_DOUBLE_TAP events.
+ int tap_count; // TAP repeat count.
+ } data;
+
+ int touch_points_; // Number of active touch points in the gesture.
+
+ // Bounding box is an axis-aligned rectangle that contains all the
+ // enclosing rectangles of the touch-points in the gesture.
+ gfx::RectF bounding_box_;
+};
+
+} // namespace ui
+
+#endif // UI_EVENTS_GESTURE_DETECTION_GESTURE_EVENT_DETAILS_H_
diff --git a/ui/events/gestures/gesture_recognizer.h b/ui/events/gestures/gesture_recognizer.h
index 8363199ef1..f33a7a77d7 100644
--- a/ui/events/gestures/gesture_recognizer.h
+++ b/ui/events/gestures/gesture_recognizer.h
@@ -11,6 +11,7 @@
#include "ui/events/event_constants.h"
#include "ui/events/events_export.h"
#include "ui/events/gestures/gesture_types.h"
+#include "ui/gfx/geometry/point_f.h"
namespace ui {
// A GestureRecognizer is an abstract base class for conversion of touch events
diff --git a/ui/events/gestures/gesture_sequence.h b/ui/events/gestures/gesture_sequence.h
index 986be0ba3d..62676e940a 100644
--- a/ui/events/gestures/gesture_sequence.h
+++ b/ui/events/gestures/gesture_sequence.h
@@ -7,6 +7,7 @@
#include "base/timer/timer.h"
#include "ui/events/event_constants.h"
+#include "ui/events/gesture_event_details.h"
#include "ui/events/gestures/gesture_point.h"
#include "ui/events/gestures/gesture_recognizer.h"
#include "ui/gfx/rect.h"
diff --git a/ui/events/gestures/gesture_types.h b/ui/events/gestures/gesture_types.h
index 5887b75e04..851450880b 100644
--- a/ui/events/gestures/gesture_types.h
+++ b/ui/events/gestures/gesture_types.h
@@ -5,199 +5,13 @@
#ifndef UI_EVENTS_GESTURES_GESTURE_TYPES_H_
#define UI_EVENTS_GESTURES_GESTURE_TYPES_H_
-#include "base/logging.h"
-#include "ui/events/event_constants.h"
#include "ui/events/events_export.h"
-#include "ui/gfx/rect.h"
-#include "ui/gfx/rect_conversions.h"
namespace ui {
class GestureEvent;
class TouchEvent;
-struct EVENTS_EXPORT GestureEventDetails {
- public:
- GestureEventDetails(EventType type, float delta_x, float delta_y);
- GestureEventDetails(EventType type,
- float delta_x, float delta_y,
- float delta_x_ordinal, float delta_y_ordinal);
-
- EventType type() const { return type_; }
-
- int touch_points() const { return touch_points_; }
- void set_touch_points(int touch_points) { touch_points_ = touch_points; }
-
- // TODO(tdresser): Return RectF. See crbug.com/337824.
- const gfx::Rect bounding_box() const {
- return ToEnclosingRect(bounding_box_);
- }
- void set_bounding_box(const gfx::RectF& box) { bounding_box_ = box; }
-
- void SetScrollVelocity(float velocity_x, float velocity_y,
- float velocity_x_ordinal, float velocity_y_ordinal);
-
- float scroll_x_hint() const {
- CHECK_EQ(ui::ET_GESTURE_SCROLL_BEGIN, type_);
- return data.scroll_begin.x_hint;
- }
-
- float scroll_y_hint() const {
- CHECK_EQ(ui::ET_GESTURE_SCROLL_BEGIN, type_);
- return data.scroll_begin.y_hint;
- }
-
- float scroll_x() const {
- CHECK_EQ(ui::ET_GESTURE_SCROLL_UPDATE, type_);
- return data.scroll_update.x;
- }
-
- float scroll_y() const {
- CHECK_EQ(ui::ET_GESTURE_SCROLL_UPDATE, type_);
- return data.scroll_update.y;
- }
-
- float velocity_x() const {
- CHECK(type_ == ui::ET_GESTURE_SCROLL_UPDATE ||
- type_ == ui::ET_SCROLL_FLING_START);
- return type_ == ui::ET_SCROLL_FLING_START ? data.fling_velocity.x :
- data.scroll_update.velocity_x;
- }
-
- float velocity_y() const {
- CHECK(type_ == ui::ET_GESTURE_SCROLL_UPDATE ||
- type_ == ui::ET_SCROLL_FLING_START);
- return type_ == ui::ET_SCROLL_FLING_START ? data.fling_velocity.y :
- data.scroll_update.velocity_y;
- }
-
- // *_ordinal values are unmodified by rail based clamping.
- float scroll_x_ordinal() const {
- CHECK_EQ(ui::ET_GESTURE_SCROLL_UPDATE, type_);
- return data.scroll_update.x_ordinal;
- }
-
- float scroll_y_ordinal() const {
- CHECK_EQ(ui::ET_GESTURE_SCROLL_UPDATE, type_);
- return data.scroll_update.y_ordinal;
- }
-
- float velocity_x_ordinal() const {
- CHECK(type_ == ui::ET_GESTURE_SCROLL_UPDATE ||
- type_ == ui::ET_SCROLL_FLING_START);
- return type_ == ui::ET_SCROLL_FLING_START ?
- data.fling_velocity.x_ordinal :
- data.scroll_update.velocity_x_ordinal;
- }
-
- float velocity_y_ordinal() const {
- CHECK(type_ == ui::ET_GESTURE_SCROLL_UPDATE ||
- type_ == ui::ET_SCROLL_FLING_START);
- return type_ == ui::ET_SCROLL_FLING_START ?
- data.fling_velocity.y_ordinal :
- data.scroll_update.velocity_y_ordinal;
- }
-
- int touch_id() const {
- CHECK_EQ(ui::ET_GESTURE_LONG_PRESS, type_);
- return data.touch_id;
- }
-
- float first_finger_width() const {
- CHECK_EQ(ui::ET_GESTURE_TWO_FINGER_TAP, type_);
- return data.first_finger_enclosing_rectangle.width;
- }
-
- float first_finger_height() const {
- CHECK_EQ(ui::ET_GESTURE_TWO_FINGER_TAP, type_);
- return data.first_finger_enclosing_rectangle.height;
- }
-
- float scale() const {
- CHECK_EQ(ui::ET_GESTURE_PINCH_UPDATE, type_);
- return data.scale;
- }
-
- bool swipe_left() const {
- CHECK_EQ(ui::ET_GESTURE_MULTIFINGER_SWIPE, type_);
- return data.swipe.left;
- }
-
- bool swipe_right() const {
- CHECK_EQ(ui::ET_GESTURE_MULTIFINGER_SWIPE, type_);
- return data.swipe.right;
- }
-
- bool swipe_up() const {
- CHECK_EQ(ui::ET_GESTURE_MULTIFINGER_SWIPE, type_);
- return data.swipe.up;
- }
-
- bool swipe_down() const {
- CHECK_EQ(ui::ET_GESTURE_MULTIFINGER_SWIPE, type_);
- return data.swipe.down;
- }
-
- int tap_count() const {
- CHECK_EQ(ui::ET_GESTURE_TAP, type_);
- return data.tap_count;
- }
-
- private:
- ui::EventType type_;
- union {
- struct { // SCROLL start details.
- // Distance that caused the scroll to start. Generally redundant with
- // the x/y values from the first scroll_update.
- float x_hint;
- float y_hint;
- } scroll_begin;
-
- struct { // SCROLL delta.
- float x;
- float y;
- float velocity_x;
- float velocity_y;
- float x_ordinal;
- float y_ordinal;
- float velocity_x_ordinal;
- float velocity_y_ordinal;
- } scroll_update;
-
- float scale; // PINCH scale.
-
- struct { // FLING velocity.
- float x;
- float y;
- float x_ordinal;
- float y_ordinal;
- } fling_velocity;
-
- int touch_id; // LONG_PRESS touch-id.
-
- // Dimensions of the first finger's enclosing rectangle for TWO_FINGER_TAP.
- struct {
- float width;
- float height;
- } first_finger_enclosing_rectangle;
-
- struct { // SWIPE direction.
- bool left;
- bool right;
- bool up;
- bool down;
- } swipe;
-
- int tap_count; // TAP repeat count.
- } data;
-
- int touch_points_; // Number of active touch points in the gesture.
-
- // Bounding box is an axis-aligned rectangle that contains all the
- // enclosing rectangles of the touch-points in the gesture.
- gfx::RectF bounding_box_;
-};
-
// An abstract type for consumers of gesture-events created by the
// gesture-recognizer.
class EVENTS_EXPORT GestureConsumer {
diff --git a/ui/events/ozone/evdev/event_factory_evdev.cc b/ui/events/ozone/evdev/event_factory_evdev.cc
index e36d8d029d..cf9a607267 100644
--- a/ui/events/ozone/evdev/event_factory_evdev.cc
+++ b/ui/events/ozone/evdev/event_factory_evdev.cc
@@ -20,6 +20,10 @@
#include "ui/events/ozone/evdev/device_manager_udev.h"
#endif
+#ifndef EVIOCSCLOCKID
+#define EVIOCSCLOCKID _IOW('E', 0xa0, int)
+#endif
+
namespace ui {
namespace {
@@ -56,6 +60,13 @@ void OpenInputDevice(
return;
}
+ // Use monotonic timestamps for events. The touch code in particular
+ // expects event timestamps to correlate to the monotonic clock
+ // (base::TimeTicks).
+ unsigned int clk = CLOCK_MONOTONIC;
+ if (ioctl(fd, EVIOCSCLOCKID, &clk))
+ PLOG(ERROR) << "failed to set CLOCK_MONOTONIC";
+
EventDeviceInfo devinfo;
if (!devinfo.Initialize(fd)) {
LOG(ERROR) << "failed to get device information for " << path.value();
diff --git a/ui/events/ozone/evdev/touch_event_converter_evdev.cc b/ui/events/ozone/evdev/touch_event_converter_evdev.cc
index 46eda1bf6e..cb78cbec3d 100644
--- a/ui/events/ozone/evdev/touch_event_converter_evdev.cc
+++ b/ui/events/ozone/evdev/touch_event_converter_evdev.cc
@@ -131,7 +131,7 @@ void TouchEventConverterEvdev::OnFileCanReadWithoutBlocking(int fd) {
altered_slots_.set(current_slot_);
break;
default:
- NOTREACHED() << "invalid code for EV_ABS: " << input.code;
+ NOTIMPLEMENTED() << "invalid code for EV_ABS: " << input.code;
}
} else if (input.type == EV_SYN) {
switch (input.code) {
@@ -163,7 +163,7 @@ void TouchEventConverterEvdev::OnFileCanReadWithoutBlocking(int fd) {
case SYN_MT_REPORT:
case SYN_CONFIG:
case SYN_DROPPED:
- NOTREACHED() << "invalid code for EV_SYN: " << input.code;
+ NOTIMPLEMENTED() << "invalid code for EV_SYN: " << input.code;
break;
}
} else if (input.type == EV_KEY) {
@@ -171,10 +171,10 @@ void TouchEventConverterEvdev::OnFileCanReadWithoutBlocking(int fd) {
case BTN_TOUCH:
break;
default:
- NOTREACHED() << "invalid code for EV_KEY: " << input.code;
+ NOTIMPLEMENTED() << "invalid code for EV_KEY: " << input.code;
}
} else {
- NOTREACHED() << "invalid type: " << input.type;
+ NOTIMPLEMENTED() << "invalid type: " << input.type;
}
}
}
diff --git a/ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc b/ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc
index 5dbe82cf46..5fb8886fe6 100644
--- a/ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc
+++ b/ui/events/ozone/evdev/touch_event_converter_evdev_unittest.cc
@@ -79,7 +79,7 @@ MockTouchEventConverterEvdev::MockTouchEventConverterEvdev(int fd,
int fds[2];
if (pipe(fds))
- NOTREACHED() << "failed pipe(): " << strerror(errno);
+ PLOG(FATAL) << "failed pipe";
DCHECK(SetNonBlocking(fds[0]) == 0)
<< "SetNonBlocking for pipe fd[0] failed, errno: " << errno;
diff --git a/ui/events/platform/platform_event_dispatcher.h b/ui/events/platform/platform_event_dispatcher.h
new file mode 100644
index 0000000000..5cc91db7be
--- /dev/null
+++ b/ui/events/platform/platform_event_dispatcher.h
@@ -0,0 +1,47 @@
+// Copyright 2014 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 UI_EVENTS_PLATFORM_PLATFORM_EVENT_DISPATCHER_H_
+#define UI_EVENTS_PLATFORM_PLATFORM_EVENT_DISPATCHER_H_
+
+#include "base/basictypes.h"
+#include "ui/events/events_export.h"
+#include "ui/events/platform/platform_event_types.h"
+
+namespace ui {
+
+// See documentation for |PlatformEventDispatcher::DispatchEvent()| for
+// explanation of the meaning of the flags.
+enum PostDispatchAction {
+ POST_DISPATCH_NONE = 0x0,
+ POST_DISPATCH_QUIT_LOOP = 0x1,
+ POST_DISPATCH_PERFORM_DEFAULT = 0x2,
+ POST_DISPATCH_STOP_PROPAGATION = 0x4,
+};
+
+// PlatformEventDispatcher receives events from a PlatformEventSource and
+// dispatches them.
+class EVENTS_EXPORT PlatformEventDispatcher {
+ public:
+ // Returns whether this dispatcher wants to dispatch |event|.
+ virtual bool CanDispatchEvent(const PlatformEvent& event) = 0;
+
+ // Dispatches |event|. If this is not the default dispatcher, then the
+ // dispatcher can request that the default dispatcher gets a chance to
+ // dispatch the event by setting POST_DISPATCH_PERFORM_DEFAULT to the return
+ // value. If a nested message-loop is active, then the dispatcher can signal
+ // that the nested message-loop should be terminated by setting
+ // POST_DISPATCH_QUIT_LOOP flag on the return value. If the dispatcher has
+ // processed the event, and no other dispatcher should be allowed to dispatch
+ // the event, then the dispatcher should set POST_DISPATCH_STOP_PROPAGATION
+ // flag on the return value.
+ virtual uint32_t DispatchEvent(const PlatformEvent& event) = 0;
+
+ protected:
+ virtual ~PlatformEventDispatcher() {}
+};
+
+} // namespace ui
+
+#endif // UI_EVENTS_PLATFORM_PLATFORM_EVENT_DISPATCHER_H_
diff --git a/ui/events/platform/platform_event_observer.h b/ui/events/platform/platform_event_observer.h
new file mode 100644
index 0000000000..bde2733552
--- /dev/null
+++ b/ui/events/platform/platform_event_observer.h
@@ -0,0 +1,37 @@
+// Copyright 2014 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 UI_EVENTS_PLATFORM_PLATFORM_EVENT_OBSERVER_H_
+#define UI_EVENTS_PLATFORM_PLATFORM_EVENT_OBSERVER_H_
+
+#include "ui/events/events_export.h"
+#include "ui/events/platform/platform_event_types.h"
+
+namespace ui {
+
+// PlatformEventObserver can be installed on a PlatformEventSource, and it
+// receives all events that are dispatched to the dispatchers.
+class EVENTS_EXPORT PlatformEventObserver {
+ public:
+ enum EventStatus {
+ EVENT_STATUS_CONTINUE,
+ EVENT_STATUS_HANDLED
+ };
+
+ // This is called before the dispatcher receives the event. The observer can
+ // consume the event and stop the event from reaching the dispatcher or other
+ // observers by returning EVENT_STATUS_HANDLED from this function. The event
+ // dispatch continues as usual if this returns EVENT_STATUS_CONTINUE.
+ virtual EventStatus WillProcessEvent(const PlatformEvent& event) = 0;
+
+ // This is called after the event has been dispatched to the dispatcher(s).
+ virtual void DidProcessEvent(const PlatformEvent& event) = 0;
+
+ protected:
+ virtual ~PlatformEventObserver() {}
+};
+
+} // namespace ui
+
+#endif // UI_EVENTS_PLATFORM_PLATFORM_EVENT_OBSERVER_H_
diff --git a/ui/events/platform/platform_event_source.cc b/ui/events/platform/platform_event_source.cc
new file mode 100644
index 0000000000..ac3d2752eb
--- /dev/null
+++ b/ui/events/platform/platform_event_source.cc
@@ -0,0 +1,135 @@
+// Copyright 2014 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 "ui/events/platform/platform_event_source.h"
+
+#include <algorithm>
+
+#include "base/message_loop/message_loop.h"
+#include "ui/events/event.h"
+#include "ui/events/platform/platform_event_dispatcher.h"
+#include "ui/events/platform/platform_event_observer.h"
+#include "ui/events/platform/scoped_event_dispatcher.h"
+
+namespace ui {
+
+// static
+PlatformEventSource* PlatformEventSource::instance_ = NULL;
+
+PlatformEventSource::PlatformEventSource()
+ : overridden_dispatcher_(NULL),
+ overridden_dispatcher_restored_(false) {
+ CHECK(!instance_) << "Only one platform event source can be created.";
+ instance_ = this;
+}
+
+PlatformEventSource::~PlatformEventSource() {
+ CHECK_EQ(this, instance_);
+ instance_ = NULL;
+}
+
+PlatformEventSource* PlatformEventSource::GetInstance() { return instance_; }
+
+void PlatformEventSource::AddPlatformEventDispatcher(
+ PlatformEventDispatcher* dispatcher) {
+ CHECK(dispatcher);
+ DCHECK(std::find(dispatchers_.begin(), dispatchers_.end(), dispatcher) ==
+ dispatchers_.end());
+ dispatchers_.push_back(dispatcher);
+}
+
+void PlatformEventSource::RemovePlatformEventDispatcher(
+ PlatformEventDispatcher* dispatcher) {
+ PlatformEventDispatcherList::iterator remove =
+ std::remove(dispatchers_.begin(), dispatchers_.end(), dispatcher);
+ if (remove != dispatchers_.end())
+ dispatchers_.erase(remove);
+}
+
+scoped_ptr<ScopedEventDispatcher> PlatformEventSource::OverrideDispatcher(
+ PlatformEventDispatcher* dispatcher) {
+ CHECK(dispatcher);
+ overridden_dispatcher_restored_ = false;
+ return make_scoped_ptr(
+ new ScopedEventDispatcher(&overridden_dispatcher_, dispatcher));
+}
+
+void PlatformEventSource::AddPlatformEventObserver(
+ PlatformEventObserver* observer) {
+ CHECK(observer);
+ observers_.AddObserver(observer);
+}
+
+void PlatformEventSource::RemovePlatformEventObserver(
+ PlatformEventObserver* observer) {
+ observers_.RemoveObserver(observer);
+}
+
+uint32_t PlatformEventSource::DispatchEvent(PlatformEvent platform_event) {
+ uint32_t action = POST_DISPATCH_PERFORM_DEFAULT;
+ bool should_quit = false;
+
+ if (!WillProcessEvent(platform_event)) {
+ // Give the overridden dispatcher a chance to dispatch the event first.
+ if (overridden_dispatcher_)
+ action = overridden_dispatcher_->DispatchEvent(platform_event);
+ should_quit = !!(action & POST_DISPATCH_QUIT_LOOP);
+
+ if (action & POST_DISPATCH_PERFORM_DEFAULT) {
+ for (PlatformEventDispatcherList::iterator i = dispatchers_.begin();
+ i != dispatchers_.end();
+ ++i) {
+ PlatformEventDispatcher* dispatcher = *(i);
+ if (dispatcher->CanDispatchEvent(platform_event))
+ action = dispatcher->DispatchEvent(platform_event);
+ if (action & POST_DISPATCH_QUIT_LOOP)
+ should_quit = true;
+ if (action & POST_DISPATCH_STOP_PROPAGATION)
+ break;
+ }
+ }
+ }
+ DidProcessEvent(platform_event);
+
+ // Terminate the message-loop if the dispatcher requested for it.
+ if (should_quit) {
+ base::MessageLoop::current()->QuitNow();
+ action |= POST_DISPATCH_QUIT_LOOP;
+ }
+
+ // If an overridden dispatcher has been destroyed, then the platform
+ // event-source should halt dispatching the current stream of events, and wait
+ // until the next message-loop iteration for dispatching events. This lets any
+ // nested message-loop to unwind correctly and any new dispatchers to receive
+ // the correct sequence of events.
+ if (overridden_dispatcher_restored_)
+ action |= POST_DISPATCH_QUIT_LOOP;
+
+ overridden_dispatcher_restored_ = false;
+
+ return action;
+}
+
+bool PlatformEventSource::WillProcessEvent(PlatformEvent event) {
+ if (observers_.might_have_observers()) {
+ ObserverListBase<PlatformEventObserver>::Iterator it(observers_);
+ PlatformEventObserver* obs;
+ while ((obs = it.GetNext()) != NULL) {
+ if (obs->WillProcessEvent(event))
+ return true;
+ }
+ }
+ return false;
+}
+
+void PlatformEventSource::DidProcessEvent(PlatformEvent event) {
+ FOR_EACH_OBSERVER(PlatformEventObserver, observers_, DidProcessEvent(event));
+}
+
+void PlatformEventSource::OnOverriddenDispatcherRestored() {
+ CHECK(overridden_dispatcher_);
+ overridden_dispatcher_restored_ = true;
+}
+
+} // namespace ui
diff --git a/ui/events/platform/platform_event_source.h b/ui/events/platform/platform_event_source.h
new file mode 100644
index 0000000000..ce2cda9d37
--- /dev/null
+++ b/ui/events/platform/platform_event_source.h
@@ -0,0 +1,88 @@
+// Copyright 2014 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 UI_EVENTS_PLATFORM_PLATFORM_EVENT_SOURCE_H_
+#define UI_EVENTS_PLATFORM_PLATFORM_EVENT_SOURCE_H_
+
+#include <map>
+#include <vector>
+
+#include "base/auto_reset.h"
+#include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/observer_list.h"
+#include "ui/events/events_export.h"
+#include "ui/events/platform/platform_event_types.h"
+
+namespace ui {
+
+class Event;
+class PlatformEventDispatcher;
+class PlatformEventObserver;
+class ScopedEventDispatcher;
+
+// PlatformEventSource receives events from a source and dispatches the events
+// to the appropriate dispatchers.
+class EVENTS_EXPORT PlatformEventSource {
+ public:
+ virtual ~PlatformEventSource();
+
+ static PlatformEventSource* GetInstance();
+
+ void AddPlatformEventDispatcher(PlatformEventDispatcher* dispatcher);
+ void RemovePlatformEventDispatcher(PlatformEventDispatcher* dispatcher);
+
+ // Installs a PlatformEventDispatcher that receives all the events. The
+ // dispatcher can process the event, or request that the default dispatchers
+ // be invoked by setting |POST_DISPATCH_PERFORM_DEFAULT| flag from the
+ // |DispatchEvent()| override.
+ // The returned |ScopedEventDispatcher| object is a handler for the overridden
+ // dispatcher. When this handler is destroyed, it removes the overridden
+ // dispatcher, and restores the previous override-dispatcher (or NULL if there
+ // wasn't any).
+ scoped_ptr<ScopedEventDispatcher> OverrideDispatcher(
+ PlatformEventDispatcher* dispatcher);
+
+ void AddPlatformEventObserver(PlatformEventObserver* observer);
+ void RemovePlatformEventObserver(PlatformEventObserver* observer);
+
+ protected:
+ PlatformEventSource();
+
+ // Dispatches |platform_event| to the dispatchers. If there is an override
+ // dispatcher installed using |OverrideDispatcher()|, then that dispatcher
+ // receives the event first. |POST_DISPATCH_QUIT_LOOP| flag is set in the
+ // returned value if the event-source should stop dispatching events at the
+ // current message-loop iteration.
+ virtual uint32_t DispatchEvent(PlatformEvent platform_event);
+
+ private:
+ friend class ScopedEventDispatcher;
+ static PlatformEventSource* instance_;
+
+ void OnOverriddenDispatcherRestored();
+
+ // Invokes the corresponding methods on the PlatformEventObservers added to
+ // the event-source.
+ // Returns true from |WillProcessEvent()| if any of the observers in the list
+ // consumes the event and returns true from |WillProcessEvent()|.
+ bool WillProcessEvent(PlatformEvent platform_event);
+ void DidProcessEvent(PlatformEvent platform_event);
+
+ typedef std::vector<PlatformEventDispatcher*> PlatformEventDispatcherList;
+ PlatformEventDispatcherList dispatchers_;
+ PlatformEventDispatcher* overridden_dispatcher_;
+
+ // Used to keep track of whether the current override-dispatcher has been
+ // reset and a previous override-dispatcher has been restored.
+ bool overridden_dispatcher_restored_;
+
+ ObserverList<PlatformEventObserver> observers_;
+
+ DISALLOW_COPY_AND_ASSIGN(PlatformEventSource);
+};
+
+} // namespace ui
+
+#endif // UI_EVENTS_PLATFORM_PLATFORM_EVENT_SOURCE_H_
diff --git a/ui/events/platform/platform_event_source_unittest.cc b/ui/events/platform/platform_event_source_unittest.cc
new file mode 100644
index 0000000000..56aef352af
--- /dev/null
+++ b/ui/events/platform/platform_event_source_unittest.cc
@@ -0,0 +1,609 @@
+// Copyright 2014 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 "ui/events/platform/platform_event_source.h"
+
+#include "base/bind.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/memory/scoped_vector.h"
+#include "base/message_loop/message_loop.h"
+#include "base/run_loop.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/events/platform/platform_event_dispatcher.h"
+#include "ui/events/platform/platform_event_observer.h"
+#include "ui/events/platform/scoped_event_dispatcher.h"
+
+namespace ui {
+
+namespace {
+
+scoped_ptr<PlatformEvent> CreatePlatformEvent() {
+ scoped_ptr<PlatformEvent> event(new PlatformEvent());
+ memset(event.get(), 0, sizeof(PlatformEvent));
+ return event.Pass();
+}
+
+template <typename T>
+void DestroyScopedPtr(scoped_ptr<T> object) {}
+
+} // namespace
+
+class TestPlatformEventSource : public PlatformEventSource {
+ public:
+ TestPlatformEventSource() {}
+ virtual ~TestPlatformEventSource() {}
+
+ uint32_t Dispatch(const PlatformEvent& event) { return DispatchEvent(event); }
+
+ // Dispatches the stream of events, and returns the number of events that are
+ // dispatched before it is requested to stop.
+ size_t DispatchEventStream(const ScopedVector<PlatformEvent>& events) {
+ for (size_t count = 0; count < events.size(); ++count) {
+ uint32_t action = DispatchEvent(*events[count]);
+ if (action & POST_DISPATCH_QUIT_LOOP)
+ return count + 1;
+ }
+ return events.size();
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(TestPlatformEventSource);
+};
+
+class TestPlatformEventDispatcher : public PlatformEventDispatcher {
+ public:
+ TestPlatformEventDispatcher(int id, std::vector<int>* list)
+ : id_(id), list_(list), post_dispatch_action_(POST_DISPATCH_NONE) {
+ PlatformEventSource::GetInstance()->AddPlatformEventDispatcher(this);
+ }
+ virtual ~TestPlatformEventDispatcher() {
+ PlatformEventSource::GetInstance()->RemovePlatformEventDispatcher(this);
+ }
+
+ void set_post_dispatch_action(uint32_t action) {
+ post_dispatch_action_ = action;
+ }
+
+ protected:
+ // PlatformEventDispatcher:
+ virtual bool CanDispatchEvent(const PlatformEvent& event) OVERRIDE {
+ return true;
+ }
+
+ virtual uint32_t DispatchEvent(const PlatformEvent& event) OVERRIDE {
+ list_->push_back(id_);
+ return post_dispatch_action_;
+ }
+
+ private:
+ int id_;
+ std::vector<int>* list_;
+ uint32_t post_dispatch_action_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestPlatformEventDispatcher);
+};
+
+class TestPlatformEventObserver : public PlatformEventObserver {
+ public:
+ TestPlatformEventObserver(int id, std::vector<int>* list)
+ : id_(id), list_(list), consume_event_(false) {
+ PlatformEventSource::GetInstance()->AddPlatformEventObserver(this);
+ }
+ virtual ~TestPlatformEventObserver() {
+ PlatformEventSource::GetInstance()->RemovePlatformEventObserver(this);
+ }
+
+ void set_consume_event(bool consume) { consume_event_ = consume; }
+
+ protected:
+ // PlatformEventObserver:
+ virtual EventStatus WillProcessEvent(const PlatformEvent& event) OVERRIDE {
+ list_->push_back(id_);
+ return consume_event_ ? EVENT_STATUS_HANDLED : EVENT_STATUS_CONTINUE;
+ }
+
+ virtual void DidProcessEvent(const PlatformEvent& event) OVERRIDE {}
+
+ private:
+ int id_;
+ std::vector<int>* list_;
+ bool consume_event_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestPlatformEventObserver);
+};
+
+class PlatformEventTest : public testing::Test {
+ public:
+ PlatformEventTest() {}
+ virtual ~PlatformEventTest() {}
+
+ TestPlatformEventSource* source() { return source_.get(); }
+
+ protected:
+ // testing::Test:
+ virtual void SetUp() OVERRIDE {
+ source_.reset(new TestPlatformEventSource());
+ }
+
+ private:
+ scoped_ptr<TestPlatformEventSource> source_;
+
+ DISALLOW_COPY_AND_ASSIGN(PlatformEventTest);
+};
+
+// Tests that a dispatcher receives an event.
+TEST_F(PlatformEventTest, DispatcherBasic) {
+ std::vector<int> list_dispatcher;
+ scoped_ptr<PlatformEvent> event(CreatePlatformEvent());
+ source()->Dispatch(*event);
+ EXPECT_EQ(0u, list_dispatcher.size());
+ {
+ TestPlatformEventDispatcher dispatcher(1, &list_dispatcher);
+
+ scoped_ptr<PlatformEvent> event(CreatePlatformEvent());
+ source()->Dispatch(*event);
+ ASSERT_EQ(1u, list_dispatcher.size());
+ EXPECT_EQ(1, list_dispatcher[0]);
+ }
+
+ list_dispatcher.clear();
+ event = CreatePlatformEvent();
+ source()->Dispatch(*event);
+ EXPECT_EQ(0u, list_dispatcher.size());
+}
+
+// Tests that dispatchers receive events in the correct order.
+TEST_F(PlatformEventTest, DispatcherOrder) {
+ std::vector<int> list_dispatcher;
+ int sequence[] = {21, 3, 6, 45};
+ ScopedVector<TestPlatformEventDispatcher> dispatchers;
+ for (size_t i = 0; i < arraysize(sequence); ++i) {
+ dispatchers.push_back(
+ new TestPlatformEventDispatcher(sequence[i], &list_dispatcher));
+ }
+ scoped_ptr<PlatformEvent> event(CreatePlatformEvent());
+ source()->Dispatch(*event);
+ ASSERT_EQ(arraysize(sequence), list_dispatcher.size());
+ EXPECT_EQ(std::vector<int>(sequence, sequence + arraysize(sequence)),
+ list_dispatcher);
+}
+
+// Tests that if a dispatcher consumes the event, the subsequent dispatchers do
+// not receive the event.
+TEST_F(PlatformEventTest, DispatcherConsumesEventToStopDispatch) {
+ std::vector<int> list_dispatcher;
+ TestPlatformEventDispatcher first(12, &list_dispatcher);
+ TestPlatformEventDispatcher second(23, &list_dispatcher);
+
+ scoped_ptr<PlatformEvent> event(CreatePlatformEvent());
+ source()->Dispatch(*event);
+ ASSERT_EQ(2u, list_dispatcher.size());
+ EXPECT_EQ(12, list_dispatcher[0]);
+ EXPECT_EQ(23, list_dispatcher[1]);
+ list_dispatcher.clear();
+
+ first.set_post_dispatch_action(POST_DISPATCH_STOP_PROPAGATION);
+ event = CreatePlatformEvent();
+ source()->Dispatch(*event);
+ ASSERT_EQ(1u, list_dispatcher.size());
+ EXPECT_EQ(12, list_dispatcher[0]);
+}
+
+// Tests that observers receive events.
+TEST_F(PlatformEventTest, ObserverBasic) {
+ std::vector<int> list_observer;
+ scoped_ptr<PlatformEvent> event(CreatePlatformEvent());
+ source()->Dispatch(*event);
+ EXPECT_EQ(0u, list_observer.size());
+ {
+ TestPlatformEventObserver observer(31, &list_observer);
+
+ scoped_ptr<PlatformEvent> event(CreatePlatformEvent());
+ source()->Dispatch(*event);
+ ASSERT_EQ(1u, list_observer.size());
+ EXPECT_EQ(31, list_observer[0]);
+ }
+
+ list_observer.clear();
+ event = CreatePlatformEvent();
+ source()->Dispatch(*event);
+ EXPECT_EQ(0u, list_observer.size());
+}
+
+// Tests that observers receive events in the correct order.
+TEST_F(PlatformEventTest, ObserverOrder) {
+ std::vector<int> list_observer;
+ const int sequence[] = {21, 3, 6, 45};
+ ScopedVector<TestPlatformEventObserver> observers;
+ for (size_t i = 0; i < arraysize(sequence); ++i) {
+ observers.push_back(
+ new TestPlatformEventObserver(sequence[i], &list_observer));
+ }
+ scoped_ptr<PlatformEvent> event(CreatePlatformEvent());
+ source()->Dispatch(*event);
+ ASSERT_EQ(arraysize(sequence), list_observer.size());
+ EXPECT_EQ(std::vector<int>(sequence, sequence + arraysize(sequence)),
+ list_observer);
+}
+
+// Tests that observers and dispatchers receive events in the correct order.
+TEST_F(PlatformEventTest, DispatcherAndObserverOrder) {
+ std::vector<int> list;
+ TestPlatformEventDispatcher first_d(12, &list);
+ TestPlatformEventObserver first_o(10, &list);
+ TestPlatformEventDispatcher second_d(23, &list);
+ TestPlatformEventObserver second_o(20, &list);
+ scoped_ptr<PlatformEvent> event(CreatePlatformEvent());
+ source()->Dispatch(*event);
+ const int expected[] = {10, 20, 12, 23};
+ EXPECT_EQ(std::vector<int>(expected, expected + arraysize(expected)), list);
+}
+
+// Tests that an observer can consume an event and stop its dispatch.
+TEST_F(PlatformEventTest, ObserverConsumesEventToStopDispatch) {
+ std::vector<int> list;
+ TestPlatformEventDispatcher first_d(12, &list);
+ TestPlatformEventObserver first_o(10, &list);
+ TestPlatformEventDispatcher second_d(23, &list);
+ TestPlatformEventObserver second_o(20, &list);
+ scoped_ptr<PlatformEvent> event(CreatePlatformEvent());
+ source()->Dispatch(*event);
+ const int expected[] = {10, 20, 12, 23};
+ EXPECT_EQ(std::vector<int>(expected, expected + arraysize(expected)), list);
+
+ list.clear();
+ first_o.set_consume_event(true);
+ event = CreatePlatformEvent();
+ source()->Dispatch(*event);
+ ASSERT_EQ(1u, list.size());
+ EXPECT_EQ(10, list[0]);
+}
+
+// Tests that an overridden dispatcher receives events before the default
+// dispatchers.
+TEST_F(PlatformEventTest, OverriddenDispatcherBasic) {
+ std::vector<int> list;
+ TestPlatformEventDispatcher dispatcher(10, &list);
+ TestPlatformEventObserver observer(15, &list);
+ scoped_ptr<PlatformEvent> event(CreatePlatformEvent());
+ source()->Dispatch(*event);
+ ASSERT_EQ(2u, list.size());
+ EXPECT_EQ(15, list[0]);
+ EXPECT_EQ(10, list[1]);
+ list.clear();
+
+ TestPlatformEventDispatcher overriding_dispatcher(20, &list);
+ source()->RemovePlatformEventDispatcher(&overriding_dispatcher);
+ scoped_ptr<ScopedEventDispatcher> handle =
+ source()->OverrideDispatcher(&overriding_dispatcher);
+ source()->Dispatch(*event);
+ ASSERT_EQ(2u, list.size());
+ EXPECT_EQ(15, list[0]);
+ EXPECT_EQ(20, list[1]);
+}
+
+// Tests that an overridden dispatcher can request that the default dispatchers
+// can dispatch the events.
+TEST_F(PlatformEventTest, OverriddenDispatcherInvokeDefaultDispatcher) {
+ std::vector<int> list;
+ TestPlatformEventDispatcher dispatcher(10, &list);
+ TestPlatformEventObserver observer(15, &list);
+ TestPlatformEventDispatcher overriding_dispatcher(20, &list);
+ source()->RemovePlatformEventDispatcher(&overriding_dispatcher);
+ scoped_ptr<ScopedEventDispatcher> handle =
+ source()->OverrideDispatcher(&overriding_dispatcher);
+ overriding_dispatcher.set_post_dispatch_action(POST_DISPATCH_PERFORM_DEFAULT);
+
+ scoped_ptr<PlatformEvent> event(CreatePlatformEvent());
+ source()->Dispatch(*event);
+ // First the observer, then the overriding dispatcher, then the default
+ // dispatcher.
+ ASSERT_EQ(3u, list.size());
+ EXPECT_EQ(15, list[0]);
+ EXPECT_EQ(20, list[1]);
+ EXPECT_EQ(10, list[2]);
+ list.clear();
+
+ // Install a second overriding dispatcher.
+ TestPlatformEventDispatcher second_overriding(50, &list);
+ source()->RemovePlatformEventDispatcher(&second_overriding);
+ scoped_ptr<ScopedEventDispatcher> second_override_handle =
+ source()->OverrideDispatcher(&second_overriding);
+ source()->Dispatch(*event);
+ ASSERT_EQ(2u, list.size());
+ EXPECT_EQ(15, list[0]);
+ EXPECT_EQ(50, list[1]);
+ list.clear();
+
+ second_overriding.set_post_dispatch_action(POST_DISPATCH_PERFORM_DEFAULT);
+ source()->Dispatch(*event);
+ // First the observer, then the second overriding dispatcher, then the default
+ // dispatcher.
+ ASSERT_EQ(3u, list.size());
+ EXPECT_EQ(15, list[0]);
+ EXPECT_EQ(50, list[1]);
+ EXPECT_EQ(10, list[2]);
+}
+
+// Provides mechanism for running tests from inside an active message-loop.
+class PlatformEventTestWithMessageLoop : public PlatformEventTest {
+ public:
+ PlatformEventTestWithMessageLoop() {}
+ virtual ~PlatformEventTestWithMessageLoop() {}
+
+ void Run() {
+ message_loop_.PostTask(
+ FROM_HERE,
+ base::Bind(&PlatformEventTestWithMessageLoop::RunTest,
+ base::Unretained(this)));
+ message_loop_.Run();
+ }
+
+ protected:
+ void RunTest() {
+ RunTestImpl();
+ message_loop_.Quit();
+ }
+
+ virtual void RunTestImpl() = 0;
+
+ private:
+ base::MessageLoopForUI message_loop_;
+
+ DISALLOW_COPY_AND_ASSIGN(PlatformEventTestWithMessageLoop);
+};
+
+#define RUN_TEST_IN_MESSAGE_LOOP(name) \
+ TEST_F(name, Run) { Run(); }
+
+// Tests that a ScopedEventDispatcher restores the previous dispatcher when
+// destroyed.
+class ScopedDispatcherRestoresAfterDestroy
+ : public PlatformEventTestWithMessageLoop {
+ public:
+ // PlatformEventTestWithMessageLoop:
+ virtual void RunTestImpl() OVERRIDE {
+ std::vector<int> list;
+ TestPlatformEventDispatcher dispatcher(10, &list);
+ TestPlatformEventObserver observer(15, &list);
+
+ TestPlatformEventDispatcher first_overriding(20, &list);
+ source()->RemovePlatformEventDispatcher(&first_overriding);
+ scoped_ptr<ScopedEventDispatcher> first_override_handle =
+ source()->OverrideDispatcher(&first_overriding);
+
+ // Install a second overriding dispatcher.
+ TestPlatformEventDispatcher second_overriding(50, &list);
+ source()->RemovePlatformEventDispatcher(&second_overriding);
+ scoped_ptr<ScopedEventDispatcher> second_override_handle =
+ source()->OverrideDispatcher(&second_overriding);
+
+ scoped_ptr<PlatformEvent> event(CreatePlatformEvent());
+ source()->Dispatch(*event);
+ ASSERT_EQ(2u, list.size());
+ EXPECT_EQ(15, list[0]);
+ EXPECT_EQ(50, list[1]);
+ list.clear();
+
+ second_override_handle.reset();
+ source()->Dispatch(*event);
+ ASSERT_EQ(2u, list.size());
+ EXPECT_EQ(15, list[0]);
+ EXPECT_EQ(20, list[1]);
+ }
+};
+
+RUN_TEST_IN_MESSAGE_LOOP(ScopedDispatcherRestoresAfterDestroy)
+
+// This dispatcher destroys the handle to the ScopedEventDispatcher when
+// dispatching an event.
+class DestroyScopedHandleDispatcher : public TestPlatformEventDispatcher {
+ public:
+ DestroyScopedHandleDispatcher(int id, std::vector<int>* list)
+ : TestPlatformEventDispatcher(id, list) {}
+ virtual ~DestroyScopedHandleDispatcher() {}
+
+ void SetScopedHandle(scoped_ptr<ScopedEventDispatcher> handler) {
+ handler_ = handler.Pass();
+ }
+
+ private:
+ // PlatformEventDispatcher:
+ virtual bool CanDispatchEvent(const PlatformEvent& event) OVERRIDE {
+ return true;
+ }
+
+ virtual uint32_t DispatchEvent(const PlatformEvent& event) OVERRIDE {
+ handler_.reset();
+ return TestPlatformEventDispatcher::DispatchEvent(event);
+ }
+
+ scoped_ptr<ScopedEventDispatcher> handler_;
+
+ DISALLOW_COPY_AND_ASSIGN(DestroyScopedHandleDispatcher);
+};
+
+// Tests that resetting an overridden dispatcher causes the nested message-loop
+// iteration to stop and the rest of the events are dispatched in the next
+// iteration.
+class DestroyedNestedOverriddenDispatcherQuitsNestedLoopIteration
+ : public PlatformEventTestWithMessageLoop {
+ public:
+ void NestedTask(std::vector<int>* list,
+ TestPlatformEventDispatcher* dispatcher) {
+ ScopedVector<PlatformEvent> events;
+ scoped_ptr<PlatformEvent> event(CreatePlatformEvent());
+ events.push_back(event.release());
+ event = CreatePlatformEvent();
+ events.push_back(event.release());
+
+ // Attempt to dispatch a couple of events. Dispatching the first event will
+ // have terminated the ScopedEventDispatcher object, which will terminate
+ // the current iteration of the message-loop.
+ size_t count = source()->DispatchEventStream(events);
+ EXPECT_EQ(1u, count);
+ ASSERT_EQ(2u, list->size());
+ EXPECT_EQ(15, (*list)[0]);
+ EXPECT_EQ(20, (*list)[1]);
+ list->clear();
+
+ ASSERT_LT(count, events.size());
+ events.erase(events.begin(), events.begin() + count);
+
+ count = source()->DispatchEventStream(events);
+ EXPECT_EQ(1u, count);
+ ASSERT_EQ(2u, list->size());
+ EXPECT_EQ(15, (*list)[0]);
+ EXPECT_EQ(10, (*list)[1]);
+ list->clear();
+
+ // Terminate the message-loop.
+ base::MessageLoopForUI::current()->QuitNow();
+ }
+
+ // PlatformEventTestWithMessageLoop:
+ virtual void RunTestImpl() OVERRIDE {
+ std::vector<int> list;
+ TestPlatformEventDispatcher dispatcher(10, &list);
+ TestPlatformEventObserver observer(15, &list);
+
+ DestroyScopedHandleDispatcher overriding(20, &list);
+ source()->RemovePlatformEventDispatcher(&overriding);
+ scoped_ptr<ScopedEventDispatcher> override_handle =
+ source()->OverrideDispatcher(&overriding);
+
+ scoped_ptr<PlatformEvent> event(CreatePlatformEvent());
+ source()->Dispatch(*event);
+ ASSERT_EQ(2u, list.size());
+ EXPECT_EQ(15, list[0]);
+ EXPECT_EQ(20, list[1]);
+ list.clear();
+
+ overriding.SetScopedHandle(override_handle.Pass());
+ base::RunLoop run_loop;
+ base::MessageLoopForUI* loop = base::MessageLoopForUI::current();
+ base::MessageLoopForUI::ScopedNestableTaskAllower allow_nested(loop);
+ loop->PostTask(
+ FROM_HERE,
+ base::Bind(
+ &DestroyedNestedOverriddenDispatcherQuitsNestedLoopIteration::
+ NestedTask,
+ base::Unretained(this),
+ base::Unretained(&list),
+ base::Unretained(&overriding)));
+ run_loop.Run();
+
+ // Dispatching the event should now reach the default dispatcher.
+ source()->Dispatch(*event);
+ ASSERT_EQ(2u, list.size());
+ EXPECT_EQ(15, list[0]);
+ EXPECT_EQ(10, list[1]);
+ }
+};
+
+RUN_TEST_IN_MESSAGE_LOOP(
+ DestroyedNestedOverriddenDispatcherQuitsNestedLoopIteration)
+
+// Tests that resetting an overridden dispatcher, and installing another
+// overridden dispatcher before the nested message-loop completely unwinds
+// function correctly.
+class ConsecutiveOverriddenDispatcherInTheSameMessageLoopIteration
+ : public PlatformEventTestWithMessageLoop {
+ public:
+ void NestedTask(scoped_ptr<ScopedEventDispatcher> dispatch_handle,
+ std::vector<int>* list) {
+ scoped_ptr<PlatformEvent> event(CreatePlatformEvent());
+ source()->Dispatch(*event);
+ ASSERT_EQ(2u, list->size());
+ EXPECT_EQ(15, (*list)[0]);
+ EXPECT_EQ(20, (*list)[1]);
+ list->clear();
+
+ // Reset the override dispatcher. This should restore the default
+ // dispatcher.
+ dispatch_handle.reset();
+ source()->Dispatch(*event);
+ ASSERT_EQ(2u, list->size());
+ EXPECT_EQ(15, (*list)[0]);
+ EXPECT_EQ(10, (*list)[1]);
+ list->clear();
+
+ // Install another override-dispatcher.
+ DestroyScopedHandleDispatcher second_overriding(70, list);
+ source()->RemovePlatformEventDispatcher(&second_overriding);
+ scoped_ptr<ScopedEventDispatcher> second_override_handle =
+ source()->OverrideDispatcher(&second_overriding);
+
+ source()->Dispatch(*event);
+ ASSERT_EQ(2u, list->size());
+ EXPECT_EQ(15, (*list)[0]);
+ EXPECT_EQ(70, (*list)[1]);
+ list->clear();
+
+ second_overriding.SetScopedHandle(second_override_handle.Pass());
+ second_overriding.set_post_dispatch_action(POST_DISPATCH_QUIT_LOOP);
+ base::RunLoop run_loop;
+ base::MessageLoopForUI* loop = base::MessageLoopForUI::current();
+ base::MessageLoopForUI::ScopedNestableTaskAllower allow_nested(loop);
+ loop->PostTask(
+ FROM_HERE,
+ base::Bind(base::IgnoreResult(&TestPlatformEventSource::Dispatch),
+ base::Unretained(source()),
+ *event));
+ run_loop.Run();
+ ASSERT_EQ(2u, list->size());
+ EXPECT_EQ(15, (*list)[0]);
+ EXPECT_EQ(70, (*list)[1]);
+ list->clear();
+
+ // Terminate the message-loop.
+ base::MessageLoopForUI::current()->QuitNow();
+ }
+
+ // PlatformEventTestWithMessageLoop:
+ virtual void RunTestImpl() OVERRIDE {
+ std::vector<int> list;
+ TestPlatformEventDispatcher dispatcher(10, &list);
+ TestPlatformEventObserver observer(15, &list);
+
+ TestPlatformEventDispatcher overriding(20, &list);
+ source()->RemovePlatformEventDispatcher(&overriding);
+ scoped_ptr<ScopedEventDispatcher> override_handle =
+ source()->OverrideDispatcher(&overriding);
+
+ scoped_ptr<PlatformEvent> event(CreatePlatformEvent());
+ source()->Dispatch(*event);
+ ASSERT_EQ(2u, list.size());
+ EXPECT_EQ(15, list[0]);
+ EXPECT_EQ(20, list[1]);
+ list.clear();
+
+ // Start a nested message-loop, and destroy |override_handle| in the nested
+ // loop. That should terminate the nested loop, restore the previous
+ // dispatchers, and return control to this function.
+ base::RunLoop run_loop;
+ base::MessageLoopForUI* loop = base::MessageLoopForUI::current();
+ base::MessageLoopForUI::ScopedNestableTaskAllower allow_nested(loop);
+ loop->PostTask(
+ FROM_HERE,
+ base::Bind(
+ &ConsecutiveOverriddenDispatcherInTheSameMessageLoopIteration::
+ NestedTask,
+ base::Unretained(this),
+ base::Passed(&override_handle),
+ base::Unretained(&list)));
+ run_loop.Run();
+
+ // Dispatching the event should now reach the default dispatcher.
+ source()->Dispatch(*event);
+ ASSERT_EQ(2u, list.size());
+ EXPECT_EQ(15, list[0]);
+ EXPECT_EQ(10, list[1]);
+ }
+};
+
+RUN_TEST_IN_MESSAGE_LOOP(
+ ConsecutiveOverriddenDispatcherInTheSameMessageLoopIteration)
+
+} // namespace ui
diff --git a/ui/events/platform/platform_event_types.h b/ui/events/platform/platform_event_types.h
new file mode 100644
index 0000000000..dedb38ff06
--- /dev/null
+++ b/ui/events/platform/platform_event_types.h
@@ -0,0 +1,14 @@
+// Copyright 2014 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 UI_EVENTS_PLATFORM_PLATFORM_EVENT_TYPES_H_
+#define UI_EVENTS_PLATFORM_PLATFORM_EVENT_TYPES_H_
+
+#include "base/event_types.h"
+
+namespace ui {
+typedef base::NativeEvent PlatformEvent;
+} // namespace ui
+
+#endif // UI_EVENTS_PLATFORM_PLATFORM_EVENT_TYPES_H_
diff --git a/ui/events/platform/scoped_event_dispatcher.cc b/ui/events/platform/scoped_event_dispatcher.cc
new file mode 100644
index 0000000000..b0941ab851
--- /dev/null
+++ b/ui/events/platform/scoped_event_dispatcher.cc
@@ -0,0 +1,21 @@
+// Copyright 2014 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 "ui/events/platform/scoped_event_dispatcher.h"
+
+#include "ui/events/platform/platform_event_source.h"
+
+namespace ui {
+
+ScopedEventDispatcher::ScopedEventDispatcher(
+ PlatformEventDispatcher** scoped_dispatcher,
+ PlatformEventDispatcher* new_dispatcher)
+ : original_(*scoped_dispatcher),
+ restore_(scoped_dispatcher, new_dispatcher) {}
+
+ScopedEventDispatcher::~ScopedEventDispatcher() {
+ PlatformEventSource::GetInstance()->OnOverriddenDispatcherRestored();
+}
+
+} // namespace ui
diff --git a/ui/events/platform/scoped_event_dispatcher.h b/ui/events/platform/scoped_event_dispatcher.h
new file mode 100644
index 0000000000..a2f52945d9
--- /dev/null
+++ b/ui/events/platform/scoped_event_dispatcher.h
@@ -0,0 +1,40 @@
+// Copyright 2014 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 UI_EVENTS_PLATFORM_SCOPED_EVENT_DISPATCHER_H_
+#define UI_EVENTS_PLATFORM_SCOPED_EVENT_DISPATCHER_H_
+
+#include "base/auto_reset.h"
+#include "base/basictypes.h"
+#include "ui/events/events_export.h"
+
+namespace ui {
+
+class PlatformEventDispatcher;
+
+// A temporary PlatformEventDispatcher can be installed on a
+// PlatformEventSource that overrides all installed event dispatchers, and
+// always gets a chance to dispatch the event first. The PlatformEventSource
+// returns a ScopedEventDispatcher object in such cases. This
+// ScopedEventDispatcher object can be used to dispatch the event to any
+// previous overridden dispatcher. When this object is destroyed, it removes the
+// override-dispatcher, and restores the previous override-dispatcher.
+class EVENTS_EXPORT ScopedEventDispatcher {
+ public:
+ ScopedEventDispatcher(PlatformEventDispatcher** scoped_dispatcher,
+ PlatformEventDispatcher* new_dispatcher);
+ ~ScopedEventDispatcher();
+
+ operator PlatformEventDispatcher*() const { return original_; }
+
+ private:
+ PlatformEventDispatcher* original_;
+ base::AutoReset<PlatformEventDispatcher*> restore_;
+
+ DISALLOW_COPY_AND_ASSIGN(ScopedEventDispatcher);
+};
+
+} // namespace ui
+
+#endif // UI_EVENTS_PLATFORM_SCOPED_EVENT_DISPATCHER_H_
diff --git a/ui/events/platform/x11/x11_event_source.cc b/ui/events/platform/x11/x11_event_source.cc
new file mode 100644
index 0000000000..63cba762c2
--- /dev/null
+++ b/ui/events/platform/x11/x11_event_source.cc
@@ -0,0 +1,201 @@
+// Copyright 2014 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 "ui/events/platform/x11/x11_event_source.h"
+
+#include <glib.h>
+#include <X11/extensions/XInput2.h>
+#include <X11/X.h>
+#include <X11/Xlib.h>
+#include <X11/XKBlib.h>
+
+#include "base/logging.h"
+#include "base/message_loop/message_loop.h"
+#include "ui/events/platform/platform_event_dispatcher.h"
+
+namespace ui {
+
+namespace {
+
+struct GLibX11Source : public GSource {
+ // Note: The GLibX11Source is created and destroyed by GLib. So its
+ // constructor/destructor may or may not get called.
+ XDisplay* display;
+ GPollFD* poll_fd;
+};
+
+gboolean XSourcePrepare(GSource* source, gint* timeout_ms) {
+ GLibX11Source* gxsource = static_cast<GLibX11Source*>(source);
+ if (XPending(gxsource->display))
+ *timeout_ms = 0;
+ else
+ *timeout_ms = -1;
+ return FALSE;
+}
+
+gboolean XSourceCheck(GSource* source) {
+ GLibX11Source* gxsource = static_cast<GLibX11Source*>(source);
+ return XPending(gxsource->display);
+}
+
+gboolean XSourceDispatch(GSource* source,
+ GSourceFunc unused_func,
+ gpointer data) {
+ X11EventSource* x11_source = static_cast<X11EventSource*>(data);
+ x11_source->DispatchXEvents();
+ return TRUE;
+}
+
+GSourceFuncs XSourceFuncs = {
+ XSourcePrepare,
+ XSourceCheck,
+ XSourceDispatch,
+ NULL
+};
+
+int g_xinput_opcode = -1;
+
+bool InitializeXInput2(XDisplay* display) {
+ if (!display)
+ return false;
+
+ int event, err;
+
+ int xiopcode;
+ if (!XQueryExtension(display, "XInputExtension", &xiopcode, &event, &err)) {
+ DVLOG(1) << "X Input extension not available.";
+ return false;
+ }
+ g_xinput_opcode = xiopcode;
+
+#if defined(USE_XI2_MT)
+ // USE_XI2_MT also defines the required XI2 minor minimum version.
+ int major = 2, minor = USE_XI2_MT;
+#else
+ int major = 2, minor = 0;
+#endif
+ if (XIQueryVersion(display, &major, &minor) == BadRequest) {
+ DVLOG(1) << "XInput2 not supported in the server.";
+ return false;
+ }
+#if defined(USE_XI2_MT)
+ if (major < 2 || (major == 2 && minor < USE_XI2_MT)) {
+ DVLOG(1) << "XI version on server is " << major << "." << minor << ". "
+ << "But 2." << USE_XI2_MT << " is required.";
+ return false;
+ }
+#endif
+
+ return true;
+}
+
+bool InitializeXkb(XDisplay* display) {
+ if (!display)
+ return false;
+
+ int opcode, event, error;
+ int major = XkbMajorVersion;
+ int minor = XkbMinorVersion;
+ if (!XkbQueryExtension(display, &opcode, &event, &error, &major, &minor)) {
+ DVLOG(1) << "Xkb extension not available.";
+ return false;
+ }
+
+ // Ask the server not to send KeyRelease event when the user holds down a key.
+ // crbug.com/138092
+ Bool supported_return;
+ if (!XkbSetDetectableAutoRepeat(display, True, &supported_return)) {
+ DVLOG(1) << "XKB not supported in the server.";
+ return false;
+ }
+
+ return true;
+}
+
+} // namespace
+
+X11EventSource::X11EventSource(XDisplay* display)
+ : display_(display),
+ x_source_(NULL) {
+ CHECK(display_);
+ InitializeXInput2(display_);
+ InitializeXkb(display_);
+
+ InitXSource();
+}
+
+X11EventSource::~X11EventSource() {
+ g_source_destroy(x_source_);
+ g_source_unref(x_source_);
+}
+
+// static
+X11EventSource* X11EventSource::GetInstance() {
+ return static_cast<X11EventSource*>(PlatformEventSource::GetInstance());
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// X11EventSource, public
+
+void X11EventSource::DispatchXEvents() {
+ DCHECK(display_);
+ // Handle all pending events.
+ // It may be useful to eventually align this event dispatch with vsync, but
+ // not yet.
+ while (XPending(display_)) {
+ XEvent xevent;
+ XNextEvent(display_, &xevent);
+ uint32_t action = DispatchEvent(&xevent);
+ if (action & POST_DISPATCH_QUIT_LOOP)
+ break;
+ }
+}
+
+void X11EventSource::BlockUntilWindowMapped(XID window) {
+ XEvent event;
+ do {
+ // Block until there's a message of |event_mask| type on |w|. Then remove
+ // it from the queue and stuff it in |event|.
+ XWindowEvent(display_, window, StructureNotifyMask, &event);
+ DispatchEvent(&event);
+ } while (event.type != MapNotify);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// X11EventSource, private
+
+void X11EventSource::InitXSource() {
+ CHECK(!x_source_);
+ CHECK(display_) << "Unable to get connection to X server";
+
+ x_poll_.reset(new GPollFD());
+ x_poll_->fd = ConnectionNumber(display_);
+ x_poll_->events = G_IO_IN;
+ x_poll_->revents = 0;
+
+ GLibX11Source* glib_x_source = static_cast<GLibX11Source*>
+ (g_source_new(&XSourceFuncs, sizeof(GLibX11Source)));
+ glib_x_source->display = display_;
+ glib_x_source->poll_fd = x_poll_.get();
+
+ x_source_ = glib_x_source;
+ g_source_add_poll(x_source_, x_poll_.get());
+ g_source_set_can_recurse(x_source_, TRUE);
+ g_source_set_callback(x_source_, NULL, this, NULL);
+ g_source_attach(x_source_, g_main_context_default());
+}
+
+uint32_t X11EventSource::DispatchEvent(XEvent* xevent) {
+ bool have_cookie = false;
+ if (xevent->type == GenericEvent &&
+ XGetEventData(xevent->xgeneric.display, &xevent->xcookie)) {
+ have_cookie = true;
+ }
+ int action = PlatformEventSource::DispatchEvent(xevent);
+ if (have_cookie)
+ XFreeEventData(xevent->xgeneric.display, &xevent->xcookie);
+ return action;
+}
+
+} // namespace ui
diff --git a/ui/events/platform/x11/x11_event_source.h b/ui/events/platform/x11/x11_event_source.h
new file mode 100644
index 0000000000..93a371e4ac
--- /dev/null
+++ b/ui/events/platform/x11/x11_event_source.h
@@ -0,0 +1,65 @@
+// Copyright 2014 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 UI_EVENTS_PLATFORM_X11_X11_EVENT_SOURCE_H_
+#define UI_EVENTS_PLATFORM_X11_X11_EVENT_SOURCE_H_
+
+#include "base/memory/scoped_ptr.h"
+#include "ui/events/events_export.h"
+#include "ui/events/platform/platform_event_source.h"
+#include "ui/gfx/x/x11_types.h"
+
+typedef struct _GPollFD GPollFD;
+typedef struct _GSource GSource;
+typedef union _XEvent XEvent;
+typedef unsigned long XID;
+
+namespace ui {
+
+// A PlatformEventSource implementation for reading events from X11 server and
+// dispatching the events to the appropriate dispatcher.
+class EVENTS_EXPORT X11EventSource : public PlatformEventSource {
+ public:
+ explicit X11EventSource(XDisplay* display);
+ virtual ~X11EventSource();
+
+ static X11EventSource* GetInstance();
+
+ // Called by the glib source dispatch function. Processes all (if any)
+ // available X events.
+ void DispatchXEvents();
+
+ // Blocks on the X11 event queue until we receive notification from the
+ // xserver that |w| has been mapped; StructureNotifyMask events on |w| are
+ // pulled out from the queue and dispatched out of order.
+ //
+ // For those that know X11, this is really a wrapper around XWindowEvent
+ // which still makes sure the preempted event is dispatched instead of
+ // dropped on the floor. This method exists because mapping a window is
+ // asynchronous (and we receive an XEvent when mapped), while there are also
+ // functions which require a mapped window.
+ void BlockUntilWindowMapped(XID window);
+
+ private:
+ // Initializes the glib event source for X.
+ void InitXSource();
+
+ // PlatformEventSource:
+ virtual uint32_t DispatchEvent(XEvent* xevent) OVERRIDE;
+
+ // The connection to the X11 server used to receive the events.
+ XDisplay* display_;
+
+ // The GLib event source for X events.
+ GSource* x_source_;
+
+ // The poll attached to |x_source_|.
+ scoped_ptr<GPollFD> x_poll_;
+
+ DISALLOW_COPY_AND_ASSIGN(X11EventSource);
+};
+
+} // namespace ui
+
+#endif // UI_EVENTS_PLATFORM_X11_X11_EVENT_SOURCE_H_
diff --git a/ui/events/test/test_event_handler.cc b/ui/events/test/test_event_handler.cc
index 19b7191c4a..f97aad5e4d 100644
--- a/ui/events/test/test_event_handler.cc
+++ b/ui/events/test/test_event_handler.cc
@@ -14,7 +14,9 @@ TestEventHandler::TestEventHandler()
num_mouse_events_(0),
num_scroll_events_(0),
num_touch_events_(0),
- num_gesture_events_(0) {
+ num_gesture_events_(0),
+ recorder_(NULL),
+ handler_name_("unknown") {
}
TestEventHandler::~TestEventHandler() {}
@@ -28,23 +30,33 @@ void TestEventHandler::Reset() {
}
void TestEventHandler::OnKeyEvent(KeyEvent* event) {
+ if (recorder_)
+ recorder_->push_back(handler_name_);
num_key_events_++;
event->SetHandled();
}
void TestEventHandler::OnMouseEvent(MouseEvent* event) {
+ if (recorder_)
+ recorder_->push_back(handler_name_);
num_mouse_events_++;
}
void TestEventHandler::OnScrollEvent(ScrollEvent* event) {
+ if (recorder_)
+ recorder_->push_back(handler_name_);
num_scroll_events_++;
}
void TestEventHandler::OnTouchEvent(TouchEvent* event) {
+ if (recorder_)
+ recorder_->push_back(handler_name_);
num_touch_events_++;
}
void TestEventHandler::OnGestureEvent(GestureEvent* event) {
+ if (recorder_)
+ recorder_->push_back(handler_name_);
num_gesture_events_++;
}
diff --git a/ui/events/test/test_event_handler.h b/ui/events/test/test_event_handler.h
index e0c2fca953..8937b253cb 100644
--- a/ui/events/test/test_event_handler.h
+++ b/ui/events/test/test_event_handler.h
@@ -5,10 +5,15 @@
#ifndef UI_EVENTS_TEST_TEST_EVENT_HANDLER_H_
#define UI_EVENTS_TEST_TEST_EVENT_HANDLER_H_
+#include <string>
+#include <vector>
+
#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "ui/events/event_handler.h"
+typedef std::vector<std::string> HandlerSequenceRecorder;
+
namespace ui {
namespace test {
@@ -27,6 +32,13 @@ class TestEventHandler : public EventHandler {
void Reset();
+ void set_recorder(HandlerSequenceRecorder* recorder) {
+ recorder_ = recorder;
+ }
+ void set_handler_name(const std::string& handler_name) {
+ handler_name_ = handler_name;
+ }
+
// EventHandler overrides:
virtual void OnKeyEvent(KeyEvent* event) OVERRIDE;
virtual void OnMouseEvent(MouseEvent* event) OVERRIDE;
@@ -42,6 +54,9 @@ class TestEventHandler : public EventHandler {
int num_touch_events_;
int num_gesture_events_;
+ HandlerSequenceRecorder* recorder_;
+ std::string handler_name_;
+
DISALLOW_COPY_AND_ASSIGN(TestEventHandler);
};
diff --git a/ui/events/test/test_event_target.cc b/ui/events/test/test_event_target.cc
index 68d2eb2d67..1274dd507c 100644
--- a/ui/events/test/test_event_target.cc
+++ b/ui/events/test/test_event_target.cc
@@ -12,7 +12,10 @@ namespace ui {
namespace test {
TestEventTarget::TestEventTarget()
- : parent_(NULL) {}
+ : parent_(NULL),
+ mark_events_as_handled_(false),
+ recorder_(NULL),
+ target_name_("unknown") {}
TestEventTarget::~TestEventTarget() {}
void TestEventTarget::AddChild(scoped_ptr<TestEventTarget> child) {
@@ -70,8 +73,12 @@ EventTargeter* TestEventTarget::GetEventTargeter() {
}
void TestEventTarget::OnEvent(Event* event) {
+ if (recorder_)
+ recorder_->push_back(target_name_);
received_.insert(event->type());
EventTarget::OnEvent(event);
+ if (!event->handled() && mark_events_as_handled_)
+ event->SetHandled();
}
////////////////////////////////////////////////////////////////////////////////
diff --git a/ui/events/test/test_event_target.h b/ui/events/test/test_event_target.h
index 43994ffd5b..368e29567e 100644
--- a/ui/events/test/test_event_target.h
+++ b/ui/events/test/test_event_target.h
@@ -6,10 +6,14 @@
#define UI_EVENTS_TEST_TEST_EVENT_TARGET_H_
#include <set>
+#include <string>
+#include <vector>
#include "base/memory/scoped_vector.h"
#include "ui/events/event_target.h"
+typedef std::vector<std::string> HandlerSequenceRecorder;
+
namespace gfx {
class Point;
}
@@ -27,6 +31,10 @@ class TestEventTarget : public EventTarget {
TestEventTarget* parent() { return parent_; }
+ void set_mark_events_as_handled(bool handle) {
+ mark_events_as_handled_ = handle;
+ }
+
TestEventTarget* child_at(int index) { return children_[index]; }
size_t child_count() const { return children_.size(); }
@@ -35,6 +43,13 @@ class TestEventTarget : public EventTarget {
bool DidReceiveEvent(ui::EventType type) const;
void ResetReceivedEvents();
+ void set_recorder(HandlerSequenceRecorder* recorder) {
+ recorder_ = recorder;
+ }
+ void set_target_name(const std::string& target_name) {
+ target_name_ = target_name;
+ }
+
protected:
bool Contains(TestEventTarget* target) const;
@@ -53,9 +68,13 @@ class TestEventTarget : public EventTarget {
TestEventTarget* parent_;
ScopedVector<TestEventTarget> children_;
scoped_ptr<EventTargeter> targeter_;
+ bool mark_events_as_handled_;
std::set<ui::EventType> received_;
+ HandlerSequenceRecorder* recorder_;
+ std::string target_name_;
+
DISALLOW_COPY_AND_ASSIGN(TestEventTarget);
};
diff --git a/ui/gfx/android/java_bitmap.cc b/ui/gfx/android/java_bitmap.cc
index 844385b78d..90df12a71f 100644
--- a/ui/gfx/android/java_bitmap.cc
+++ b/ui/gfx/android/java_bitmap.cc
@@ -9,7 +9,6 @@
#include "base/android/jni_string.h"
#include "base/logging.h"
#include "jni/BitmapHelper_jni.h"
-#include "skia/ext/image_operations.h"
#include "ui/gfx/size.h"
using base::android::AttachCurrentThread;
@@ -61,13 +60,27 @@ static int SkBitmapConfigToBitmapFormat(SkBitmap::Config bitmap_config) {
ScopedJavaLocalRef<jobject> CreateJavaBitmap(int width,
int height,
SkBitmap::Config bitmap_config) {
+ DCHECK_GT(width, 0);
+ DCHECK_GT(height, 0);
int java_bitmap_config = SkBitmapConfigToBitmapFormat(bitmap_config);
return Java_BitmapHelper_createBitmap(
AttachCurrentThread(), width, height, java_bitmap_config);
}
+ScopedJavaLocalRef<jobject> CreateJavaBitmapFromAndroidResource(
+ const char* name,
+ gfx::Size size) {
+ DCHECK(name);
+ DCHECK(!size.IsEmpty());
+ JNIEnv* env = AttachCurrentThread();
+ ScopedJavaLocalRef<jstring> jname(env, env->NewStringUTF(name));
+ return Java_BitmapHelper_decodeDrawableResource(
+ env, jname.obj(), size.width(), size.height());
+}
+
ScopedJavaLocalRef<jobject> ConvertToJavaBitmap(const SkBitmap* skbitmap) {
DCHECK(skbitmap);
+ DCHECK(!skbitmap->isNull());
SkBitmap::Config bitmap_config = skbitmap->getConfig();
DCHECK((bitmap_config == SkBitmap::kRGB_565_Config) ||
(bitmap_config == SkBitmap::kARGB_8888_Config));
@@ -82,8 +95,13 @@ ScopedJavaLocalRef<jobject> ConvertToJavaBitmap(const SkBitmap* skbitmap) {
return jbitmap;
}
-SkBitmap CreateSkBitmapFromJavaBitmap(JavaBitmap& jbitmap) {
- DCHECK_EQ(jbitmap.format(), ANDROID_BITMAP_FORMAT_RGBA_8888);
+SkBitmap CreateSkBitmapFromJavaBitmap(const JavaBitmap& jbitmap) {
+ // TODO(jdduke): Convert to DCHECK's when sufficient data has been capture for
+ // crbug.com/341406.
+ CHECK_EQ(jbitmap.format(), ANDROID_BITMAP_FORMAT_RGBA_8888);
+ CHECK(!jbitmap.size().IsEmpty());
+ CHECK_GT(jbitmap.stride(), 0U);
+ CHECK(jbitmap.pixels());
gfx::Size src_size = jbitmap.size();
@@ -97,30 +115,13 @@ SkBitmap CreateSkBitmapFromJavaBitmap(JavaBitmap& jbitmap) {
<< "x" << src_size.height() << " stride=" << jbitmap.stride();
}
SkAutoLockPixels dst_lock(skbitmap);
- void* src_pixels = jbitmap.pixels();
+ const void* src_pixels = jbitmap.pixels();
void* dst_pixels = skbitmap.getPixels();
- CHECK(src_pixels);
-
memcpy(dst_pixels, src_pixels, skbitmap.getSize());
return skbitmap;
}
-SkBitmap CreateSkBitmapFromResource(const char* name, gfx::Size size) {
- DCHECK(!size.IsEmpty());
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jstring> jname(env, env->NewStringUTF(name));
- ScopedJavaLocalRef<jobject> jobj(Java_BitmapHelper_decodeDrawableResource(
- env, jname.obj(), size.width(), size.height()));
- if (jobj.is_null())
- return SkBitmap();
-
- JavaBitmap jbitmap(jobj.obj());
- SkBitmap bitmap = CreateSkBitmapFromJavaBitmap(jbitmap);
- return skia::ImageOperations::Resize(
- bitmap, skia::ImageOperations::RESIZE_BOX, size.width(), size.height());
-}
-
SkBitmap::Config ConvertToSkiaConfig(jobject bitmap_config) {
int jbitmap_config = Java_BitmapHelper_getBitmapFormatForConfig(
AttachCurrentThread(), bitmap_config);
diff --git a/ui/gfx/android/java_bitmap.h b/ui/gfx/android/java_bitmap.h
index 5cda137a1e..44a17cade7 100644
--- a/ui/gfx/android/java_bitmap.h
+++ b/ui/gfx/android/java_bitmap.h
@@ -31,6 +31,7 @@ class GFX_EXPORT JavaBitmap {
~JavaBitmap();
inline void* pixels() { return pixels_; }
+ inline const void* pixels() const { return pixels_; }
inline const gfx::Size& size() const { return size_; }
// Formats are in android/bitmap.h; e.g. ANDROID_BITMAP_FORMAT_RGBA_8888
inline int format() const { return format_; }
@@ -49,22 +50,29 @@ class GFX_EXPORT JavaBitmap {
DISALLOW_COPY_AND_ASSIGN(JavaBitmap);
};
-// Allocates a Java-backed bitmap (android.graphics.Bitmap) with the given size
-// and configuration.
+// Allocates a Java-backed bitmap (android.graphics.Bitmap) with the given
+// (non-empty!) size and configuration.
GFX_EXPORT base::android::ScopedJavaLocalRef<jobject> CreateJavaBitmap(
int width,
int height,
SkBitmap::Config bitmap_config);
+// Loads a Java-backed bitmap (android.graphics.Bitmap) from the provided
+// drawable resource identifier (e.g., android:drawable/overscroll_glow). If the
+// resource loads successfully, it will be integrally scaled down, preserving
+// aspect ratio, to a size no smaller than |size|. Otherwise, null is returned.
+GFX_EXPORT base::android::ScopedJavaLocalRef<jobject>
+ CreateJavaBitmapFromAndroidResource(const char* name, gfx::Size size);
+
+// Converts |skbitmap| to a Java-backed bitmap (android.graphics.Bitmap).
+// Note: |skbitmap| is assumed to be non-null, non-empty and one of RGBA_8888 or
+// RGB_565 formats.
GFX_EXPORT base::android::ScopedJavaLocalRef<jobject> ConvertToJavaBitmap(
const SkBitmap* skbitmap);
-GFX_EXPORT SkBitmap CreateSkBitmapFromJavaBitmap(JavaBitmap& jbitmap);
-
-// If the resource loads successfully, it will be resized to |size|.
-// Note: If the source resource is smaller than |size|, quality may suffer.
-GFX_EXPORT SkBitmap CreateSkBitmapFromResource(const char* name,
- gfx::Size size);
+// Converts |bitmap| to an SkBitmap of the same size and format.
+// Note: |jbitmap| is assumed to be non-null, non-empty and of format RGBA_8888.
+GFX_EXPORT SkBitmap CreateSkBitmapFromJavaBitmap(const JavaBitmap& jbitmap);
// Returns a Skia config value for the requested input java Bitmap.Config.
GFX_EXPORT SkBitmap::Config ConvertToSkiaConfig(jobject bitmap_config);
diff --git a/ui/gfx/canvas_skia.cc b/ui/gfx/canvas_skia.cc
index 1ad60ba2b0..fe6dccaec0 100644
--- a/ui/gfx/canvas_skia.cc
+++ b/ui/gfx/canvas_skia.cc
@@ -230,7 +230,7 @@ void Canvas::DrawStringRectWithShadows(const base::string16& text,
Rect clip_rect(text_bounds);
clip_rect.Inset(ShadowValue::GetMargin(shadows));
- canvas_->save(SkCanvas::kClip_SaveFlag);
+ canvas_->save();
ClipRect(clip_rect);
Rect rect(text_bounds);
@@ -424,7 +424,7 @@ void Canvas::DrawFadeTruncatingStringRectWithFlags(
rect.set_height(line_height);
render_text->SetDisplayRect(rect);
- canvas_->save(SkCanvas::kClip_SaveFlag);
+ canvas_->save();
ClipRect(display_rect);
render_text->Draw(this);
canvas_->restore();
diff --git a/ui/gfx/color_analysis_unittest.cc b/ui/gfx/color_analysis_unittest.cc
index 7757eb959b..b8234d63f5 100644
--- a/ui/gfx/color_analysis_unittest.cc
+++ b/ui/gfx/color_analysis_unittest.cc
@@ -104,15 +104,6 @@ class MockKMeanImageSampler : public color_utils::KMeanImageSampler {
prebaked_sample_results_.push_back(sample);
}
- void Reset() {
- prebaked_sample_results_.clear();
- ResetCounter();
- }
-
- void ResetCounter() {
- current_result_index_ = 0;
- }
-
virtual int GetSample(int width, int height) OVERRIDE {
if (current_result_index_ >= prebaked_sample_results_.size()) {
current_result_index_ = 0;
diff --git a/ui/gfx/gfx.target.darwin-arm.mk b/ui/gfx/gfx.target.darwin-arm.mk
index 0f365d0faf..ba93554d5c 100644
--- a/ui/gfx/gfx.target.darwin-arm.mk
+++ b/ui/gfx/gfx.target.darwin-arm.mk
@@ -147,9 +147,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -162,6 +160,7 @@ MY_DEFS_Debug := \
'-DCHROME_PNG_READ_PACK_SUPPORT' \
'-DUSE_SYSTEM_LIBJPEG' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -274,9 +273,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -289,6 +286,7 @@ MY_DEFS_Release := \
'-DCHROME_PNG_READ_PACK_SUPPORT' \
'-DUSE_SYSTEM_LIBJPEG' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx.target.darwin-mips.mk b/ui/gfx/gfx.target.darwin-mips.mk
index 51fef3f9e3..64a569b32a 100644
--- a/ui/gfx/gfx.target.darwin-mips.mk
+++ b/ui/gfx/gfx.target.darwin-mips.mk
@@ -146,9 +146,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -161,6 +159,7 @@ MY_DEFS_Debug := \
'-DCHROME_PNG_READ_PACK_SUPPORT' \
'-DUSE_SYSTEM_LIBJPEG' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -272,9 +271,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -287,6 +284,7 @@ MY_DEFS_Release := \
'-DCHROME_PNG_READ_PACK_SUPPORT' \
'-DUSE_SYSTEM_LIBJPEG' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx.target.darwin-x86.mk b/ui/gfx/gfx.target.darwin-x86.mk
index 0ac05308c9..8eb0406a29 100644
--- a/ui/gfx/gfx.target.darwin-x86.mk
+++ b/ui/gfx/gfx.target.darwin-x86.mk
@@ -148,9 +148,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -163,6 +161,7 @@ MY_DEFS_Debug := \
'-DCHROME_PNG_READ_PACK_SUPPORT' \
'-DUSE_SYSTEM_LIBJPEG' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -275,9 +274,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -290,6 +287,7 @@ MY_DEFS_Release := \
'-DCHROME_PNG_READ_PACK_SUPPORT' \
'-DUSE_SYSTEM_LIBJPEG' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx.target.darwin-x86_64.mk b/ui/gfx/gfx.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..456e129cb3
--- /dev/null
+++ b/ui/gfx/gfx.target.darwin-x86_64.mk
@@ -0,0 +1,403 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_gfx_gfx_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,skia_skia_gyp)/skia.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a \
+ $(call intermediates-dir-for,GYP,third_party_icu_icui18n_gyp)/icui18n.stamp \
+ $(call intermediates-dir-for,GYP,third_party_icu_icuuc_gyp)/icuuc.stamp \
+ $(call intermediates-dir-for,GYP,third_party_libjpeg_libjpeg_gyp)/libjpeg.stamp \
+ $(call intermediates-dir-for,GYP,ui_gfx_gfx_jni_headers_gyp)/gfx_jni_headers.stamp
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/gfx/android/device_display_info.cc \
+ ui/gfx/android/gfx_jni_registrar.cc \
+ ui/gfx/android/java_bitmap.cc \
+ ui/gfx/android/scroller.cc \
+ ui/gfx/android/shared_device_display_info.cc \
+ ui/gfx/android/view_configuration.cc \
+ ui/gfx/animation/animation.cc \
+ ui/gfx/animation/animation_container.cc \
+ ui/gfx/animation/linear_animation.cc \
+ ui/gfx/animation/multi_animation.cc \
+ ui/gfx/animation/slide_animation.cc \
+ ui/gfx/animation/tween.cc \
+ ui/gfx/blit.cc \
+ ui/gfx/canvas.cc \
+ ui/gfx/canvas_android.cc \
+ ui/gfx/codec/jpeg_codec.cc \
+ ui/gfx/codec/png_codec.cc \
+ ui/gfx/color_analysis.cc \
+ ui/gfx/color_profile.cc \
+ ui/gfx/color_utils.cc \
+ ui/gfx/display.cc \
+ ui/gfx/favicon_size.cc \
+ ui/gfx/font.cc \
+ ui/gfx/font_list.cc \
+ ui/gfx/font_list_impl.cc \
+ ui/gfx/font_render_params_android.cc \
+ ui/gfx/gfx_paths.cc \
+ ui/gfx/gpu_memory_buffer.cc \
+ ui/gfx/image/canvas_image_source.cc \
+ ui/gfx/image/image.cc \
+ ui/gfx/image/image_family.cc \
+ ui/gfx/image/image_png_rep.cc \
+ ui/gfx/image/image_skia.cc \
+ ui/gfx/image/image_skia_operations.cc \
+ ui/gfx/image/image_skia_rep.cc \
+ ui/gfx/image/image_util.cc \
+ ui/gfx/interpolated_transform.cc \
+ ui/gfx/linux_font_delegate.cc \
+ ui/gfx/platform_font_android.cc \
+ ui/gfx/range/range.cc \
+ ui/gfx/screen.cc \
+ ui/gfx/screen_android.cc \
+ ui/gfx/scrollbar_size.cc \
+ ui/gfx/sequential_id_generator.cc \
+ ui/gfx/shadow_value.cc \
+ ui/gfx/skbitmap_operations.cc \
+ ui/gfx/skia_util.cc \
+ ui/gfx/switches.cc \
+ ui/gfx/sys_color_change_listener.cc \
+ ui/gfx/text_elider.cc \
+ ui/gfx/text_utils.cc \
+ ui/gfx/text_utils_android.cc \
+ ui/gfx/transform.cc \
+ ui/gfx/transform_util.cc \
+ ui/gfx/ui_gfx_exports.cc \
+ ui/gfx/utf16_indexing.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DGFX_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DCHROME_PNG_WRITE_SUPPORT' \
+ '-DPNG_USER_CONFIG' \
+ '-DCHROME_PNG_READ_PACK_SUPPORT' \
+ '-DUSE_SYSTEM_LIBJPEG' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(LOCAL_PATH)/third_party/libpng \
+ $(LOCAL_PATH)/third_party/zlib \
+ $(PWD)/external/jpeg \
+ $(gyp_shared_intermediate_dir)/ui/gfx \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DGFX_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DCHROME_PNG_WRITE_SUPPORT' \
+ '-DPNG_USER_CONFIG' \
+ '-DCHROME_PNG_READ_PACK_SUPPORT' \
+ '-DUSE_SYSTEM_LIBJPEG' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(LOCAL_PATH)/third_party/libpng \
+ $(LOCAL_PATH)/third_party/zlib \
+ $(PWD)/external/jpeg \
+ $(gyp_shared_intermediate_dir)/ui/gfx \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_gfx_gfx_gyp
+
+# Alias gyp target name.
+.PHONY: gfx
+gfx: ui_gfx_gfx_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/gfx/gfx.target.linux-arm.mk b/ui/gfx/gfx.target.linux-arm.mk
index 0f365d0faf..ba93554d5c 100644
--- a/ui/gfx/gfx.target.linux-arm.mk
+++ b/ui/gfx/gfx.target.linux-arm.mk
@@ -147,9 +147,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -162,6 +160,7 @@ MY_DEFS_Debug := \
'-DCHROME_PNG_READ_PACK_SUPPORT' \
'-DUSE_SYSTEM_LIBJPEG' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -274,9 +273,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -289,6 +286,7 @@ MY_DEFS_Release := \
'-DCHROME_PNG_READ_PACK_SUPPORT' \
'-DUSE_SYSTEM_LIBJPEG' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx.target.linux-mips.mk b/ui/gfx/gfx.target.linux-mips.mk
index 51fef3f9e3..64a569b32a 100644
--- a/ui/gfx/gfx.target.linux-mips.mk
+++ b/ui/gfx/gfx.target.linux-mips.mk
@@ -146,9 +146,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -161,6 +159,7 @@ MY_DEFS_Debug := \
'-DCHROME_PNG_READ_PACK_SUPPORT' \
'-DUSE_SYSTEM_LIBJPEG' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -272,9 +271,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -287,6 +284,7 @@ MY_DEFS_Release := \
'-DCHROME_PNG_READ_PACK_SUPPORT' \
'-DUSE_SYSTEM_LIBJPEG' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx.target.linux-x86.mk b/ui/gfx/gfx.target.linux-x86.mk
index 0ac05308c9..8eb0406a29 100644
--- a/ui/gfx/gfx.target.linux-x86.mk
+++ b/ui/gfx/gfx.target.linux-x86.mk
@@ -148,9 +148,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -163,6 +161,7 @@ MY_DEFS_Debug := \
'-DCHROME_PNG_READ_PACK_SUPPORT' \
'-DUSE_SYSTEM_LIBJPEG' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -275,9 +274,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -290,6 +287,7 @@ MY_DEFS_Release := \
'-DCHROME_PNG_READ_PACK_SUPPORT' \
'-DUSE_SYSTEM_LIBJPEG' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx.target.linux-x86_64.mk b/ui/gfx/gfx.target.linux-x86_64.mk
new file mode 100644
index 0000000000..456e129cb3
--- /dev/null
+++ b/ui/gfx/gfx.target.linux-x86_64.mk
@@ -0,0 +1,403 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_gfx_gfx_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,skia_skia_gyp)/skia.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a \
+ $(call intermediates-dir-for,GYP,third_party_icu_icui18n_gyp)/icui18n.stamp \
+ $(call intermediates-dir-for,GYP,third_party_icu_icuuc_gyp)/icuuc.stamp \
+ $(call intermediates-dir-for,GYP,third_party_libjpeg_libjpeg_gyp)/libjpeg.stamp \
+ $(call intermediates-dir-for,GYP,ui_gfx_gfx_jni_headers_gyp)/gfx_jni_headers.stamp
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/gfx/android/device_display_info.cc \
+ ui/gfx/android/gfx_jni_registrar.cc \
+ ui/gfx/android/java_bitmap.cc \
+ ui/gfx/android/scroller.cc \
+ ui/gfx/android/shared_device_display_info.cc \
+ ui/gfx/android/view_configuration.cc \
+ ui/gfx/animation/animation.cc \
+ ui/gfx/animation/animation_container.cc \
+ ui/gfx/animation/linear_animation.cc \
+ ui/gfx/animation/multi_animation.cc \
+ ui/gfx/animation/slide_animation.cc \
+ ui/gfx/animation/tween.cc \
+ ui/gfx/blit.cc \
+ ui/gfx/canvas.cc \
+ ui/gfx/canvas_android.cc \
+ ui/gfx/codec/jpeg_codec.cc \
+ ui/gfx/codec/png_codec.cc \
+ ui/gfx/color_analysis.cc \
+ ui/gfx/color_profile.cc \
+ ui/gfx/color_utils.cc \
+ ui/gfx/display.cc \
+ ui/gfx/favicon_size.cc \
+ ui/gfx/font.cc \
+ ui/gfx/font_list.cc \
+ ui/gfx/font_list_impl.cc \
+ ui/gfx/font_render_params_android.cc \
+ ui/gfx/gfx_paths.cc \
+ ui/gfx/gpu_memory_buffer.cc \
+ ui/gfx/image/canvas_image_source.cc \
+ ui/gfx/image/image.cc \
+ ui/gfx/image/image_family.cc \
+ ui/gfx/image/image_png_rep.cc \
+ ui/gfx/image/image_skia.cc \
+ ui/gfx/image/image_skia_operations.cc \
+ ui/gfx/image/image_skia_rep.cc \
+ ui/gfx/image/image_util.cc \
+ ui/gfx/interpolated_transform.cc \
+ ui/gfx/linux_font_delegate.cc \
+ ui/gfx/platform_font_android.cc \
+ ui/gfx/range/range.cc \
+ ui/gfx/screen.cc \
+ ui/gfx/screen_android.cc \
+ ui/gfx/scrollbar_size.cc \
+ ui/gfx/sequential_id_generator.cc \
+ ui/gfx/shadow_value.cc \
+ ui/gfx/skbitmap_operations.cc \
+ ui/gfx/skia_util.cc \
+ ui/gfx/switches.cc \
+ ui/gfx/sys_color_change_listener.cc \
+ ui/gfx/text_elider.cc \
+ ui/gfx/text_utils.cc \
+ ui/gfx/text_utils_android.cc \
+ ui/gfx/transform.cc \
+ ui/gfx/transform_util.cc \
+ ui/gfx/ui_gfx_exports.cc \
+ ui/gfx/utf16_indexing.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DGFX_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DCHROME_PNG_WRITE_SUPPORT' \
+ '-DPNG_USER_CONFIG' \
+ '-DCHROME_PNG_READ_PACK_SUPPORT' \
+ '-DUSE_SYSTEM_LIBJPEG' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(LOCAL_PATH)/third_party/libpng \
+ $(LOCAL_PATH)/third_party/zlib \
+ $(PWD)/external/jpeg \
+ $(gyp_shared_intermediate_dir)/ui/gfx \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DGFX_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DCHROME_PNG_WRITE_SUPPORT' \
+ '-DPNG_USER_CONFIG' \
+ '-DCHROME_PNG_READ_PACK_SUPPORT' \
+ '-DUSE_SYSTEM_LIBJPEG' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(LOCAL_PATH)/third_party/libpng \
+ $(LOCAL_PATH)/third_party/zlib \
+ $(PWD)/external/jpeg \
+ $(gyp_shared_intermediate_dir)/ui/gfx \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_gfx_gfx_gyp
+
+# Alias gyp target name.
+.PHONY: gfx
+gfx: ui_gfx_gfx_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/gfx/gfx_geometry.target.darwin-arm.mk b/ui/gfx/gfx_geometry.target.darwin-arm.mk
index 9f4c51c8d3..5141a50a37 100644
--- a/ui/gfx/gfx_geometry.target.darwin-arm.mk
+++ b/ui/gfx/gfx_geometry.target.darwin-arm.mk
@@ -98,6 +98,7 @@ MY_DEFS_Debug := \
'-DENABLE_MANAGED_USERS=1' \
'-DGFX_IMPLEMENTATION' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -183,6 +184,7 @@ MY_DEFS_Release := \
'-DENABLE_MANAGED_USERS=1' \
'-DGFX_IMPLEMENTATION' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx_geometry.target.darwin-mips.mk b/ui/gfx/gfx_geometry.target.darwin-mips.mk
index a54e4db7d9..bfc41aea7e 100644
--- a/ui/gfx/gfx_geometry.target.darwin-mips.mk
+++ b/ui/gfx/gfx_geometry.target.darwin-mips.mk
@@ -97,6 +97,7 @@ MY_DEFS_Debug := \
'-DENABLE_MANAGED_USERS=1' \
'-DGFX_IMPLEMENTATION' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -181,6 +182,7 @@ MY_DEFS_Release := \
'-DENABLE_MANAGED_USERS=1' \
'-DGFX_IMPLEMENTATION' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx_geometry.target.darwin-x86.mk b/ui/gfx/gfx_geometry.target.darwin-x86.mk
index f774802853..699dfe3deb 100644
--- a/ui/gfx/gfx_geometry.target.darwin-x86.mk
+++ b/ui/gfx/gfx_geometry.target.darwin-x86.mk
@@ -99,6 +99,7 @@ MY_DEFS_Debug := \
'-DENABLE_MANAGED_USERS=1' \
'-DGFX_IMPLEMENTATION' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -184,6 +185,7 @@ MY_DEFS_Release := \
'-DENABLE_MANAGED_USERS=1' \
'-DGFX_IMPLEMENTATION' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx_geometry.target.darwin-x86_64.mk b/ui/gfx/gfx_geometry.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..2025f258fc
--- /dev/null
+++ b/ui/gfx/gfx_geometry.target.darwin-x86_64.mk
@@ -0,0 +1,280 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_gfx_gfx_geometry_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/gfx/geometry/box_f.cc \
+ ui/gfx/geometry/cubic_bezier.cc \
+ ui/gfx/geometry/insets.cc \
+ ui/gfx/geometry/insets_f.cc \
+ ui/gfx/geometry/matrix3_f.cc \
+ ui/gfx/geometry/point.cc \
+ ui/gfx/geometry/point3_f.cc \
+ ui/gfx/geometry/point_conversions.cc \
+ ui/gfx/geometry/point_f.cc \
+ ui/gfx/geometry/quad_f.cc \
+ ui/gfx/geometry/rect.cc \
+ ui/gfx/geometry/rect_conversions.cc \
+ ui/gfx/geometry/rect_f.cc \
+ ui/gfx/geometry/size.cc \
+ ui/gfx/geometry/size_conversions.cc \
+ ui/gfx/geometry/size_f.cc \
+ ui/gfx/geometry/vector2d.cc \
+ ui/gfx/geometry/vector2d_conversions.cc \
+ ui/gfx/geometry/vector2d_f.cc \
+ ui/gfx/geometry/vector3d_f.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DGFX_IMPLEMENTATION' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DGFX_IMPLEMENTATION' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_gfx_gfx_geometry_gyp
+
+# Alias gyp target name.
+.PHONY: gfx_geometry
+gfx_geometry: ui_gfx_gfx_geometry_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/gfx/gfx_geometry.target.linux-arm.mk b/ui/gfx/gfx_geometry.target.linux-arm.mk
index 9f4c51c8d3..5141a50a37 100644
--- a/ui/gfx/gfx_geometry.target.linux-arm.mk
+++ b/ui/gfx/gfx_geometry.target.linux-arm.mk
@@ -98,6 +98,7 @@ MY_DEFS_Debug := \
'-DENABLE_MANAGED_USERS=1' \
'-DGFX_IMPLEMENTATION' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -183,6 +184,7 @@ MY_DEFS_Release := \
'-DENABLE_MANAGED_USERS=1' \
'-DGFX_IMPLEMENTATION' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx_geometry.target.linux-mips.mk b/ui/gfx/gfx_geometry.target.linux-mips.mk
index a54e4db7d9..bfc41aea7e 100644
--- a/ui/gfx/gfx_geometry.target.linux-mips.mk
+++ b/ui/gfx/gfx_geometry.target.linux-mips.mk
@@ -97,6 +97,7 @@ MY_DEFS_Debug := \
'-DENABLE_MANAGED_USERS=1' \
'-DGFX_IMPLEMENTATION' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -181,6 +182,7 @@ MY_DEFS_Release := \
'-DENABLE_MANAGED_USERS=1' \
'-DGFX_IMPLEMENTATION' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx_geometry.target.linux-x86.mk b/ui/gfx/gfx_geometry.target.linux-x86.mk
index f774802853..699dfe3deb 100644
--- a/ui/gfx/gfx_geometry.target.linux-x86.mk
+++ b/ui/gfx/gfx_geometry.target.linux-x86.mk
@@ -99,6 +99,7 @@ MY_DEFS_Debug := \
'-DENABLE_MANAGED_USERS=1' \
'-DGFX_IMPLEMENTATION' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -184,6 +185,7 @@ MY_DEFS_Release := \
'-DENABLE_MANAGED_USERS=1' \
'-DGFX_IMPLEMENTATION' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx_geometry.target.linux-x86_64.mk b/ui/gfx/gfx_geometry.target.linux-x86_64.mk
new file mode 100644
index 0000000000..2025f258fc
--- /dev/null
+++ b/ui/gfx/gfx_geometry.target.linux-x86_64.mk
@@ -0,0 +1,280 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_gfx_gfx_geometry_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/gfx/geometry/box_f.cc \
+ ui/gfx/geometry/cubic_bezier.cc \
+ ui/gfx/geometry/insets.cc \
+ ui/gfx/geometry/insets_f.cc \
+ ui/gfx/geometry/matrix3_f.cc \
+ ui/gfx/geometry/point.cc \
+ ui/gfx/geometry/point3_f.cc \
+ ui/gfx/geometry/point_conversions.cc \
+ ui/gfx/geometry/point_f.cc \
+ ui/gfx/geometry/quad_f.cc \
+ ui/gfx/geometry/rect.cc \
+ ui/gfx/geometry/rect_conversions.cc \
+ ui/gfx/geometry/rect_f.cc \
+ ui/gfx/geometry/size.cc \
+ ui/gfx/geometry/size_conversions.cc \
+ ui/gfx/geometry/size_f.cc \
+ ui/gfx/geometry/vector2d.cc \
+ ui/gfx/geometry/vector2d_conversions.cc \
+ ui/gfx/geometry/vector2d_f.cc \
+ ui/gfx/geometry/vector3d_f.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DGFX_IMPLEMENTATION' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DGFX_IMPLEMENTATION' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_gfx_gfx_geometry_gyp
+
+# Alias gyp target name.
+.PHONY: gfx_geometry
+gfx_geometry: ui_gfx_gfx_geometry_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/gfx/gfx_jni_headers.target.darwin-arm.mk b/ui/gfx/gfx_jni_headers.target.darwin-arm.mk
index ffd608eea9..8c2b4a6eb6 100644
--- a/ui/gfx/gfx_jni_headers.target.darwin-arm.mk
+++ b/ui/gfx/gfx_jni_headers.target.darwin-arm.mk
@@ -119,6 +119,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -201,6 +202,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx_jni_headers.target.darwin-mips.mk b/ui/gfx/gfx_jni_headers.target.darwin-mips.mk
index 393e61d344..3204930c81 100644
--- a/ui/gfx/gfx_jni_headers.target.darwin-mips.mk
+++ b/ui/gfx/gfx_jni_headers.target.darwin-mips.mk
@@ -118,6 +118,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -199,6 +200,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx_jni_headers.target.darwin-x86.mk b/ui/gfx/gfx_jni_headers.target.darwin-x86.mk
index 57fde5f4f7..284f002431 100644
--- a/ui/gfx/gfx_jni_headers.target.darwin-x86.mk
+++ b/ui/gfx/gfx_jni_headers.target.darwin-x86.mk
@@ -120,6 +120,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -202,6 +203,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx_jni_headers.target.darwin-x86_64.mk b/ui/gfx/gfx_jni_headers.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..c0be65ddf5
--- /dev/null
+++ b/ui/gfx/gfx_jni_headers.target.darwin-x86_64.mk
@@ -0,0 +1,258 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := ui_gfx_gfx_jni_headers_gyp
+LOCAL_MODULE_STEM := gfx_jni_headers
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+
+### Generated for rule "ui_gfx_gfx_gyp_gfx_jni_headers_target_generate_jni_headers":
+# "{'inputs': ['../../base/android/jni_generator/jni_generator.py', '../../android_webview/build/jarjar-rules.txt'], 'process_outputs_as_sources': '1', 'extension': 'java', 'outputs': ['$(gyp_shared_intermediate_dir)/ui/gfx/jni/%(INPUT_ROOT)s_jni.h'], 'rule_name': 'generate_jni_headers', 'rule_sources': ['../android/java/src/org/chromium/ui/gfx/BitmapHelper.java', '../android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java', '../android/java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java'], 'action': ['../../base/android/jni_generator/jni_generator.py', '--input_file', '$(RULE_SOURCES)', '--output_dir', '$(gyp_shared_intermediate_dir)/ui/gfx/jni', '--includes', 'base/android/jni_generator/jni_generator_helper.h', '--optimize_generation', '0', '--jarjar', '../../android_webview/build/jarjar-rules.txt', '--ptr_type', 'long'], 'message': 'Generating JNI bindings from $(RULE_SOURCES)'}":
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/BitmapHelper_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/BitmapHelper_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/BitmapHelper_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/BitmapHelper_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/BitmapHelper_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/gfx/jni; cd $(gyp_local_path)/ui/gfx; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/gfx/BitmapHelper.java --output_dir "$(gyp_shared_intermediate_dir)/ui/gfx/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_gfx_gfx_jni_headers_gyp_rule_trigger
+ui_gfx_gfx_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/gfx/jni/BitmapHelper_jni.h
+
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/DeviceDisplayInfo_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/DeviceDisplayInfo_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/DeviceDisplayInfo_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/DeviceDisplayInfo_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/DeviceDisplayInfo_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/gfx/jni; cd $(gyp_local_path)/ui/gfx; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java --output_dir "$(gyp_shared_intermediate_dir)/ui/gfx/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_gfx_gfx_jni_headers_gyp_rule_trigger
+ui_gfx_gfx_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/gfx/jni/DeviceDisplayInfo_jni.h
+
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/ViewConfigurationHelper_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/ViewConfigurationHelper_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/ViewConfigurationHelper_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/ViewConfigurationHelper_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/ViewConfigurationHelper_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/gfx/jni; cd $(gyp_local_path)/ui/gfx; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java --output_dir "$(gyp_shared_intermediate_dir)/ui/gfx/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_gfx_gfx_jni_headers_gyp_rule_trigger
+ui_gfx_gfx_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/gfx/jni/ViewConfigurationHelper_jni.h
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/ui/gfx/jni/BitmapHelper_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/gfx/jni/DeviceDisplayInfo_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/gfx/jni/ViewConfigurationHelper_jni.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_GENERATED_SOURCES := \
+ $(gyp_shared_intermediate_dir)/ui/gfx/jni/BitmapHelper_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/gfx/jni/DeviceDisplayInfo_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/gfx/jni/ViewConfigurationHelper_jni.h \
+ ui_gfx_gfx_jni_headers_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_gfx_gfx_jni_headers_gyp
+
+# Alias gyp target name.
+.PHONY: gfx_jni_headers
+gfx_jni_headers: ui_gfx_gfx_jni_headers_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/ui/gfx/gfx_jni_headers.target.linux-arm.mk b/ui/gfx/gfx_jni_headers.target.linux-arm.mk
index ffd608eea9..8c2b4a6eb6 100644
--- a/ui/gfx/gfx_jni_headers.target.linux-arm.mk
+++ b/ui/gfx/gfx_jni_headers.target.linux-arm.mk
@@ -119,6 +119,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -201,6 +202,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx_jni_headers.target.linux-mips.mk b/ui/gfx/gfx_jni_headers.target.linux-mips.mk
index 393e61d344..3204930c81 100644
--- a/ui/gfx/gfx_jni_headers.target.linux-mips.mk
+++ b/ui/gfx/gfx_jni_headers.target.linux-mips.mk
@@ -118,6 +118,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -199,6 +200,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx_jni_headers.target.linux-x86.mk b/ui/gfx/gfx_jni_headers.target.linux-x86.mk
index 57fde5f4f7..284f002431 100644
--- a/ui/gfx/gfx_jni_headers.target.linux-x86.mk
+++ b/ui/gfx/gfx_jni_headers.target.linux-x86.mk
@@ -120,6 +120,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -202,6 +203,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gfx/gfx_jni_headers.target.linux-x86_64.mk b/ui/gfx/gfx_jni_headers.target.linux-x86_64.mk
new file mode 100644
index 0000000000..c0be65ddf5
--- /dev/null
+++ b/ui/gfx/gfx_jni_headers.target.linux-x86_64.mk
@@ -0,0 +1,258 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := ui_gfx_gfx_jni_headers_gyp
+LOCAL_MODULE_STEM := gfx_jni_headers
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+
+### Generated for rule "ui_gfx_gfx_gyp_gfx_jni_headers_target_generate_jni_headers":
+# "{'inputs': ['../../base/android/jni_generator/jni_generator.py', '../../android_webview/build/jarjar-rules.txt'], 'process_outputs_as_sources': '1', 'extension': 'java', 'outputs': ['$(gyp_shared_intermediate_dir)/ui/gfx/jni/%(INPUT_ROOT)s_jni.h'], 'rule_name': 'generate_jni_headers', 'rule_sources': ['../android/java/src/org/chromium/ui/gfx/BitmapHelper.java', '../android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java', '../android/java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java'], 'action': ['../../base/android/jni_generator/jni_generator.py', '--input_file', '$(RULE_SOURCES)', '--output_dir', '$(gyp_shared_intermediate_dir)/ui/gfx/jni', '--includes', 'base/android/jni_generator/jni_generator_helper.h', '--optimize_generation', '0', '--jarjar', '../../android_webview/build/jarjar-rules.txt', '--ptr_type', 'long'], 'message': 'Generating JNI bindings from $(RULE_SOURCES)'}":
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/BitmapHelper_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/BitmapHelper_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/BitmapHelper_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/BitmapHelper_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/BitmapHelper_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/gfx/jni; cd $(gyp_local_path)/ui/gfx; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/gfx/BitmapHelper.java --output_dir "$(gyp_shared_intermediate_dir)/ui/gfx/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_gfx_gfx_jni_headers_gyp_rule_trigger
+ui_gfx_gfx_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/gfx/jni/BitmapHelper_jni.h
+
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/DeviceDisplayInfo_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/DeviceDisplayInfo_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/DeviceDisplayInfo_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/DeviceDisplayInfo_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/DeviceDisplayInfo_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/gfx/jni; cd $(gyp_local_path)/ui/gfx; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java --output_dir "$(gyp_shared_intermediate_dir)/ui/gfx/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_gfx_gfx_jni_headers_gyp_rule_trigger
+ui_gfx_gfx_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/gfx/jni/DeviceDisplayInfo_jni.h
+
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/ViewConfigurationHelper_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/ViewConfigurationHelper_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/ViewConfigurationHelper_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/ViewConfigurationHelper_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/gfx/jni/ViewConfigurationHelper_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/gfx/jni; cd $(gyp_local_path)/ui/gfx; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java --output_dir "$(gyp_shared_intermediate_dir)/ui/gfx/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_gfx_gfx_jni_headers_gyp_rule_trigger
+ui_gfx_gfx_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/gfx/jni/ViewConfigurationHelper_jni.h
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/ui/gfx/jni/BitmapHelper_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/gfx/jni/DeviceDisplayInfo_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/gfx/jni/ViewConfigurationHelper_jni.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_GENERATED_SOURCES := \
+ $(gyp_shared_intermediate_dir)/ui/gfx/jni/BitmapHelper_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/gfx/jni/DeviceDisplayInfo_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/gfx/jni/ViewConfigurationHelper_jni.h \
+ ui_gfx_gfx_jni_headers_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_gfx_gfx_jni_headers_gyp
+
+# Alias gyp target name.
+.PHONY: gfx_jni_headers
+gfx_jni_headers: ui_gfx_gfx_jni_headers_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/ui/gfx/gpu_memory_buffer.h b/ui/gfx/gpu_memory_buffer.h
index 3510a911c0..2ddc89c3fb 100644
--- a/ui/gfx/gpu_memory_buffer.h
+++ b/ui/gfx/gpu_memory_buffer.h
@@ -18,7 +18,7 @@ namespace gfx {
enum GpuMemoryBufferType {
EMPTY_BUFFER,
SHARED_MEMORY_BUFFER,
- EGL_CLIENT_BUFFER,
+ ANDROID_NATIVE_BUFFER,
IO_SURFACE_BUFFER,
GPU_MEMORY_BUFFER_TYPE_LAST = IO_SURFACE_BUFFER
};
diff --git a/ui/gfx/ozone/dri/dri_skbitmap.cc b/ui/gfx/ozone/dri/dri_skbitmap.cc
index 61361d653f..5e62dd2c61 100644
--- a/ui/gfx/ozone/dri/dri_skbitmap.cc
+++ b/ui/gfx/ozone/dri/dri_skbitmap.cc
@@ -23,118 +23,15 @@ void DestroyDumbBuffer(int fd, uint32_t handle) {
drmIoctl(fd, DRM_IOCTL_MODE_DESTROY_DUMB, &destroy_request);
}
-// Special DRM implementation of a SkPixelRef. The DRM allocator will create a
-// SkPixelRef for the backing pixels. It will then associate the SkPixelRef with
-// the SkBitmap. SkBitmap will access the allocated memory by locking the pixels
-// in the SkPixelRef.
-// At the end of its life the SkPixelRef is responsible for deallocating the
-// pixel memory.
-class DriSkPixelRef : public SkPixelRef {
- public:
- DriSkPixelRef(const SkImageInfo& info,
- void* pixels,
- SkColorTable* color_table_,
- size_t size,
- size_t row_bites,
- int fd,
- uint32_t handle);
- virtual ~DriSkPixelRef();
-
- virtual bool onNewLockPixels(LockRec* rec) OVERRIDE;
- virtual void onUnlockPixels() OVERRIDE;
-
- SK_DECLARE_UNFLATTENABLE_OBJECT()
- private:
- // Raw pointer to the pixel memory.
- void* pixels_;
-
- // Optional color table associated with the pixel memory.
- SkColorTable* color_table_;
-
- // Size of the allocated memory.
- size_t size_;
-
- // Number of bytes between subsequent rows in the bitmap (stride).
- size_t row_bytes_;
-
- // File descriptor to the graphics card used to allocate/deallocate the
- // memory.
- int fd_;
-
- // Handle for the allocated memory.
- uint32_t handle_;
-
- DISALLOW_COPY_AND_ASSIGN(DriSkPixelRef);
-};
-
-////////////////////////////////////////////////////////////////////////////////
-// DriSkPixelRef implementation
-
-DriSkPixelRef::DriSkPixelRef(
+bool CreateDumbBuffer(
+ DriSkBitmap* bitmap,
const SkImageInfo& info,
- void* pixels,
- SkColorTable* color_table,
- size_t size,
- size_t row_bytes,
- int fd,
- uint32_t handle)
- : SkPixelRef(info),
- pixels_(pixels),
- color_table_(color_table),
- size_(size),
- row_bytes_(row_bytes),
- fd_(fd),
- handle_(handle) {
-}
-
-DriSkPixelRef::~DriSkPixelRef() {
- munmap(pixels_, size_);
- DestroyDumbBuffer(fd_, handle_);
-}
-
-bool DriSkPixelRef::onNewLockPixels(LockRec* rec) {
- rec->fPixels = pixels_;
- rec->fRowBytes = row_bytes_;
- rec->fColorTable = color_table_;
- return true;
-}
-
-void DriSkPixelRef::onUnlockPixels() {
-}
-
-} // namespace
-
-// Allocates pixel memory for a SkBitmap using DRM dumb buffers.
-class DriAllocator : public SkBitmap::Allocator {
- public:
- DriAllocator();
-
- virtual bool allocPixelRef(SkBitmap* bitmap,
- SkColorTable* color_table) OVERRIDE;
-
- private:
- bool AllocatePixels(DriSkBitmap* bitmap, SkColorTable* color_table);
-
- DISALLOW_COPY_AND_ASSIGN(DriAllocator);
-};
-
-////////////////////////////////////////////////////////////////////////////////
-// DriAllocator implementation
-
-DriAllocator::DriAllocator() {
-}
-
-bool DriAllocator::allocPixelRef(SkBitmap* bitmap,
- SkColorTable* color_table) {
- return AllocatePixels(static_cast<DriSkBitmap*>(bitmap), color_table);
-}
-
-bool DriAllocator::AllocatePixels(DriSkBitmap* bitmap,
- SkColorTable* color_table) {
+ size_t* stride,
+ void** pixels) {
struct drm_mode_create_dumb request;
- request.width = bitmap->width();
- request.height = bitmap->height();
- request.bpp = bitmap->bytesPerPixel() << 3;
+ request.width = info.width();
+ request.height = info.height();
+ request.bpp = info.bytesPerPixel() << 3;
request.flags = 0;
if (drmIoctl(bitmap->get_fd(), DRM_IOCTL_MODE_CREATE_DUMB, &request) < 0) {
@@ -143,9 +40,8 @@ bool DriAllocator::AllocatePixels(DriSkBitmap* bitmap,
return false;
}
- CHECK(request.size == bitmap->getSize());
-
bitmap->set_handle(request.handle);
+ *stride = request.pitch;
struct drm_mode_map_dumb map_request;
map_request.handle = bitmap->get_handle();
@@ -156,39 +52,33 @@ bool DriAllocator::AllocatePixels(DriSkBitmap* bitmap,
return false;
}
- void* pixels = mmap(0,
- bitmap->getSize(),
- PROT_READ | PROT_WRITE,
- MAP_SHARED,
- bitmap->get_fd(),
- map_request.offset);
- if (pixels == MAP_FAILED) {
+ *pixels = mmap(0,
+ request.size,
+ PROT_READ | PROT_WRITE,
+ MAP_SHARED,
+ bitmap->get_fd(),
+ map_request.offset);
+ if (*pixels == MAP_FAILED) {
DLOG(ERROR) << "Cannot mmap dumb buffer (" << errno << ") "
<< strerror(errno);
DestroyDumbBuffer(bitmap->get_fd(), bitmap->get_handle());
return false;
}
- SkImageInfo info;
- if (!bitmap->asImageInfo(&info)) {
- DLOG(ERROR) << "Cannot get skia image info";
- DestroyDumbBuffer(bitmap->get_fd(), bitmap->get_handle());
- return false;
- }
+ return true;
+}
- bitmap->setPixelRef(new DriSkPixelRef(
- info,
- pixels,
- color_table,
- bitmap->getSize(),
- bitmap->rowBytes(),
- bitmap->get_fd(),
- bitmap->get_handle()))->unref();
- bitmap->lockPixels();
+void ReleasePixels(void* addr, void* context) {
+ DriSkBitmap *bitmap = reinterpret_cast<DriSkBitmap*>(context);
+ if (!bitmap && !bitmap->getPixels())
+ return;
- return true;
+ munmap(bitmap->getPixels(), bitmap->getSize());
+ DestroyDumbBuffer(bitmap->get_fd(), bitmap->get_handle());
}
+} // namespace
+
////////////////////////////////////////////////////////////////////////////////
// DriSkBitmap implementation
@@ -201,9 +91,19 @@ DriSkBitmap::DriSkBitmap(int fd)
DriSkBitmap::~DriSkBitmap() {
}
-bool DriSkBitmap::Initialize() {
- DriAllocator drm_allocator;
- return allocPixels(&drm_allocator, NULL);
+bool DriSkBitmap::Initialize(const SkImageInfo& info) {
+ size_t stride = 0;
+ void* pixels = NULL;
+ if (!CreateDumbBuffer(this, info, &stride, &pixels)) {
+ DLOG(ERROR) << "Cannot allocate drm dumb buffer";
+ return false;
+ }
+ if (!installPixels(info, pixels, stride, ReleasePixels, this)) {
+ DLOG(ERROR) << "Cannot install Skia pixels for drm buffer";
+ return false;
+ }
+
+ return true;
}
uint8_t DriSkBitmap::GetColorDepth() const {
diff --git a/ui/gfx/ozone/dri/dri_skbitmap.h b/ui/gfx/ozone/dri/dri_skbitmap.h
index f5b8f9455f..812298a0fc 100644
--- a/ui/gfx/ozone/dri/dri_skbitmap.h
+++ b/ui/gfx/ozone/dri/dri_skbitmap.h
@@ -20,7 +20,9 @@ class GFX_EXPORT DriSkBitmap : public SkBitmap {
// Allocates the backing pixels using DRI.
// Return true on success, false otherwise.
- virtual bool Initialize();
+ virtual bool Initialize(const SkImageInfo& info);
+
+ void set_handle(uint32_t handle) { handle_ = handle; };
uint32_t get_handle() const { return handle_; };
@@ -32,10 +34,8 @@ class GFX_EXPORT DriSkBitmap : public SkBitmap {
uint8_t GetColorDepth() const;
private:
- friend class DriAllocator;
friend class HardwareDisplayController;
- void set_handle(uint32_t handle) { handle_ = handle; };
void set_framebuffer(uint32_t framebuffer) { framebuffer_ = framebuffer; };
// File descriptor used by the DRI allocator to request buffers from the DRI
diff --git a/ui/gfx/ozone/dri/dri_surface.cc b/ui/gfx/ozone/dri/dri_surface.cc
index 8b0af6637a..7a0136f945 100644
--- a/ui/gfx/ozone/dri/dri_surface.cc
+++ b/ui/gfx/ozone/dri/dri_surface.cc
@@ -56,11 +56,11 @@ bool DriSurface::Initialize() {
bitmaps_[i].reset(CreateBuffer());
// TODO(dnicoara) Should select the configuration based on what the
// underlying system supports.
- bitmaps_[i]->setConfig(SkBitmap::kARGB_8888_Config,
- size_.width(),
- size_.height());
-
- if (!bitmaps_[i]->Initialize()) {
+ SkImageInfo info = SkImageInfo::Make(size_.width(),
+ size_.height(),
+ kPMColor_SkColorType,
+ kPremul_SkAlphaType);
+ if (!bitmaps_[i]->Initialize(info)) {
return false;
}
}
diff --git a/ui/gfx/ozone/dri/dri_surface_factory.cc b/ui/gfx/ozone/dri/dri_surface_factory.cc
index 5166679ad5..661944a6aa 100644
--- a/ui/gfx/ozone/dri/dri_surface_factory.cc
+++ b/ui/gfx/ozone/dri/dri_surface_factory.cc
@@ -211,6 +211,9 @@ gfx::AcceleratedWidget DriSurfaceFactory::RealizeAcceleratedWidget(
return gfx::kNullAcceleratedWidget;
}
+ // Initial cursor set.
+ ResetCursor();
+
return reinterpret_cast<gfx::AcceleratedWidget>(controller_->get_surface());
}
@@ -273,17 +276,19 @@ scoped_ptr<gfx::VSyncProvider> DriSurfaceFactory::CreateVSyncProvider(
void DriSurfaceFactory::SetHardwareCursor(gfx::AcceleratedWidget window,
const SkBitmap& image,
const gfx::Point& location) {
+ cursor_bitmap_ = image;
+ cursor_location_ = location;
+
if (state_ != INITIALIZED)
return;
- UpdateCursorImage(cursor_surface_.get(), image);
- controller_->MoveCursor(location);
- controller_->SetCursor(*cursor_surface_.get());
- cursor_surface_->SwapBuffers();
+ ResetCursor();
}
void DriSurfaceFactory::MoveHardwareCursor(gfx::AcceleratedWidget window,
const gfx::Point& location) {
+ cursor_location_ = location;
+
if (state_ != INITIALIZED)
return;
@@ -291,10 +296,12 @@ void DriSurfaceFactory::MoveHardwareCursor(gfx::AcceleratedWidget window,
}
void DriSurfaceFactory::UnsetHardwareCursor(gfx::AcceleratedWidget window) {
+ cursor_bitmap_.reset();
+
if (state_ != INITIALIZED)
return;
- controller_->UnsetCursor();
+ ResetCursor();
}
////////////////////////////////////////////////////////////////////////////////
@@ -367,4 +374,19 @@ void DriSurfaceFactory::WaitForPageFlipEvent(int fd) {
drmHandleEvent(fd, &drm_event);
}
+void DriSurfaceFactory::ResetCursor() {
+ if (!cursor_bitmap_.empty()) {
+ // Draw new cursor into backbuffer.
+ UpdateCursorImage(cursor_surface_.get(), cursor_bitmap_);
+
+ // Reset location & buffer.
+ controller_->MoveCursor(cursor_location_);
+ controller_->SetCursor(cursor_surface_.get());
+ } else {
+ // No cursor set.
+ controller_->UnsetCursor();
+ }
+}
+
+
} // namespace gfx
diff --git a/ui/gfx/ozone/dri/dri_surface_factory.h b/ui/gfx/ozone/dri/dri_surface_factory.h
index 4981394a78..3b958bdc69 100644
--- a/ui/gfx/ozone/dri/dri_surface_factory.h
+++ b/ui/gfx/ozone/dri/dri_surface_factory.h
@@ -6,6 +6,7 @@
#define UI_GFX_OZONE_DRI_DRI_SURFACE_FACTORY_H_
#include "base/memory/scoped_ptr.h"
+#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/gfx/ozone/surface_factory_ozone.h"
namespace gfx {
@@ -67,6 +68,9 @@ class GFX_EXPORT DriSurfaceFactory : public SurfaceFactoryOzone {
// pending frame.
virtual void WaitForPageFlipEvent(int fd);
+ // Draw the last set cursor & update the cursor plane.
+ void ResetCursor();
+
scoped_ptr<DriWrapper> drm_;
HardwareState state_;
@@ -76,6 +80,9 @@ class GFX_EXPORT DriSurfaceFactory : public SurfaceFactoryOzone {
scoped_ptr<DriSurface> cursor_surface_;
+ SkBitmap cursor_bitmap_;
+ gfx::Point cursor_location_;
+
DISALLOW_COPY_AND_ASSIGN(DriSurfaceFactory);
};
diff --git a/ui/gfx/ozone/dri/dri_surface_factory_unittest.cc b/ui/gfx/ozone/dri/dri_surface_factory_unittest.cc
index d9c8122951..b0e108e6dd 100644
--- a/ui/gfx/ozone/dri/dri_surface_factory_unittest.cc
+++ b/ui/gfx/ozone/dri/dri_surface_factory_unittest.cc
@@ -115,8 +115,8 @@ class MockDriSkBitmap : public gfx::DriSkBitmap {
MockDriSkBitmap() : DriSkBitmap(kFd) {}
virtual ~MockDriSkBitmap() {}
- virtual bool Initialize() OVERRIDE {
- allocPixels();
+ virtual bool Initialize(const SkImageInfo& info) OVERRIDE {
+ allocPixels(info);
eraseColor(SK_ColorBLACK);
return true;
}
diff --git a/ui/gfx/ozone/dri/dri_surface_unittest.cc b/ui/gfx/ozone/dri/dri_surface_unittest.cc
index bb0d0a1e23..434e85e0c9 100644
--- a/ui/gfx/ozone/dri/dri_surface_unittest.cc
+++ b/ui/gfx/ozone/dri/dri_surface_unittest.cc
@@ -74,11 +74,11 @@ class MockDriSkBitmap : public gfx::DriSkBitmap {
initialize_expectation_(initialize_expectation) {}
virtual ~MockDriSkBitmap() {}
- virtual bool Initialize() OVERRIDE {
+ virtual bool Initialize(const SkImageInfo& info) OVERRIDE {
if (!initialize_expectation_)
return false;
- allocPixels();
+ allocPixels(info);
// Clear the bitmap to black.
eraseColor(SK_ColorBLACK);
diff --git a/ui/gfx/ozone/dri/hardware_display_controller.cc b/ui/gfx/ozone/dri/hardware_display_controller.cc
index e08cecf44c..55dd008636 100644
--- a/ui/gfx/ozone/dri/hardware_display_controller.cc
+++ b/ui/gfx/ozone/dri/hardware_display_controller.cc
@@ -133,12 +133,14 @@ void HardwareDisplayController::OnPageFlipEvent(unsigned int frame,
surface_->SwapBuffers();
}
-bool HardwareDisplayController::SetCursor(const DriSurface& surface) {
+bool HardwareDisplayController::SetCursor(DriSurface* surface) {
CHECK(state_ != UNASSOCIATED);
- return drm_->SetCursor(crtc_id_,
- surface.GetHandle(),
- surface.size().width(),
- surface.size().height());
+ bool ret = drm_->SetCursor(crtc_id_,
+ surface->GetHandle(),
+ surface->size().width(),
+ surface->size().height());
+ surface->SwapBuffers();
+ return ret;
}
bool HardwareDisplayController::UnsetCursor() {
diff --git a/ui/gfx/ozone/dri/hardware_display_controller.h b/ui/gfx/ozone/dri/hardware_display_controller.h
index e0ae007fc6..46861a1e42 100644
--- a/ui/gfx/ozone/dri/hardware_display_controller.h
+++ b/ui/gfx/ozone/dri/hardware_display_controller.h
@@ -147,7 +147,7 @@ class GFX_EXPORT HardwareDisplayController {
unsigned int useconds);
// Set the hardware cursor to show the contents of |surface|.
- bool SetCursor(const DriSurface& surface);
+ bool SetCursor(DriSurface* surface);
bool UnsetCursor();
diff --git a/ui/gfx/ozone/dri/hardware_display_controller_unittest.cc b/ui/gfx/ozone/dri/hardware_display_controller_unittest.cc
index db817f020a..b5cf465191 100644
--- a/ui/gfx/ozone/dri/hardware_display_controller_unittest.cc
+++ b/ui/gfx/ozone/dri/hardware_display_controller_unittest.cc
@@ -151,8 +151,8 @@ class MockDriSkBitmap : public gfx::DriSkBitmap {
MockDriSkBitmap(int fd) : DriSkBitmap(fd) {}
virtual ~MockDriSkBitmap() {}
- virtual bool Initialize() OVERRIDE {
- return allocPixels();
+ virtual bool Initialize(const SkImageInfo& info) OVERRIDE {
+ return allocPixels(info);
}
private:
DISALLOW_COPY_AND_ASSIGN(MockDriSkBitmap);
diff --git a/ui/gfx/ozone/impl/file_surface_factory.cc b/ui/gfx/ozone/impl/file_surface_factory.cc
index 2120bd114b..7083376c56 100644
--- a/ui/gfx/ozone/impl/file_surface_factory.cc
+++ b/ui/gfx/ozone/impl/file_surface_factory.cc
@@ -65,9 +65,9 @@ bool FileSurfaceFactory::LoadEGLGLES2Bindings(
bool FileSurfaceFactory::AttemptToResizeAcceleratedWidget(
AcceleratedWidget widget,
const Rect& bounds) {
- device_ = skia::AdoptRef(new SkBitmapDevice(SkBitmap::kARGB_8888_Config,
- bounds.width(),
- bounds.height()));
+ SkImageInfo info = SkImageInfo::MakeN32Premul(bounds.width(),
+ bounds.height());
+ device_ = skia::AdoptRef(SkBitmapDevice::Create(info));
canvas_ = skia::AdoptRef(new SkCanvas(device_.get()));
return true;
}
diff --git a/ui/gfx/render_text.cc b/ui/gfx/render_text.cc
index 9813606524..645573865c 100644
--- a/ui/gfx/render_text.cc
+++ b/ui/gfx/render_text.cc
@@ -160,7 +160,8 @@ namespace internal {
const SkScalar kUnderlineMetricsNotSet = -1.0f;
SkiaTextRenderer::SkiaTextRenderer(Canvas* canvas)
- : canvas_skia_(canvas->sk_canvas()),
+ : canvas_(canvas),
+ canvas_skia_(canvas->sk_canvas()),
started_drawing_(false),
underline_thickness_(kUnderlineMetricsNotSet),
underline_position_(0.0f) {
@@ -279,8 +280,20 @@ void SkiaTextRenderer::DrawDecorations(int x, int y, int width, bool underline,
DrawUnderline(x, y, width);
if (strike)
DrawStrike(x, y, width);
- if (diagonal_strike)
- DrawDiagonalStrike(x, y, width);
+ if (diagonal_strike) {
+ if (!diagonal_)
+ diagonal_.reset(new DiagonalStrike(canvas_, Point(x, y), paint_));
+ diagonal_->AddPiece(width, paint_.getColor());
+ } else if (diagonal_) {
+ EndDiagonalStrike();
+ }
+}
+
+void SkiaTextRenderer::EndDiagonalStrike() {
+ if (diagonal_) {
+ diagonal_->Draw();
+ diagonal_.reset();
+ }
}
void SkiaTextRenderer::DrawUnderline(int x, int y, int width) {
@@ -302,15 +315,51 @@ void SkiaTextRenderer::DrawStrike(int x, int y, int width) const {
canvas_skia_->drawRect(r, paint_);
}
-void SkiaTextRenderer::DrawDiagonalStrike(int x, int y, int width) const {
+SkiaTextRenderer::DiagonalStrike::DiagonalStrike(Canvas* canvas,
+ Point start,
+ const SkPaint& paint)
+ : canvas_(canvas),
+ start_(start),
+ paint_(paint),
+ total_length_(0) {
+}
+
+SkiaTextRenderer::DiagonalStrike::~DiagonalStrike() {
+}
+
+void SkiaTextRenderer::DiagonalStrike::AddPiece(int length, SkColor color) {
+ pieces_.push_back(Piece(length, color));
+ total_length_ += length;
+}
+
+void SkiaTextRenderer::DiagonalStrike::Draw() {
const SkScalar text_size = paint_.getTextSize();
const SkScalar offset = SkScalarMul(text_size, kDiagonalStrikeMarginOffset);
+ const int thickness =
+ SkScalarCeilToInt(SkScalarMul(text_size, kLineThickness) * 2);
+ const int height = SkScalarCeilToInt(text_size - offset);
+ const Point end = start_ + Vector2d(total_length_, -height);
+
+ paint_.setAntiAlias(true);
+ paint_.setStrokeWidth(thickness);
- SkPaint paint(paint_);
- paint.setAntiAlias(true);
- paint.setStyle(SkPaint::kFill_Style);
- paint.setStrokeWidth(SkScalarMul(text_size, kLineThickness) * 2);
- canvas_skia_->drawLine(x, y, x + width, y - text_size + offset, paint);
+ const bool clipped = pieces_.size() > 1;
+ int x = start_.x();
+ for (size_t i = 0; i < pieces_.size(); ++i) {
+ paint_.setColor(pieces_[i].second);
+
+ if (clipped) {
+ canvas_->Save();
+ canvas_->ClipRect(Rect(x, 0, pieces_[i].first, start_.y() + thickness));
+ }
+
+ canvas_->DrawLine(start_, end, paint_);
+
+ if (clipped)
+ canvas_->Restore();
+
+ x += pieces_[i].first;
+ }
}
StyleIterator::StyleIterator(const BreakList<SkColor>& colors,
diff --git a/ui/gfx/render_text.h b/ui/gfx/render_text.h
index 9ae2e54c47..93054b4487 100644
--- a/ui/gfx/render_text.h
+++ b/ui/gfx/render_text.h
@@ -13,6 +13,7 @@
#include "base/gtest_prod_util.h"
#include "base/i18n/rtl.h"
+#include "base/memory/scoped_ptr.h"
#include "base/strings/string16.h"
#include "skia/ext/refptr.h"
#include "third_party/skia/include/core/SkColor.h"
@@ -73,11 +74,35 @@ class SkiaTextRenderer {
// third_party/skia/src/core/SkTextFormatParams.h
void DrawDecorations(int x, int y, int width, bool underline, bool strike,
bool diagonal_strike);
+ // Finishes any ongoing diagonal strike run.
+ void EndDiagonalStrike();
void DrawUnderline(int x, int y, int width);
void DrawStrike(int x, int y, int width) const;
- void DrawDiagonalStrike(int x, int y, int width) const;
private:
+ // Helper class to draw a diagonal line with multiple pieces of different
+ // lengths and colors; to support text selection appearances.
+ class DiagonalStrike {
+ public:
+ DiagonalStrike(Canvas* canvas, Point start, const SkPaint& paint);
+ ~DiagonalStrike();
+
+ void AddPiece(int length, SkColor color);
+ void Draw();
+
+ private:
+ typedef std::pair<int, SkColor> Piece;
+
+ Canvas* canvas_;
+ const Point start_;
+ SkPaint paint_;
+ int total_length_;
+ std::vector<Piece> pieces_;
+
+ DISALLOW_COPY_AND_ASSIGN(DiagonalStrike);
+ };
+
+ Canvas* canvas_;
SkCanvas* canvas_skia_;
bool started_drawing_;
SkPaint paint_;
@@ -85,6 +110,7 @@ class SkiaTextRenderer {
skia::RefPtr<SkShader> deferred_fade_shader_;
SkScalar underline_thickness_;
SkScalar underline_position_;
+ scoped_ptr<DiagonalStrike> diagonal_;
DISALLOW_COPY_AND_ASSIGN(SkiaTextRenderer);
};
diff --git a/ui/gfx/render_text_mac.cc b/ui/gfx/render_text_mac.cc
index f41704c6fe..af0be63e13 100644
--- a/ui/gfx/render_text_mac.cc
+++ b/ui/gfx/render_text_mac.cc
@@ -174,6 +174,8 @@ void RenderTextMac::DrawVisualText(Canvas* canvas) {
renderer.DrawDecorations(run.origin.x(), run.origin.y(), run.width,
run.underline, run.strike, run.diagonal_strike);
}
+
+ renderer.EndDiagonalStrike();
}
RenderTextMac::TextRun::TextRun()
diff --git a/ui/gfx/render_text_pango.cc b/ui/gfx/render_text_pango.cc
index 4bfdaa7a8e..fdf3d59e1e 100644
--- a/ui/gfx/render_text_pango.cc
+++ b/ui/gfx/render_text_pango.cc
@@ -487,6 +487,8 @@ void RenderTextPango::DrawVisualText(Canvas* canvas) {
} while (glyph_index < glyph_count);
}
+ renderer.EndDiagonalStrike();
+
// Undo the temporarily applied composition underlines and selection colors.
UndoCompositionAndSelectionStyles();
}
diff --git a/ui/gfx/render_text_win.cc b/ui/gfx/render_text_win.cc
index 53b6043e9b..46f46dd85c 100644
--- a/ui/gfx/render_text_win.cc
+++ b/ui/gfx/render_text_win.cc
@@ -878,6 +878,8 @@ void RenderTextWin::DrawVisualText(Canvas* canvas) {
preceding_segment_widths += segment_width;
}
+
+ renderer.EndDiagonalStrike();
}
UndoCompositionAndSelectionStyles();
@@ -1007,13 +1009,6 @@ void RenderTextWin::LayoutVisualText() {
if (run->glyph_count > 0) {
run->advance_widths.reset(new int[run->glyph_count]);
- // TODO(asvitkine): Temporary instrumentation to debug a double-free
- // crash where we're seeing these two being equal inexplicably. Hitting
- // this implies that the malloc book-keeping is corrupt and it returned
- // the same pointer for two different allocs, which we can debug further.
- // http://crbug.com/348103
- CHECK_NE(static_cast<void*>(run->logical_clusters.get()),
- static_cast<void*>(run->advance_widths.get()));
run->offsets.reset(new GOFFSET[run->glyph_count]);
hr = ScriptPlace(cached_hdc_,
&run->script_cache,
diff --git a/ui/gfx/win/hwnd_util.cc b/ui/gfx/win/hwnd_util.cc
index a986e66ba9..e28398a56d 100644
--- a/ui/gfx/win/hwnd_util.cc
+++ b/ui/gfx/win/hwnd_util.cc
@@ -207,9 +207,10 @@ void CheckWindowCreated(HWND hwnd) {
void ShowSystemMenu(HWND window) {
RECT rect;
GetWindowRect(window, &rect);
- Point point = Point(rect.left, rect.top);
+ Point point = Point(base::i18n::IsRTL() ? rect.right : rect.left, rect.top);
static const int kSystemMenuOffset = 10;
- point.Offset(kSystemMenuOffset, kSystemMenuOffset);
+ point.Offset(base::i18n::IsRTL() ? -kSystemMenuOffset : kSystemMenuOffset,
+ kSystemMenuOffset);
ShowSystemMenuAtPoint(window, point);
}
diff --git a/ui/gl/gl.gyp b/ui/gl/gl.gyp
index 4d4d658882..a45e8ce2ca 100644
--- a/ui/gl/gl.gyp
+++ b/ui/gl/gl.gyp
@@ -97,6 +97,7 @@
'gl_state_restorer.h',
'gl_surface.cc',
'gl_surface.h',
+ 'gl_surface_android.cc',
'gl_surface_mac.cc',
'gl_surface_stub.cc',
'gl_surface_stub.h',
@@ -104,6 +105,7 @@
'gl_surface_x11.cc',
'gl_surface_osmesa.cc',
'gl_surface_osmesa.h',
+ 'gl_surface_ozone.cc',
'gl_switches.cc',
'gl_switches.h',
'gl_version_info.cc',
@@ -175,6 +177,8 @@
'egl_util.h',
'gl_context_egl.cc',
'gl_context_egl.h',
+ 'gl_image_egl.cc',
+ 'gl_image_egl.h',
'gl_surface_egl.cc',
'gl_surface_egl.h',
'gl_egl_api_implementation.cc',
@@ -273,8 +277,8 @@
'gl_jni_headers',
],
'sources': [
- 'gl_image_egl.cc',
- 'gl_image_egl.h',
+ 'gl_image_android_native_buffer.cc',
+ 'gl_image_android_native_buffer.h',
],
'link_settings': {
'libraries': [
diff --git a/ui/gl/gl.target.darwin-arm.mk b/ui/gl/gl.target.darwin-arm.mk
index 8f140246df..71f86db671 100644
--- a/ui/gl/gl.target.darwin-arm.mk
+++ b/ui/gl/gl.target.darwin-arm.mk
@@ -105,6 +105,7 @@ LOCAL_SRC_FILES := \
ui/gl/gl_share_group.cc \
ui/gl/gl_state_restorer.cc \
ui/gl/gl_surface.cc \
+ ui/gl/gl_surface_android.cc \
ui/gl/gl_surface_stub.cc \
ui/gl/gl_surface_osmesa.cc \
ui/gl/gl_switches.cc \
@@ -115,10 +116,11 @@ LOCAL_SRC_FILES := \
ui/gl/sync_control_vsync_provider.cc \
ui/gl/egl_util.cc \
ui/gl/gl_context_egl.cc \
+ ui/gl/gl_image_egl.cc \
ui/gl/gl_surface_egl.cc \
ui/gl/gl_egl_api_implementation.cc \
ui/gl/gl_implementation_osmesa.cc \
- ui/gl/gl_image_egl.cc
+ ui/gl/gl_image_android_native_buffer.cc
# Flags passed to both C and C++ files.
@@ -184,9 +186,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -196,6 +196,7 @@ MY_DEFS_Debug := \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -312,9 +313,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -324,6 +323,7 @@ MY_DEFS_Release := \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/gl.target.darwin-mips.mk b/ui/gl/gl.target.darwin-mips.mk
index 614a1cd8ca..8d4cf620f1 100644
--- a/ui/gl/gl.target.darwin-mips.mk
+++ b/ui/gl/gl.target.darwin-mips.mk
@@ -105,6 +105,7 @@ LOCAL_SRC_FILES := \
ui/gl/gl_share_group.cc \
ui/gl/gl_state_restorer.cc \
ui/gl/gl_surface.cc \
+ ui/gl/gl_surface_android.cc \
ui/gl/gl_surface_stub.cc \
ui/gl/gl_surface_osmesa.cc \
ui/gl/gl_switches.cc \
@@ -115,10 +116,11 @@ LOCAL_SRC_FILES := \
ui/gl/sync_control_vsync_provider.cc \
ui/gl/egl_util.cc \
ui/gl/gl_context_egl.cc \
+ ui/gl/gl_image_egl.cc \
ui/gl/gl_surface_egl.cc \
ui/gl/gl_egl_api_implementation.cc \
ui/gl/gl_implementation_osmesa.cc \
- ui/gl/gl_image_egl.cc
+ ui/gl/gl_image_android_native_buffer.cc
# Flags passed to both C and C++ files.
@@ -183,9 +185,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -195,6 +195,7 @@ MY_DEFS_Debug := \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -310,9 +311,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -322,6 +321,7 @@ MY_DEFS_Release := \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/gl.target.darwin-x86.mk b/ui/gl/gl.target.darwin-x86.mk
index 42d1fe6baf..8db82e80b6 100644
--- a/ui/gl/gl.target.darwin-x86.mk
+++ b/ui/gl/gl.target.darwin-x86.mk
@@ -105,6 +105,7 @@ LOCAL_SRC_FILES := \
ui/gl/gl_share_group.cc \
ui/gl/gl_state_restorer.cc \
ui/gl/gl_surface.cc \
+ ui/gl/gl_surface_android.cc \
ui/gl/gl_surface_stub.cc \
ui/gl/gl_surface_osmesa.cc \
ui/gl/gl_switches.cc \
@@ -115,10 +116,11 @@ LOCAL_SRC_FILES := \
ui/gl/sync_control_vsync_provider.cc \
ui/gl/egl_util.cc \
ui/gl/gl_context_egl.cc \
+ ui/gl/gl_image_egl.cc \
ui/gl/gl_surface_egl.cc \
ui/gl/gl_egl_api_implementation.cc \
ui/gl/gl_implementation_osmesa.cc \
- ui/gl/gl_image_egl.cc
+ ui/gl/gl_image_android_native_buffer.cc
# Flags passed to both C and C++ files.
@@ -185,9 +187,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -197,6 +197,7 @@ MY_DEFS_Debug := \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -313,9 +314,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -325,6 +324,7 @@ MY_DEFS_Release := \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/gl.target.darwin-x86_64.mk b/ui/gl/gl.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..e55094c6a6
--- /dev/null
+++ b/ui/gl/gl.target.darwin-x86_64.mk
@@ -0,0 +1,441 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_gl_gl_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,skia_skia_gyp)/skia.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a \
+ $(call intermediates-dir-for,GYP,third_party_mesa_mesa_headers_gyp)/mesa_headers.stamp \
+ $(call intermediates-dir-for,GYP,ui_gl_gl_jni_headers_gyp)/gl_jni_headers.stamp
+
+### Rules for action "generate_gl_bindings":
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc: $(LOCAL_PATH)/ui/gl/generate_bindings.py $(LOCAL_PATH)/third_party/mesa/src/include/GL/glext.h $(LOCAL_PATH)/third_party/khronos/GLES2/gl2ext.h $(LOCAL_PATH)/ui/gl/GL/glextchromium.h $(LOCAL_PATH)/gpu/GLES2/gl2chromium.h $(LOCAL_PATH)/gpu/GLES2/gl2extchromium.h $(LOCAL_PATH)/third_party/khronos/EGL/eglext.h $(LOCAL_PATH)/ui/gl/EGL/eglextchromium.h $(LOCAL_PATH)/third_party/mesa/src/include/GL/wglext.h $(LOCAL_PATH)/third_party/mesa/src/include/GL/glx.h $(LOCAL_PATH)/third_party/mesa/src/include/GL/glxext.h $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: ui_gl_gl_gyp_gl_target_generate_gl_bindings ($@)"
+ $(hide)cd $(gyp_local_path)/ui/gl; mkdir -p $(gyp_shared_intermediate_dir)/ui/gl; python generate_bindings.py "--header-paths=../../third_party/khronos:../../third_party/mesa/src/include" "$(gyp_shared_intermediate_dir)/ui/gl"
+
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_egl.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_gl.cc: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_gl.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_gl.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_glx.cc: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_glx.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_glx.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_mock.cc: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_mock.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_osmesa.cc: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_osmesa.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_osmesa.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_wgl.cc: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_wgl.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_wgl.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_mock_autogen_gl.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_egl.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_gl.cc \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_gl.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_gl.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_glx.cc \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_glx.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_glx.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_mock.cc \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_mock.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_osmesa.cc \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_osmesa.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_osmesa.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_wgl.cc \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_wgl.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_wgl.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_mock_autogen_gl.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+$(gyp_intermediate_dir)/gl_bindings_autogen_gl.cc: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_gl.cc
+ mkdir -p $(@D); cp $< $@
+$(gyp_intermediate_dir)/gl_bindings_autogen_osmesa.cc: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_osmesa.cc
+ mkdir -p $(@D); cp $< $@
+$(gyp_intermediate_dir)/gl_bindings_autogen_egl.cc: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc
+ mkdir -p $(@D); cp $< $@
+LOCAL_GENERATED_SOURCES := \
+ $(gyp_intermediate_dir)/gl_bindings_autogen_gl.cc \
+ $(gyp_intermediate_dir)/gl_bindings_autogen_osmesa.cc \
+ $(gyp_intermediate_dir)/gl_bindings_autogen_egl.cc
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS := \
+ $(gyp_shared_intermediate_dir)/ui/gl
+
+LOCAL_SRC_FILES := \
+ ui/gl/android/gl_jni_registrar.cc \
+ ui/gl/android/scoped_java_surface.cc \
+ ui/gl/android/surface_texture.cc \
+ ui/gl/android/surface_texture_listener.cc \
+ ui/gl/gl_bindings_skia_in_process.cc \
+ ui/gl/gl_context.cc \
+ ui/gl/gl_context_android.cc \
+ ui/gl/gl_context_osmesa.cc \
+ ui/gl/gl_context_stub.cc \
+ ui/gl/gl_context_stub_with_extensions.cc \
+ ui/gl/gl_fence.cc \
+ ui/gl/gl_gl_api_implementation.cc \
+ ui/gl/gl_image.cc \
+ ui/gl/gl_image_android.cc \
+ ui/gl/gl_image_shm.cc \
+ ui/gl/gl_image_stub.cc \
+ ui/gl/gl_implementation.cc \
+ ui/gl/gl_implementation_android.cc \
+ ui/gl/gl_osmesa_api_implementation.cc \
+ ui/gl/gl_share_group.cc \
+ ui/gl/gl_state_restorer.cc \
+ ui/gl/gl_surface.cc \
+ ui/gl/gl_surface_android.cc \
+ ui/gl/gl_surface_stub.cc \
+ ui/gl/gl_surface_osmesa.cc \
+ ui/gl/gl_switches.cc \
+ ui/gl/gl_version_info.cc \
+ ui/gl/gpu_switching_manager.cc \
+ ui/gl/scoped_binders.cc \
+ ui/gl/scoped_make_current.cc \
+ ui/gl/sync_control_vsync_provider.cc \
+ ui/gl/egl_util.cc \
+ ui/gl/gl_context_egl.cc \
+ ui/gl/gl_image_egl.cc \
+ ui/gl/gl_surface_egl.cc \
+ ui/gl/gl_egl_api_implementation.cc \
+ ui/gl/gl_implementation_osmesa.cc \
+ ui/gl/gl_image_android_native_buffer.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -Wno-unknown-pragmas \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DGL_IMPLEMENTATION' \
+ '-DGL_GLEXT_PROTOTYPES' \
+ '-DEGL_EGLEXT_PROTOTYPES' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DMESA_EGL_NO_X11_HEADERS' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH)/third_party/swiftshader/include \
+ $(LOCAL_PATH)/third_party/khronos \
+ $(LOCAL_PATH)/third_party/mesa/src/include \
+ $(gyp_shared_intermediate_dir)/ui/gl \
+ $(LOCAL_PATH)/gpu \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -Wno-unknown-pragmas \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DGL_IMPLEMENTATION' \
+ '-DGL_GLEXT_PROTOTYPES' \
+ '-DEGL_EGLEXT_PROTOTYPES' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DMESA_EGL_NO_X11_HEADERS' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH)/third_party/swiftshader/include \
+ $(LOCAL_PATH)/third_party/khronos \
+ $(LOCAL_PATH)/third_party/mesa/src/include \
+ $(gyp_shared_intermediate_dir)/ui/gl \
+ $(LOCAL_PATH)/gpu \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_gl_gl_gyp
+
+# Alias gyp target name.
+.PHONY: gl
+gl: ui_gl_gl_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/gl/gl.target.linux-arm.mk b/ui/gl/gl.target.linux-arm.mk
index 8f140246df..71f86db671 100644
--- a/ui/gl/gl.target.linux-arm.mk
+++ b/ui/gl/gl.target.linux-arm.mk
@@ -105,6 +105,7 @@ LOCAL_SRC_FILES := \
ui/gl/gl_share_group.cc \
ui/gl/gl_state_restorer.cc \
ui/gl/gl_surface.cc \
+ ui/gl/gl_surface_android.cc \
ui/gl/gl_surface_stub.cc \
ui/gl/gl_surface_osmesa.cc \
ui/gl/gl_switches.cc \
@@ -115,10 +116,11 @@ LOCAL_SRC_FILES := \
ui/gl/sync_control_vsync_provider.cc \
ui/gl/egl_util.cc \
ui/gl/gl_context_egl.cc \
+ ui/gl/gl_image_egl.cc \
ui/gl/gl_surface_egl.cc \
ui/gl/gl_egl_api_implementation.cc \
ui/gl/gl_implementation_osmesa.cc \
- ui/gl/gl_image_egl.cc
+ ui/gl/gl_image_android_native_buffer.cc
# Flags passed to both C and C++ files.
@@ -184,9 +186,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -196,6 +196,7 @@ MY_DEFS_Debug := \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -312,9 +313,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -324,6 +323,7 @@ MY_DEFS_Release := \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/gl.target.linux-mips.mk b/ui/gl/gl.target.linux-mips.mk
index 614a1cd8ca..8d4cf620f1 100644
--- a/ui/gl/gl.target.linux-mips.mk
+++ b/ui/gl/gl.target.linux-mips.mk
@@ -105,6 +105,7 @@ LOCAL_SRC_FILES := \
ui/gl/gl_share_group.cc \
ui/gl/gl_state_restorer.cc \
ui/gl/gl_surface.cc \
+ ui/gl/gl_surface_android.cc \
ui/gl/gl_surface_stub.cc \
ui/gl/gl_surface_osmesa.cc \
ui/gl/gl_switches.cc \
@@ -115,10 +116,11 @@ LOCAL_SRC_FILES := \
ui/gl/sync_control_vsync_provider.cc \
ui/gl/egl_util.cc \
ui/gl/gl_context_egl.cc \
+ ui/gl/gl_image_egl.cc \
ui/gl/gl_surface_egl.cc \
ui/gl/gl_egl_api_implementation.cc \
ui/gl/gl_implementation_osmesa.cc \
- ui/gl/gl_image_egl.cc
+ ui/gl/gl_image_android_native_buffer.cc
# Flags passed to both C and C++ files.
@@ -183,9 +185,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -195,6 +195,7 @@ MY_DEFS_Debug := \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -310,9 +311,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -322,6 +321,7 @@ MY_DEFS_Release := \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/gl.target.linux-x86.mk b/ui/gl/gl.target.linux-x86.mk
index 42d1fe6baf..8db82e80b6 100644
--- a/ui/gl/gl.target.linux-x86.mk
+++ b/ui/gl/gl.target.linux-x86.mk
@@ -105,6 +105,7 @@ LOCAL_SRC_FILES := \
ui/gl/gl_share_group.cc \
ui/gl/gl_state_restorer.cc \
ui/gl/gl_surface.cc \
+ ui/gl/gl_surface_android.cc \
ui/gl/gl_surface_stub.cc \
ui/gl/gl_surface_osmesa.cc \
ui/gl/gl_switches.cc \
@@ -115,10 +116,11 @@ LOCAL_SRC_FILES := \
ui/gl/sync_control_vsync_provider.cc \
ui/gl/egl_util.cc \
ui/gl/gl_context_egl.cc \
+ ui/gl/gl_image_egl.cc \
ui/gl/gl_surface_egl.cc \
ui/gl/gl_egl_api_implementation.cc \
ui/gl/gl_implementation_osmesa.cc \
- ui/gl/gl_image_egl.cc
+ ui/gl/gl_image_android_native_buffer.cc
# Flags passed to both C and C++ files.
@@ -185,9 +187,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -197,6 +197,7 @@ MY_DEFS_Debug := \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -313,9 +314,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -325,6 +324,7 @@ MY_DEFS_Release := \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/gl.target.linux-x86_64.mk b/ui/gl/gl.target.linux-x86_64.mk
new file mode 100644
index 0000000000..e55094c6a6
--- /dev/null
+++ b/ui/gl/gl.target.linux-x86_64.mk
@@ -0,0 +1,441 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_gl_gl_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,skia_skia_gyp)/skia.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a \
+ $(call intermediates-dir-for,GYP,third_party_mesa_mesa_headers_gyp)/mesa_headers.stamp \
+ $(call intermediates-dir-for,GYP,ui_gl_gl_jni_headers_gyp)/gl_jni_headers.stamp
+
+### Rules for action "generate_gl_bindings":
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc: $(LOCAL_PATH)/ui/gl/generate_bindings.py $(LOCAL_PATH)/third_party/mesa/src/include/GL/glext.h $(LOCAL_PATH)/third_party/khronos/GLES2/gl2ext.h $(LOCAL_PATH)/ui/gl/GL/glextchromium.h $(LOCAL_PATH)/gpu/GLES2/gl2chromium.h $(LOCAL_PATH)/gpu/GLES2/gl2extchromium.h $(LOCAL_PATH)/third_party/khronos/EGL/eglext.h $(LOCAL_PATH)/ui/gl/EGL/eglextchromium.h $(LOCAL_PATH)/third_party/mesa/src/include/GL/wglext.h $(LOCAL_PATH)/third_party/mesa/src/include/GL/glx.h $(LOCAL_PATH)/third_party/mesa/src/include/GL/glxext.h $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: ui_gl_gl_gyp_gl_target_generate_gl_bindings ($@)"
+ $(hide)cd $(gyp_local_path)/ui/gl; mkdir -p $(gyp_shared_intermediate_dir)/ui/gl; python generate_bindings.py "--header-paths=../../third_party/khronos:../../third_party/mesa/src/include" "$(gyp_shared_intermediate_dir)/ui/gl"
+
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_egl.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_gl.cc: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_gl.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_gl.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_glx.cc: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_glx.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_glx.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_mock.cc: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_mock.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_osmesa.cc: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_osmesa.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_osmesa.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_wgl.cc: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_wgl.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_wgl.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+$(gyp_shared_intermediate_dir)/ui/gl/gl_mock_autogen_gl.h: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc ;
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_egl.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_gl.cc \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_gl.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_gl.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_glx.cc \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_glx.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_glx.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_mock.cc \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_mock.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_osmesa.cc \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_osmesa.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_osmesa.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_wgl.cc \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_wgl.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_api_autogen_wgl.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/gl_mock_autogen_gl.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+$(gyp_intermediate_dir)/gl_bindings_autogen_gl.cc: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_gl.cc
+ mkdir -p $(@D); cp $< $@
+$(gyp_intermediate_dir)/gl_bindings_autogen_osmesa.cc: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_osmesa.cc
+ mkdir -p $(@D); cp $< $@
+$(gyp_intermediate_dir)/gl_bindings_autogen_egl.cc: $(gyp_shared_intermediate_dir)/ui/gl/gl_bindings_autogen_egl.cc
+ mkdir -p $(@D); cp $< $@
+LOCAL_GENERATED_SOURCES := \
+ $(gyp_intermediate_dir)/gl_bindings_autogen_gl.cc \
+ $(gyp_intermediate_dir)/gl_bindings_autogen_osmesa.cc \
+ $(gyp_intermediate_dir)/gl_bindings_autogen_egl.cc
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS := \
+ $(gyp_shared_intermediate_dir)/ui/gl
+
+LOCAL_SRC_FILES := \
+ ui/gl/android/gl_jni_registrar.cc \
+ ui/gl/android/scoped_java_surface.cc \
+ ui/gl/android/surface_texture.cc \
+ ui/gl/android/surface_texture_listener.cc \
+ ui/gl/gl_bindings_skia_in_process.cc \
+ ui/gl/gl_context.cc \
+ ui/gl/gl_context_android.cc \
+ ui/gl/gl_context_osmesa.cc \
+ ui/gl/gl_context_stub.cc \
+ ui/gl/gl_context_stub_with_extensions.cc \
+ ui/gl/gl_fence.cc \
+ ui/gl/gl_gl_api_implementation.cc \
+ ui/gl/gl_image.cc \
+ ui/gl/gl_image_android.cc \
+ ui/gl/gl_image_shm.cc \
+ ui/gl/gl_image_stub.cc \
+ ui/gl/gl_implementation.cc \
+ ui/gl/gl_implementation_android.cc \
+ ui/gl/gl_osmesa_api_implementation.cc \
+ ui/gl/gl_share_group.cc \
+ ui/gl/gl_state_restorer.cc \
+ ui/gl/gl_surface.cc \
+ ui/gl/gl_surface_android.cc \
+ ui/gl/gl_surface_stub.cc \
+ ui/gl/gl_surface_osmesa.cc \
+ ui/gl/gl_switches.cc \
+ ui/gl/gl_version_info.cc \
+ ui/gl/gpu_switching_manager.cc \
+ ui/gl/scoped_binders.cc \
+ ui/gl/scoped_make_current.cc \
+ ui/gl/sync_control_vsync_provider.cc \
+ ui/gl/egl_util.cc \
+ ui/gl/gl_context_egl.cc \
+ ui/gl/gl_image_egl.cc \
+ ui/gl/gl_surface_egl.cc \
+ ui/gl/gl_egl_api_implementation.cc \
+ ui/gl/gl_implementation_osmesa.cc \
+ ui/gl/gl_image_android_native_buffer.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -Wno-unknown-pragmas \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DGL_IMPLEMENTATION' \
+ '-DGL_GLEXT_PROTOTYPES' \
+ '-DEGL_EGLEXT_PROTOTYPES' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DMESA_EGL_NO_X11_HEADERS' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH)/third_party/swiftshader/include \
+ $(LOCAL_PATH)/third_party/khronos \
+ $(LOCAL_PATH)/third_party/mesa/src/include \
+ $(gyp_shared_intermediate_dir)/ui/gl \
+ $(LOCAL_PATH)/gpu \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -Wno-unknown-pragmas \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DGL_IMPLEMENTATION' \
+ '-DGL_GLEXT_PROTOTYPES' \
+ '-DEGL_EGLEXT_PROTOTYPES' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DMESA_EGL_NO_X11_HEADERS' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH)/third_party/swiftshader/include \
+ $(LOCAL_PATH)/third_party/khronos \
+ $(LOCAL_PATH)/third_party/mesa/src/include \
+ $(gyp_shared_intermediate_dir)/ui/gl \
+ $(LOCAL_PATH)/gpu \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_gl_gl_gyp
+
+# Alias gyp target name.
+.PHONY: gl
+gl: ui_gl_gl_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/gl/gl_context.cc b/ui/gl/gl_context.cc
index d2deb6141e..cd9a28c387 100644
--- a/ui/gl/gl_context.cc
+++ b/ui/gl/gl_context.cc
@@ -26,20 +26,6 @@ base::LazyInstance<base::ThreadLocalPointer<GLContext> >::Leaky
current_real_context_ = LAZY_INSTANCE_INITIALIZER;
} // namespace
-GLContext::FlushEvent::FlushEvent() {
-}
-
-GLContext::FlushEvent::~FlushEvent() {
-}
-
-void GLContext::FlushEvent::Signal() {
- flag_.Set();
-}
-
-bool GLContext::FlushEvent::IsSignaled() {
- return flag_.IsSet();
-}
-
GLContext::GLContext(GLShareGroup* share_group) : share_group_(share_group) {
if (!share_group_.get())
share_group_ = new GLShareGroup;
@@ -54,13 +40,6 @@ GLContext::~GLContext() {
}
}
-scoped_refptr<GLContext::FlushEvent> GLContext::SignalFlush() {
- DCHECK(IsCurrent(NULL));
- scoped_refptr<FlushEvent> flush_event = new FlushEvent();
- flush_events_.push_back(flush_event);
- return flush_event;
-}
-
bool GLContext::GetTotalGpuMemory(size_t* bytes) {
DCHECK(bytes);
*bytes = 0;
@@ -193,12 +172,6 @@ void GLContext::SetRealGLApi() {
SetGLToRealGLApi();
}
-void GLContext::OnFlush() {
- for (size_t n = 0; n < flush_events_.size(); n++)
- flush_events_[n]->Signal();
- flush_events_.clear();
-}
-
GLContextReal::GLContextReal(GLShareGroup* share_group)
: GLContext(share_group) {}
diff --git a/ui/gl/gl_context.h b/ui/gl/gl_context.h
index b4a7a169c1..f40b1bba78 100644
--- a/ui/gl/gl_context.h
+++ b/ui/gl/gl_context.h
@@ -6,12 +6,10 @@
#define UI_GL_GL_CONTEXT_H_
#include <string>
-#include <vector>
#include "base/basictypes.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
-#include "base/synchronization/cancellation_flag.h"
#include "ui/gl/gl_share_group.h"
#include "ui/gl/gl_state_restorer.h"
#include "ui/gl/gpu_preference.h"
@@ -34,25 +32,6 @@ class GL_EXPORT GLContext : public base::RefCounted<GLContext> {
virtual bool Initialize(
GLSurface* compatible_surface, GpuPreference gpu_preference) = 0;
- class FlushEvent : public base::RefCountedThreadSafe<FlushEvent> {
- public:
- bool IsSignaled();
-
- private:
- friend class base::RefCountedThreadSafe<FlushEvent>;
- friend class GLContext;
- FlushEvent();
- virtual ~FlushEvent();
- void Signal();
-
- base::CancellationFlag flag_;
- };
-
- // Needs to be called with this context current. It will return a FlushEvent
- // that is initially unsignaled, but will transition to signaled after the
- // next glFlush() or glFinish() occurs in this context.
- scoped_refptr<FlushEvent> SignalFlush();
-
// Destroys the GL context.
virtual void Destroy() = 0;
@@ -135,9 +114,6 @@ class GL_EXPORT GLContext : public base::RefCounted<GLContext> {
// Returns the GL renderer string. The context must be current.
virtual std::string GetGLRenderer();
- // Called when glFlush()/glFinish() is called with this context current.
- void OnFlush();
-
protected:
virtual ~GLContext();
@@ -164,8 +140,6 @@ class GL_EXPORT GLContext : public base::RefCounted<GLContext> {
scoped_ptr<GLStateRestorer> state_restorer_;
scoped_ptr<GLVersionInfo> version_info_;
- std::vector<scoped_refptr<FlushEvent> > flush_events_;
-
DISALLOW_COPY_AND_ASSIGN(GLContext);
};
diff --git a/ui/gl/gl_fence.cc b/ui/gl/gl_fence.cc
index 262de48af6..f44570e2b6 100644
--- a/ui/gl/gl_fence.cc
+++ b/ui/gl/gl_fence.cc
@@ -25,11 +25,8 @@ class GLFenceNVFence: public gfx::GLFence {
// We will arbitrarily return TRUE for consistency.
glGenFencesNV(1, &fence_);
glSetFenceNV(fence_, GL_ALL_COMPLETED_NV);
- if (flush) {
+ if (flush)
glFlush();
- } else {
- flush_event_ = gfx::GLContext::GetCurrent()->SignalFlush();
- }
}
virtual bool HasCompleted() OVERRIDE {
@@ -37,15 +34,11 @@ class GLFenceNVFence: public gfx::GLFence {
}
virtual void ClientWait() OVERRIDE {
- if (!flush_event_ || flush_event_->IsSignaled()) {
- glFinishFenceNV(fence_);
- } else {
- LOG(ERROR) << "Trying to wait for uncommitted fence. Skipping...";
- }
+ glFinishFenceNV(fence_);
}
virtual void ServerWait() OVERRIDE {
- ClientWait();
+ glFinishFenceNV(fence_);
}
private:
@@ -54,18 +47,14 @@ class GLFenceNVFence: public gfx::GLFence {
}
GLuint fence_;
- scoped_refptr<gfx::GLContext::FlushEvent> flush_event_;
};
class GLFenceARBSync: public gfx::GLFence {
public:
GLFenceARBSync(bool flush) {
sync_ = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
- if (flush) {
+ if (flush)
glFlush();
- } else {
- flush_event_ = gfx::GLContext::GetCurrent()->SignalFlush();
- }
}
virtual bool HasCompleted() OVERRIDE {
@@ -80,19 +69,11 @@ class GLFenceARBSync: public gfx::GLFence {
}
virtual void ClientWait() OVERRIDE {
- if (!flush_event_ || flush_event_->IsSignaled()) {
- glClientWaitSync(sync_, GL_SYNC_FLUSH_COMMANDS_BIT, GL_TIMEOUT_IGNORED);
- } else {
- LOG(ERROR) << "Trying to wait for uncommitted fence. Skipping...";
- }
+ glClientWaitSync(sync_, GL_SYNC_FLUSH_COMMANDS_BIT, GL_TIMEOUT_IGNORED);
}
virtual void ServerWait() OVERRIDE {
- if (!flush_event_ || flush_event_->IsSignaled()) {
- glWaitSync(sync_, 0, GL_TIMEOUT_IGNORED);
- } else {
- LOG(ERROR) << "Trying to wait for uncommitted fence. Skipping...";
- }
+ glWaitSync(sync_, 0, GL_TIMEOUT_IGNORED);
}
private:
@@ -101,7 +82,6 @@ class GLFenceARBSync: public gfx::GLFence {
}
GLsync sync_;
- scoped_refptr<gfx::GLContext::FlushEvent> flush_event_;
};
#if !defined(OS_MACOSX)
@@ -110,11 +90,8 @@ class EGLFenceSync : public gfx::GLFence {
EGLFenceSync(bool flush) {
display_ = eglGetCurrentDisplay();
sync_ = eglCreateSyncKHR(display_, EGL_SYNC_FENCE_KHR, NULL);
- if (flush) {
+ if (flush)
glFlush();
- } else {
- flush_event_ = gfx::GLContext::GetCurrent()->SignalFlush();
- }
}
virtual bool HasCompleted() OVERRIDE {
@@ -125,22 +102,14 @@ class EGLFenceSync : public gfx::GLFence {
}
virtual void ClientWait() OVERRIDE {
- if (!flush_event_ || flush_event_->IsSignaled()) {
- EGLint flags = 0;
- EGLTimeKHR time = EGL_FOREVER_KHR;
- eglClientWaitSyncKHR(display_, sync_, flags, time);
- } else {
- LOG(ERROR) << "Trying to wait for uncommitted fence. Skipping...";
- }
+ EGLint flags = 0;
+ EGLTimeKHR time = EGL_FOREVER_KHR;
+ eglClientWaitSyncKHR(display_, sync_, flags, time);
}
virtual void ServerWait() OVERRIDE {
- if (!flush_event_ || flush_event_->IsSignaled()) {
- EGLint flags = 0;
- eglWaitSyncKHR(display_, sync_, flags);
- } else {
- LOG(ERROR) << "Trying to wait for uncommitted fence. Skipping...";
- }
+ EGLint flags = 0;
+ eglWaitSyncKHR(display_, sync_, flags);
}
@@ -151,15 +120,11 @@ class EGLFenceSync : public gfx::GLFence {
EGLSyncKHR sync_;
EGLDisplay display_;
- scoped_refptr<gfx::GLContext::FlushEvent> flush_event_;
};
#endif // !OS_MACOSX
// static
gfx::GLFence* CreateFence(bool flush) {
- DCHECK(gfx::GLContext::GetCurrent())
- << "Trying to create fence with no context";
-
#if !defined(OS_MACOSX)
if (gfx::g_driver_egl.ext.b_EGL_KHR_fence_sync)
return new EGLFenceSync(flush);
diff --git a/ui/gl/gl_fence.h b/ui/gl/gl_fence.h
index 021f3456f1..c1967ec9c4 100644
--- a/ui/gl/gl_fence.h
+++ b/ui/gl/gl_fence.h
@@ -16,16 +16,11 @@ class GL_EXPORT GLFence {
virtual ~GLFence();
static GLFence* Create();
-
// Creates a fence that is not guaranteed to signal until the current context
- // is flushed. It is illegal to call Client/ServerWait() on a fence without
- // having explicitly called glFlush() or glFinish() in the originating
- // context.
+ // is flushed. Use with caution.
static GLFence* CreateWithoutFlush();
-
virtual bool HasCompleted() = 0;
virtual void ClientWait() = 0;
-
// Will block the server if supported, but might fall back to blocking the
// client.
virtual void ServerWait() = 0;
diff --git a/ui/gl/gl_gl_api_implementation.cc b/ui/gl/gl_gl_api_implementation.cc
index 0965d91b45..f925f64ffa 100644
--- a/ui/gl/gl_gl_api_implementation.cc
+++ b/ui/gl/gl_gl_api_implementation.cc
@@ -343,11 +343,6 @@ void GLApiBase::InitializeBase(DriverGL* driver) {
driver_ = driver;
}
-void GLApiBase::SignalFlush() {
- DCHECK(GLContext::GetCurrent());
- GLContext::GetCurrent()->OnFlush();
-}
-
RealGLApi::RealGLApi() {
}
@@ -358,16 +353,6 @@ void RealGLApi::Initialize(DriverGL* driver) {
InitializeBase(driver);
}
-void RealGLApi::glFlushFn() {
- GLApiBase::glFlushFn();
- GLApiBase::SignalFlush();
-}
-
-void RealGLApi::glFinishFn() {
- GLApiBase::glFinishFn();
- GLApiBase::SignalFlush();
-}
-
TraceGLApi::~TraceGLApi() {
}
@@ -460,14 +445,4 @@ const GLubyte* VirtualGLApi::glGetStringFn(GLenum name) {
}
}
-void VirtualGLApi::glFlushFn() {
- GLApiBase::glFlushFn();
- GLApiBase::SignalFlush();
-}
-
-void VirtualGLApi::glFinishFn() {
- GLApiBase::glFinishFn();
- GLApiBase::SignalFlush();
-}
-
} // namespace gfx
diff --git a/ui/gl/gl_gl_api_implementation.h b/ui/gl/gl_gl_api_implementation.h
index e764ec3ce3..c87dbd1de0 100644
--- a/ui/gl/gl_gl_api_implementation.h
+++ b/ui/gl/gl_gl_api_implementation.h
@@ -41,7 +41,6 @@ class GL_EXPORT GLApiBase : public GLApi {
GLApiBase();
virtual ~GLApiBase();
void InitializeBase(DriverGL* driver);
- void SignalFlush();
DriverGL* driver_;
};
@@ -52,10 +51,6 @@ class GL_EXPORT RealGLApi : public GLApiBase {
RealGLApi();
virtual ~RealGLApi();
void Initialize(DriverGL* driver);
-
- private:
- virtual void glFinishFn() OVERRIDE;
- virtual void glFlushFn() OVERRIDE;
};
// Inserts a TRACE for every GL call.
@@ -87,12 +82,10 @@ class GL_EXPORT VirtualGLApi : public GLApiBase {
void OnReleaseVirtuallyCurrent(GLContext* virtual_context);
-private:
// Overridden functions from GLApiBase
virtual const GLubyte* glGetStringFn(GLenum name) OVERRIDE;
- virtual void glFinishFn() OVERRIDE;
- virtual void glFlushFn() OVERRIDE;
+ private:
// The real context we're running on.
GLContext* real_context_;
diff --git a/ui/gl/gl_glx_api_implementation.cc b/ui/gl/gl_glx_api_implementation.cc
index 444a1b2f20..0392c397fd 100644
--- a/ui/gl/gl_glx_api_implementation.cc
+++ b/ui/gl/gl_glx_api_implementation.cc
@@ -81,6 +81,7 @@ bool GetGLWindowSystemBindingInfoGLX(GLWindowSystemBindingInfo* info) {
info->version = version;
if (extensions)
info->extensions = extensions;
+ info->direct_rendering = !!glXIsDirect(display, glXGetCurrentContext());
return true;
}
diff --git a/ui/gl/gl_image_android.cc b/ui/gl/gl_image_android.cc
index e56dc2d074..4d04be1a4c 100644
--- a/ui/gl/gl_image_android.cc
+++ b/ui/gl/gl_image_android.cc
@@ -5,7 +5,7 @@
#include "ui/gl/gl_image.h"
#include "base/debug/trace_event.h"
-#include "ui/gl/gl_image_egl.h"
+#include "ui/gl/gl_image_android_native_buffer.h"
#include "ui/gl/gl_image_shm.h"
#include "ui/gl/gl_image_stub.h"
#include "ui/gl/gl_implementation.h"
@@ -41,8 +41,9 @@ scoped_refptr<GLImage> GLImage::CreateGLImageForGpuMemoryBuffer(
return image;
}
- case EGL_CLIENT_BUFFER: {
- scoped_refptr<GLImageEGL> image(new GLImageEGL(size));
+ case ANDROID_NATIVE_BUFFER: {
+ scoped_refptr<GLImageAndroidNativeBuffer> image(
+ new GLImageAndroidNativeBuffer(size));
if (!image->Initialize(buffer))
return NULL;
diff --git a/ui/gl/gl_image_android_native_buffer.cc b/ui/gl/gl_image_android_native_buffer.cc
new file mode 100644
index 0000000000..6d11497b2a
--- /dev/null
+++ b/ui/gl/gl_image_android_native_buffer.cc
@@ -0,0 +1,118 @@
+// Copyright 2014 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 "ui/gl/gl_image_android_native_buffer.h"
+
+#include "ui/gl/gl_surface_egl.h"
+#include "ui/gl/scoped_binders.h"
+
+namespace gfx {
+
+GLImageAndroidNativeBuffer::GLImageAndroidNativeBuffer(gfx::Size size)
+ : GLImageEGL(size),
+ release_after_use_(false),
+ in_use_(false),
+ target_(0),
+ egl_image_for_unbind_(EGL_NO_IMAGE_KHR),
+ texture_id_for_unbind_(0) {}
+
+GLImageAndroidNativeBuffer::~GLImageAndroidNativeBuffer() { Destroy(); }
+
+bool GLImageAndroidNativeBuffer::Initialize(gfx::GpuMemoryBufferHandle buffer) {
+ DCHECK(buffer.native_buffer);
+
+ EGLint attrs[] = {EGL_IMAGE_PRESERVED_KHR, EGL_TRUE, EGL_NONE};
+ return GLImageEGL::Initialize(
+ EGL_NATIVE_BUFFER_ANDROID, buffer.native_buffer, attrs);
+}
+
+void GLImageAndroidNativeBuffer::Destroy() {
+ if (egl_image_for_unbind_ != EGL_NO_IMAGE_KHR) {
+ eglDestroyImageKHR(GLSurfaceEGL::GetHardwareDisplay(),
+ egl_image_for_unbind_);
+ egl_image_for_unbind_ = EGL_NO_IMAGE_KHR;
+ }
+ if (texture_id_for_unbind_) {
+ glDeleteTextures(1, &texture_id_for_unbind_);
+ texture_id_for_unbind_ = 0;
+ }
+
+ GLImageEGL::Destroy();
+}
+
+bool GLImageAndroidNativeBuffer::BindTexImage(unsigned target) {
+ DCHECK_NE(EGL_NO_IMAGE_KHR, egl_image_);
+
+ if (target == GL_TEXTURE_RECTANGLE_ARB) {
+ LOG(ERROR) << "EGLImage cannot be bound to TEXTURE_RECTANGLE_ARB target";
+ return false;
+ }
+
+ if (target_ && target_ != target) {
+ LOG(ERROR) << "EGLImage can only be bound to one target";
+ return false;
+ }
+ target_ = target;
+
+ // Defer ImageTargetTexture2D if not currently in use.
+ if (!in_use_)
+ return true;
+
+ glEGLImageTargetTexture2DOES(target_, egl_image_);
+ DCHECK_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError());
+ return true;
+}
+
+void GLImageAndroidNativeBuffer::WillUseTexImage() {
+ DCHECK(egl_image_);
+ DCHECK(!in_use_);
+ in_use_ = true;
+ glEGLImageTargetTexture2DOES(target_, egl_image_);
+ DCHECK_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError());
+}
+
+void GLImageAndroidNativeBuffer::DidUseTexImage() {
+ DCHECK(in_use_);
+ in_use_ = false;
+
+ if (!release_after_use_)
+ return;
+
+ if (egl_image_for_unbind_ == EGL_NO_IMAGE_KHR) {
+ DCHECK_EQ(0u, texture_id_for_unbind_);
+ glGenTextures(1, &texture_id_for_unbind_);
+
+ {
+ ScopedTextureBinder texture_binder(GL_TEXTURE_2D, texture_id_for_unbind_);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+
+ char zero[4] = {0, };
+ glTexImage2D(
+ GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, &zero);
+ }
+
+ EGLint attrs[] = {EGL_IMAGE_PRESERVED_KHR, EGL_TRUE, EGL_NONE};
+ // Need to pass current EGL rendering context to eglCreateImageKHR for
+ // target type EGL_GL_TEXTURE_2D_KHR.
+ egl_image_for_unbind_ = eglCreateImageKHR(
+ GLSurfaceEGL::GetHardwareDisplay(),
+ eglGetCurrentContext(),
+ EGL_GL_TEXTURE_2D_KHR,
+ reinterpret_cast<EGLClientBuffer>(texture_id_for_unbind_),
+ attrs);
+ DCHECK_NE(EGL_NO_IMAGE_KHR, egl_image_for_unbind_)
+ << "Error creating EGLImage: " << eglGetError();
+ }
+
+ glEGLImageTargetTexture2DOES(target_, egl_image_for_unbind_);
+ DCHECK_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError());
+}
+
+void GLImageAndroidNativeBuffer::SetReleaseAfterUse() {
+ release_after_use_ = true;
+}
+
+} // namespace gfx
diff --git a/ui/gl/gl_image_android_native_buffer.h b/ui/gl/gl_image_android_native_buffer.h
new file mode 100644
index 0000000000..28fe5c1ed9
--- /dev/null
+++ b/ui/gl/gl_image_android_native_buffer.h
@@ -0,0 +1,40 @@
+// Copyright 2014 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 UI_GL_GL_IMAGE_ANDROID_NATIVE_BUFFER_H_
+#define UI_GL_GL_IMAGE_ANDROID_NATIVE_BUFFER_H_
+
+#include "ui/gl/gl_image_egl.h"
+
+namespace gfx {
+
+class GL_EXPORT GLImageAndroidNativeBuffer : public GLImageEGL {
+ public:
+ explicit GLImageAndroidNativeBuffer(gfx::Size size);
+
+ bool Initialize(gfx::GpuMemoryBufferHandle buffer);
+
+ // Overridden from GLImage:
+ virtual void Destroy() OVERRIDE;
+ virtual bool BindTexImage(unsigned target) OVERRIDE;
+ virtual void WillUseTexImage() OVERRIDE;
+ virtual void DidUseTexImage() OVERRIDE;
+ virtual void SetReleaseAfterUse() OVERRIDE;
+
+ protected:
+ virtual ~GLImageAndroidNativeBuffer();
+
+ private:
+ bool release_after_use_;
+ bool in_use_;
+ unsigned target_;
+ EGLImageKHR egl_image_for_unbind_;
+ GLuint texture_id_for_unbind_;
+
+ DISALLOW_COPY_AND_ASSIGN(GLImageAndroidNativeBuffer);
+};
+
+} // namespace gfx
+
+#endif // UI_GL_GL_IMAGE_ANDROID_NATIVE_BUFFER_H_
diff --git a/ui/gl/gl_image_egl.cc b/ui/gl/gl_image_egl.cc
index ddd2f6f5e2..5531c8d452 100644
--- a/ui/gl/gl_image_egl.cc
+++ b/ui/gl/gl_image_egl.cc
@@ -4,36 +4,24 @@
#include "ui/gl/gl_image_egl.h"
-#include "ui/gl/gl_bindings.h"
#include "ui/gl/gl_surface_egl.h"
namespace gfx {
GLImageEGL::GLImageEGL(gfx::Size size)
- : egl_image_(EGL_NO_IMAGE_KHR),
- size_(size),
- release_after_use_(false),
- in_use_(false),
- target_(0) {
-}
-
-GLImageEGL::~GLImageEGL() {
- Destroy();
-}
-
-bool GLImageEGL::Initialize(gfx::GpuMemoryBufferHandle buffer) {
- DCHECK(buffer.native_buffer);
- EGLint attrs[] = {
- EGL_IMAGE_PRESERVED_KHR, EGL_TRUE,
- EGL_NONE,
- };
- egl_image_ = eglCreateImageKHR(
- GLSurfaceEGL::GetHardwareDisplay(),
- EGL_NO_CONTEXT,
- EGL_NATIVE_BUFFER_ANDROID,
- buffer.native_buffer,
- attrs);
-
+ : egl_image_(EGL_NO_IMAGE_KHR), size_(size) {}
+
+GLImageEGL::~GLImageEGL() { Destroy(); }
+
+bool GLImageEGL::Initialize(EGLenum target,
+ EGLClientBuffer buffer,
+ const EGLint* attrs) {
+ DCHECK_EQ(EGL_NO_IMAGE_KHR, egl_image_);
+ egl_image_ = eglCreateImageKHR(GLSurfaceEGL::GetHardwareDisplay(),
+ EGL_NO_CONTEXT,
+ target,
+ buffer,
+ attrs);
if (egl_image_ == EGL_NO_IMAGE_KHR) {
EGLint error = eglGetError();
LOG(ERROR) << "Error creating EGLImage: " << error;
@@ -44,90 +32,19 @@ bool GLImageEGL::Initialize(gfx::GpuMemoryBufferHandle buffer) {
}
void GLImageEGL::Destroy() {
- if (egl_image_ == EGL_NO_IMAGE_KHR)
- return;
-
- EGLBoolean success = eglDestroyImageKHR(
- GLSurfaceEGL::GetHardwareDisplay(), egl_image_);
-
- if (success == EGL_FALSE) {
- EGLint error = eglGetError();
- LOG(ERROR) << "Error destroying EGLImage: " << error;
+ if (egl_image_ != EGL_NO_IMAGE_KHR) {
+ eglDestroyImageKHR(GLSurfaceEGL::GetHardwareDisplay(), egl_image_);
+ egl_image_ = EGL_NO_IMAGE_KHR;
}
-
- egl_image_ = EGL_NO_IMAGE_KHR;
}
-gfx::Size GLImageEGL::GetSize() {
- return size_;
-}
+gfx::Size GLImageEGL::GetSize() { return size_; }
bool GLImageEGL::BindTexImage(unsigned target) {
- if (egl_image_ == EGL_NO_IMAGE_KHR) {
- LOG(ERROR) << "NULL EGLImage in BindTexImage";
- return false;
- }
-
- if (target == GL_TEXTURE_RECTANGLE_ARB) {
- LOG(ERROR) << "EGLImage cannot be bound to TEXTURE_RECTANGLE_ARB target";
- return false;
- }
-
- if (target_ && target_ != target) {
- LOG(ERROR) << "EGLImage can only be bound to one target";
- return false;
- }
- target_ = target;
-
- // Defer ImageTargetTexture2D if not currently in use.
- if (!in_use_)
- return true;
-
- glEGLImageTargetTexture2DOES(target_, egl_image_);
+ DCHECK_NE(EGL_NO_IMAGE_KHR, egl_image_);
+ glEGLImageTargetTexture2DOES(target, egl_image_);
DCHECK_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError());
return true;
}
-void GLImageEGL::ReleaseTexImage(unsigned target) {
- // Nothing to do here as image is released after each use or there is no need
- // to release image.
-}
-
-void GLImageEGL::WillUseTexImage() {
- DCHECK(egl_image_);
- DCHECK(!in_use_);
- in_use_ = true;
- glEGLImageTargetTexture2DOES(target_, egl_image_);
- DCHECK_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError());
-}
-
-void GLImageEGL::DidUseTexImage() {
- DCHECK(in_use_);
- in_use_ = false;
-
- if (!release_after_use_)
- return;
-
- char zero[4] = { 0, };
- glTexImage2D(target_,
- 0,
- GL_RGBA,
- 1,
- 1,
- 0,
- GL_RGBA,
- GL_UNSIGNED_BYTE,
- &zero);
-}
-
-void GLImageEGL::WillModifyTexImage() {
-}
-
-void GLImageEGL::DidModifyTexImage() {
-}
-
-void GLImageEGL::SetReleaseAfterUse() {
- release_after_use_ = true;
-}
-
} // namespace gfx
diff --git a/ui/gl/gl_image_egl.h b/ui/gl/gl_image_egl.h
index 5a1b5b3647..1339654acb 100644
--- a/ui/gl/gl_image_egl.h
+++ b/ui/gl/gl_image_egl.h
@@ -5,7 +5,7 @@
#ifndef UI_GL_GL_IMAGE_EGL_H_
#define UI_GL_GL_IMAGE_EGL_H_
-#include "ui/gl/gl_bindings.h" // for EGLImageKHR
+#include "ui/gl/gl_bindings.h"
#include "ui/gl/gl_image.h"
namespace gfx {
@@ -14,29 +14,25 @@ class GL_EXPORT GLImageEGL : public GLImage {
public:
explicit GLImageEGL(gfx::Size size);
- bool Initialize(gfx::GpuMemoryBufferHandle buffer);
+ bool Initialize(EGLenum target, EGLClientBuffer buffer, const EGLint* attrs);
- // Implement GLImage.
+ // Overridden from GLImage:
virtual void Destroy() OVERRIDE;
virtual gfx::Size GetSize() OVERRIDE;
virtual bool BindTexImage(unsigned target) OVERRIDE;
- virtual void ReleaseTexImage(unsigned target) OVERRIDE;
- virtual void WillUseTexImage() OVERRIDE;
- virtual void DidUseTexImage() OVERRIDE;
- virtual void WillModifyTexImage() OVERRIDE;
- virtual void DidModifyTexImage() OVERRIDE;
- virtual void SetReleaseAfterUse() OVERRIDE;
+ virtual void ReleaseTexImage(unsigned target) OVERRIDE {}
+ virtual void WillUseTexImage() OVERRIDE {}
+ virtual void DidUseTexImage() OVERRIDE {}
+ virtual void WillModifyTexImage() OVERRIDE {}
+ virtual void DidModifyTexImage() OVERRIDE {}
protected:
virtual ~GLImageEGL();
- private:
EGLImageKHR egl_image_;
gfx::Size size_;
- bool release_after_use_;
- bool in_use_;
- unsigned target_;
+ private:
DISALLOW_COPY_AND_ASSIGN(GLImageEGL);
};
diff --git a/ui/gl/gl_image_glx.cc b/ui/gl/gl_image_glx.cc
index 018c7619fc..b68a5fe5a0 100644
--- a/ui/gl/gl_image_glx.cc
+++ b/ui/gl/gl_image_glx.cc
@@ -23,9 +23,7 @@ namespace {
// scoped_ptr<XVisualInfo, ScopedPtrXFree> foo(...);
// where "XVisualInfo" is any X type that is freed with XFree.
struct ScopedPtrXFree {
- void operator()(void* x) const {
- ::XFree(x);
- }
+ void operator()(void* x) const { ::XFree(x); }
};
int BindToTextureFormat(int depth) {
@@ -45,15 +43,12 @@ int TextureFormat(int depth) {
} // namespace anonymous
GLImageGLX::GLImageGLX(gfx::PluginWindowHandle window)
- : display_(base::MessagePumpForUI::GetDefaultXDisplay()),
- window_(window),
- pixmap_(0),
- glx_pixmap_(0) {
-}
+ : display_(base::MessagePumpForUI::GetDefaultXDisplay()),
+ window_(window),
+ pixmap_(0),
+ glx_pixmap_(0) {}
-GLImageGLX::~GLImageGLX() {
- Destroy();
-}
+GLImageGLX::~GLImageGLX() { Destroy(); }
bool GLImageGLX::Initialize() {
if (!GLSurfaceGLX::IsTextureFromPixmapSupported()) {
@@ -71,13 +66,10 @@ bool GLImageGLX::Initialize() {
templ.visualid = XVisualIDFromVisual(attributes.visual);
int num_visinfo = 0;
scoped_ptr<XVisualInfo, ScopedPtrXFree> visinfo(
- XGetVisualInfo(display_,
- VisualIDMask,
- &templ,
- &num_visinfo));
+ XGetVisualInfo(display_, VisualIDMask, &templ, &num_visinfo));
if (!visinfo.get()) {
- LOG(ERROR) << "XGetVisualInfo failed for visual id " <<
- templ.visualid << ".";
+ LOG(ERROR) << "XGetVisualInfo failed for visual id " << templ.visualid
+ << ".";
return false;
}
if (!num_visinfo) {
@@ -86,19 +78,14 @@ bool GLImageGLX::Initialize() {
}
int config_attribs[] = {
- static_cast<int>(GLX_VISUAL_ID),
- static_cast<int>(visinfo->visualid),
- GLX_DRAWABLE_TYPE, GLX_PIXMAP_BIT,
- GLX_BIND_TO_TEXTURE_TARGETS_EXT, GLX_TEXTURE_2D_EXT,
- BindToTextureFormat(visinfo->depth), GL_TRUE,
- 0
- };
+ static_cast<int>(GLX_VISUAL_ID), static_cast<int>(visinfo->visualid),
+ GLX_DRAWABLE_TYPE, GLX_PIXMAP_BIT,
+ GLX_BIND_TO_TEXTURE_TARGETS_EXT, GLX_TEXTURE_2D_EXT,
+ BindToTextureFormat(visinfo->depth), GL_TRUE,
+ 0};
int num_elements = 0;
- scoped_ptr<GLXFBConfig, ScopedPtrXFree> config(
- glXChooseFBConfig(display_,
- DefaultScreen(display_),
- config_attribs,
- &num_elements));
+ scoped_ptr<GLXFBConfig, ScopedPtrXFree> config(glXChooseFBConfig(
+ display_, DefaultScreen(display_), config_attribs, &num_elements));
if (!config.get()) {
LOG(ERROR) << "glXChooseFBConfig failed.";
return false;
@@ -124,16 +111,11 @@ bool GLImageGLX::Initialize() {
return false;
}
- int pixmap_attribs[] = {
- GLX_TEXTURE_TARGET_EXT, GLX_TEXTURE_2D_EXT,
- GLX_TEXTURE_FORMAT_EXT, TextureFormat(visinfo->depth),
- 0
- };
- glx_pixmap_ = glXCreatePixmap(
- display_,
- *config.get(),
- pixmap_,
- pixmap_attribs);
+ int pixmap_attribs[] = {GLX_TEXTURE_TARGET_EXT, GLX_TEXTURE_2D_EXT,
+ GLX_TEXTURE_FORMAT_EXT, TextureFormat(visinfo->depth),
+ 0};
+ glx_pixmap_ =
+ glXCreatePixmap(display_, *config.get(), pixmap_, pixmap_attribs);
if (!glx_pixmap_) {
LOG(ERROR) << "glXCreatePixmap failed.";
return false;
@@ -154,9 +136,7 @@ void GLImageGLX::Destroy() {
}
}
-gfx::Size GLImageGLX::GetSize() {
- return size_;
-}
+gfx::Size GLImageGLX::GetSize() { return size_; }
bool GLImageGLX::BindTexImage(unsigned target) {
if (!glx_pixmap_)
@@ -177,16 +157,4 @@ void GLImageGLX::ReleaseTexImage(unsigned target) {
glXReleaseTexImageEXT(display_, glx_pixmap_, GLX_FRONT_LEFT_EXT);
}
-void GLImageGLX::WillUseTexImage() {
-}
-
-void GLImageGLX::DidUseTexImage() {
-}
-
-void GLImageGLX::WillModifyTexImage() {
-}
-
-void GLImageGLX::DidModifyTexImage() {
-}
-
} // namespace gfx
diff --git a/ui/gl/gl_image_glx.h b/ui/gl/gl_image_glx.h
index 0fe1d3efd1..d94520200d 100644
--- a/ui/gl/gl_image_glx.h
+++ b/ui/gl/gl_image_glx.h
@@ -18,15 +18,15 @@ class GL_EXPORT GLImageGLX : public GLImage {
virtual bool Initialize();
- // Implement GLImage.
+ // Overridden from GLImage:
virtual void Destroy() OVERRIDE;
virtual gfx::Size GetSize() OVERRIDE;
virtual bool BindTexImage(unsigned target) OVERRIDE;
virtual void ReleaseTexImage(unsigned target) OVERRIDE;
- virtual void WillUseTexImage() OVERRIDE;
- virtual void DidUseTexImage() OVERRIDE;
- virtual void WillModifyTexImage() OVERRIDE;
- virtual void DidModifyTexImage() OVERRIDE;
+ virtual void WillUseTexImage() OVERRIDE {}
+ virtual void DidUseTexImage() OVERRIDE {}
+ virtual void WillModifyTexImage() OVERRIDE {}
+ virtual void DidModifyTexImage() OVERRIDE {}
protected:
virtual ~GLImageGLX();
diff --git a/ui/gl/gl_image_io_surface.cc b/ui/gl/gl_image_io_surface.cc
index 4d626512ed..e20c739cff 100644
--- a/ui/gl/gl_image_io_surface.cc
+++ b/ui/gl/gl_image_io_surface.cc
@@ -11,14 +11,11 @@
namespace gfx {
GLImageIOSurface::GLImageIOSurface(gfx::Size size)
- : io_surface_support_(IOSurfaceSupport::Initialize()),
- size_(size) {
+ : io_surface_support_(IOSurfaceSupport::Initialize()), size_(size) {
CHECK(io_surface_support_);
}
-GLImageIOSurface::~GLImageIOSurface() {
- Destroy();
-}
+GLImageIOSurface::~GLImageIOSurface() { Destroy(); }
bool GLImageIOSurface::Initialize(gfx::GpuMemoryBufferHandle buffer) {
io_surface_.reset(io_surface_support_->IOSurfaceLookup(buffer.io_surface_id));
@@ -30,12 +27,7 @@ bool GLImageIOSurface::Initialize(gfx::GpuMemoryBufferHandle buffer) {
return true;
}
-void GLImageIOSurface::Destroy() {
-}
-
-gfx::Size GLImageIOSurface::GetSize() {
- return size_;
-}
+gfx::Size GLImageIOSurface::GetSize() { return size_; }
bool GLImageIOSurface::BindTexImage(unsigned target) {
if (target != GL_TEXTURE_RECTANGLE_ARB) {
@@ -45,20 +37,20 @@ bool GLImageIOSurface::BindTexImage(unsigned target) {
return false;
}
- CGLContextObj cgl_context = static_cast<CGLContextObj>(
- GLContext::GetCurrent()->GetHandle());
+ CGLContextObj cgl_context =
+ static_cast<CGLContextObj>(GLContext::GetCurrent()->GetHandle());
DCHECK(io_surface_);
- CGLError cgl_error = io_surface_support_->CGLTexImageIOSurface2D(
- cgl_context,
- target,
- GL_RGBA,
- size_.width(),
- size_.height(),
- GL_BGRA,
- GL_UNSIGNED_INT_8_8_8_8_REV,
- io_surface_.get(),
- 0);
+ CGLError cgl_error =
+ io_surface_support_->CGLTexImageIOSurface2D(cgl_context,
+ target,
+ GL_RGBA,
+ size_.width(),
+ size_.height(),
+ GL_BGRA,
+ GL_UNSIGNED_INT_8_8_8_8_REV,
+ io_surface_.get(),
+ 0);
if (cgl_error != kCGLNoError) {
LOG(ERROR) << "Error in CGLTexImageIOSurface2D";
return false;
@@ -67,19 +59,4 @@ bool GLImageIOSurface::BindTexImage(unsigned target) {
return true;
}
-void GLImageIOSurface::ReleaseTexImage(unsigned target) {
-}
-
-void GLImageIOSurface::WillUseTexImage() {
-}
-
-void GLImageIOSurface::DidUseTexImage() {
-}
-
-void GLImageIOSurface::WillModifyTexImage() {
-}
-
-void GLImageIOSurface::DidModifyTexImage() {
-}
-
} // namespace gfx
diff --git a/ui/gl/gl_image_io_surface.h b/ui/gl/gl_image_io_surface.h
index 5739f47d05..79bf41cfbf 100644
--- a/ui/gl/gl_image_io_surface.h
+++ b/ui/gl/gl_image_io_surface.h
@@ -18,15 +18,15 @@ class GL_EXPORT GLImageIOSurface : public GLImage {
bool Initialize(gfx::GpuMemoryBufferHandle buffer);
- // Implement GLImage.
- virtual void Destroy() OVERRIDE;
+ // Overridden from GLImage:
+ virtual void Destroy() OVERRIDE {}
virtual gfx::Size GetSize() OVERRIDE;
virtual bool BindTexImage(unsigned target) OVERRIDE;
- virtual void ReleaseTexImage(unsigned target) OVERRIDE;
- virtual void WillUseTexImage() OVERRIDE;
- virtual void DidUseTexImage() OVERRIDE;
- virtual void WillModifyTexImage() OVERRIDE;
- virtual void DidModifyTexImage() OVERRIDE;
+ virtual void ReleaseTexImage(unsigned target) OVERRIDE {}
+ virtual void WillUseTexImage() OVERRIDE {}
+ virtual void DidUseTexImage() OVERRIDE {}
+ virtual void WillModifyTexImage() OVERRIDE {}
+ virtual void DidModifyTexImage() OVERRIDE {}
protected:
virtual ~GLImageIOSurface();
diff --git a/ui/gl/gl_image_shm.cc b/ui/gl/gl_image_shm.cc
index 40ad67a5dc..156d0f20ad 100644
--- a/ui/gl/gl_image_shm.cc
+++ b/ui/gl/gl_image_shm.cc
@@ -6,7 +6,12 @@
#include "base/debug/trace_event.h"
#include "base/process/process_handle.h"
-#include "ui/gl/gl_bindings.h"
+#include "ui/gl/scoped_binders.h"
+
+#if defined(OS_WIN) || defined(USE_X11) || defined(OS_ANDROID) || \
+ defined(USE_OZONE)
+#include "ui/gl/gl_surface_egl.h"
+#endif
namespace gfx {
@@ -64,12 +69,17 @@ GLenum BytesPerPixel(unsigned internalformat) {
GLImageShm::GLImageShm(gfx::Size size, unsigned internalformat)
: size_(size),
- internalformat_(internalformat) {
+ internalformat_(internalformat)
+#if defined(OS_WIN) || defined(USE_X11) || defined(OS_ANDROID) || \
+ defined(USE_OZONE)
+ ,
+ egl_texture_id_(0u),
+ egl_image_(EGL_NO_IMAGE_KHR)
+#endif
+{
}
-GLImageShm::~GLImageShm() {
- Destroy();
-}
+GLImageShm::~GLImageShm() { Destroy(); }
bool GLImageShm::Initialize(gfx::GpuMemoryBufferHandle buffer) {
if (!ValidFormat(internalformat_)) {
@@ -96,12 +106,22 @@ bool GLImageShm::Initialize(gfx::GpuMemoryBufferHandle buffer) {
}
void GLImageShm::Destroy() {
-}
+#if defined(OS_WIN) || defined(USE_X11) || defined(OS_ANDROID) || \
+ defined(USE_OZONE)
+ if (egl_image_ != EGL_NO_IMAGE_KHR) {
+ eglDestroyImageKHR(GLSurfaceEGL::GetHardwareDisplay(), egl_image_);
+ egl_image_ = EGL_NO_IMAGE_KHR;
+ }
-gfx::Size GLImageShm::GetSize() {
- return size_;
+ if (egl_texture_id_) {
+ glDeleteTextures(1, &egl_texture_id_);
+ egl_texture_id_ = 0u;
+ }
+#endif
}
+gfx::Size GLImageShm::GetSize() { return size_; }
+
bool GLImageShm::BindTexImage(unsigned target) {
TRACE_EVENT0("gpu", "GLImageShm::BindTexImage");
DCHECK(shared_memory_);
@@ -115,6 +135,54 @@ bool GLImageShm::BindTexImage(unsigned target) {
}
DCHECK(shared_memory_->memory());
+
+#if defined(OS_WIN) || defined(USE_X11) || defined(OS_ANDROID) || \
+ defined(USE_OZONE)
+ if (target == GL_TEXTURE_EXTERNAL_OES) {
+ if (egl_image_ != EGL_NO_IMAGE_KHR)
+ eglDestroyImageKHR(GLSurfaceEGL::GetHardwareDisplay(), egl_image_);
+
+ if (!egl_texture_id_)
+ glGenTextures(1, &egl_texture_id_);
+
+ {
+ ScopedTextureBinder texture_binder(GL_TEXTURE_2D, egl_texture_id_);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+
+ glTexImage2D(GL_TEXTURE_2D,
+ 0, // mip level
+ TextureFormat(internalformat_),
+ size_.width(),
+ size_.height(),
+ 0, // border
+ DataFormat(internalformat_),
+ DataType(internalformat_),
+ shared_memory_->memory());
+ }
+
+ EGLint attrs[] = {EGL_IMAGE_PRESERVED_KHR, EGL_TRUE, EGL_NONE};
+ // Need to pass current EGL rendering context to eglCreateImageKHR for
+ // target type EGL_GL_TEXTURE_2D_KHR.
+ egl_image_ =
+ eglCreateImageKHR(GLSurfaceEGL::GetHardwareDisplay(),
+ eglGetCurrentContext(),
+ EGL_GL_TEXTURE_2D_KHR,
+ reinterpret_cast<EGLClientBuffer>(egl_texture_id_),
+ attrs);
+ DCHECK_NE(EGL_NO_IMAGE_KHR, egl_image_)
+ << "Error creating EGLImage: " << eglGetError();
+
+ glEGLImageTargetTexture2DOES(target, egl_image_);
+ DCHECK_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError());
+
+ shared_memory_->Unmap();
+ return true;
+ }
+#endif
+
+ DCHECK_NE(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), target);
glTexImage2D(target,
0, // mip level
TextureFormat(internalformat_),
@@ -129,19 +197,4 @@ bool GLImageShm::BindTexImage(unsigned target) {
return true;
}
-void GLImageShm::ReleaseTexImage(unsigned target) {
-}
-
-void GLImageShm::WillUseTexImage() {
-}
-
-void GLImageShm::DidUseTexImage() {
-}
-
-void GLImageShm::WillModifyTexImage() {
-}
-
-void GLImageShm::DidModifyTexImage() {
-}
-
} // namespace gfx
diff --git a/ui/gl/gl_image_shm.h b/ui/gl/gl_image_shm.h
index fea9d33df5..079bab90d0 100644
--- a/ui/gl/gl_image_shm.h
+++ b/ui/gl/gl_image_shm.h
@@ -6,6 +6,7 @@
#define UI_GL_GL_IMAGE_SHM_H_
#include "base/memory/scoped_ptr.h"
+#include "ui/gl/gl_bindings.h"
#include "ui/gl/gl_image.h"
namespace gfx {
@@ -20,11 +21,11 @@ class GL_EXPORT GLImageShm : public GLImage {
virtual void Destroy() OVERRIDE;
virtual gfx::Size GetSize() OVERRIDE;
virtual bool BindTexImage(unsigned target) OVERRIDE;
- virtual void ReleaseTexImage(unsigned target) OVERRIDE;
- virtual void WillUseTexImage() OVERRIDE;
- virtual void DidUseTexImage() OVERRIDE;
- virtual void WillModifyTexImage() OVERRIDE;
- virtual void DidModifyTexImage() OVERRIDE;
+ virtual void ReleaseTexImage(unsigned target) OVERRIDE {}
+ virtual void WillUseTexImage() OVERRIDE {}
+ virtual void DidUseTexImage() OVERRIDE {}
+ virtual void WillModifyTexImage() OVERRIDE {}
+ virtual void DidModifyTexImage() OVERRIDE {}
protected:
virtual ~GLImageShm();
@@ -33,6 +34,11 @@ class GL_EXPORT GLImageShm : public GLImage {
scoped_ptr<base::SharedMemory> shared_memory_;
gfx::Size size_;
unsigned internalformat_;
+#if defined(OS_WIN) || defined(USE_X11) || defined(OS_ANDROID) || \
+ defined(USE_OZONE)
+ GLuint egl_texture_id_;
+ EGLImageKHR egl_image_;
+#endif
DISALLOW_COPY_AND_ASSIGN(GLImageShm);
};
diff --git a/ui/gl/gl_image_stub.cc b/ui/gl/gl_image_stub.cc
index 2a5ecded62..d789ce50e6 100644
--- a/ui/gl/gl_image_stub.cc
+++ b/ui/gl/gl_image_stub.cc
@@ -6,37 +6,12 @@
namespace gfx {
-GLImageStub::GLImageStub() {
-}
+GLImageStub::GLImageStub() {}
-GLImageStub::~GLImageStub() {
- Destroy();
-}
+GLImageStub::~GLImageStub() { Destroy(); }
-void GLImageStub::Destroy() {
-}
+gfx::Size GLImageStub::GetSize() { return gfx::Size(1, 1); }
-gfx::Size GLImageStub::GetSize() {
- return gfx::Size(1, 1);
-}
-
-bool GLImageStub::BindTexImage(unsigned target) {
- return true;
-}
-
-void GLImageStub::ReleaseTexImage(unsigned target) {
-}
-
-void GLImageStub::WillUseTexImage() {
-}
-
-void GLImageStub::DidUseTexImage() {
-}
-
-void GLImageStub::WillModifyTexImage() {
-}
-
-void GLImageStub::DidModifyTexImage() {
-}
+bool GLImageStub::BindTexImage(unsigned target) { return true; }
} // namespace gfx
diff --git a/ui/gl/gl_image_stub.h b/ui/gl/gl_image_stub.h
index e2593efd89..5f2fdb2fe7 100644
--- a/ui/gl/gl_image_stub.h
+++ b/ui/gl/gl_image_stub.h
@@ -14,15 +14,15 @@ class GL_EXPORT GLImageStub : public GLImage {
public:
GLImageStub();
- // Implement GLImage.
- virtual void Destroy() OVERRIDE;
+ // Overridden from GLImage:
+ virtual void Destroy() OVERRIDE {}
virtual gfx::Size GetSize() OVERRIDE;
virtual bool BindTexImage(unsigned target) OVERRIDE;
- virtual void ReleaseTexImage(unsigned target) OVERRIDE;
- virtual void WillUseTexImage() OVERRIDE;
- virtual void DidUseTexImage() OVERRIDE;
- virtual void WillModifyTexImage() OVERRIDE;
- virtual void DidModifyTexImage() OVERRIDE;
+ virtual void ReleaseTexImage(unsigned target) OVERRIDE {}
+ virtual void WillUseTexImage() OVERRIDE {}
+ virtual void DidUseTexImage() OVERRIDE {}
+ virtual void WillModifyTexImage() OVERRIDE {}
+ virtual void DidModifyTexImage() OVERRIDE {}
protected:
virtual ~GLImageStub();
diff --git a/ui/gl/gl_implementation.cc b/ui/gl/gl_implementation.cc
index a7db8b05dd..9d6b34ea1c 100644
--- a/ui/gl/gl_implementation.cc
+++ b/ui/gl/gl_implementation.cc
@@ -161,4 +161,7 @@ DisableNullDrawGLBindings::~DisableNullDrawGLBindings() {
SetNullDrawGLBindingsEnabledGL(initial_enabled_);
}
+GLWindowSystemBindingInfo::GLWindowSystemBindingInfo()
+ : direct_rendering(true) {}
+
} // namespace gfx
diff --git a/ui/gl/gl_implementation.h b/ui/gl/gl_implementation.h
index 6f4eaf7fa0..7319b47c4d 100644
--- a/ui/gl/gl_implementation.h
+++ b/ui/gl/gl_implementation.h
@@ -27,10 +27,12 @@ enum GLImplementation {
kGLImplementationMockGL
};
-struct GLWindowSystemBindingInfo {
+struct GL_EXPORT GLWindowSystemBindingInfo {
+ GLWindowSystemBindingInfo();
std::string vendor;
std::string version;
std::string extensions;
+ bool direct_rendering;
};
void GetAllowedGLImplementations(std::vector<GLImplementation>* impls);
diff --git a/ui/gl/gl_implementation_osmesa.cc b/ui/gl/gl_implementation_osmesa.cc
index f090735ca8..c8ef8745b0 100644
--- a/ui/gl/gl_implementation_osmesa.cc
+++ b/ui/gl/gl_implementation_osmesa.cc
@@ -17,10 +17,11 @@ namespace gfx {
// Load a library, printing an error message on failure.
base::NativeLibrary LoadLibrary(const base::FilePath& filename) {
- std::string error;
+ base::NativeLibraryLoadError error;
base::NativeLibrary library = base::LoadNativeLibrary(filename, &error);
if (!library) {
- DVLOG(1) << "Failed to load " << filename.MaybeAsASCII() << ": " << error;
+ DVLOG(1) << "Failed to load " << filename.MaybeAsASCII() << ": "
+ << error.ToString();
return NULL;
}
return library;
diff --git a/ui/gl/gl_jni_headers.target.darwin-arm.mk b/ui/gl/gl_jni_headers.target.darwin-arm.mk
index eb01578542..61125a4762 100644
--- a/ui/gl/gl_jni_headers.target.darwin-arm.mk
+++ b/ui/gl/gl_jni_headers.target.darwin-arm.mk
@@ -108,6 +108,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -190,6 +191,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/gl_jni_headers.target.darwin-mips.mk b/ui/gl/gl_jni_headers.target.darwin-mips.mk
index e57c0568dc..dbd612a852 100644
--- a/ui/gl/gl_jni_headers.target.darwin-mips.mk
+++ b/ui/gl/gl_jni_headers.target.darwin-mips.mk
@@ -107,6 +107,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -188,6 +189,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/gl_jni_headers.target.darwin-x86.mk b/ui/gl/gl_jni_headers.target.darwin-x86.mk
index a6ad7523b1..95f6dc7fe6 100644
--- a/ui/gl/gl_jni_headers.target.darwin-x86.mk
+++ b/ui/gl/gl_jni_headers.target.darwin-x86.mk
@@ -109,6 +109,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -191,6 +192,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/gl_jni_headers.target.darwin-x86_64.mk b/ui/gl/gl_jni_headers.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..dcbc2c3eac
--- /dev/null
+++ b/ui/gl/gl_jni_headers.target.darwin-x86_64.mk
@@ -0,0 +1,247 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := ui_gl_gl_jni_headers_gyp
+LOCAL_MODULE_STEM := gl_jni_headers
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,ui_gl_surface_jni_headers_gyp)/surface_jni_headers.stamp
+
+
+### Generated for rule "ui_gl_gl_gyp_gl_jni_headers_target_generate_jni_headers":
+# "{'inputs': ['../../base/android/jni_generator/jni_generator.py', '../../android_webview/build/jarjar-rules.txt'], 'process_outputs_as_sources': '1', 'extension': 'java', 'outputs': ['$(gyp_shared_intermediate_dir)/ui/gl/jni/%(INPUT_ROOT)s_jni.h'], 'rule_name': 'generate_jni_headers', 'rule_sources': ['../android/java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java', '../android/java/src/org/chromium/ui/gl/SurfaceTextureListener.java'], 'action': ['../../base/android/jni_generator/jni_generator.py', '--input_file', '$(RULE_SOURCES)', '--output_dir', '$(gyp_shared_intermediate_dir)/ui/gl/jni', '--includes', 'base/android/jni_generator/jni_generator_helper.h', '--optimize_generation', '0', '--jarjar', '../../android_webview/build/jarjar-rules.txt', '--ptr_type', 'long'], 'message': 'Generating JNI bindings from $(RULE_SOURCES)'}":
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTexturePlatformWrapper_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTexturePlatformWrapper_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTexturePlatformWrapper_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTexturePlatformWrapper_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTexturePlatformWrapper_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/gl/jni; cd $(gyp_local_path)/ui/gl; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java --output_dir "$(gyp_shared_intermediate_dir)/ui/gl/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_gl_gl_jni_headers_gyp_rule_trigger
+ui_gl_gl_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTexturePlatformWrapper_jni.h
+
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTextureListener_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTextureListener_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTextureListener_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTextureListener_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTextureListener_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/gl/SurfaceTextureListener.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/gl/jni; cd $(gyp_local_path)/ui/gl; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/gl/SurfaceTextureListener.java --output_dir "$(gyp_shared_intermediate_dir)/ui/gl/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_gl_gl_jni_headers_gyp_rule_trigger
+ui_gl_gl_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTextureListener_jni.h
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTexturePlatformWrapper_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTextureListener_jni.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_GENERATED_SOURCES := \
+ $(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTexturePlatformWrapper_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTextureListener_jni.h \
+ ui_gl_gl_jni_headers_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_gl_gl_jni_headers_gyp
+
+# Alias gyp target name.
+.PHONY: gl_jni_headers
+gl_jni_headers: ui_gl_gl_jni_headers_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/ui/gl/gl_jni_headers.target.linux-arm.mk b/ui/gl/gl_jni_headers.target.linux-arm.mk
index eb01578542..61125a4762 100644
--- a/ui/gl/gl_jni_headers.target.linux-arm.mk
+++ b/ui/gl/gl_jni_headers.target.linux-arm.mk
@@ -108,6 +108,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -190,6 +191,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/gl_jni_headers.target.linux-mips.mk b/ui/gl/gl_jni_headers.target.linux-mips.mk
index e57c0568dc..dbd612a852 100644
--- a/ui/gl/gl_jni_headers.target.linux-mips.mk
+++ b/ui/gl/gl_jni_headers.target.linux-mips.mk
@@ -107,6 +107,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -188,6 +189,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/gl_jni_headers.target.linux-x86.mk b/ui/gl/gl_jni_headers.target.linux-x86.mk
index a6ad7523b1..95f6dc7fe6 100644
--- a/ui/gl/gl_jni_headers.target.linux-x86.mk
+++ b/ui/gl/gl_jni_headers.target.linux-x86.mk
@@ -109,6 +109,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -191,6 +192,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/gl_jni_headers.target.linux-x86_64.mk b/ui/gl/gl_jni_headers.target.linux-x86_64.mk
new file mode 100644
index 0000000000..dcbc2c3eac
--- /dev/null
+++ b/ui/gl/gl_jni_headers.target.linux-x86_64.mk
@@ -0,0 +1,247 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := ui_gl_gl_jni_headers_gyp
+LOCAL_MODULE_STEM := gl_jni_headers
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,ui_gl_surface_jni_headers_gyp)/surface_jni_headers.stamp
+
+
+### Generated for rule "ui_gl_gl_gyp_gl_jni_headers_target_generate_jni_headers":
+# "{'inputs': ['../../base/android/jni_generator/jni_generator.py', '../../android_webview/build/jarjar-rules.txt'], 'process_outputs_as_sources': '1', 'extension': 'java', 'outputs': ['$(gyp_shared_intermediate_dir)/ui/gl/jni/%(INPUT_ROOT)s_jni.h'], 'rule_name': 'generate_jni_headers', 'rule_sources': ['../android/java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java', '../android/java/src/org/chromium/ui/gl/SurfaceTextureListener.java'], 'action': ['../../base/android/jni_generator/jni_generator.py', '--input_file', '$(RULE_SOURCES)', '--output_dir', '$(gyp_shared_intermediate_dir)/ui/gl/jni', '--includes', 'base/android/jni_generator/jni_generator_helper.h', '--optimize_generation', '0', '--jarjar', '../../android_webview/build/jarjar-rules.txt', '--ptr_type', 'long'], 'message': 'Generating JNI bindings from $(RULE_SOURCES)'}":
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTexturePlatformWrapper_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTexturePlatformWrapper_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTexturePlatformWrapper_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTexturePlatformWrapper_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTexturePlatformWrapper_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/gl/jni; cd $(gyp_local_path)/ui/gl; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java --output_dir "$(gyp_shared_intermediate_dir)/ui/gl/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_gl_gl_jni_headers_gyp_rule_trigger
+ui_gl_gl_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTexturePlatformWrapper_jni.h
+
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTextureListener_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTextureListener_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTextureListener_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTextureListener_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTextureListener_jni.h: $(LOCAL_PATH)/ui/android/java/src/org/chromium/ui/gl/SurfaceTextureListener.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(LOCAL_PATH)/android_webview/build/jarjar-rules.txt $(GYP_TARGET_DEPENDENCIES)
+ mkdir -p $(gyp_shared_intermediate_dir)/ui/gl/jni; cd $(gyp_local_path)/ui/gl; ../../base/android/jni_generator/jni_generator.py --input_file ../android/java/src/org/chromium/ui/gl/SurfaceTextureListener.java --output_dir "$(gyp_shared_intermediate_dir)/ui/gl/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0 --jarjar ../../android_webview/build/jarjar-rules.txt --ptr_type long
+
+.PHONY: ui_gl_gl_jni_headers_gyp_rule_trigger
+ui_gl_gl_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTextureListener_jni.h
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTexturePlatformWrapper_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTextureListener_jni.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_GENERATED_SOURCES := \
+ $(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTexturePlatformWrapper_jni.h \
+ $(gyp_shared_intermediate_dir)/ui/gl/jni/SurfaceTextureListener_jni.h \
+ ui_gl_gl_jni_headers_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_gl_gl_jni_headers_gyp
+
+# Alias gyp target name.
+.PHONY: gl_jni_headers
+gl_jni_headers: ui_gl_gl_jni_headers_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/ui/gl/gl_state_restorer.h b/ui/gl/gl_state_restorer.h
index 5c142140aa..7edc998913 100644
--- a/ui/gl/gl_state_restorer.h
+++ b/ui/gl/gl_state_restorer.h
@@ -20,6 +20,7 @@ class GL_EXPORT GLStateRestorer {
virtual bool IsInitialized() = 0;
virtual void RestoreState(const GLStateRestorer* prev_state) = 0;
virtual void RestoreAllTextureUnitBindings() = 0;
+ virtual void RestoreActiveTextureUnitBinding(unsigned int target) = 0;
virtual void RestoreFramebufferBindings() = 0;
DISALLOW_COPY_AND_ASSIGN(GLStateRestorer);
diff --git a/ui/gl/gl_surface.cc b/ui/gl/gl_surface.cc
index 5d35b33a80..4e74f49edd 100644
--- a/ui/gl/gl_surface.cc
+++ b/ui/gl/gl_surface.cc
@@ -177,18 +177,8 @@ bool GLSurface::DeferDraws() {
return false;
}
-std::string GLSurface::GetExtensions() {
- return std::string();
-}
-
-bool GLSurface::HasExtension(const char* name) {
- std::string extensions = GetExtensions();
- extensions += " ";
-
- std::string delimited_name(name);
- delimited_name += " ";
-
- return extensions.find(delimited_name) != std::string::npos;
+bool GLSurface::SupportsPostSubBuffer() {
+ return false;
}
unsigned int GLSurface::GetBackingFrameBufferObject() {
@@ -294,8 +284,8 @@ bool GLSurfaceAdapter::PostSubBuffer(int x, int y, int width, int height) {
return surface_->PostSubBuffer(x, y, width, height);
}
-std::string GLSurfaceAdapter::GetExtensions() {
- return surface_->GetExtensions();
+bool GLSurfaceAdapter::SupportsPostSubBuffer() {
+ return surface_->SupportsPostSubBuffer();
}
gfx::Size GLSurfaceAdapter::GetSize() {
diff --git a/ui/gl/gl_surface.h b/ui/gl/gl_surface.h
index f7a02f0428..70336ba6df 100644
--- a/ui/gl/gl_surface.h
+++ b/ui/gl/gl_surface.h
@@ -57,11 +57,8 @@ class GL_EXPORT GLSurface : public base::RefCounted<GLSurface> {
// Get the underlying platform specific surface "handle".
virtual void* GetHandle() = 0;
- // Returns space separated list of surface specific extensions.
- // The surface must be current.
- virtual std::string GetExtensions();
-
- bool HasExtension(const char* name);
+ // Returns whether or not the surface supports PostSubBuffer.
+ virtual bool SupportsPostSubBuffer();
// Returns the internal frame buffer object name if the surface is backed by
// FBO. Otherwise returns 0.
@@ -147,7 +144,7 @@ class GL_EXPORT GLSurfaceAdapter : public GLSurface {
virtual bool IsOffscreen() OVERRIDE;
virtual bool SwapBuffers() OVERRIDE;
virtual bool PostSubBuffer(int x, int y, int width, int height) OVERRIDE;
- virtual std::string GetExtensions() OVERRIDE;
+ virtual bool SupportsPostSubBuffer() OVERRIDE;
virtual gfx::Size GetSize() OVERRIDE;
virtual void* GetHandle() OVERRIDE;
virtual unsigned int GetBackingFrameBufferObject() OVERRIDE;
diff --git a/ui/gl/gl_surface_android.cc b/ui/gl/gl_surface_android.cc
new file mode 100644
index 0000000000..9452232dc7
--- /dev/null
+++ b/ui/gl/gl_surface_android.cc
@@ -0,0 +1,89 @@
+// Copyright 2014 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 "ui/gl/gl_surface.h"
+
+#include "base/logging.h"
+#include "base/memory/ref_counted.h"
+#include "third_party/khronos/EGL/egl.h"
+#include "ui/gfx/native_widget_types.h"
+#include "ui/gl/gl_implementation.h"
+#include "ui/gl/gl_surface_egl.h"
+#include "ui/gl/gl_surface_osmesa.h"
+#include "ui/gl/gl_surface_stub.h"
+
+namespace gfx {
+
+// static
+bool GLSurface::InitializeOneOffInternal() {
+ switch (GetGLImplementation()) {
+ case kGLImplementationEGLGLES2:
+ if (!GLSurfaceEGL::InitializeOneOff()) {
+ LOG(ERROR) << "GLSurfaceEGL::InitializeOneOff failed.";
+ return false;
+ }
+ default:
+ break;
+ }
+ return true;
+}
+
+// static
+scoped_refptr<GLSurface> GLSurface::CreateViewGLSurface(
+ gfx::AcceleratedWidget window) {
+
+ if (GetGLImplementation() == kGLImplementationOSMesaGL) {
+ scoped_refptr<GLSurface> surface(new GLSurfaceOSMesaHeadless());
+ if (!surface->Initialize())
+ return NULL;
+ return surface;
+ }
+ DCHECK(GetGLImplementation() == kGLImplementationEGLGLES2);
+ if (window != kNullAcceleratedWidget) {
+ scoped_refptr<GLSurface> surface = new NativeViewGLSurfaceEGL(window);
+ if (surface->Initialize())
+ return surface;
+ } else {
+ scoped_refptr<GLSurface> surface = new GLSurfaceStub();
+ if (surface->Initialize())
+ return surface;
+ }
+ return NULL;
+}
+
+// static
+scoped_refptr<GLSurface> GLSurface::CreateOffscreenGLSurface(
+ const gfx::Size& size) {
+ switch (GetGLImplementation()) {
+ case kGLImplementationOSMesaGL: {
+ scoped_refptr<GLSurface> surface(new GLSurfaceOSMesa(1, size));
+ if (!surface->Initialize())
+ return NULL;
+
+ return surface;
+ }
+ case kGLImplementationEGLGLES2: {
+ scoped_refptr<GLSurface> surface;
+ if (GLSurfaceEGL::IsEGLSurfacelessContextSupported() &&
+ (size.width() == 0 && size.height() == 0)) {
+ surface = new SurfacelessEGL(size);
+ } else {
+ surface = new PbufferGLSurfaceEGL(size);
+ }
+
+ if (!surface->Initialize())
+ return NULL;
+ return surface;
+ }
+ default:
+ NOTREACHED();
+ return NULL;
+ }
+}
+
+EGLNativeDisplayType GetPlatformDefaultEGLNativeDisplay() {
+ return EGL_DEFAULT_DISPLAY;
+}
+
+} // namespace gfx
diff --git a/ui/gl/gl_surface_egl.cc b/ui/gl/gl_surface_egl.cc
index a2beccdfc1..e8e301a957 100644
--- a/ui/gl/gl_surface_egl.cc
+++ b/ui/gl/gl_surface_egl.cc
@@ -13,7 +13,6 @@
#include "base/android/sys_utils.h"
#endif
-#include "base/command_line.h"
#include "base/debug/trace_event.h"
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
@@ -38,11 +37,6 @@ extern "C" {
#include "ui/gfx/ozone/surface_factory_ozone.h"
#endif
-// From ANGLE's egl/eglext.h.
-#if !defined(EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE)
-#define EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE \
- reinterpret_cast<EGLNativeDisplayType>(-2)
-#endif
#if !defined(EGL_FIXED_SIZE_ANGLE)
#define EGL_FIXED_SIZE_ANGLE 0x3201
#endif
@@ -127,26 +121,7 @@ bool GLSurfaceEGL::InitializeOneOff() {
if (initialized)
return true;
-#if defined(USE_X11)
- g_native_display = base::MessagePumpForUI::GetDefaultXDisplay();
-#elif defined(OS_WIN)
- g_native_display = EGL_DEFAULT_DISPLAY;
- if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableD3D11) &&
- CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableD3D11)) {
- g_native_display = EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE;
- }
-#elif defined(USE_OZONE)
- gfx::SurfaceFactoryOzone* surface_factory =
- gfx::SurfaceFactoryOzone::GetInstance();
- if (surface_factory->InitializeHardware() !=
- gfx::SurfaceFactoryOzone::INITIALIZED) {
- LOG(ERROR) << "OZONE failed to initialize hardware";
- return false;
- }
- g_native_display = surface_factory->GetNativeDisplay();
-#else
- g_native_display = EGL_DEFAULT_DISPLAY;
-#endif
+ g_native_display = GetPlatformDefaultEGLNativeDisplay();
g_display = eglGetDisplay(g_native_display);
if (!g_display) {
LOG(ERROR) << "eglGetDisplay failed with error " << GetLastEGLErrorString();
@@ -192,7 +167,8 @@ bool GLSurfaceEGL::InitializeOneOff() {
#if defined(USE_OZONE)
const EGLint* config_attribs =
- surface_factory->GetEGLSurfaceProperties(choose_attributes);
+ SurfaceFactoryOzone::GetInstance()->GetEGLSurfaceProperties(
+ choose_attributes);
#else
const EGLint* config_attribs = choose_attributes;
#endif
@@ -328,9 +304,13 @@ bool GLSurfaceEGL::IsCreateContextRobustnessSupported() {
return g_egl_create_context_robustness_supported;
}
+bool GLSurfaceEGL::IsEGLSurfacelessContextSupported() {
+ return g_egl_surfaceless_context_supported;
+}
+
GLSurfaceEGL::~GLSurfaceEGL() {}
-NativeViewGLSurfaceEGL::NativeViewGLSurfaceEGL(gfx::AcceleratedWidget window)
+NativeViewGLSurfaceEGL::NativeViewGLSurfaceEGL(EGLNativeWindowType window)
: window_(window),
surface_(NULL),
supports_post_sub_buffer_(false),
@@ -350,11 +330,6 @@ bool NativeViewGLSurfaceEGL::Initialize(
scoped_ptr<VSyncProvider> sync_provider) {
DCHECK(!surface_);
- if (window_ == kNullAcceleratedWidget) {
- LOG(ERROR) << "Trying to create surface without window.";
- return false;
- }
-
if (!GetDisplay()) {
LOG(ERROR) << "Trying to create surface with invalid display.";
return false;
@@ -559,13 +534,8 @@ EGLSurface NativeViewGLSurfaceEGL::GetHandle() {
return surface_;
}
-std::string NativeViewGLSurfaceEGL::GetExtensions() {
- std::string extensions = GLSurface::GetExtensions();
- if (supports_post_sub_buffer_) {
- extensions += extensions.empty() ? "" : " ";
- extensions += "GL_CHROMIUM_post_sub_buffer";
- }
- return extensions;
+bool NativeViewGLSurfaceEGL::SupportsPostSubBuffer() {
+ return supports_post_sub_buffer_;
}
bool NativeViewGLSurfaceEGL::PostSubBuffer(
@@ -766,111 +736,4 @@ void* SurfacelessEGL::GetShareHandle() {
SurfacelessEGL::~SurfacelessEGL() {
}
-#if defined(ANDROID) || defined(USE_OZONE)
-
-// A thin subclass of |GLSurfaceOSMesa| that can be used in place
-// of a native hardware-provided surface when a native surface
-// provider is not available.
-class GLSurfaceOSMesaHeadless : public GLSurfaceOSMesa {
- public:
- explicit GLSurfaceOSMesaHeadless(gfx::AcceleratedWidget window);
-
- virtual bool IsOffscreen() OVERRIDE;
- virtual bool SwapBuffers() OVERRIDE;
-
- protected:
- virtual ~GLSurfaceOSMesaHeadless();
-
- private:
-
- DISALLOW_COPY_AND_ASSIGN(GLSurfaceOSMesaHeadless);
-};
-
-bool GLSurfaceOSMesaHeadless::IsOffscreen() { return false; }
-
-bool GLSurfaceOSMesaHeadless::SwapBuffers() { return true; }
-
-GLSurfaceOSMesaHeadless::GLSurfaceOSMesaHeadless(gfx::AcceleratedWidget window)
- : GLSurfaceOSMesa(OSMESA_BGRA, gfx::Size(1, 1)) {
- DCHECK(window);
-}
-
-GLSurfaceOSMesaHeadless::~GLSurfaceOSMesaHeadless() { Destroy(); }
-
-// static
-bool GLSurface::InitializeOneOffInternal() {
- switch (GetGLImplementation()) {
- case kGLImplementationEGLGLES2:
- if (!GLSurfaceEGL::InitializeOneOff()) {
- LOG(ERROR) << "GLSurfaceEGL::InitializeOneOff failed.";
- return false;
- }
- default:
- break;
- }
- return true;
-}
-
-// static
-scoped_refptr<GLSurface>
-GLSurface::CreateViewGLSurface(gfx::AcceleratedWidget window) {
-
- if (GetGLImplementation() == kGLImplementationOSMesaGL) {
- scoped_refptr<GLSurface> surface(new GLSurfaceOSMesaHeadless(window));
- if (!surface->Initialize())
- return NULL;
- return surface;
- }
- DCHECK(GetGLImplementation() == kGLImplementationEGLGLES2);
- if (window) {
- scoped_refptr<NativeViewGLSurfaceEGL> surface;
- scoped_ptr<VSyncProvider> sync_provider;
-#if defined(USE_OZONE)
- window = gfx::SurfaceFactoryOzone::GetInstance()->RealizeAcceleratedWidget(
- window);
- sync_provider =
- gfx::SurfaceFactoryOzone::GetInstance()->CreateVSyncProvider(window);
-#endif
- surface = new NativeViewGLSurfaceEGL(window);
- if(surface->Initialize(sync_provider.Pass()))
- return surface;
- } else {
- scoped_refptr<GLSurface> surface = new GLSurfaceStub();
- if (surface->Initialize())
- return surface;
- }
- return NULL;
-}
-
-// static
-scoped_refptr<GLSurface>
-GLSurface::CreateOffscreenGLSurface(const gfx::Size& size) {
- switch (GetGLImplementation()) {
- case kGLImplementationOSMesaGL: {
- scoped_refptr<GLSurface> surface(new GLSurfaceOSMesa(1, size));
- if (!surface->Initialize())
- return NULL;
-
- return surface;
- }
- case kGLImplementationEGLGLES2: {
- scoped_refptr<GLSurface> surface;
- if (g_egl_surfaceless_context_supported &&
- (size.width() == 0 && size.height() == 0)) {
- surface = new SurfacelessEGL(size);
- } else
- surface = new PbufferGLSurfaceEGL(size);
-
- if (!surface->Initialize())
- return NULL;
- return surface;
- }
- default:
- NOTREACHED();
- return NULL;
- }
-}
-
-#endif
-
} // namespace gfx
diff --git a/ui/gl/gl_surface_egl.h b/ui/gl/gl_surface_egl.h
index 73ec213c2c..4c2892822e 100644
--- a/ui/gl/gl_surface_egl.h
+++ b/ui/gl/gl_surface_egl.h
@@ -13,7 +13,6 @@
#include "base/compiler_specific.h"
#include "base/time/time.h"
-#include "ui/gfx/native_widget_types.h"
#include "ui/gfx/size.h"
#include "ui/gfx/vsync_provider.h"
#include "ui/gl/gl_bindings.h"
@@ -21,6 +20,9 @@
namespace gfx {
+// Get default EGL display for GLSurfaceEGL (differs by platform).
+EGLNativeDisplayType GetPlatformDefaultEGLNativeDisplay();
+
// Interface for EGL surface.
class GL_EXPORT GLSurfaceEGL : public GLSurface {
public:
@@ -39,6 +41,7 @@ class GL_EXPORT GLSurfaceEGL : public GLSurface {
static const char* GetEGLExtensions();
static bool HasEGLExtension(const char* name);
static bool IsCreateContextRobustnessSupported();
+ static bool IsEGLSurfacelessContextSupported();
protected:
virtual ~GLSurfaceEGL();
@@ -50,7 +53,7 @@ class GL_EXPORT GLSurfaceEGL : public GLSurface {
// Encapsulates an EGL surface bound to a view.
class GL_EXPORT NativeViewGLSurfaceEGL : public GLSurfaceEGL {
public:
- explicit NativeViewGLSurfaceEGL(gfx::AcceleratedWidget window);
+ explicit NativeViewGLSurfaceEGL(EGLNativeWindowType window);
// Implement GLSurface.
virtual EGLConfig GetConfig() OVERRIDE;
@@ -62,7 +65,7 @@ class GL_EXPORT NativeViewGLSurfaceEGL : public GLSurfaceEGL {
virtual bool SwapBuffers() OVERRIDE;
virtual gfx::Size GetSize() OVERRIDE;
virtual EGLSurface GetHandle() OVERRIDE;
- virtual std::string GetExtensions() OVERRIDE;
+ virtual bool SupportsPostSubBuffer() OVERRIDE;
virtual bool PostSubBuffer(int x, int y, int width, int height) OVERRIDE;
virtual VSyncProvider* GetVSyncProvider() OVERRIDE;
@@ -75,7 +78,7 @@ class GL_EXPORT NativeViewGLSurfaceEGL : public GLSurfaceEGL {
void SetHandle(EGLSurface surface);
private:
- gfx::AcceleratedWidget window_;
+ EGLNativeWindowType window_;
EGLSurface surface_;
bool supports_post_sub_buffer_;
EGLConfig config_;
diff --git a/ui/gl/gl_surface_glx.cc b/ui/gl/gl_surface_glx.cc
index b08a5d0556..17a481a4de 100644
--- a/ui/gl/gl_surface_glx.cc
+++ b/ui/gl/gl_surface_glx.cc
@@ -615,13 +615,8 @@ void* NativeViewGLSurfaceGLX::GetHandle() {
return reinterpret_cast<void*>(GetDrawableHandle());
}
-std::string NativeViewGLSurfaceGLX::GetExtensions() {
- std::string extensions = GLSurface::GetExtensions();
- if (gfx::g_driver_glx.ext.b_GLX_MESA_copy_sub_buffer) {
- extensions += extensions.empty() ? "" : " ";
- extensions += "GL_CHROMIUM_post_sub_buffer";
- }
- return extensions;
+bool NativeViewGLSurfaceGLX::SupportsPostSubBuffer() {
+ return gfx::g_driver_glx.ext.b_GLX_MESA_copy_sub_buffer;
}
void* NativeViewGLSurfaceGLX::GetConfig() {
diff --git a/ui/gl/gl_surface_glx.h b/ui/gl/gl_surface_glx.h
index c41f4ef178..f9bff2bc2b 100644
--- a/ui/gl/gl_surface_glx.h
+++ b/ui/gl/gl_surface_glx.h
@@ -60,7 +60,7 @@ class GL_EXPORT NativeViewGLSurfaceGLX : public GLSurfaceGLX {
virtual bool SwapBuffers() OVERRIDE;
virtual gfx::Size GetSize() OVERRIDE;
virtual void* GetHandle() OVERRIDE;
- virtual std::string GetExtensions() OVERRIDE;
+ virtual bool SupportsPostSubBuffer() OVERRIDE;
virtual void* GetConfig() OVERRIDE;
virtual bool PostSubBuffer(int x, int y, int width, int height) OVERRIDE;
virtual VSyncProvider* GetVSyncProvider() OVERRIDE;
diff --git a/ui/gl/gl_surface_osmesa.cc b/ui/gl/gl_surface_osmesa.cc
index 9a556bc998..8018fe8382 100644
--- a/ui/gl/gl_surface_osmesa.cc
+++ b/ui/gl/gl_surface_osmesa.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "base/logging.h"
+#include "third_party/mesa/src/include/GL/osmesa.h"
#include "ui/gl/gl_bindings.h"
#include "ui/gl/gl_context.h"
#include "ui/gl/gl_surface_osmesa.h"
@@ -82,4 +83,13 @@ GLSurfaceOSMesa::~GLSurfaceOSMesa() {
Destroy();
}
+bool GLSurfaceOSMesaHeadless::IsOffscreen() { return false; }
+
+bool GLSurfaceOSMesaHeadless::SwapBuffers() { return true; }
+
+GLSurfaceOSMesaHeadless::GLSurfaceOSMesaHeadless()
+ : GLSurfaceOSMesa(OSMESA_BGRA, gfx::Size(1, 1)) {}
+
+GLSurfaceOSMesaHeadless::~GLSurfaceOSMesaHeadless() { Destroy(); }
+
} // namespace gfx
diff --git a/ui/gl/gl_surface_osmesa.h b/ui/gl/gl_surface_osmesa.h
index a823231fa0..b4b4827491 100644
--- a/ui/gl/gl_surface_osmesa.h
+++ b/ui/gl/gl_surface_osmesa.h
@@ -39,6 +39,23 @@ class GL_EXPORT GLSurfaceOSMesa : public GLSurface {
DISALLOW_COPY_AND_ASSIGN(GLSurfaceOSMesa);
};
+// A thin subclass of |GLSurfaceOSMesa| that can be used in place
+// of a native hardware-provided surface when a native surface
+// provider is not available.
+class GLSurfaceOSMesaHeadless : public GLSurfaceOSMesa {
+ public:
+ explicit GLSurfaceOSMesaHeadless();
+
+ virtual bool IsOffscreen() OVERRIDE;
+ virtual bool SwapBuffers() OVERRIDE;
+
+ protected:
+ virtual ~GLSurfaceOSMesaHeadless();
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(GLSurfaceOSMesaHeadless);
+};
+
} // namespace gfx
#endif // UI_GL_GL_SURFACE_OSMESA_H_
diff --git a/ui/gl/gl_surface_ozone.cc b/ui/gl/gl_surface_ozone.cc
new file mode 100644
index 0000000000..5cf70c7eec
--- /dev/null
+++ b/ui/gl/gl_surface_ozone.cc
@@ -0,0 +1,104 @@
+// Copyright 2014 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 "ui/gl/gl_surface.h"
+
+#include "base/logging.h"
+#include "base/memory/ref_counted.h"
+#include "ui/gfx/native_widget_types.h"
+#include "ui/gfx/ozone/surface_factory_ozone.h"
+#include "ui/gl/gl_implementation.h"
+#include "ui/gl/gl_surface_egl.h"
+#include "ui/gl/gl_surface_osmesa.h"
+#include "ui/gl/gl_surface_stub.h"
+
+namespace gfx {
+
+// static
+bool GLSurface::InitializeOneOffInternal() {
+ switch (GetGLImplementation()) {
+ case kGLImplementationEGLGLES2:
+ if (gfx::SurfaceFactoryOzone::GetInstance()->InitializeHardware() !=
+ gfx::SurfaceFactoryOzone::INITIALIZED) {
+ LOG(ERROR) << "Ozone failed to initialize hardware";
+ return false;
+ }
+
+ if (!GLSurfaceEGL::InitializeOneOff()) {
+ LOG(ERROR) << "GLSurfaceEGL::InitializeOneOff failed.";
+ return false;
+ }
+
+ return true;
+ case kGLImplementationOSMesaGL:
+ case kGLImplementationMockGL:
+ return true;
+ default:
+ return false;
+ }
+}
+
+// static
+scoped_refptr<GLSurface> GLSurface::CreateViewGLSurface(
+ gfx::AcceleratedWidget window) {
+ if (GetGLImplementation() == kGLImplementationOSMesaGL) {
+ scoped_refptr<GLSurface> surface(new GLSurfaceOSMesaHeadless());
+ if (!surface->Initialize())
+ return NULL;
+ return surface;
+ }
+ DCHECK(GetGLImplementation() == kGLImplementationEGLGLES2);
+ if (window != kNullAcceleratedWidget) {
+ EGLNativeWindowType egl_window =
+ gfx::SurfaceFactoryOzone::GetInstance()->RealizeAcceleratedWidget(
+ window);
+ scoped_ptr<VSyncProvider> sync_provider =
+ gfx::SurfaceFactoryOzone::GetInstance()->CreateVSyncProvider(
+ egl_window);
+ scoped_refptr<NativeViewGLSurfaceEGL> surface =
+ new NativeViewGLSurfaceEGL(egl_window);
+ if (surface->Initialize(sync_provider.Pass()))
+ return surface;
+ } else {
+ scoped_refptr<GLSurface> surface = new GLSurfaceStub();
+ if (surface->Initialize())
+ return surface;
+ }
+ return NULL;
+}
+
+// static
+scoped_refptr<GLSurface> GLSurface::CreateOffscreenGLSurface(
+ const gfx::Size& size) {
+ switch (GetGLImplementation()) {
+ case kGLImplementationOSMesaGL: {
+ scoped_refptr<GLSurface> surface(new GLSurfaceOSMesa(1, size));
+ if (!surface->Initialize())
+ return NULL;
+
+ return surface;
+ }
+ case kGLImplementationEGLGLES2: {
+ scoped_refptr<GLSurface> surface;
+ if (GLSurfaceEGL::IsEGLSurfacelessContextSupported() &&
+ (size.width() == 0 && size.height() == 0)) {
+ surface = new SurfacelessEGL(size);
+ } else
+ surface = new PbufferGLSurfaceEGL(size);
+
+ if (!surface->Initialize())
+ return NULL;
+ return surface;
+ }
+ default:
+ NOTREACHED();
+ return NULL;
+ }
+}
+
+EGLNativeDisplayType GetPlatformDefaultEGLNativeDisplay() {
+ return SurfaceFactoryOzone::GetInstance()->GetNativeDisplay();
+}
+
+} // namespace gfx
diff --git a/ui/gl/gl_surface_win.cc b/ui/gl/gl_surface_win.cc
index 6307f14029..eb99421ee3 100644
--- a/ui/gl/gl_surface_win.cc
+++ b/ui/gl/gl_surface_win.cc
@@ -6,12 +6,14 @@
#include <dwmapi.h>
+#include "base/command_line.h"
#include "base/debug/trace_event.h"
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
#include "base/win/windows_version.h"
#include "third_party/mesa/src/include/GL/osmesa.h"
#include "ui/gfx/frame_time.h"
+#include "ui/gfx/native_widget_types.h"
#include "ui/gl/gl_bindings.h"
#include "ui/gl/gl_implementation.h"
#include "ui/gl/gl_surface_egl.h"
@@ -19,6 +21,12 @@
#include "ui/gl/gl_surface_stub.h"
#include "ui/gl/gl_surface_wgl.h"
+// From ANGLE's egl/eglext.h.
+#if !defined(EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE)
+#define EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE \
+ reinterpret_cast<EGLNativeDisplayType>(-2)
+#endif
+
namespace gfx {
// This OSMesa GL surface can use GDI to swap the contents of the buffer to a
@@ -33,7 +41,7 @@ class NativeViewGLSurfaceOSMesa : public GLSurfaceOSMesa {
virtual void Destroy() OVERRIDE;
virtual bool IsOffscreen() OVERRIDE;
virtual bool SwapBuffers() OVERRIDE;
- virtual std::string GetExtensions() OVERRIDE;
+ virtual bool SupportsPostSubBuffer() OVERRIDE;
virtual bool PostSubBuffer(int x, int y, int width, int height) OVERRIDE;
private:
@@ -171,11 +179,8 @@ bool NativeViewGLSurfaceOSMesa::SwapBuffers() {
return true;
}
-std::string NativeViewGLSurfaceOSMesa::GetExtensions() {
- std::string extensions = gfx::GLSurfaceOSMesa::GetExtensions();
- extensions += extensions.empty() ? "" : " ";
- extensions += "GL_CHROMIUM_post_sub_buffer";
- return extensions;
+bool NativeViewGLSurfaceOSMesa::SupportsPostSubBuffer() {
+ return true;
}
bool NativeViewGLSurfaceOSMesa::PostSubBuffer(
@@ -228,6 +233,7 @@ scoped_refptr<GLSurface> GLSurface::CreateViewGLSurface(
return surface;
}
case kGLImplementationEGLGLES2: {
+ DCHECK(window != gfx::kNullAcceleratedWidget);
scoped_refptr<NativeViewGLSurfaceEGL> surface(
new NativeViewGLSurfaceEGL(window));
scoped_ptr<VSyncProvider> sync_provider;
@@ -288,4 +294,12 @@ scoped_refptr<GLSurface> GLSurface::CreateOffscreenGLSurface(
}
}
+EGLNativeDisplayType GetPlatformDefaultEGLNativeDisplay() {
+ if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableD3D11) &&
+ CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableD3D11))
+ return EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE;
+
+ return EGL_DEFAULT_DISPLAY;
+}
+
} // namespace gfx
diff --git a/ui/gl/gl_surface_x11.cc b/ui/gl/gl_surface_x11.cc
index 54c7f43882..066f915864 100644
--- a/ui/gl/gl_surface_x11.cc
+++ b/ui/gl/gl_surface_x11.cc
@@ -9,6 +9,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop.h"
#include "third_party/mesa/src/include/GL/osmesa.h"
+#include "ui/gfx/native_widget_types.h"
#include "ui/gl/gl_bindings.h"
#include "ui/gl/gl_implementation.h"
#include "ui/gl/gl_surface_egl.h"
@@ -32,7 +33,7 @@ class NativeViewGLSurfaceOSMesa : public GLSurfaceOSMesa {
virtual bool Resize(const gfx::Size& new_size) OVERRIDE;
virtual bool IsOffscreen() OVERRIDE;
virtual bool SwapBuffers() OVERRIDE;
- virtual std::string GetExtensions() OVERRIDE;
+ virtual bool SupportsPostSubBuffer() OVERRIDE;
virtual bool PostSubBuffer(int x, int y, int width, int height) OVERRIDE;
protected:
@@ -218,11 +219,8 @@ bool NativeViewGLSurfaceOSMesa::SwapBuffers() {
return true;
}
-std::string NativeViewGLSurfaceOSMesa::GetExtensions() {
- std::string extensions = gfx::GLSurfaceOSMesa::GetExtensions();
- extensions += extensions.empty() ? "" : " ";
- extensions += "GL_CHROMIUM_post_sub_buffer";
- return extensions;
+bool NativeViewGLSurfaceOSMesa::SupportsPostSubBuffer() {
+ return true;
}
bool NativeViewGLSurfaceOSMesa::PostSubBuffer(
@@ -293,6 +291,7 @@ scoped_refptr<GLSurface> GLSurface::CreateViewGLSurface(
return surface;
}
case kGLImplementationEGLGLES2: {
+ DCHECK(window != gfx::kNullAcceleratedWidget);
scoped_refptr<GLSurface> surface(new NativeViewGLSurfaceEGL(window));
if (!surface->Initialize())
return NULL;
@@ -341,4 +340,8 @@ scoped_refptr<GLSurface> GLSurface::CreateOffscreenGLSurface(
}
}
+EGLNativeDisplayType GetPlatformDefaultEGLNativeDisplay() {
+ return base::MessagePumpForUI::GetDefaultXDisplay();
+}
+
} // namespace gfx
diff --git a/ui/gl/scoped_binders.cc b/ui/gl/scoped_binders.cc
index eef92c1073..bb2b290105 100644
--- a/ui/gl/scoped_binders.cc
+++ b/ui/gl/scoped_binders.cc
@@ -59,7 +59,7 @@ ScopedTextureBinder::~ScopedTextureBinder() {
if (state_restorer_) {
DCHECK(!!GLContext::GetCurrent());
DCHECK_EQ(state_restorer_, GLContext::GetCurrent()->GetGLStateRestorer());
- state_restorer_->RestoreAllTextureUnitBindings();
+ state_restorer_->RestoreActiveTextureUnitBinding(target_);
} else {
glBindTexture(target_, old_id_);
}
diff --git a/ui/gl/surface_jni_headers.target.darwin-arm.mk b/ui/gl/surface_jni_headers.target.darwin-arm.mk
index 2870dd749b..6b5fe3c312 100644
--- a/ui/gl/surface_jni_headers.target.darwin-arm.mk
+++ b/ui/gl/surface_jni_headers.target.darwin-arm.mk
@@ -90,6 +90,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -172,6 +173,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/surface_jni_headers.target.darwin-mips.mk b/ui/gl/surface_jni_headers.target.darwin-mips.mk
index c94763b0de..58eed774f6 100644
--- a/ui/gl/surface_jni_headers.target.darwin-mips.mk
+++ b/ui/gl/surface_jni_headers.target.darwin-mips.mk
@@ -89,6 +89,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -170,6 +171,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/surface_jni_headers.target.darwin-x86.mk b/ui/gl/surface_jni_headers.target.darwin-x86.mk
index 03a9f1a17e..e56708485e 100644
--- a/ui/gl/surface_jni_headers.target.darwin-x86.mk
+++ b/ui/gl/surface_jni_headers.target.darwin-x86.mk
@@ -91,6 +91,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -173,6 +174,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/surface_jni_headers.target.darwin-x86_64.mk b/ui/gl/surface_jni_headers.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..6193d5e87d
--- /dev/null
+++ b/ui/gl/surface_jni_headers.target.darwin-x86_64.mk
@@ -0,0 +1,229 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := ui_gl_surface_jni_headers_gyp
+LOCAL_MODULE_STEM := surface_jni_headers
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "generate_jni_headers_from_jar_file":
+$(gyp_shared_intermediate_dir)/ui/gl/jni/Surface_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/gl/jni/Surface_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/Surface_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/Surface_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/Surface_jni.h: $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(PWD)/prebuilts/sdk/18/android.jar $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating JNI bindings from $(PWD)/prebuilts/sdk/18/android.jar/android/view/Surface.class ($@)"
+ $(hide)cd $(gyp_local_path)/ui/gl; mkdir -p $(gyp_shared_intermediate_dir)/ui/gl/jni; ../../base/android/jni_generator/jni_generator.py -j "$(PWD)/prebuilts/sdk/18/android.jar" --input_file android/view/Surface.class --output_dir "$(gyp_shared_intermediate_dir)/ui/gl/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/ui/gl/jni/Surface_jni.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_GENERATED_SOURCES := \
+ $(gyp_shared_intermediate_dir)/ui/gl/jni/Surface_jni.h
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_gl_surface_jni_headers_gyp
+
+# Alias gyp target name.
+.PHONY: surface_jni_headers
+surface_jni_headers: ui_gl_surface_jni_headers_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/ui/gl/surface_jni_headers.target.linux-arm.mk b/ui/gl/surface_jni_headers.target.linux-arm.mk
index 2870dd749b..6b5fe3c312 100644
--- a/ui/gl/surface_jni_headers.target.linux-arm.mk
+++ b/ui/gl/surface_jni_headers.target.linux-arm.mk
@@ -90,6 +90,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -172,6 +173,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/surface_jni_headers.target.linux-mips.mk b/ui/gl/surface_jni_headers.target.linux-mips.mk
index c94763b0de..58eed774f6 100644
--- a/ui/gl/surface_jni_headers.target.linux-mips.mk
+++ b/ui/gl/surface_jni_headers.target.linux-mips.mk
@@ -89,6 +89,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -170,6 +171,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/surface_jni_headers.target.linux-x86.mk b/ui/gl/surface_jni_headers.target.linux-x86.mk
index 03a9f1a17e..e56708485e 100644
--- a/ui/gl/surface_jni_headers.target.linux-x86.mk
+++ b/ui/gl/surface_jni_headers.target.linux-x86.mk
@@ -91,6 +91,7 @@ MY_DEFS_Debug := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -173,6 +174,7 @@ MY_DEFS_Release := \
'-DENABLE_PRINTING=1' \
'-DENABLE_MANAGED_USERS=1' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/gl/surface_jni_headers.target.linux-x86_64.mk b/ui/gl/surface_jni_headers.target.linux-x86_64.mk
new file mode 100644
index 0000000000..6193d5e87d
--- /dev/null
+++ b/ui/gl/surface_jni_headers.target.linux-x86_64.mk
@@ -0,0 +1,229 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := ui_gl_surface_jni_headers_gyp
+LOCAL_MODULE_STEM := surface_jni_headers
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "generate_jni_headers_from_jar_file":
+$(gyp_shared_intermediate_dir)/ui/gl/jni/Surface_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/gl/jni/Surface_jni.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/Surface_jni.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/Surface_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/gl/jni/Surface_jni.h: $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(PWD)/prebuilts/sdk/18/android.jar $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating JNI bindings from $(PWD)/prebuilts/sdk/18/android.jar/android/view/Surface.class ($@)"
+ $(hide)cd $(gyp_local_path)/ui/gl; mkdir -p $(gyp_shared_intermediate_dir)/ui/gl/jni; ../../base/android/jni_generator/jni_generator.py -j "$(PWD)/prebuilts/sdk/18/android.jar" --input_file android/view/Surface.class --output_dir "$(gyp_shared_intermediate_dir)/ui/gl/jni" --includes base/android/jni_generator/jni_generator_helper.h --optimize_generation 0
+
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/ui/gl/jni/Surface_jni.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_GENERATED_SOURCES := \
+ $(gyp_shared_intermediate_dir)/ui/gl/jni/Surface_jni.h
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_gl_surface_jni_headers_gyp
+
+# Alias gyp target name.
+.PHONY: surface_jni_headers
+surface_jni_headers: ui_gl_surface_jni_headers_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/ui/keyboard/keyboard.cc b/ui/keyboard/keyboard.cc
index d7901270a0..436b93595f 100644
--- a/ui/keyboard/keyboard.cc
+++ b/ui/keyboard/keyboard.cc
@@ -5,71 +5,14 @@
#include "ui/keyboard/keyboard.h"
#include "base/files/file_path.h"
-#include "base/memory/singleton.h"
#include "base/path_service.h"
-#include "content/public/browser/browser_context.h"
-#include "content/public/browser/web_ui_controller_factory.h"
#include "ui/base/resource/resource_bundle.h"
-#include "ui/keyboard/keyboard_constants.h"
-#include "ui/keyboard/keyboard_ui_controller.h"
-#include "url/gurl.h"
-
-namespace {
-
-using content::BrowserContext;
-using content::WebUI;
-using content::WebUIController;
-
-class KeyboardWebUIControllerFactory : public content::WebUIControllerFactory {
- public:
- // |WebUIControllerFactory| implementation:
- virtual content::WebUI::TypeID GetWebUIType(
- content::BrowserContext* browser_context,
- const GURL& url) const OVERRIDE {
- if (url == GURL(keyboard::kKeyboardWebUIURL))
- return const_cast<KeyboardWebUIControllerFactory*>(this);
-
- return WebUI::kNoWebUI;
- }
- virtual bool UseWebUIForURL(content::BrowserContext* browser_context,
- const GURL& url) const OVERRIDE {
- return GetWebUIType(browser_context, url) != WebUI::kNoWebUI;
- }
- virtual bool UseWebUIBindingsForURL(content::BrowserContext* browser_context,
- const GURL& url) const OVERRIDE {
- return UseWebUIForURL(browser_context, url);
- }
- virtual content::WebUIController* CreateWebUIControllerForURL(
- content::WebUI* web_ui,
- const GURL& url) const OVERRIDE {
- if (url == GURL(keyboard::kKeyboardWebUIURL))
- return new keyboard::KeyboardUIController(web_ui);
- return NULL;
- }
-
- static KeyboardWebUIControllerFactory* GetInstance() {
- return Singleton<KeyboardWebUIControllerFactory>::get();
- }
-
- protected:
- KeyboardWebUIControllerFactory() {}
- virtual ~KeyboardWebUIControllerFactory() {}
-
- private:
- friend struct DefaultSingletonTraits<KeyboardWebUIControllerFactory>;
-
- DISALLOW_COPY_AND_ASSIGN(KeyboardWebUIControllerFactory);
-};
-
-} // namespace
namespace keyboard {
static bool initialized = false;
void ResetKeyboardForTesting() {
- content::WebUIControllerFactory::UnregisterFactoryForTesting(
- KeyboardWebUIControllerFactory::GetInstance());
initialized = false;
}
@@ -84,9 +27,6 @@ void InitializeKeyboard() {
FILE_PATH_LITERAL("keyboard_resources.pak"));
ui::ResourceBundle::GetSharedInstance().AddDataPackFromPath(
pak_file, ui::SCALE_FACTOR_100P);
-
- content::WebUIControllerFactory::RegisterFactory(
- KeyboardWebUIControllerFactory::GetInstance());
}
} // namespace keyboard
diff --git a/ui/keyboard/keyboard.gyp b/ui/keyboard/keyboard.gyp
index fd093fcd27..fe359c6ae1 100644
--- a/ui/keyboard/keyboard.gyp
+++ b/ui/keyboard/keyboard.gyp
@@ -64,13 +64,11 @@
'keyboard_controller_observer.h',
'keyboard_controller_proxy.cc',
'keyboard_controller_proxy.h',
+ 'keyboard_layout_manager.h',
+ 'keyboard_layout_manager.cc',
'keyboard_export.h',
'keyboard_switches.cc',
'keyboard_switches.h',
- 'keyboard_ui_controller.cc',
- 'keyboard_ui_controller.h',
- 'keyboard_ui_handler.cc',
- 'keyboard_ui_handler.h',
'keyboard_util.cc',
'keyboard_util.h',
]
diff --git a/ui/keyboard/keyboard.h b/ui/keyboard/keyboard.h
index c47cf8cbd2..a0aed8aee0 100644
--- a/ui/keyboard/keyboard.h
+++ b/ui/keyboard/keyboard.h
@@ -10,9 +10,8 @@
namespace keyboard {
// Initializes the keyboard module. This includes adding the necessary pak files
-// for loading resources used in for the virtual keyboard, and registers
-// a WebUIControllerFactory for creating a WebUIController necessary for the
-// virtual keyboard. This becomes a no-op after the first call.
+// for loading resources used in for the virtual keyboard. This becomes a no-op
+// after the first call.
KEYBOARD_EXPORT void InitializeKeyboard();
// Resets the keyboard to an uninitialized state. Required for
diff --git a/ui/keyboard/keyboard_constants.cc b/ui/keyboard/keyboard_constants.cc
index 35f8130063..b13a604f3d 100644
--- a/ui/keyboard/keyboard_constants.cc
+++ b/ui/keyboard/keyboard_constants.cc
@@ -6,7 +6,7 @@
namespace keyboard {
-const char kKeyboardWebUIURL[] = "chrome://keyboard";
-const char kKeyboardWebUIHost[] = "keyboard";
+const char kKeyboardURL[] = "chrome://keyboard";
+const char kKeyboardHost[] = "keyboard";
} // namespace keyboard
diff --git a/ui/keyboard/keyboard_constants.h b/ui/keyboard/keyboard_constants.h
index eff96eadf5..75607c1ee6 100644
--- a/ui/keyboard/keyboard_constants.h
+++ b/ui/keyboard/keyboard_constants.h
@@ -9,11 +9,11 @@
namespace keyboard {
-// The URL of the keyboard WebUI.
-KEYBOARD_EXPORT extern const char kKeyboardWebUIURL[];
+// The URL of the keyboard extension.
+KEYBOARD_EXPORT extern const char kKeyboardURL[];
-// The host of the keyboard WebUI URL.
-KEYBOARD_EXPORT extern const char kKeyboardWebUIHost[];
+// The host of the keyboard extension URL.
+KEYBOARD_EXPORT extern const char kKeyboardHost[];
} // namespace keyboard
diff --git a/ui/keyboard/keyboard_controller.cc b/ui/keyboard/keyboard_controller.cc
index ba995143c8..1de832c0c5 100644
--- a/ui/keyboard/keyboard_controller.cc
+++ b/ui/keyboard/keyboard_controller.cc
@@ -6,7 +6,6 @@
#include "base/bind.h"
#include "base/command_line.h"
-#include "ui/aura/layout_manager.h"
#include "ui/aura/window.h"
#include "ui/aura/window_delegate.h"
#include "ui/base/cursor/cursor.h"
@@ -20,6 +19,7 @@
#include "ui/gfx/skia_util.h"
#include "ui/keyboard/keyboard_controller_observer.h"
#include "ui/keyboard/keyboard_controller_proxy.h"
+#include "ui/keyboard/keyboard_layout_manager.h"
#include "ui/keyboard/keyboard_switches.h"
#include "ui/keyboard/keyboard_util.h"
#include "ui/wm/core/masked_window_targeter.h"
@@ -40,34 +40,6 @@ const int kAnimationDurationMs = 200;
// hide animation finishes.
const float kAnimationStartOrAfterHideOpacity = 0.2f;
-// The ratio between the height of the keyboard and the screen when using the
-// usability keyboard.
-const float kUsabilityKeyboardHeightRatio = 1.0f;
-
-// The default ratio between the height of the keyboard and the screen.
-const float kDefaultKeyboardHeightRatio = 0.3f;
-
-// The ratio between the height of the keyboard and the screen when using the
-// accessibility keyboard.
-const float kAccessibilityKeyboardHeightRatio = 0.3f;
-
-float GetKeyboardHeightRatio(){
- if (keyboard::IsKeyboardUsabilityExperimentEnabled()) {
- return kUsabilityKeyboardHeightRatio;
- } else if (keyboard::GetAccessibilityKeyboardEnabled()) {
- return kAccessibilityKeyboardHeightRatio;
- }
- return kDefaultKeyboardHeightRatio;
-}
-gfx::Rect KeyboardBoundsFromWindowBounds(const gfx::Rect& window_bounds) {
- const float kKeyboardHeightRatio = GetKeyboardHeightRatio();
- return gfx::Rect(
- window_bounds.x(),
- window_bounds.y() + window_bounds.height() * (1 - kKeyboardHeightRatio),
- window_bounds.width(),
- window_bounds.height() * kKeyboardHeightRatio);
-}
-
// Event targeter for the keyboard container.
class KeyboardContainerTargeter : public wm::MaskedWindowTargeter {
public:
@@ -84,7 +56,7 @@ class KeyboardContainerTargeter : public wm::MaskedWindowTargeter {
virtual bool GetHitTestMask(aura::Window* window,
gfx::Path* mask) const OVERRIDE {
gfx::Rect keyboard_bounds = proxy_ ? proxy_->GetKeyboardWindow()->bounds() :
- KeyboardBoundsFromWindowBounds(window->bounds());
+ keyboard::DefaultKeyboardBoundsFromWindowBounds(window->bounds());
mask->addRect(RectToSkRect(keyboard_bounds));
return true;
}
@@ -133,11 +105,9 @@ class KeyboardWindowDelegate : public aura::WindowDelegate {
virtual bool HasHitTestMask() const OVERRIDE { return true; }
virtual void GetHitTestMask(gfx::Path* mask) const OVERRIDE {
gfx::Rect keyboard_bounds = proxy_ ? proxy_->GetKeyboardWindow()->bounds() :
- KeyboardBoundsFromWindowBounds(bounds_);
+ keyboard::DefaultKeyboardBoundsFromWindowBounds(bounds_);
mask->addRect(RectToSkRect(keyboard_bounds));
}
- virtual void DidRecreateLayer(ui::Layer* old_layer,
- ui::Layer* new_layer) OVERRIDE {}
gfx::Rect bounds_;
keyboard::KeyboardControllerProxy* proxy_;
@@ -208,54 +178,6 @@ void CallbackAnimationObserver::OnLayerAnimationAborted(
animator_->RemoveObserver(this);
}
-// LayoutManager for the virtual keyboard container. Manages a single window
-// (the virtual keyboard) and keeps it positioned at the bottom of the
-// owner window.
-class KeyboardLayoutManager : public aura::LayoutManager {
- public:
- explicit KeyboardLayoutManager(KeyboardController* controller)
- : controller_(controller), keyboard_(NULL) {
- }
-
- // Overridden from aura::LayoutManager
- virtual void OnWindowResized() OVERRIDE {
- if (keyboard_ && !controller_->proxy()->resizing_from_contents())
- ResizeKeyboardToDefault(keyboard_);
- }
- virtual void OnWindowAddedToLayout(aura::Window* child) OVERRIDE {
- DCHECK(!keyboard_);
- keyboard_ = child;
- ResizeKeyboardToDefault(keyboard_);
- }
- virtual void OnWillRemoveWindowFromLayout(aura::Window* child) OVERRIDE {}
- virtual void OnWindowRemovedFromLayout(aura::Window* child) OVERRIDE {}
- virtual void OnChildWindowVisibilityChanged(aura::Window* child,
- bool visible) OVERRIDE {}
- virtual void SetChildBounds(aura::Window* child,
- const gfx::Rect& requested_bounds) OVERRIDE {
- // SetChildBounds can be invoked by resizing from the container or by
- // resizing from the contents (through window.resizeTo call in JS).
- // The flag resizing_from_contents() is used to determine the keyboard is
- // resizing from which.
- if (controller_->proxy()->resizing_from_contents()) {
- controller_->NotifyKeyboardBoundsChanging(requested_bounds);
- SetChildBoundsDirect(child, requested_bounds);
- }
- }
-
- private:
- void ResizeKeyboardToDefault(aura::Window* child) {
- gfx::Rect keyboard_bounds = KeyboardBoundsFromWindowBounds(
- controller_->GetContainerWindow()->bounds());
- SetChildBoundsDirect(child, keyboard_bounds);
- }
-
- KeyboardController* controller_;
- aura::Window* keyboard_;
-
- DISALLOW_COPY_AND_ASSIGN(KeyboardLayoutManager);
-};
-
KeyboardController::KeyboardController(KeyboardControllerProxy* proxy)
: proxy_(proxy),
input_method_(NULL),
diff --git a/ui/keyboard/keyboard_controller.h b/ui/keyboard/keyboard_controller.h
index 7dc25c1d00..86cd12dd76 100644
--- a/ui/keyboard/keyboard_controller.h
+++ b/ui/keyboard/keyboard_controller.h
@@ -31,7 +31,6 @@ namespace keyboard {
class CallbackAnimationObserver;
class KeyboardControllerObserver;
class KeyboardControllerProxy;
-class KeyboardLayoutManager;
// Provides control of the virtual keyboard, including providing a container
// and controlling visibility.
diff --git a/ui/keyboard/keyboard_controller_proxy.cc b/ui/keyboard/keyboard_controller_proxy.cc
index c550a3fcbf..acd78f89c3 100644
--- a/ui/keyboard/keyboard_controller_proxy.cc
+++ b/ui/keyboard/keyboard_controller_proxy.cc
@@ -4,6 +4,7 @@
#include "ui/keyboard/keyboard_controller_proxy.h"
+#include "base/command_line.h"
#include "base/values.h"
#include "content/public/browser/site_instance.h"
#include "content/public/browser/web_contents.h"
@@ -16,43 +17,11 @@
#include "ui/aura/layout_manager.h"
#include "ui/aura/window.h"
#include "ui/keyboard/keyboard_constants.h"
+#include "ui/keyboard/keyboard_switches.h"
#include "ui/keyboard/keyboard_util.h"
namespace {
-// Converts ui::TextInputType to string.
-std::string TextInputTypeToString(ui::TextInputType type) {
- switch (type) {
- case ui::TEXT_INPUT_TYPE_NONE:
- return "none";
- case ui::TEXT_INPUT_TYPE_PASSWORD:
- return "password";
- case ui::TEXT_INPUT_TYPE_EMAIL:
- return "email";
- case ui::TEXT_INPUT_TYPE_NUMBER:
- return "number";
- case ui::TEXT_INPUT_TYPE_TELEPHONE:
- return "tel";
- case ui::TEXT_INPUT_TYPE_URL:
- return "url";
- case ui::TEXT_INPUT_TYPE_DATE:
- return "date";
- case ui::TEXT_INPUT_TYPE_TEXT:
- case ui::TEXT_INPUT_TYPE_SEARCH:
- case ui::TEXT_INPUT_TYPE_DATE_TIME:
- case ui::TEXT_INPUT_TYPE_DATE_TIME_LOCAL:
- case ui::TEXT_INPUT_TYPE_MONTH:
- case ui::TEXT_INPUT_TYPE_TIME:
- case ui::TEXT_INPUT_TYPE_WEEK:
- case ui::TEXT_INPUT_TYPE_TEXT_AREA:
- case ui::TEXT_INPUT_TYPE_CONTENT_EDITABLE:
- case ui::TEXT_INPUT_TYPE_DATE_TIME_FIELD:
- return "text";
- }
- NOTREACHED();
- return "";
-}
-
// The WebContentsDelegate for the keyboard.
// The delegate deletes itself when the keyboard is destroyed.
class KeyboardContentsDelegate : public content::WebContentsDelegate,
@@ -112,15 +81,19 @@ class KeyboardContentsDelegate : public content::WebContentsDelegate,
namespace keyboard {
KeyboardControllerProxy::KeyboardControllerProxy()
- : default_url_(kKeyboardWebUIURL), resizing_from_contents_(false) {
+ : default_url_(kKeyboardURL), resizing_from_contents_(false) {
}
KeyboardControllerProxy::~KeyboardControllerProxy() {
}
const GURL& KeyboardControllerProxy::GetVirtualKeyboardUrl() {
- const GURL& override_url = GetOverrideContentUrl();
- return override_url.is_valid() ? override_url : default_url_;
+ if (keyboard::IsInputViewEnabled()) {
+ const GURL& override_url = GetOverrideContentUrl();
+ return override_url.is_valid() ? override_url : default_url_;
+ } else {
+ return default_url_;
+ }
}
void KeyboardControllerProxy::LoadContents(const GURL& url) {
@@ -165,17 +138,6 @@ void KeyboardControllerProxy::HideKeyboardContainer(aura::Window* container) {
}
void KeyboardControllerProxy::SetUpdateInputType(ui::TextInputType type) {
- content::WebUI* webui = keyboard_contents_ ?
- keyboard_contents_->GetCommittedWebUI() : NULL;
-
- if (webui &&
- (0 != (webui->GetBindings() & content::BINDINGS_POLICY_WEB_UI))) {
- // Only call OnTextInputBoxFocused function if it is a web ui keyboard,
- // not an extension based keyboard.
- base::DictionaryValue input_context;
- input_context.SetString("type", TextInputTypeToString(type));
- webui->CallJavascriptFunction("OnTextInputBoxFocused", input_context);
- }
}
void KeyboardControllerProxy::EnsureCaretInWorkArea() {
diff --git a/ui/keyboard/keyboard_controller_proxy.h b/ui/keyboard/keyboard_controller_proxy.h
index 35af78c356..8f48c0c0d0 100644
--- a/ui/keyboard/keyboard_controller_proxy.h
+++ b/ui/keyboard/keyboard_controller_proxy.h
@@ -70,9 +70,7 @@ class KEYBOARD_EXPORT KeyboardControllerProxy {
// necesasry animation, or delay the visibility change as it desires.
virtual void HideKeyboardContainer(aura::Window* container);
- // Updates the type of the focused text input box. The default implementation
- // calls OnTextInputBoxFocused javascript function through webui to update the
- // type the of focused input box.
+ // Updates the type of the focused text input box.
virtual void SetUpdateInputType(ui::TextInputType type);
// Ensures caret in current work area (not occluded by virtual keyboard
diff --git a/ui/keyboard/keyboard_controller_unittest.cc b/ui/keyboard/keyboard_controller_unittest.cc
index 79a0c27f8a..d735883400 100644
--- a/ui/keyboard/keyboard_controller_unittest.cc
+++ b/ui/keyboard/keyboard_controller_unittest.cc
@@ -14,6 +14,7 @@
#include "ui/aura/test/test_window_delegate.h"
#include "ui/aura/window.h"
#include "ui/aura/window_event_dispatcher.h"
+#include "ui/base/ime/dummy_text_input_client.h"
#include "ui/base/ime/input_method.h"
#include "ui/base/ime/input_method_factory.h"
#include "ui/base/ime/text_input_client.h"
@@ -131,67 +132,6 @@ class EventObserver : public ui::EventHandler {
DISALLOW_COPY_AND_ASSIGN(EventObserver);
};
-class TestTextInputClient : public ui::TextInputClient {
- public:
- explicit TestTextInputClient(ui::TextInputType type)
- : type_(type) {}
- virtual ~TestTextInputClient() {}
-
- private:
- // Overridden from ui::TextInputClient:
- virtual void SetCompositionText(
- const ui::CompositionText& composition) OVERRIDE {}
- virtual void ConfirmCompositionText() OVERRIDE {}
- virtual void ClearCompositionText() OVERRIDE {}
- virtual void InsertText(const base::string16& text) OVERRIDE {}
- virtual void InsertChar(base::char16 ch, int flags) OVERRIDE {}
- virtual gfx::NativeWindow GetAttachedWindow() const OVERRIDE {
- return static_cast<gfx::NativeWindow>(NULL);
- }
- virtual ui::TextInputType GetTextInputType() const OVERRIDE {
- return type_;
- }
- virtual ui::TextInputMode GetTextInputMode() const OVERRIDE {
- return ui::TEXT_INPUT_MODE_DEFAULT;
- }
- virtual bool CanComposeInline() const OVERRIDE { return false; }
- virtual gfx::Rect GetCaretBounds() const OVERRIDE { return gfx::Rect(); }
-
- virtual bool GetCompositionCharacterBounds(
- uint32 index,
- gfx::Rect* rect) const OVERRIDE {
- return false;
- }
- virtual bool HasCompositionText() const OVERRIDE { return false; }
- virtual bool GetTextRange(gfx::Range* range) const OVERRIDE { return false; }
- virtual bool GetCompositionTextRange(gfx::Range* range) const OVERRIDE {
- return false;
- }
- virtual bool GetSelectionRange(gfx::Range* range) const OVERRIDE {
- return false;
- }
- virtual bool SetSelectionRange(const gfx::Range& range) OVERRIDE {
- return false;
- }
- virtual bool DeleteRange(const gfx::Range& range) OVERRIDE { return false; }
- virtual bool GetTextFromRange(const gfx::Range& range,
- base::string16* text) const OVERRIDE {
- return false;
- }
- virtual void OnInputMethodChanged() OVERRIDE {}
- virtual bool ChangeTextDirectionAndLayoutAlignment(
- base::i18n::TextDirection direction) OVERRIDE { return false; }
- virtual void ExtendSelectionAndDelete(size_t before, size_t after) OVERRIDE {}
- virtual void EnsureCaretInRect(const gfx::Rect& rect) OVERRIDE {}
- virtual void OnCandidateWindowShown() OVERRIDE {}
- virtual void OnCandidateWindowUpdated() OVERRIDE {}
- virtual void OnCandidateWindowHidden() OVERRIDE {}
-
- ui::TextInputType type_;
-
- DISALLOW_COPY_AND_ASSIGN(TestTextInputClient);
-};
-
class KeyboardContainerObserver : public aura::WindowObserver {
public:
explicit KeyboardContainerObserver(aura::Window* window) : window_(window) {
@@ -245,7 +185,7 @@ class KeyboardControllerTest : public testing::Test {
KeyboardController* controller() { return controller_.get(); }
void ShowKeyboard() {
- TestTextInputClient test_text_input_client(ui::TEXT_INPUT_TYPE_TEXT);
+ ui::DummyTextInputClient test_text_input_client(ui::TEXT_INPUT_TYPE_TEXT);
SetFocus(&test_text_input_client);
}
@@ -374,11 +314,11 @@ TEST_F(KeyboardControllerTest, EventHitTestingInContainer) {
TEST_F(KeyboardControllerTest, VisibilityChangeWithTextInputTypeChange) {
const gfx::Rect& root_bounds = root_window()->bounds();
- TestTextInputClient input_client_0(ui::TEXT_INPUT_TYPE_TEXT);
- TestTextInputClient input_client_1(ui::TEXT_INPUT_TYPE_TEXT);
- TestTextInputClient input_client_2(ui::TEXT_INPUT_TYPE_TEXT);
- TestTextInputClient no_input_client_0(ui::TEXT_INPUT_TYPE_NONE);
- TestTextInputClient no_input_client_1(ui::TEXT_INPUT_TYPE_NONE);
+ ui::DummyTextInputClient input_client_0(ui::TEXT_INPUT_TYPE_TEXT);
+ ui::DummyTextInputClient input_client_1(ui::TEXT_INPUT_TYPE_TEXT);
+ ui::DummyTextInputClient input_client_2(ui::TEXT_INPUT_TYPE_TEXT);
+ ui::DummyTextInputClient no_input_client_0(ui::TEXT_INPUT_TYPE_NONE);
+ ui::DummyTextInputClient no_input_client_1(ui::TEXT_INPUT_TYPE_NONE);
aura::Window* keyboard_container(controller()->GetContainerWindow());
scoped_ptr<KeyboardContainerObserver> keyboard_container_observer(
@@ -415,10 +355,10 @@ TEST_F(KeyboardControllerTest, VisibilityChangeWithTextInputTypeChange) {
TEST_F(KeyboardControllerTest, AlwaysVisibleWhenLocked) {
const gfx::Rect& root_bounds = root_window()->bounds();
- TestTextInputClient input_client_0(ui::TEXT_INPUT_TYPE_TEXT);
- TestTextInputClient input_client_1(ui::TEXT_INPUT_TYPE_TEXT);
- TestTextInputClient no_input_client_0(ui::TEXT_INPUT_TYPE_NONE);
- TestTextInputClient no_input_client_1(ui::TEXT_INPUT_TYPE_NONE);
+ ui::DummyTextInputClient input_client_0(ui::TEXT_INPUT_TYPE_TEXT);
+ ui::DummyTextInputClient input_client_1(ui::TEXT_INPUT_TYPE_TEXT);
+ ui::DummyTextInputClient no_input_client_0(ui::TEXT_INPUT_TYPE_NONE);
+ ui::DummyTextInputClient no_input_client_1(ui::TEXT_INPUT_TYPE_NONE);
aura::Window* keyboard_container(controller()->GetContainerWindow());
scoped_ptr<KeyboardContainerObserver> keyboard_container_observer(
@@ -608,8 +548,8 @@ class KeyboardControllerUsabilityTest : public KeyboardControllerTest {
TEST_F(KeyboardControllerUsabilityTest, KeyboardAlwaysVisibleInUsabilityTest) {
const gfx::Rect& root_bounds = root_window()->bounds();
- TestTextInputClient input_client(ui::TEXT_INPUT_TYPE_TEXT);
- TestTextInputClient no_input_client(ui::TEXT_INPUT_TYPE_NONE);
+ ui::DummyTextInputClient input_client(ui::TEXT_INPUT_TYPE_TEXT);
+ ui::DummyTextInputClient no_input_client(ui::TEXT_INPUT_TYPE_NONE);
aura::Window* keyboard_container(controller()->GetContainerWindow());
keyboard_container->SetBounds(root_bounds);
diff --git a/ui/keyboard/keyboard_layout_manager.cc b/ui/keyboard/keyboard_layout_manager.cc
new file mode 100644
index 0000000000..32085415bf
--- /dev/null
+++ b/ui/keyboard/keyboard_layout_manager.cc
@@ -0,0 +1,43 @@
+// Copyright 2014 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 "ui/keyboard/keyboard_layout_manager.h"
+
+#include "ui/keyboard/keyboard_controller.h"
+#include "ui/keyboard/keyboard_controller_proxy.h"
+#include "ui/keyboard/keyboard_util.h"
+
+namespace keyboard {
+
+// Overridden from aura::LayoutManager
+void KeyboardLayoutManager::OnWindowResized() {
+ if (keyboard_ && !controller_->proxy()->resizing_from_contents())
+ ResizeKeyboardToDefault(keyboard_);
+}
+
+void KeyboardLayoutManager::OnWindowAddedToLayout(aura::Window* child) {
+ DCHECK(!keyboard_);
+ keyboard_ = child;
+ ResizeKeyboardToDefault(keyboard_);
+}
+
+void KeyboardLayoutManager::SetChildBounds(aura::Window* child,
+ const gfx::Rect& requested_bounds) {
+ // SetChildBounds can be invoked by resizing from the container or by
+ // resizing from the contents (through window.resizeTo call in JS).
+ // The flag resizing_from_contents() is used to determine the source of the
+ // resize.
+ if (controller_->proxy()->resizing_from_contents()) {
+ controller_->NotifyKeyboardBoundsChanging(requested_bounds);
+ SetChildBoundsDirect(child, requested_bounds);
+ }
+}
+
+void KeyboardLayoutManager::ResizeKeyboardToDefault(aura::Window* child) {
+ gfx::Rect keyboard_bounds = DefaultKeyboardBoundsFromWindowBounds(
+ controller_->GetContainerWindow()->bounds());
+ SetChildBoundsDirect(child, keyboard_bounds);
+}
+
+} // namespace keyboard
diff --git a/ui/keyboard/keyboard_layout_manager.h b/ui/keyboard/keyboard_layout_manager.h
new file mode 100644
index 0000000000..52af5c9525
--- /dev/null
+++ b/ui/keyboard/keyboard_layout_manager.h
@@ -0,0 +1,45 @@
+// Copyright 2014 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 UI_KEYBOARD_KEYBOARD_LAYOUT_MANAGER_H_
+#define UI_KEYBOARD_KEYBOARD_LAYOUT_MANAGER_H_
+
+#include "ui/aura/layout_manager.h"
+#include "ui/aura/window.h"
+
+namespace keyboard {
+
+class KeyboardController;
+
+// LayoutManager for the virtual keyboard container. Manages a single window
+// (the virtual keyboard) and keeps it positioned at the bottom of the
+// owner window.
+class KeyboardLayoutManager : public aura::LayoutManager {
+ public:
+ explicit KeyboardLayoutManager(KeyboardController* controller)
+ : controller_(controller), keyboard_(NULL) {
+ }
+
+ // Overridden from aura::LayoutManager
+ virtual void OnWindowResized() OVERRIDE;
+ virtual void OnWindowAddedToLayout(aura::Window* child) OVERRIDE;
+ virtual void OnWillRemoveWindowFromLayout(aura::Window* child) OVERRIDE {}
+ virtual void OnWindowRemovedFromLayout(aura::Window* child) OVERRIDE {}
+ virtual void OnChildWindowVisibilityChanged(aura::Window* child,
+ bool visible) OVERRIDE {}
+ virtual void SetChildBounds(aura::Window* child,
+ const gfx::Rect& requested_bounds) OVERRIDE;
+
+ private:
+ void ResizeKeyboardToDefault(aura::Window* child);
+
+ KeyboardController* controller_;
+ aura::Window* keyboard_;
+
+ DISALLOW_COPY_AND_ASSIGN(KeyboardLayoutManager);
+};
+
+} // namespace keyboard
+
+#endif // UI_KEYBOARD_KEYBOARD_LAYOUT_MANAGER_H_
diff --git a/ui/keyboard/keyboard_resources.grd b/ui/keyboard/keyboard_resources.grd
index e86a630338..9aec103d08 100644
--- a/ui/keyboard/keyboard_resources.grd
+++ b/ui/keyboard/keyboard_resources.grd
@@ -15,23 +15,6 @@
</outputs>
<release seq="1">
<includes>
- <include name="IDR_KEYBOARD_API_ADAPTER_JS" file="resources/api_adapter.js" type="BINDATA" />
- <include name="IDR_KEYBOARD_CONSTANTS_JS" file="resources/constants.js" type="BINDATA" />
- <include name="IDR_KEYBOARD_ELEMENTS_ALTKEY" file="resources/elements/kb-altkey.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_ELEMENTS_ALTKEY_CONTAINER" file="resources/elements/kb-altkey-container.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_ELEMENTS_ALTKEY_DATA" file="resources/elements/kb-altkey-data.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_ELEMENTS_ALTKEY_SET" file="resources/elements/kb-altkey-set.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_ELEMENTS_KEY" file="resources/elements/kb-key.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_ELEMENTS_KEY_BASE" file="resources/elements/kb-key-base.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_ELEMENTS_KEY_CODES" file="resources/elements/kb-key-codes.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_ELEMENTS_KEY_IMPORT" file="resources/elements/kb-key-import.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_ELEMENTS_KEY_SEQUENCE" file="resources/elements/kb-key-sequence.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_ELEMENTS_KEYBOARD" file="resources/elements/kb-keyboard.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_ELEMENTS_KEYSET" file="resources/elements/kb-keyset.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_ELEMENTS_MODIFIER_KEY" file="resources/elements/kb-modifier-key.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_ELEMENTS_OPTIONS_MENU" file="resources/elements/kb-options-menu.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_ELEMENTS_ROW" file="resources/elements/kb-row.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_ELEMENTS_SHIFT_KEY" file="resources/elements/kb-shift-key.html" type="BINDATA" />
<include name="IDR_KEYBOARD_FUNCTION_KEY_ROW" file="resources/layouts/function-key-row.html" type="BINDATA" />
<include name="IDR_KEYBOARD_IMAGES_BACK" file="resources/images/back.svg" type="BINDATA" />
<include name="IDR_KEYBOARD_IMAGES_BACKSPACE" file="resources/images/backspace.svg" type="BINDATA" />
@@ -58,15 +41,11 @@
<include name="IDR_KEYBOARD_IMAGES_UP" file="resources/images/up.svg" type="BINDATA" />
<include name="IDR_KEYBOARD_IMAGES_VOLUME_DOWN" file="resources/images/volume-down.svg" type="BINDATA" />
<include name="IDR_KEYBOARD_IMAGES_VOLUME_UP" file="resources/images/volume-up.svg" type="BINDATA" />
- <!-- Don't flatten html file here. Otherwise, webui keyboard will not load the correct css file. -->
- <include name="IDR_KEYBOARD_INDEX" file="resources/index.html" allowexternalscript="true" type="BINDATA" />
- <include name="IDR_KEYBOARD_LAYOUTS_DVORAK" file="resources/layouts/dvorak.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_LAYOUTS_LATIN_ACCENTS" file="resources/layouts/latin-accents.js" type="BINDATA" />
+ <include name="IDR_KEYBOARD_INDEX" file="resources/index.html" allowexternalscript="true" flattenhtml="true" type="BINDATA" />
+ <include name="IDR_KEYBOARD_JS" file="resources/keyboard.js" flattenhtml="true" type="BINDATA" />
<include name="IDR_KEYBOARD_LAYOUTS_NUMERIC" file="resources/layouts/numeric.html" type="BINDATA" />
<include name="IDR_KEYBOARD_LAYOUTS_QWERTY" file="resources/layouts/qwerty.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_LAYOUTS_SYMBOL_ALTKEYS" file="resources/layouts/symbol-altkeys.js" type="BINDATA" />
<include name="IDR_KEYBOARD_LAYOUTS_SYSTEM_QWERTY" file="resources/layouts/system-qwerty.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_MAIN_JS" file="resources/main.js" type="BINDATA" />
<include name="IDR_KEYBOARD_MANIFEST" file="resources/manifest.json" type="BINDATA" />
<include name="IDR_KEYBOARD_MAIN_CSS" file="resources/main.css" type="BINDATA" />
<include name="IDR_KEYBOARD_POLYMER_LOADER" file="resources/polymer_loader.js" flattenhtml="true" type="BINDATA" />
@@ -76,13 +55,6 @@
<include name="IDR_KEYBOARD_SOUNDS_KEYPRESS_SPACEBAR" file="resources/sounds/keypress-spacebar.wav" type="BINDATA" />
<include name="IDR_KEYBOARD_SOUNDS_KEYPRESS_STANDARD" file="resources/sounds/keypress-standard.wav" type="BINDATA" />
<include name="IDR_KEYBOARD_SPACEBAR_ROW" file="resources/layouts/spacebar-row.html" type="BINDATA" />
- <include name="IDR_KEYBOARD_TOUCH_FUZZING_JS" file="resources/touch_fuzzing.js" type="BINDATA" />
- <include name="IDR_KEYBOARD_VOICE_INPUT_JS" file="resources/voice_input.js" type="BINDATA" />
- <include name="IDR_KEYBOARD_WEBUI_INDEX" file="resources/webui_index.html" allowexternalscript="true" type="BINDATA" />
- <include name="IDR_KEYBOARD_WEBUI_API_ADAPTER_JS" file="resources/webui/api_adapter.js" type="BINDATA" />
- <include name="IDR_KEYBOARD_WEBUI_CONSTANTS_JS" file="resources/webui/constants.js" type="BINDATA" />
- <include name="IDR_KEYBOARD_WEBUI_MAIN_CSS" file="resources/webui/main.css" type="BINDATA" />
- <include name="IDR_KEYBOARD_WEBUI_QWERTY" file="resources/layouts/webui_qwerty.html" type="BINDATA" />
</includes>
</release>
</grit>
diff --git a/ui/keyboard/keyboard_switches.cc b/ui/keyboard/keyboard_switches.cc
index aeecf37b07..36a1aeb102 100644
--- a/ui/keyboard/keyboard_switches.cc
+++ b/ui/keyboard/keyboard_switches.cc
@@ -9,6 +9,9 @@ namespace switches {
const char kEnableSwipeSelection[] = "enable-swipe-selection";
+const char kDisableInputView[] = "disable-input-view";
+const char kEnableInputView[] = "enable-input-view";
+
const char kEnableVirtualKeyboard[] = "enable-virtual-keyboard";
const char kKeyboardUsabilityExperiment[] = "keyboard-usability-experiment";
diff --git a/ui/keyboard/keyboard_switches.h b/ui/keyboard/keyboard_switches.h
index 04d4e73702..21f9471302 100644
--- a/ui/keyboard/keyboard_switches.h
+++ b/ui/keyboard/keyboard_switches.h
@@ -13,6 +13,14 @@ namespace switches {
// Enables the swipe selection feature on the virtual keyboard.
KEYBOARD_EXPORT extern const char kEnableSwipeSelection[];
+// Disables IME extension APIs from overriding the URL for specifying the
+// contents of the virtual keyboard container.
+KEYBOARD_EXPORT extern const char kDisableInputView[];
+
+// Enables an IME extension API to set a URL for specifying the contents
+// of the virtual keyboard container.
+KEYBOARD_EXPORT extern const char kEnableInputView[];
+
// Enables the virtual keyboard.
KEYBOARD_EXPORT extern const char kEnableVirtualKeyboard[];
diff --git a/ui/keyboard/keyboard_ui_controller.cc b/ui/keyboard/keyboard_ui_controller.cc
deleted file mode 100644
index 70bf2f08cd..0000000000
--- a/ui/keyboard/keyboard_ui_controller.cc
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright (c) 2013 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 "ui/keyboard/keyboard_ui_controller.h"
-
-#include "content/public/browser/browser_context.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/browser/web_ui.h"
-#include "content/public/browser/web_ui_data_source.h"
-#include "grit/keyboard_resources.h"
-#include "ui/keyboard/keyboard_constants.h"
-#include "ui/keyboard/keyboard_ui_handler.h"
-
-namespace {
-
-content::WebUIDataSource* CreateKeyboardUIDataSource() {
- content::WebUIDataSource* source =
- content::WebUIDataSource::Create(keyboard::kKeyboardWebUIHost);
-
- source->SetDefaultResource(IDR_KEYBOARD_WEBUI_INDEX);
- source->AddResourcePath("elements/kb-altkey.html",
- IDR_KEYBOARD_ELEMENTS_ALTKEY);
- source->AddResourcePath("elements/kb-altkey-container.html",
- IDR_KEYBOARD_ELEMENTS_ALTKEY_CONTAINER);
- source->AddResourcePath("elements/kb-altkey-data.html",
- IDR_KEYBOARD_ELEMENTS_ALTKEY_DATA);
- source->AddResourcePath("elements/kb-altkey-set.html",
- IDR_KEYBOARD_ELEMENTS_ALTKEY_SET);
- source->AddResourcePath("elements/kb-key.html", IDR_KEYBOARD_ELEMENTS_KEY);
- source->AddResourcePath("elements/kb-key-base.html",
- IDR_KEYBOARD_ELEMENTS_KEY_BASE);
- source->AddResourcePath("elements/kb-key-codes.html",
- IDR_KEYBOARD_ELEMENTS_KEY_CODES);
- source->AddResourcePath("elements/kb-keyboard.html",
- IDR_KEYBOARD_ELEMENTS_KEYBOARD);
- source->AddResourcePath("elements/kb-keyset.html",
- IDR_KEYBOARD_ELEMENTS_KEYSET);
- source->AddResourcePath("elements/kb-modifier-key.html",
- IDR_KEYBOARD_ELEMENTS_MODIFIER_KEY);
- source->AddResourcePath("elements/kb-options-menu.html",
- IDR_KEYBOARD_ELEMENTS_OPTIONS_MENU);
- source->AddResourcePath("elements/kb-row.html", IDR_KEYBOARD_ELEMENTS_ROW);
- source->AddResourcePath("elements/kb-shift-key.html",
- IDR_KEYBOARD_ELEMENTS_SHIFT_KEY);
- source->AddResourcePath("images/back.svg",
- IDR_KEYBOARD_IMAGES_BACK);
- source->AddResourcePath("images/backspace.svg",
- IDR_KEYBOARD_IMAGES_BACKSPACE);
- source->AddResourcePath("images/brightness-down.svg",
- IDR_KEYBOARD_IMAGES_BRIGHTNESS_DOWN);
- source->AddResourcePath("images/brightness-up.svg",
- IDR_KEYBOARD_IMAGES_BRIGHTNESS_UP);
- source->AddResourcePath("images/change-window.svg",
- IDR_KEYBOARD_IMAGES_CHANGE_WINDOW);
- source->AddResourcePath("images/down.svg",
- IDR_KEYBOARD_IMAGES_DOWN);
- source->AddResourcePath("images/forward.svg",
- IDR_KEYBOARD_IMAGES_FORWARD);
- source->AddResourcePath("images/fullscreen.svg",
- IDR_KEYBOARD_IMAGES_FULLSCREEN);
- source->AddResourcePath("images/hide-keyboard.svg",
- IDR_KEYBOARD_IMAGES_HIDE_KEYBOARD);
- source->AddResourcePath("images/left.svg",
- IDR_KEYBOARD_IMAGES_LEFT);
- source->AddResourcePath("images/microphone.svg",
- IDR_KEYBOARD_IMAGES_MICROPHONE);
- source->AddResourcePath("images/microphone-green.svg",
- IDR_KEYBOARD_IMAGES_MICROPHONE_GREEN);
- source->AddResourcePath("images/mute.svg",
- IDR_KEYBOARD_IMAGES_MUTE);
- source->AddResourcePath("images/reload.svg",
- IDR_KEYBOARD_IMAGES_RELOAD);
- source->AddResourcePath("images/return.svg",
- IDR_KEYBOARD_IMAGES_RETURN);
- source->AddResourcePath("images/right.svg",
- IDR_KEYBOARD_IMAGES_RIGHT);
- source->AddResourcePath("images/search.svg",
- IDR_KEYBOARD_IMAGES_SEARCH);
- source->AddResourcePath("images/shift.svg",
- IDR_KEYBOARD_IMAGES_SHIFT);
- source->AddResourcePath("images/shift-filled.svg",
- IDR_KEYBOARD_IMAGES_SHIFT_FILLED);
- source->AddResourcePath("images/shutdown.svg",
- IDR_KEYBOARD_IMAGES_SHUTDOWN);
- source->AddResourcePath("images/tab.svg",
- IDR_KEYBOARD_IMAGES_TAB);
- source->AddResourcePath("images/up.svg",
- IDR_KEYBOARD_IMAGES_UP);
- source->AddResourcePath("images/volume-down.svg",
- IDR_KEYBOARD_IMAGES_VOLUME_DOWN);
- source->AddResourcePath("images/volume-up.svg",
- IDR_KEYBOARD_IMAGES_VOLUME_UP);
- source->AddResourcePath("layouts/latin-accents.js",
- IDR_KEYBOARD_LAYOUTS_LATIN_ACCENTS);
- source->AddResourcePath("layouts/numeric.html", IDR_KEYBOARD_LAYOUTS_NUMERIC);
- source->AddResourcePath("layouts/system-qwerty.html",
- IDR_KEYBOARD_LAYOUTS_SYSTEM_QWERTY);
- source->AddResourcePath("main.js", IDR_KEYBOARD_MAIN_JS);
- source->AddResourcePath("polymer_loader.js", IDR_KEYBOARD_POLYMER_LOADER);
- source->AddResourcePath("roboto_bold.ttf", IDR_KEYBOARD_ROBOTO_BOLD_TTF);
- source->AddResourcePath("sounds/keypress-delete.wav",
- IDR_KEYBOARD_SOUNDS_KEYPRESS_DELETE);
- source->AddResourcePath("sounds/keypress-return.wav",
- IDR_KEYBOARD_SOUNDS_KEYPRESS_RETURN);
- source->AddResourcePath("sounds/keypress-spacebar.wav",
- IDR_KEYBOARD_SOUNDS_KEYPRESS_SPACEBAR);
- source->AddResourcePath("sounds/keypress-standard.wav",
- IDR_KEYBOARD_SOUNDS_KEYPRESS_STANDARD);
- source->AddResourcePath("touch_fuzzing.js", IDR_KEYBOARD_TOUCH_FUZZING_JS);
- source->AddResourcePath("voice_input.js", IDR_KEYBOARD_VOICE_INPUT_JS);
-
- // These files are specific to the WebUI version
- source->AddResourcePath("api_adapter.js", IDR_KEYBOARD_WEBUI_API_ADAPTER_JS);
- source->AddResourcePath("constants.js", IDR_KEYBOARD_WEBUI_CONSTANTS_JS);
- source->AddResourcePath("layouts/qwerty.html", IDR_KEYBOARD_WEBUI_QWERTY);
- source->AddResourcePath("main.css", IDR_KEYBOARD_WEBUI_MAIN_CSS);
-
- return source;
-}
-
-} // namespace
-
-namespace keyboard {
-
-KeyboardUIController::KeyboardUIController(content::WebUI* web_ui)
- : WebUIController(web_ui) {
- content::BrowserContext* browser_context =
- web_ui->GetWebContents()->GetBrowserContext();
- web_ui->AddMessageHandler(new KeyboardUIHandler());
- content::WebUIDataSource::Add(
- browser_context,
- CreateKeyboardUIDataSource());
-}
-
-KeyboardUIController::~KeyboardUIController() {}
-
-} // namespace keyboard
diff --git a/ui/keyboard/keyboard_ui_controller.h b/ui/keyboard/keyboard_ui_controller.h
deleted file mode 100644
index b06ec26c8e..0000000000
--- a/ui/keyboard/keyboard_ui_controller.h
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013 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 UI_KEYBOARD_KEYBOARD_UI_CONTROLLER_H_
-#define UI_KEYBOARD_KEYBOARD_UI_CONTROLLER_H_
-
-#include "content/public/browser/web_ui_controller.h"
-#include "ui/keyboard/keyboard_export.h"
-
-namespace content {
-class WebUI;
-};
-
-namespace keyboard {
-
-// WebUIController for chrome://keyboard/.
-class KEYBOARD_EXPORT KeyboardUIController : public content::WebUIController {
- public:
- explicit KeyboardUIController(content::WebUI* web_ui);
- virtual ~KeyboardUIController();
-
- private:
- DISALLOW_COPY_AND_ASSIGN(KeyboardUIController);
-};
-
-} // namespace keyboard
-
-#endif // UI_KEYBOARD_KEYBOARD_UI_CONTROLLER_H_
diff --git a/ui/keyboard/keyboard_ui_handler.cc b/ui/keyboard/keyboard_ui_handler.cc
deleted file mode 100644
index 88f47514eb..0000000000
--- a/ui/keyboard/keyboard_ui_handler.cc
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright (c) 2013 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 "ui/keyboard/keyboard_ui_handler.h"
-
-#include <string>
-
-#include "base/bind.h"
-#include "base/logging.h"
-#include "base/values.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/browser/web_contents_view.h"
-#include "content/public/browser/web_ui.h"
-#include "ui/aura/client/aura_constants.h"
-#include "ui/aura/window.h"
-#include "ui/aura/window_tree_host.h"
-#include "ui/base/ime/input_method.h"
-#include "ui/base/ime/text_input_client.h"
-#include "ui/keyboard/keyboard_controller.h"
-#include "ui/keyboard/keyboard_util.h"
-
-namespace keyboard {
-
-KeyboardUIHandler::KeyboardUIHandler() {
-}
-
-KeyboardUIHandler::~KeyboardUIHandler() {
-}
-
-void KeyboardUIHandler::RegisterMessages() {
- web_ui()->RegisterMessageCallback(
- "insertText",
- base::Bind(&KeyboardUIHandler::HandleInsertTextMessage,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback(
- "getInputContext",
- base::Bind(&KeyboardUIHandler::HandleGetInputContextMessage,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback(
- "sendKeyEvent",
- base::Bind(&KeyboardUIHandler::HandleSendKeyEventMessage,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback(
- "hideKeyboard",
- base::Bind(&KeyboardUIHandler::HandleHideKeyboard,
- base::Unretained(this)));
-}
-
-void KeyboardUIHandler::HandleInsertTextMessage(const base::ListValue* args) {
- base::string16 text;
- if (!args->GetString(0, &text)) {
- LOG(ERROR) << "insertText failed: bad argument";
- return;
- }
-
- aura::Window* root_window =
- web_ui()->GetWebContents()->GetView()->GetNativeView()->GetRootWindow();
- if (!root_window) {
- LOG(ERROR) << "insertText failed: no root window";
- return;
- }
-
- if (!keyboard::InsertText(text, root_window))
- LOG(ERROR) << "insertText failed";
-}
-
-void KeyboardUIHandler::HandleGetInputContextMessage(
- const base::ListValue* args) {
- int request_id;
- if (!args->GetInteger(0, &request_id)) {
- LOG(ERROR) << "getInputContext failed: bad argument";
- return;
- }
- base::DictionaryValue results;
- results.SetInteger("requestId", request_id);
-
- aura::Window* root_window =
- web_ui()->GetWebContents()->GetView()->GetNativeView()->GetRootWindow();
- if (!root_window) {
- LOG(ERROR) << "getInputContext failed: no root window";
- return;
- }
- ui::InputMethod* input_method =
- root_window->GetProperty(aura::client::kRootWindowInputMethodKey);
- if (!input_method) {
- LOG(ERROR) << "getInputContext failed: no input method";
- return;
- }
-
- ui::TextInputClient* tic = input_method->GetTextInputClient();
- results.SetInteger("type",
- tic ? tic->GetTextInputType() : ui::TEXT_INPUT_TYPE_NONE);
-
- web_ui()->CallJavascriptFunction("GetInputContextCallback",
- results);
-}
-
-void KeyboardUIHandler::HandleSendKeyEventMessage(
- const base::ListValue* args) {
- const base::DictionaryValue* params = NULL;
- std::string type;
- int char_value;
- int key_code;
- std::string key_name;
- int modifiers;
-
- if (!args->GetDictionary(0, &params) ||
- !params->GetString("type", &type) ||
- !params->GetInteger("charValue", &char_value) ||
- !params->GetInteger("keyCode", &key_code) ||
- !params->GetString("keyName", &key_name) ||
- !params->GetInteger("modifiers", &modifiers)) {
- LOG(ERROR) << "SendKeyEvent failed: bad argument";
- return;
- }
-
- aura::WindowTreeHost* host =
- web_ui()->GetWebContents()->GetView()->GetNativeView()->GetHost();
- if (!host) {
- LOG(ERROR) << "sendKeyEvent failed: no dispatcher";
- return;
- }
-
- if (!keyboard::SendKeyEvent(type,
- char_value,
- key_code,
- key_name,
- modifiers,
- host)) {
- LOG(ERROR) << "sendKeyEvent failed";
- }
-}
-
-void KeyboardUIHandler::HandleHideKeyboard(const base::ListValue* args) {
- // TODO(stevet): Call into the keyboard controller to hide the keyboard
- // directly.
- NOTIMPLEMENTED();
- return;
-}
-
-} // namespace keyboard
diff --git a/ui/keyboard/keyboard_ui_handler.h b/ui/keyboard/keyboard_ui_handler.h
deleted file mode 100644
index 3c14f7473e..0000000000
--- a/ui/keyboard/keyboard_ui_handler.h
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2013 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 UI_KEYBOARD_KEYBOARD_UI_HANDLER_H_
-#define UI_KEYBOARD_KEYBOARD_UI_HANDLER_H_
-
-#include "base/basictypes.h"
-#include "base/compiler_specific.h"
-#include "content/public/browser/web_ui_message_handler.h"
-
-namespace keyboard {
-
-// The WebUI handler for chrome://keyboard. Inserts text into the currently
-// focused TextInputClient.
-class KeyboardUIHandler : public content::WebUIMessageHandler {
- public:
- KeyboardUIHandler();
- virtual ~KeyboardUIHandler();
-
- private:
- // |content::WebUIMessageHandler| implementation:
- virtual void RegisterMessages() OVERRIDE;
-
- // Callback for the "insertText" message.
- void HandleInsertTextMessage(const base::ListValue* args);
-
- // Callback for the "getInputContext" message. The first element in
- // |args| should be an integer representing request ID.
- void HandleGetInputContextMessage(const base::ListValue* args);
-
- // Callback for the "sendKeyEvent" message. The first element in |args| is a
- // dictionary containing an event type, the character being pressed or
- // released, a virtual key code, and the state of the shift key.
- void HandleSendKeyEventMessage(const base::ListValue* args);
-
- // Callback for the "hideKeyboard" message.
- void HandleHideKeyboard(const base::ListValue* args);
-
- DISALLOW_COPY_AND_ASSIGN(KeyboardUIHandler);
-};
-
-} // namespace keyboard
-
-#endif // UI_KEYBOARD_KEYBOARD_UI_HANDLER_H_
diff --git a/ui/keyboard/keyboard_util.cc b/ui/keyboard/keyboard_util.cc
index d9b060562a..157e4be108 100644
--- a/ui/keyboard/keyboard_util.cc
+++ b/ui/keyboard/keyboard_util.cc
@@ -43,10 +43,42 @@ bool g_accessibility_keyboard_enabled = false;
base::LazyInstance<GURL> g_override_content_url = LAZY_INSTANCE_INITIALIZER;
+// The ratio between the height of the keyboard and the screen when using the
+// usability keyboard.
+const float kUsabilityKeyboardHeightRatio = 1.0f;
+
+// The default ratio between the height of the keyboard and the screen.
+const float kDefaultKeyboardHeightRatio = 0.41f;
+
+// The ratio between the height of the keyboard and the screen when using the
+// accessibility keyboard.
+const float kAccessibilityKeyboardHeightRatio = 0.3f;
+
+float GetKeyboardHeightRatio(){
+ if (keyboard::IsKeyboardUsabilityExperimentEnabled()) {
+ return kUsabilityKeyboardHeightRatio;
+ } else if (keyboard::GetAccessibilityKeyboardEnabled()) {
+ return kAccessibilityKeyboardHeightRatio;
+ }
+ return kDefaultKeyboardHeightRatio;
+}
+
+bool g_touch_keyboard_enabled = false;
+
} // namespace
namespace keyboard {
+gfx::Rect DefaultKeyboardBoundsFromWindowBounds(
+ const gfx::Rect& window_bounds) {
+ const float kKeyboardHeightRatio = GetKeyboardHeightRatio();
+ return gfx::Rect(
+ window_bounds.x(),
+ window_bounds.y() + window_bounds.height() * (1 - kKeyboardHeightRatio),
+ window_bounds.width(),
+ window_bounds.height() * kKeyboardHeightRatio);
+}
+
void SetAccessibilityKeyboardEnabled(bool enabled) {
g_accessibility_keyboard_enabled = enabled;
}
@@ -55,6 +87,14 @@ bool GetAccessibilityKeyboardEnabled() {
return g_accessibility_keyboard_enabled;
}
+void SetTouchKeyboardEnabled(bool enabled) {
+ g_touch_keyboard_enabled = enabled;
+}
+
+bool GetTouchKeyboardEnabled() {
+ return g_touch_keyboard_enabled;
+}
+
std::string GetKeyboardLayout() {
// TODO(bshe): layout string is currently hard coded. We should use more
// standard keyboard layouts.
@@ -65,7 +105,8 @@ bool IsKeyboardEnabled() {
return g_accessibility_keyboard_enabled ||
CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableVirtualKeyboard) ||
- IsKeyboardUsabilityExperimentEnabled();
+ IsKeyboardUsabilityExperimentEnabled() ||
+ g_touch_keyboard_enabled;
}
bool IsKeyboardUsabilityExperimentEnabled() {
@@ -73,6 +114,15 @@ bool IsKeyboardUsabilityExperimentEnabled() {
switches::kKeyboardUsabilityExperiment);
}
+bool IsInputViewEnabled() {
+ if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableInputView))
+ return true;
+ if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableInputView))
+ return false;
+ // Default value if no command line flags specified.
+ return false;
+}
+
bool InsertText(const base::string16& text, aura::Window* root_window) {
if (!root_window)
return false;
@@ -221,29 +271,6 @@ const GritResourceMap* GetKeyboardExtensionResources(size_t* size) {
// necessary to have a custom path for the extension path, so the resource
// map cannot be used directly.
static const GritResourceMap kKeyboardResources[] = {
- {"keyboard/api_adapter.js", IDR_KEYBOARD_API_ADAPTER_JS},
- {"keyboard/constants.js", IDR_KEYBOARD_CONSTANTS_JS},
- {"keyboard/elements/kb-altkey.html", IDR_KEYBOARD_ELEMENTS_ALTKEY},
- {"keyboard/elements/kb-altkey-container.html",
- IDR_KEYBOARD_ELEMENTS_ALTKEY_CONTAINER},
- {"keyboard/elements/kb-altkey-data.html",
- IDR_KEYBOARD_ELEMENTS_ALTKEY_DATA},
- {"keyboard/elements/kb-altkey-set.html", IDR_KEYBOARD_ELEMENTS_ALTKEY_SET},
- {"keyboard/elements/kb-key.html", IDR_KEYBOARD_ELEMENTS_KEY},
- {"keyboard/elements/kb-key-base.html", IDR_KEYBOARD_ELEMENTS_KEY_BASE},
- {"keyboard/elements/kb-key-codes.html", IDR_KEYBOARD_ELEMENTS_KEY_CODES},
- {"keyboard/elements/kb-key-import.html",
- IDR_KEYBOARD_ELEMENTS_KEY_IMPORT},
- {"keyboard/elements/kb-key-sequence.html",
- IDR_KEYBOARD_ELEMENTS_KEY_SEQUENCE},
- {"keyboard/elements/kb-keyboard.html", IDR_KEYBOARD_ELEMENTS_KEYBOARD},
- {"keyboard/elements/kb-keyset.html", IDR_KEYBOARD_ELEMENTS_KEYSET},
- {"keyboard/elements/kb-modifier-key.html",
- IDR_KEYBOARD_ELEMENTS_MODIFIER_KEY},
- {"keyboard/elements/kb-options-menu.html",
- IDR_KEYBOARD_ELEMENTS_OPTIONS_MENU},
- {"keyboard/elements/kb-row.html", IDR_KEYBOARD_ELEMENTS_ROW},
- {"keyboard/elements/kb-shift-key.html", IDR_KEYBOARD_ELEMENTS_SHIFT_KEY},
{"keyboard/layouts/function-key-row.html", IDR_KEYBOARD_FUNCTION_KEY_ROW},
{"keyboard/images/back.svg", IDR_KEYBOARD_IMAGES_BACK},
{"keyboard/images/backspace.svg", IDR_KEYBOARD_IMAGES_BACKSPACE},
@@ -273,15 +300,11 @@ const GritResourceMap* GetKeyboardExtensionResources(size_t* size) {
{"keyboard/images/volume-down.svg", IDR_KEYBOARD_IMAGES_VOLUME_DOWN},
{"keyboard/images/volume-up.svg", IDR_KEYBOARD_IMAGES_VOLUME_UP},
{"keyboard/index.html", IDR_KEYBOARD_INDEX},
- {"keyboard/layouts/dvorak.html", IDR_KEYBOARD_LAYOUTS_DVORAK},
- {"keyboard/layouts/latin-accents.js", IDR_KEYBOARD_LAYOUTS_LATIN_ACCENTS},
+ {"keyboard/keyboard.js", IDR_KEYBOARD_JS},
{"keyboard/layouts/numeric.html", IDR_KEYBOARD_LAYOUTS_NUMERIC},
{"keyboard/layouts/qwerty.html", IDR_KEYBOARD_LAYOUTS_QWERTY},
- {"keyboard/layouts/symbol-altkeys.js",
- IDR_KEYBOARD_LAYOUTS_SYMBOL_ALTKEYS},
{"keyboard/layouts/system-qwerty.html", IDR_KEYBOARD_LAYOUTS_SYSTEM_QWERTY},
{"keyboard/layouts/spacebar-row.html", IDR_KEYBOARD_SPACEBAR_ROW},
- {"keyboard/main.js", IDR_KEYBOARD_MAIN_JS},
{"keyboard/manifest.json", IDR_KEYBOARD_MANIFEST},
{"keyboard/main.css", IDR_KEYBOARD_MAIN_CSS},
{"keyboard/polymer_loader.js", IDR_KEYBOARD_POLYMER_LOADER},
@@ -294,8 +317,6 @@ const GritResourceMap* GetKeyboardExtensionResources(size_t* size) {
IDR_KEYBOARD_SOUNDS_KEYPRESS_SPACEBAR},
{"keyboard/sounds/keypress-standard.wav",
IDR_KEYBOARD_SOUNDS_KEYPRESS_STANDARD},
- {"keyboard/touch_fuzzing.js", IDR_KEYBOARD_TOUCH_FUZZING_JS},
- {"keyboard/voice_input.js", IDR_KEYBOARD_VOICE_INPUT_JS},
};
static const size_t kKeyboardResourcesSize = arraysize(kKeyboardResources);
*size = kKeyboardResourcesSize;
diff --git a/ui/keyboard/keyboard_util.h b/ui/keyboard/keyboard_util.h
index b26742267e..a3a1f8a9bf 100644
--- a/ui/keyboard/keyboard_util.h
+++ b/ui/keyboard/keyboard_util.h
@@ -38,12 +38,22 @@ enum KeyboardControlEvent {
KEYBOARD_CONTROL_MAX,
};
+// Gets the default keyboard bounds from |window_bounds|.
+KEYBOARD_EXPORT gfx::Rect DefaultKeyboardBoundsFromWindowBounds(
+ const gfx::Rect& window_bounds);
+
// Sets the state of the a11y onscreen keyboard.
KEYBOARD_EXPORT void SetAccessibilityKeyboardEnabled(bool enabled);
// Gets the state of the a11y onscreen keyboard.
KEYBOARD_EXPORT bool GetAccessibilityKeyboardEnabled();
+// Sets the state of the touch onscreen keyboard.
+KEYBOARD_EXPORT void SetTouchKeyboardEnabled(bool enabled);
+
+// Gets the state of the touch onscreen keyboard.
+KEYBOARD_EXPORT bool GetTouchKeyboardEnabled();
+
// Gets the default keyboard layout.
KEYBOARD_EXPORT std::string GetKeyboardLayout();
@@ -53,6 +63,10 @@ KEYBOARD_EXPORT bool IsKeyboardEnabled();
// Returns true if the keyboard usability test is enabled.
KEYBOARD_EXPORT bool IsKeyboardUsabilityExperimentEnabled();
+// Returns true if an IME extension can specify a custom input view for the
+// virtual keyboard window.
+KEYBOARD_EXPORT bool IsInputViewEnabled();
+
// Insert |text| into the active TextInputClient associated with |root_window|,
// if there is one. Returns true if |text| was successfully inserted. Note
// that this may convert |text| into ui::KeyEvents for injection in some
diff --git a/ui/keyboard/resources/elements/kb-altkey-container.html b/ui/keyboard/resources/elements/kb-altkey-container.html
index 552c70fedb..510d20b279 100644
--- a/ui/keyboard/resources/elements/kb-altkey-container.html
+++ b/ui/keyboard/resources/elements/kb-altkey-container.html
@@ -20,30 +20,4 @@
</style>
<content select="#{{keyset}}"></content>
</template>
- <script>
- Polymer('kb-altkey-container', {
- resetActiveElement: function() {
- var activeAccentKeySet = this.querySelector('#' + this.keyset);
- var offset = activeAccentKeySet.offset;
- var element = activeAccentKeySet.firstElementChild;
- while (offset) {
- element = element.nextElementSibling;
- offset--;
- }
- element.classList.add('active');
- },
- up: function(detail) {
- this.hidden = true;
- this.resetActiveElement();
- this.keyset = null;
- },
-
- hiddenChanged: function() {
- this.fire('stateChange', {
- state: 'candidatePopupVisibility',
- value: !!this.hidden
- });
- },
- });
- </script>
</polymer-element>
diff --git a/ui/keyboard/resources/elements/kb-altkey-container.js b/ui/keyboard/resources/elements/kb-altkey-container.js
new file mode 100644
index 0000000000..c6c4fe662b
--- /dev/null
+++ b/ui/keyboard/resources/elements/kb-altkey-container.js
@@ -0,0 +1,28 @@
+// Copyright 2014 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.
+
+Polymer('kb-altkey-container', {
+ resetActiveElement: function() {
+ var activeAccentKeySet = this.querySelector('#' + this.keyset);
+ var offset = activeAccentKeySet.offset;
+ var element = activeAccentKeySet.firstElementChild;
+ while (offset) {
+ element = element.nextElementSibling;
+ offset--;
+ }
+ element.classList.add('active');
+ },
+ up: function(detail) {
+ this.hidden = true;
+ this.resetActiveElement();
+ this.keyset = null;
+ },
+
+ hiddenChanged: function() {
+ this.fire('stateChange', {
+ state: 'candidatePopupVisibility',
+ value: !!this.hidden
+ });
+ },
+});
diff --git a/ui/keyboard/resources/elements/kb-altkey-data.html b/ui/keyboard/resources/elements/kb-altkey-data.html
index 67f793ad4b..63b8fadd48 100644
--- a/ui/keyboard/resources/elements/kb-altkey-data.html
+++ b/ui/keyboard/resources/elements/kb-altkey-data.html
@@ -5,128 +5,4 @@
-->
<polymer-element name="kb-altkey-data" attributes="char list">
-<script>
- (function() {
- var altKeys = {};
- var idMap = {};
-
- /**
- * Creates a unique identifier based on the key provided.
- * This identifier is of the form 'idHASH' where HASH is
- * the concatenation of the keycodes of every character in the string.
- * @param {string} key Key for which we want an identifier.
- * @return {string} The unique id for key.
- */
- function createId(key) {
- var hash = key.split('').map(
- // Returns the key code for the character.
- function(character) {
- return character.charCodeAt(0);
- }
- ).join('');
- return 'id' + hash;
- }
-
- Polymer('kb-altkey-data', {
-
- /**
- * Retrieves a list of alternative keys to display on a long-press.
- * @param {string} char The base character.
- * @param {boolean=} opt_force If true, force the creation of a list
- * even if empty. Used when constructing a set of alternates for keys
- * with hintTexts.
- * @return {?Object.{id: string, list: string}}
- */
- getAltkeys: function(char, opt_force) {
- var id = idMap[char];
- if (id) {
- return {
- 'id': id,
- 'keys': altKeys[id]
- };
- }
- if (opt_force) {
- return {
- 'id': createId(char),
- 'keys': []
- };
- }
- },
-
- /**
- * Registers lists of alternative keys displayed on a long-press.
- * @param {Object.<string, Array.<string>>} data Mapping of characters to
- * lists of alternatives.
- */
- registerAltkeys: function(data) {
- for (var key in data) {
- var id = idMap[key];
- if (!id)
- idMap[key] = id = createId(key);
- altKeys[id] = data[key];
- }
- },
-
- /**
- * Creates a list of alternate candidates to display in a popup on a
- * long-press.
- * @param {string} char The base character.
- * @param {number} maxLeftOffset Limits the number of candidates
- * displayed to the left of the base character to prevent running
- * past the left edge of the keyboard.
- * @param {number} maxRightOffset Limits the number of candidates
- * displayed to the right of the base character to prvent running
- * past the right edge of the keyboard.
- * @param {string=} opt_additionalKeys Optional list of additional keys
- * to include in the candidates list.
- */
- createAltkeySet: function(char,
- maxLeftOffset,
- maxRightOffset,
- opt_additionalKeys) {
- var altKeys = this.getAltkeys(char, true /* forced */);
- if (altKeys) {
- var list = altKeys.keys;
- if (opt_additionalKeys)
- list = opt_additionalKeys.split('').concat(list);
- list = [char].concat(list);
-
- var set = document.createElement('kb-altkey-set');
- // Candiates are approximately in decreasing order of usage, and are
- // arranged in a single row in the popup display. To reduce the
- // expected length of the drag gesture for selecting a candidate,
- // more likely candidates are placed in the center of the popup,
- // which is achieved by alternately appending and prepending
- // candiates in the alternatives popup.
- var prepend = false;
- var leftOffset = 0;
- var rightOffset = 0;
- for (var i = 0; i < list.length; i++) {
- var key = document.createElement('kb-altkey');
- key.textContent = list[i];
- if (prepend) {
- set.insertBefore(key, set.firstChild);
- leftOffset++;
- } else {
- set.appendChild(key);
- rightOffset++;
- }
- prepend = !prepend;
- // Verify that there is room remaining for an additional character.
- if (leftOffset == maxLeftOffset && rightOffset == maxRightOffset)
- break;
- if (leftOffset == maxLeftOffset)
- prepend = false;
- else if (rightOffset == maxRightOffset)
- prepend = true;
- }
- set.id = altKeys.id;
- set.offset = leftOffset;
- return set;
- }
- },
-
- });
- })();
-</script>
</polymer-element>
diff --git a/ui/keyboard/resources/elements/kb-altkey-data.js b/ui/keyboard/resources/elements/kb-altkey-data.js
new file mode 100644
index 0000000000..e45cb319a5
--- /dev/null
+++ b/ui/keyboard/resources/elements/kb-altkey-data.js
@@ -0,0 +1,126 @@
+// Copyright 2014 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.
+
+(function() {
+ var altKeys = {};
+ var idMap = {};
+
+ /**
+ * Creates a unique identifier based on the key provided.
+ * This identifier is of the form 'idHASH' where HASH is
+ * the concatenation of the keycodes of every character in the string.
+ * @param {string} key Key for which we want an identifier.
+ * @return {string} The unique id for key.
+ */
+ function createId(key) {
+ var hash = key.split('').map(
+ // Returns the key code for the character.
+ function(character) {
+ return character.charCodeAt(0);
+ }
+ ).join('');
+ return 'id' + hash;
+ }
+
+ Polymer('kb-altkey-data', {
+
+ /**
+ * Retrieves a list of alternative keys to display on a long-press.
+ * @param {string} char The base character.
+ * @param {boolean=} opt_force If true, force the creation of a list
+ * even if empty. Used when constructing a set of alternates for keys
+ * with hintTexts.
+ * @return {?Object.{id: string, list: string}}
+ */
+ getAltkeys: function(char, opt_force) {
+ var id = idMap[char];
+ if (id) {
+ return {
+ 'id': id,
+ 'keys': altKeys[id]
+ };
+ }
+ if (opt_force) {
+ return {
+ 'id': createId(char),
+ 'keys': []
+ };
+ }
+ },
+
+ /**
+ * Registers lists of alternative keys displayed on a long-press.
+ * @param {Object.<string, Array.<string>>} data Mapping of characters to
+ * lists of alternatives.
+ */
+ registerAltkeys: function(data) {
+ for (var key in data) {
+ var id = idMap[key];
+ if (!id)
+ idMap[key] = id = createId(key);
+ altKeys[id] = data[key];
+ }
+ },
+
+ /**
+ * Creates a list of alternate candidates to display in a popup on a
+ * long-press.
+ * @param {string} char The base character.
+ * @param {number} maxLeftOffset Limits the number of candidates
+ * displayed to the left of the base character to prevent running
+ * past the left edge of the keyboard.
+ * @param {number} maxRightOffset Limits the number of candidates
+ * displayed to the right of the base character to prvent running
+ * past the right edge of the keyboard.
+ * @param {string=} opt_additionalKeys Optional list of additional keys
+ * to include in the candidates list.
+ */
+ createAltkeySet: function(char,
+ maxLeftOffset,
+ maxRightOffset,
+ opt_additionalKeys) {
+ var altKeys = this.getAltkeys(char, true /* forced */);
+ if (altKeys) {
+ var list = altKeys.keys;
+ if (opt_additionalKeys)
+ list = opt_additionalKeys.split('').concat(list);
+ list = [char].concat(list);
+
+ var set = document.createElement('kb-altkey-set');
+ // Candiates are approximately in decreasing order of usage, and are
+ // arranged in a single row in the popup display. To reduce the
+ // expected length of the drag gesture for selecting a candidate,
+ // more likely candidates are placed in the center of the popup,
+ // which is achieved by alternately appending and prepending
+ // candiates in the alternatives popup.
+ var prepend = false;
+ var leftOffset = 0;
+ var rightOffset = 0;
+ for (var i = 0; i < list.length; i++) {
+ var key = document.createElement('kb-altkey');
+ key.textContent = list[i];
+ if (prepend) {
+ set.insertBefore(key, set.firstChild);
+ leftOffset++;
+ } else {
+ set.appendChild(key);
+ rightOffset++;
+ }
+ prepend = !prepend;
+ // Verify that there is room remaining for an additional character.
+ if (leftOffset == maxLeftOffset && rightOffset == maxRightOffset)
+ break;
+ if (leftOffset == maxLeftOffset)
+ prepend = false;
+ else if (rightOffset == maxRightOffset)
+ prepend = true;
+ }
+ set.id = altKeys.id;
+ set.offset = leftOffset;
+ return set;
+ }
+ },
+
+ });
+})();
diff --git a/ui/keyboard/resources/elements/kb-altkey-set.html b/ui/keyboard/resources/elements/kb-altkey-set.html
index dfa93c3955..65a175fa45 100644
--- a/ui/keyboard/resources/elements/kb-altkey-set.html
+++ b/ui/keyboard/resources/elements/kb-altkey-set.html
@@ -17,9 +17,4 @@
</style>
<content select="*"></content>
</template>
- <script>
- Polymer('kb-altkey-set', {
- offset: 0,
- });
- </script>
</polymer-element>
diff --git a/ui/keyboard/resources/elements/kb-altkey-set.js b/ui/keyboard/resources/elements/kb-altkey-set.js
new file mode 100644
index 0000000000..9679d9f3f6
--- /dev/null
+++ b/ui/keyboard/resources/elements/kb-altkey-set.js
@@ -0,0 +1,7 @@
+// Copyright 2014 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.
+
+Polymer('kb-altkey-set', {
+ offset: 0,
+});
diff --git a/ui/keyboard/resources/elements/kb-altkey.html b/ui/keyboard/resources/elements/kb-altkey.html
index b6e6615640..34ff0fee8a 100644
--- a/ui/keyboard/resources/elements/kb-altkey.html
+++ b/ui/keyboard/resources/elements/kb-altkey.html
@@ -49,53 +49,4 @@
<content></content>
</div>
</template>
- <script>
- /**
- * Filter out mouse/touch movements internal to this node. When moving
- * inside a node, the event should be filter out.
- * @param {Node} node The accent key node which receives event.
- * @param {event} event A pointer move event.
- * @return {boolean} True if event is external to node.
- */
- function isRelevantEvent(node, event) {
- return !(node.compareDocumentPosition(event.relatedTarget)
- & Node.DOCUMENT_POSITION_CONTAINED_BY);
- };
- Polymer('kb-altkey', {
- over: function(event) {
- if (isRelevantEvent(this, event)) {
- // Dragging over an accent key is equivalent to pressing on the accent
- // key.
- this.fire('key-down', {});
- }
- },
-
- out: function(event) {
- if (isRelevantEvent(this, event)) {
- this.classList.remove('active');
- }
- },
-
- up: function(event) {
- var detail = {
- char: this.charValue
- };
- this.fire('key-up', detail);
- },
-
- // TODO(bshe): kb-altkey should extend from kb-key-base.
- autoRelease: function() {
- },
-
- /**
- * Character value associated with the key. Typically, the value is a
- * single character, but may be multi-character in cases like a ".com"
- * button.
- * @return {string}
- */
- get charValue() {
- return this.char || this.textContent;
- }
- });
- </script>
</polymer-element>
diff --git a/ui/keyboard/resources/elements/kb-altkey.js b/ui/keyboard/resources/elements/kb-altkey.js
new file mode 100644
index 0000000000..ee70a5e1ad
--- /dev/null
+++ b/ui/keyboard/resources/elements/kb-altkey.js
@@ -0,0 +1,52 @@
+// Copyright 2014 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.
+
+/**
+ * Filter out mouse/touch movements internal to this node. When moving
+ * inside a node, the event should be filter out.
+ * @param {Node} node The accent key node which receives event.
+ * @param {event} event A pointer move event.
+ * @return {boolean} True if event is external to node.
+ */
+ function isRelevantEvent(node, event) {
+ return !(node.compareDocumentPosition(event.relatedTarget)
+ & Node.DOCUMENT_POSITION_CONTAINED_BY);
+};
+Polymer('kb-altkey', {
+ over: function(event) {
+ if (isRelevantEvent(this, event)) {
+ // Dragging over an accent key is equivalent to pressing on the accent
+ // key.
+ this.fire('key-down', {});
+ }
+ },
+
+ out: function(event) {
+ if (isRelevantEvent(this, event)) {
+ this.classList.remove('active');
+ }
+ },
+
+ up: function(event) {
+ var detail = {
+ char: this.charValue
+ };
+ this.fire('key-up', detail);
+ },
+
+ // TODO(bshe): kb-altkey should extend from kb-key-base.
+ autoRelease: function() {
+ },
+
+ /**
+ * Character value associated with the key. Typically, the value is a
+ * single character, but may be multi-character in cases like a ".com"
+ * button.
+ * @return {string}
+ */
+ get charValue() {
+ return this.char || this.textContent;
+ }
+});
+
diff --git a/ui/keyboard/resources/elements/kb-key-base.html b/ui/keyboard/resources/elements/kb-key-base.html
index 419c253f15..c1649b862c 100644
--- a/ui/keyboard/resources/elements/kb-key-base.html
+++ b/ui/keyboard/resources/elements/kb-key-base.html
@@ -4,233 +4,6 @@
-- found in the LICENSE file.
-->
-<polymer-element name="kb-key-base"
- on-pointerout="{{out}}"
- attributes="char invert repeat hintText toKeyset toLayout">
- <script>
- /**
- * The long-press delay in milliseconds before long-press handler is
- * invoked.
- * @const
- * @type {number}
- */
- var LONGPRESS_DELAY_MSEC = 500;
-
- /**
- * The maximum number of elements in one keyset rule.
- * @const
- * @type {number}
- */
- var MAXIMUM_NUM_OF_RULE_ELEMENTS = 3;
-
- /**
- * The minumum number of elements in one keyset rule.
- * @const
- * @type {number}
- */
- var MINIMUM_NUM_OF_RULE_ELEMENTS = 2;
-
- /**
- * The index of event type element in the splitted keyset rule.
- * @const
- * @type {number}
- */
- var EVENT_TYPE = 0;
-
- /**
- * The index of toKeyset element in the splitted keyset rule.
- * @const
- * @type {number}
- */
- var TO_KEYSET = 1;
-
- /**
- * The index of nextKeyset element in the splitted keyset rule.
- * @const
- * @type {number}
- */
- var NEXT_KEYSET = 2;
-
- /**
- * The index offset of toKeyset and nextKeyset elements in splitted keyset
- * rule array and the array in keysetRules.
- * @const
- * @type {number}
- */
- var OFFSET = 1;
-
- /**
- * The minumum number of elements in one keyset rule.
- * @const {number}
- */
- var MINIMUM_NUM_OF_RULE_ELEMENTS = 2;
-
- Polymer('kb-key-base', {
- repeat: false,
- invert: false,
- longPressTimer: null,
- pointerId: undefined,
-
- /**
- * The keyset transition rules. It defines which keyset to transit to on
- * which key events. It consists at most four rules (down, up, long, dbl).
- * If no rule is defined for a key event, the event wont trigger a keyset
- * change.
- * @type {Object.<string, Array.<string>}
- */
- keysetRules: null,
-
- ready: function() {
- if (this.toKeyset) {
- // Parsing keyset rules from toKeyset attribute string.
- // An rule can be defined as: (down|up|long|dbl):keysetid[:keysetid]
- // and each rule are separated by a semicolon. The first element
- // defines the event this rule applies to. The second element defines
- // what keyset to transit to after event received. The third optional
- // element defines what keyset to transit to after a key is pressed in
- // the new keyset. It is useful when you want to transit to a not
- // locked keyset. For example, after transit to a upper case keyset,
- // it may make sense to transit back to lower case after user typed
- // any key at the upper case keyset.
- var rules =
- this.toKeyset.replace(/(\r\n|\n|\r| )/g, '').split(';');
- this.keysetRules = {};
- var self = this;
- rules.forEach(function(element) {
- if (element == '')
- return;
- var keyValues = element.split(':', MAXIMUM_NUM_OF_RULE_ELEMENTS);
- if (keyValues.length < MINIMUM_NUM_OF_RULE_ELEMENTS) {
- console.error('Invalid keyset rules: ' + element);
- return;
- }
- self.keysetRules[keyValues[EVENT_TYPE]] = [keyValues[TO_KEYSET],
- (keyValues[NEXT_KEYSET] ? keyValues[NEXT_KEYSET] : null)];
- });
- }
- },
-
- down: function(event) {
- this.pointerId = event.pointerId;
- var detail = this.populateDetails('down');
- this.fire('key-down', detail);
- this.longPressTimer = this.generateLongPressTimer();
- },
- out: function(event) {
- this.classList.remove('active');
- clearTimeout(this.longPressTimer);
- },
- up: function(event) {
- this.generateKeyup();
- },
-
- /**
- * Releases the pressed key programmatically and fires key-up event. This
- * should be called if a second key is pressed while the first key is not
- * released yet.
- */
- autoRelease: function() {
- this.generateKeyup();
- },
-
- /**
- * Drops the pressed key.
- */
- dropKey: function() {
- this.classList.remove('active');
- clearTimeout(this.longPressTimer);
- this.pointerId = undefined;
- },
-
- /**
- * Populates details for this key, and then fires a key-up event.
- */
- generateKeyup: function() {
- if (this.pointerId === undefined)
- return;
-
- // Invalidates the pointerId so the subsequent pointerup event is a
- // noop.
- this.pointerId = undefined;
- clearTimeout(this.longPressTimer);
- var detail = this.populateDetails('up');
- this.fire('key-up', detail);
- },
-
- /**
- * Character value associated with the key. Typically, the value is a
- * single character, but may be multi-character in cases like a ".com"
- * button.
- * @return {string}
- */
- get charValue() {
- return this.invert ? this.hintText : (this.char || this.textContent);
- },
-
- /**
- * Hint text value associated with the key. Typically, the value is a
- * single character.
- * @return {string}
- */
- get hintTextValue() {
- return this.invert ? (this.char || this.textContent) : this.hintText;
- },
-
- /**
- * Handles a swipe flick that originated from this key.
- * @param {detail} The details of the swipe.
- */
- onFlick: function(detail) {
- if (!(detail.direction & SwipeDirection.UP) || !this.hintTextValue)
- return;
- var typeDetails = {char: this.hintTextValue};
- this.fire('type-key', typeDetails);
- },
-
- /**
- * Returns a subset of the key attributes.
- * @param {string} caller The id of the function which called
- * populateDetails.
- */
- populateDetails: function(caller) {
- var detail = {
- char: this.charValue,
- toLayout: this.toLayout,
- repeat: this.repeat
- };
-
- switch (caller) {
- case ('up'):
- if (this.keysetRules && this.keysetRules.up != undefined) {
- detail.toKeyset = this.keysetRules.up[TO_KEYSET - OFFSET];
- detail.nextKeyset = this.keysetRules.up[NEXT_KEYSET - OFFSET];
- }
- break;
- case ('down'):
- if (this.keysetRules && this.keysetRules.down != undefined) {
- detail.toKeyset = this.keysetRules.down[TO_KEYSET - OFFSET];
- detail.nextKeyset = this.keysetRules.down[NEXT_KEYSET - OFFSET];
- }
- break;
- default:
- break;
- }
- return detail;
- },
-
- generateLongPressTimer: function() {
- return this.async(function() {
- var detail = {
- char: this.charValue,
- hintText: this.hintTextValue
- };
- if (this.keysetRules && this.keysetRules.long != undefined) {
- detail.toKeyset = this.keysetRules.long[TO_KEYSET - OFFSET];
- detail.nextKeyset = this.keysetRules.long[NEXT_KEYSET - OFFSET];
- }
- this.fire('key-longpress', detail);
- }, null, LONGPRESS_DELAY_MSEC);
- },
- });
- </script>
+<polymer-element name="kb-key-base" on-pointerout="{{out}}" attributes="char
+ invert repeat hintText toKeyset toLayout">
</polymer-element>
diff --git a/ui/keyboard/resources/elements/kb-key-base.js b/ui/keyboard/resources/elements/kb-key-base.js
new file mode 100644
index 0000000000..ed6b527d76
--- /dev/null
+++ b/ui/keyboard/resources/elements/kb-key-base.js
@@ -0,0 +1,228 @@
+// Copyright 2014 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.
+
+/**
+ * The long-press delay in milliseconds before long-press handler is
+ * invoked.
+ * @const
+ * @type {number}
+ */
+var LONGPRESS_DELAY_MSEC = 500;
+
+/**
+ * The maximum number of elements in one keyset rule.
+ * @const
+ * @type {number}
+ */
+var MAXIMUM_NUM_OF_RULE_ELEMENTS = 3;
+
+/**
+ * The minumum number of elements in one keyset rule.
+ * @const
+ * @type {number}
+ */
+var MINIMUM_NUM_OF_RULE_ELEMENTS = 2;
+
+/**
+ * The index of event type element in the splitted keyset rule.
+ * @const
+ * @type {number}
+ */
+var EVENT_TYPE = 0;
+
+/**
+ * The index of toKeyset element in the splitted keyset rule.
+ * @const
+ * @type {number}
+ */
+var TO_KEYSET = 1;
+
+/**
+ * The index of nextKeyset element in the splitted keyset rule.
+ * @const
+ * @type {number}
+ */
+var NEXT_KEYSET = 2;
+
+/**
+ * The index offset of toKeyset and nextKeyset elements in splitted keyset
+ * rule array and the array in keysetRules.
+ * @const
+ * @type {number}
+ */
+var OFFSET = 1;
+
+/**
+ * The minumum number of elements in one keyset rule.
+ * @const {number}
+ */
+var MINIMUM_NUM_OF_RULE_ELEMENTS = 2;
+
+Polymer('kb-key-base', {
+ repeat: false,
+ invert: false,
+ longPressTimer: null,
+ pointerId: undefined,
+
+ /**
+ * The keyset transition rules. It defines which keyset to transit to on
+ * which key events. It consists at most four rules (down, up, long, dbl).
+ * If no rule is defined for a key event, the event wont trigger a keyset
+ * change.
+ * @type {Object.<string, Array.<string>}
+ */
+ keysetRules: null,
+
+ ready: function() {
+ if (this.toKeyset) {
+ // Parsing keyset rules from toKeyset attribute string.
+ // An rule can be defined as: (down|up|long|dbl):keysetid[:keysetid]
+ // and each rule are separated by a semicolon. The first element
+ // defines the event this rule applies to. The second element defines
+ // what keyset to transit to after event received. The third optional
+ // element defines what keyset to transit to after a key is pressed in
+ // the new keyset. It is useful when you want to transit to a not
+ // locked keyset. For example, after transit to a upper case keyset,
+ // it may make sense to transit back to lower case after user typed
+ // any key at the upper case keyset.
+ var rules =
+ this.toKeyset.replace(/(\r\n|\n|\r| )/g, '').split(';');
+ this.keysetRules = {};
+ var self = this;
+ rules.forEach(function(element) {
+ if (element == '')
+ return;
+ var keyValues = element.split(':', MAXIMUM_NUM_OF_RULE_ELEMENTS);
+ if (keyValues.length < MINIMUM_NUM_OF_RULE_ELEMENTS) {
+ console.error('Invalid keyset rules: ' + element);
+ return;
+ }
+ self.keysetRules[keyValues[EVENT_TYPE]] = [keyValues[TO_KEYSET],
+ (keyValues[NEXT_KEYSET] ? keyValues[NEXT_KEYSET] : null)];
+ });
+ }
+ },
+
+ down: function(event) {
+ this.pointerId = event.pointerId;
+ var detail = this.populateDetails('down');
+ this.fire('key-down', detail);
+ this.longPressTimer = this.generateLongPressTimer();
+ },
+ out: function(event) {
+ this.classList.remove('active');
+ clearTimeout(this.longPressTimer);
+ },
+ up: function(event) {
+ this.generateKeyup();
+ },
+
+ /**
+ * Releases the pressed key programmatically and fires key-up event. This
+ * should be called if a second key is pressed while the first key is not
+ * released yet.
+ */
+ autoRelease: function() {
+ this.generateKeyup();
+ },
+
+ /**
+ * Drops the pressed key.
+ */
+ dropKey: function() {
+ this.classList.remove('active');
+ clearTimeout(this.longPressTimer);
+ this.pointerId = undefined;
+ },
+
+ /**
+ * Populates details for this key, and then fires a key-up event.
+ */
+ generateKeyup: function() {
+ if (this.pointerId === undefined)
+ return;
+
+ // Invalidates the pointerId so the subsequent pointerup event is a
+ // noop.
+ this.pointerId = undefined;
+ clearTimeout(this.longPressTimer);
+ var detail = this.populateDetails('up');
+ this.fire('key-up', detail);
+ },
+
+ /**
+ * Character value associated with the key. Typically, the value is a
+ * single character, but may be multi-character in cases like a ".com"
+ * button.
+ * @return {string}
+ */
+ get charValue() {
+ return this.invert ? this.hintText : (this.char || this.textContent);
+ },
+
+ /**
+ * Hint text value associated with the key. Typically, the value is a
+ * single character.
+ * @return {string}
+ */
+ get hintTextValue() {
+ return this.invert ? (this.char || this.textContent) : this.hintText;
+ },
+
+ /**
+ * Handles a swipe flick that originated from this key.
+ * @param {detail} The details of the swipe.
+ */
+ onFlick: function(detail) {
+ if (!(detail.direction & SwipeDirection.UP) || !this.hintTextValue)
+ return;
+ var typeDetails = {char: this.hintTextValue};
+ this.fire('type-key', typeDetails);
+ },
+
+ /**
+ * Returns a subset of the key attributes.
+ * @param {string} caller The id of the function which called
+ * populateDetails.
+ */
+ populateDetails: function(caller) {
+ var detail = {
+ char: this.charValue,
+ toLayout: this.toLayout,
+ repeat: this.repeat
+ };
+
+ switch (caller) {
+ case ('up'):
+ if (this.keysetRules && this.keysetRules.up != undefined) {
+ detail.toKeyset = this.keysetRules.up[TO_KEYSET - OFFSET];
+ detail.nextKeyset = this.keysetRules.up[NEXT_KEYSET - OFFSET];
+ }
+ break;
+ case ('down'):
+ if (this.keysetRules && this.keysetRules.down != undefined) {
+ detail.toKeyset = this.keysetRules.down[TO_KEYSET - OFFSET];
+ detail.nextKeyset = this.keysetRules.down[NEXT_KEYSET - OFFSET];
+ }
+ break;
+ default:
+ break;
+ }
+ return detail;
+ },
+
+ generateLongPressTimer: function() {
+ return this.async(function() {
+ var detail = {
+ char: this.charValue,
+ hintText: this.hintTextValue
+ };
+ if (this.keysetRules && this.keysetRules.long != undefined) {
+ detail.toKeyset = this.keysetRules.long[TO_KEYSET - OFFSET];
+ detail.nextKeyset = this.keysetRules.long[NEXT_KEYSET - OFFSET];
+ }
+ this.fire('key-longpress', detail);
+ }, null, LONGPRESS_DELAY_MSEC);
+ },
+});
diff --git a/ui/keyboard/resources/elements/kb-key-codes.html b/ui/keyboard/resources/elements/kb-key-codes.html
index d99a00fcf7..8fc0ee8547 100644
--- a/ui/keyboard/resources/elements/kb-key-codes.html
+++ b/ui/keyboard/resources/elements/kb-key-codes.html
@@ -5,229 +5,4 @@
-->
<polymer-element name="kb-key-codes">
-<script>
- (function() {
-
- // Flag values for ctrl, alt and shift as defined by EventFlags
- // in "event_constants.h".
- // @enum {number}
- var Modifier = {
- NONE: 0,
- ALT: 8,
- CONTROL: 4,
- SHIFT: 2
- }
-
- // Each virtual key event is assigned a unique ID.
- var nextRequestID = 0;
-
- // Keycodes have been deprecated in the KeyEvent specification, but are
- // nonetheless required to support legacy web content. The Keycodes in the
- // following table are based on subset of US-EN 101-key keyboard. These
- // codes are used in the absence of explicit keycodes for kb-key and
- // kb-keysequence elements. Keyboard layout authors may explicitly set the
- // keyCode attribute for kb-key or kb-keysequence elements to refer to
- // indices in this table in order to emulate a physical keyboard with an
- // alternate layout. Not all keys on a virtual keyboard are required to
- // have keyCodes. The shiftModifier specifies whether to always include or
- // exclude the shift modifer when sending key events for this key. If it's
- // undefined, it will defer to state of the keyboard.
- // TODO(rsadam): Correctly propagate shutdown keycode. This is currently
- // ignored due to chromoting (crbug/146609)
- var keyCodes = {
- '\b': {keyCode: 0x08, keyName: 'Backspace', shiftModifier: false},
- '\t': {keyCode: 0x09, keyName: 'Tab', shiftModifier: false},
- '\n': {keyCode: 0x0D, keyName: 'Enter', shiftModifier: false},
- 'Esc': {keyCode: 0x1B, keyName: 'Escape', shiftModifier: false},
- ' ': {keyCode: 0x20, keyName: 'Space', shiftModifier: false},
- 'Arrow-Left': {keyCode: 0x25, keyName: 'ArrowLeft',
- shiftModifier: undefined},
- 'Arrow-Up': {keyCode: 0x26, keyName: 'ArrowUp', shiftModifier: undefined},
- 'Arrow-Right': {keyCode: 0x27, keyName: 'ArrowRight',
- shiftModifier: undefined},
- 'Arrow-Down': {keyCode: 0x28, keyName: 'ArrowDown',
- shiftModifier: undefined},
- '0': {keyCode: 0x30, keyName: 'Digit0', shiftModifier: false},
- ')': {keyCode: 0x30, keyName: 'Digit0', shiftModifier: true},
- '1': {keyCode: 0x31, keyName: 'Digit1', shiftModifier: false},
- '!': {keyCode: 0x31, keyName: 'Digit1', shiftModifier: true},
- '2': {keyCode: 0x32, keyName: 'Digit2', shiftModifier: false},
- '@': {keyCode: 0x32, keyName: 'Digit2', shiftModifier: true},
- '3': {keyCode: 0x33, keyName: 'Digit3', shiftModifier: false},
- '#': {keyCode: 0x33, keyName: 'Digit3', shiftModifier: true},
- '4': {keyCode: 0x34, keyName: 'Digit4', shiftModifier: false},
- '$': {keyCode: 0x34, keyName: 'Digit4', shiftModifier: true},
- '5': {keyCode: 0x35, keyName: 'Digit5', shiftModifier: false},
- '%': {keyCode: 0x35, keyName: 'Digit5', shiftModifier: true},
- '6': {keyCode: 0x36, keyName: 'Digit6', shiftModifier: false},
- '^': {keyCode: 0x36, keyName: 'Digit6', shiftModifier: true},
- '7': {keyCode: 0x37, keyName: 'Digit7', shiftModifier: false},
- '&': {keyCode: 0x37, keyName: 'Digit7', shiftModifier: true},
- '8': {keyCode: 0x38, keyName: 'Digit8', shiftModifier: false},
- '*': {keyCode: 0x38, keyName: 'Digit8', shiftModifier: true},
- '9': {keyCode: 0x39, keyName: 'Digit9', shiftModifier: false},
- '(': {keyCode: 0x39, keyName: 'Digit9', shiftModifier: true},
- 'a': {keyCode: 0x41, keyName: 'KeyA', shiftModifier: false},
- 'A': {keyCode: 0x41, keyName: 'KeyA', shiftModifier: true},
- 'b': {keyCode: 0x42, keyName: 'KeyB', shiftModifier: false},
- 'B': {keyCode: 0x42, keyName: 'KeyB', shiftModifier: true},
- 'c': {keyCode: 0x43, keyName: 'KeyC', shiftModifier: false},
- 'C': {keyCode: 0x43, keyName: 'KeyC', shiftModifier: true},
- 'd': {keyCode: 0x44, keyName: 'KeyD', shiftModifier: false},
- 'D': {keyCode: 0x44, keyName: 'KeyD', shiftModifier: true},
- 'e': {keyCode: 0x45, keyName: 'KeyE', shiftModifier: false},
- 'E': {keyCode: 0x45, keyName: 'KeyE', shiftModifier: true},
- 'f': {keyCode: 0x46, keyName: 'KeyF', shiftModifier: false},
- 'F': {keyCode: 0x46, keyName: 'KeyF', shiftModifier: true},
- 'g': {keyCode: 0x47, keyName: 'KeyG', shiftModifier: false},
- 'G': {keyCode: 0x47, keyName: 'KeyG', shiftModifier: true},
- 'h': {keyCode: 0x48, keyName: 'KeyH', shiftModifier: false},
- 'H': {keyCode: 0x48, keyName: 'KeyH', shiftModifier: true},
- 'i': {keyCode: 0x49, keyName: 'KeyI', shiftModifier: false},
- 'I': {keyCode: 0x49, keyName: 'KeyI', shiftModifier: true},
- 'j': {keyCode: 0x4A, keyName: 'KeyJ', shiftModifier: false},
- 'J': {keyCode: 0x4A, keyName: 'KeyJ', shiftModifier: true},
- 'k': {keyCode: 0x4B, keyName: 'KeyK', shiftModifier: false},
- 'K': {keyCode: 0x4B, keyName: 'KeyK', shiftModifier: true},
- 'l': {keyCode: 0x4C, keyName: 'KeyL', shiftModifier: false},
- 'L': {keyCode: 0x4C, keyName: 'KeyL', shiftModifier: true},
- 'm': {keyCode: 0x4D, keyName: 'KeyM', shiftModifier: false},
- 'M': {keyCode: 0x4D, keyName: 'KeyM', shiftModifier: true},
- 'n': {keyCode: 0x4E, keyName: 'KeyN', shiftModifier: false},
- 'N': {keyCode: 0x4E, keyName: 'KeyN', shiftModifier: true},
- 'o': {keyCode: 0x4F, keyName: 'KeyO', shiftModifier: false},
- 'O': {keyCode: 0x4F, keyName: 'KeyO', shiftModifier: true},
- 'p': {keyCode: 0x50, keyName: 'KeyP', shiftModifier: false},
- 'P': {keyCode: 0x50, keyName: 'KeyP', shiftModifier: true},
- 'q': {keyCode: 0x51, keyName: 'KeyQ', shiftModifier: false},
- 'Q': {keyCode: 0x51, keyName: 'KeyQ', shiftModifier: true},
- 'r': {keyCode: 0x52, keyName: 'KeyR', shiftModifier: false},
- 'R': {keyCode: 0x52, keyName: 'KeyR', shiftModifier: true},
- 's': {keyCode: 0x53, keyName: 'KeyS', shiftModifier: false},
- 'S': {keyCode: 0x53, keyName: 'KeyS', shiftModifier: true},
- 't': {keyCode: 0x54, keyName: 'KeyT', shiftModifier: false},
- 'T': {keyCode: 0x54, keyName: 'KeyT', shiftModifier: true},
- 'u': {keyCode: 0x55, keyName: 'KeyU', shiftModifier: false},
- 'U': {keyCode: 0x55, keyName: 'KeyU', shiftModifier: true},
- 'v': {keyCode: 0x56, keyName: 'KeyV', shiftModifier: false},
- 'V': {keyCode: 0x56, keyName: 'KeyV', shiftModifier: true},
- 'w': {keyCode: 0x57, keyName: 'KeyW', shiftModifier: false},
- 'W': {keyCode: 0x57, keyName: 'KeyW', shiftModifier: true},
- 'x': {keyCode: 0x58, keyName: 'KeyX', shiftModifier: false},
- 'X': {keyCode: 0x58, keyName: 'KeyX', shiftModifier: true},
- 'y': {keyCode: 0x59, keyName: 'KeyY', shiftModifier: false},
- 'Y': {keyCode: 0x59, keyName: 'KeyY', shiftModifier: true},
- 'z': {keyCode: 0x5A, keyName: 'KeyZ', shiftModifier: false},
- 'Z': {keyCode: 0x5A, keyName: 'KeyZ', shiftModifier: true},
- 'Fullscreen': {keyCode: 0x7A, shiftModifier: false},
- 'Shutdown': {keyCode: 0x98, shiftModifier: false},
- 'Back': {keyCode: 0xA6, shiftModifier: false},
- 'Forward': {keyCode: 0xA7, shiftModifier: false},
- 'Reload': {keyCode: 0xA8, shiftModifier: false},
- 'Search': {keyCode: 0xAA, shiftModifier: false},
- 'Mute': {keyCode: 0xAD, keyName: 'VolumeMute', shiftModifier: false},
- 'Volume-Down': {keyCode: 0xAE, keyName: 'VolumeDown',
- shiftModifier: false},
- 'Volume-Up': {keyCode: 0xAF, keyName: 'VolumeUp', shiftModifier: false},
- 'Change-Window': {keyCode: 0xB6, shiftModifier: false},
- ';': {keyCode: 0xBA, keyName: 'Semicolon', shiftModifier: false},
- ':': {keyCode: 0xBA, keyName: 'Semicolon',shiftModifier: true},
- '=': {keyCode: 0xBB, keyName: 'Equal', shiftModifier: false},
- '+': {keyCode: 0xBB, keyName: 'Equal', shiftModifier: true},
- ',': {keyCode: 0xBC, keyName: 'Comma', shiftModifier: false},
- '<': {keyCode: 0xBC, keyName: 'Comma', shiftModifier: true},
- '-': {keyCode: 0xBD, keyName: 'Minus', shiftModifier: false},
- '_': {keyCode: 0xBD, keyName: 'Minus', shiftModifier: true},
- '.': {keyCode: 0xBE, keyName: 'Period', shiftModifier: false},
- '>': {keyCode: 0xBE, keyName: 'Period', shiftModifier: true},
- '/': {keyCode: 0xBF, keyName: 'Slash', shiftModifier: false},
- '?': {keyCode: 0xBF, keyName: 'Slash', shiftModifier: true},
- '`': {keyCode: 0xC0, keyName: 'Backquote', shiftModifier: false},
- '~': {keyCode: 0xC0, keyName: 'Backquote', shiftModifier: true},
- 'Brightness-Down': {keyCode: 0xD8, keyName: 'BrightnessDown',
- shiftModifier: false},
- 'Brightness-Up': {keyCode: 0xD9, keyName: 'BrightnessUp',
- shiftModifier: false},
- '[': {keyCode: 0xDB, keyName: 'BracketLeft', shiftModifier: false},
- '{': {keyCode: 0xDB, keyName: 'BracketLeft', shiftModifier: true},
- '\\': {keyCode: 0xDC, keyName: 'Backslash', shiftModifier: false},
- '|': {keyCode: 0xDC, keyName: 'Backslash', shiftModifier: true},
- ']': {keyCode: 0xDD, keyName: 'BracketRight', shiftModifier: false},
- '}': {keyCode: 0xDD, keyName: 'BracketRight', shiftModifier: true},
- '\'': {keyCode: 0xDE, keyName: 'Quote', shiftModifier: false},
- '"': {keyCode: 0xDE, keyName: 'Quote', shiftModifier: true},
- };
-
- Polymer('kb-key-codes', {
- /**
- * Retrieves the keyCode and status of the shift modifier.
- * @param {string} id ID of an entry in the code table.
- * @return {keyCode: numeric, shiftModifier: boolean}
- */
- GetKeyCodeAndModifiers: function(id) {
- var entry = keyCodes[id];
- if (entry) {
- return {
- keyCode: entry.keyCode,
- keyName: entry.keyName || 'Unidentified',
- shiftModifier: entry.shiftModifier
- };
- }
- if (id.length != 1)
- return;
- // Special case of accented characters.
- return {
- keyCode: 0,
- keyName: 'Unidentified',
- shiftModifier: false
- };
- },
-
- /**
- * Creates a virtual key event for use with the keyboard extension API.
- * See http://www.w3.org/TR/DOM-Level-3-Events/#events-KeyboardEvent.
- * @param {Object} detail Attribute of the key being pressed or released.
- * @param {string} type The type of key event, which may be keydown
- * or keyup.
- * @return {?KeyboardEvent} A KeyboardEvent object, or undefined on
- * failure.
- */
- createVirtualKeyEvent: function(detail, type) {
- var char = detail.char;
- var keyCode = detail.keyCode;
- var keyName = detail.keyName;
- // The shift modifier is handled specially. Some charactares like '+'
- // {keyCode: 0xBB, shiftModifier: true}, are available on non-upper
- // keysets, and so we rely on caching the correct shiftModifier. If
- // the cached value of the shiftModifier is undefined, we defer to
- // the shiftModifier in the detail.
- var shiftModifier = detail.shiftModifier;
- if (keyCode == undefined || keyName == undefined) {
- var state = this.GetKeyCodeAndModifiers(char);
- if (state) {
- keyCode = keyCode || state.keyCode;
- keyName = keyName || state.keyName;
- shiftModifier = (state.shiftModifier == undefined) ?
- shiftModifier : state.shiftModifier;
- } else {
- // Keycode not defined.
- return;
- }
- }
- var modifiers = Modifier.NONE;
- modifiers = shiftModifier ? modifiers | Modifier.SHIFT : modifiers;
- modifiers = detail.controlModifier ?
- modifiers | Modifier.CONTROL : modifiers;
- modifiers = detail.altModifier ? modifiers | Modifier.ALT : modifiers;
- return {
- type: type,
- charValue: char.charCodeAt(0),
- keyCode: keyCode,
- keyName: keyName,
- modifiers: modifiers
- };
- },
- });
- })();
-</script>
</polymer-element>
diff --git a/ui/keyboard/resources/elements/kb-key-codes.js b/ui/keyboard/resources/elements/kb-key-codes.js
new file mode 100644
index 0000000000..103fe4448e
--- /dev/null
+++ b/ui/keyboard/resources/elements/kb-key-codes.js
@@ -0,0 +1,227 @@
+// Copyright 2014 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.
+
+(function() {
+
+ // Flag values for ctrl, alt and shift as defined by EventFlags
+ // in "event_constants.h".
+ // @enum {number}
+ var Modifier = {
+ NONE: 0,
+ ALT: 8,
+ CONTROL: 4,
+ SHIFT: 2
+ }
+
+ // Each virtual key event is assigned a unique ID.
+ var nextRequestID = 0;
+
+ // Keycodes have been deprecated in the KeyEvent specification, but are
+ // nonetheless required to support legacy web content. The Keycodes in the
+ // following table are based on subset of US-EN 101-key keyboard. These
+ // codes are used in the absence of explicit keycodes for kb-key and
+ // kb-keysequence elements. Keyboard layout authors may explicitly set the
+ // keyCode attribute for kb-key or kb-keysequence elements to refer to
+ // indices in this table in order to emulate a physical keyboard with an
+ // alternate layout. Not all keys on a virtual keyboard are required to
+ // have keyCodes. The shiftModifier specifies whether to always include or
+ // exclude the shift modifer when sending key events for this key. If it's
+ // undefined, it will defer to state of the keyboard.
+ // TODO(rsadam): Correctly propagate shutdown keycode. This is currently
+ // ignored due to chromoting (crbug/146609)
+ var keyCodes = {
+ '\b': {keyCode: 0x08, keyName: 'Backspace', shiftModifier: false},
+ '\t': {keyCode: 0x09, keyName: 'Tab', shiftModifier: false},
+ '\n': {keyCode: 0x0D, keyName: 'Enter', shiftModifier: false},
+ 'Esc': {keyCode: 0x1B, keyName: 'Escape', shiftModifier: false},
+ ' ': {keyCode: 0x20, keyName: 'Space', shiftModifier: false},
+ 'Arrow-Left': {keyCode: 0x25, keyName: 'ArrowLeft',
+ shiftModifier: undefined},
+ 'Arrow-Up': {keyCode: 0x26, keyName: 'ArrowUp', shiftModifier: undefined},
+ 'Arrow-Right': {keyCode: 0x27, keyName: 'ArrowRight',
+ shiftModifier: undefined},
+ 'Arrow-Down': {keyCode: 0x28, keyName: 'ArrowDown',
+ shiftModifier: undefined},
+ '0': {keyCode: 0x30, keyName: 'Digit0', shiftModifier: false},
+ ')': {keyCode: 0x30, keyName: 'Digit0', shiftModifier: true},
+ '1': {keyCode: 0x31, keyName: 'Digit1', shiftModifier: false},
+ '!': {keyCode: 0x31, keyName: 'Digit1', shiftModifier: true},
+ '2': {keyCode: 0x32, keyName: 'Digit2', shiftModifier: false},
+ '@': {keyCode: 0x32, keyName: 'Digit2', shiftModifier: true},
+ '3': {keyCode: 0x33, keyName: 'Digit3', shiftModifier: false},
+ '#': {keyCode: 0x33, keyName: 'Digit3', shiftModifier: true},
+ '4': {keyCode: 0x34, keyName: 'Digit4', shiftModifier: false},
+ '$': {keyCode: 0x34, keyName: 'Digit4', shiftModifier: true},
+ '5': {keyCode: 0x35, keyName: 'Digit5', shiftModifier: false},
+ '%': {keyCode: 0x35, keyName: 'Digit5', shiftModifier: true},
+ '6': {keyCode: 0x36, keyName: 'Digit6', shiftModifier: false},
+ '^': {keyCode: 0x36, keyName: 'Digit6', shiftModifier: true},
+ '7': {keyCode: 0x37, keyName: 'Digit7', shiftModifier: false},
+ '&': {keyCode: 0x37, keyName: 'Digit7', shiftModifier: true},
+ '8': {keyCode: 0x38, keyName: 'Digit8', shiftModifier: false},
+ '*': {keyCode: 0x38, keyName: 'Digit8', shiftModifier: true},
+ '9': {keyCode: 0x39, keyName: 'Digit9', shiftModifier: false},
+ '(': {keyCode: 0x39, keyName: 'Digit9', shiftModifier: true},
+ 'a': {keyCode: 0x41, keyName: 'KeyA', shiftModifier: false},
+ 'A': {keyCode: 0x41, keyName: 'KeyA', shiftModifier: true},
+ 'b': {keyCode: 0x42, keyName: 'KeyB', shiftModifier: false},
+ 'B': {keyCode: 0x42, keyName: 'KeyB', shiftModifier: true},
+ 'c': {keyCode: 0x43, keyName: 'KeyC', shiftModifier: false},
+ 'C': {keyCode: 0x43, keyName: 'KeyC', shiftModifier: true},
+ 'd': {keyCode: 0x44, keyName: 'KeyD', shiftModifier: false},
+ 'D': {keyCode: 0x44, keyName: 'KeyD', shiftModifier: true},
+ 'e': {keyCode: 0x45, keyName: 'KeyE', shiftModifier: false},
+ 'E': {keyCode: 0x45, keyName: 'KeyE', shiftModifier: true},
+ 'f': {keyCode: 0x46, keyName: 'KeyF', shiftModifier: false},
+ 'F': {keyCode: 0x46, keyName: 'KeyF', shiftModifier: true},
+ 'g': {keyCode: 0x47, keyName: 'KeyG', shiftModifier: false},
+ 'G': {keyCode: 0x47, keyName: 'KeyG', shiftModifier: true},
+ 'h': {keyCode: 0x48, keyName: 'KeyH', shiftModifier: false},
+ 'H': {keyCode: 0x48, keyName: 'KeyH', shiftModifier: true},
+ 'i': {keyCode: 0x49, keyName: 'KeyI', shiftModifier: false},
+ 'I': {keyCode: 0x49, keyName: 'KeyI', shiftModifier: true},
+ 'j': {keyCode: 0x4A, keyName: 'KeyJ', shiftModifier: false},
+ 'J': {keyCode: 0x4A, keyName: 'KeyJ', shiftModifier: true},
+ 'k': {keyCode: 0x4B, keyName: 'KeyK', shiftModifier: false},
+ 'K': {keyCode: 0x4B, keyName: 'KeyK', shiftModifier: true},
+ 'l': {keyCode: 0x4C, keyName: 'KeyL', shiftModifier: false},
+ 'L': {keyCode: 0x4C, keyName: 'KeyL', shiftModifier: true},
+ 'm': {keyCode: 0x4D, keyName: 'KeyM', shiftModifier: false},
+ 'M': {keyCode: 0x4D, keyName: 'KeyM', shiftModifier: true},
+ 'n': {keyCode: 0x4E, keyName: 'KeyN', shiftModifier: false},
+ 'N': {keyCode: 0x4E, keyName: 'KeyN', shiftModifier: true},
+ 'o': {keyCode: 0x4F, keyName: 'KeyO', shiftModifier: false},
+ 'O': {keyCode: 0x4F, keyName: 'KeyO', shiftModifier: true},
+ 'p': {keyCode: 0x50, keyName: 'KeyP', shiftModifier: false},
+ 'P': {keyCode: 0x50, keyName: 'KeyP', shiftModifier: true},
+ 'q': {keyCode: 0x51, keyName: 'KeyQ', shiftModifier: false},
+ 'Q': {keyCode: 0x51, keyName: 'KeyQ', shiftModifier: true},
+ 'r': {keyCode: 0x52, keyName: 'KeyR', shiftModifier: false},
+ 'R': {keyCode: 0x52, keyName: 'KeyR', shiftModifier: true},
+ 's': {keyCode: 0x53, keyName: 'KeyS', shiftModifier: false},
+ 'S': {keyCode: 0x53, keyName: 'KeyS', shiftModifier: true},
+ 't': {keyCode: 0x54, keyName: 'KeyT', shiftModifier: false},
+ 'T': {keyCode: 0x54, keyName: 'KeyT', shiftModifier: true},
+ 'u': {keyCode: 0x55, keyName: 'KeyU', shiftModifier: false},
+ 'U': {keyCode: 0x55, keyName: 'KeyU', shiftModifier: true},
+ 'v': {keyCode: 0x56, keyName: 'KeyV', shiftModifier: false},
+ 'V': {keyCode: 0x56, keyName: 'KeyV', shiftModifier: true},
+ 'w': {keyCode: 0x57, keyName: 'KeyW', shiftModifier: false},
+ 'W': {keyCode: 0x57, keyName: 'KeyW', shiftModifier: true},
+ 'x': {keyCode: 0x58, keyName: 'KeyX', shiftModifier: false},
+ 'X': {keyCode: 0x58, keyName: 'KeyX', shiftModifier: true},
+ 'y': {keyCode: 0x59, keyName: 'KeyY', shiftModifier: false},
+ 'Y': {keyCode: 0x59, keyName: 'KeyY', shiftModifier: true},
+ 'z': {keyCode: 0x5A, keyName: 'KeyZ', shiftModifier: false},
+ 'Z': {keyCode: 0x5A, keyName: 'KeyZ', shiftModifier: true},
+ 'Fullscreen': {keyCode: 0x7A, shiftModifier: false},
+ 'Shutdown': {keyCode: 0x98, shiftModifier: false},
+ 'Back': {keyCode: 0xA6, shiftModifier: false},
+ 'Forward': {keyCode: 0xA7, shiftModifier: false},
+ 'Reload': {keyCode: 0xA8, shiftModifier: false},
+ 'Search': {keyCode: 0xAA, shiftModifier: false},
+ 'Mute': {keyCode: 0xAD, keyName: 'VolumeMute', shiftModifier: false},
+ 'Volume-Down': {keyCode: 0xAE, keyName: 'VolumeDown',
+ shiftModifier: false},
+ 'Volume-Up': {keyCode: 0xAF, keyName: 'VolumeUp', shiftModifier: false},
+ 'Change-Window': {keyCode: 0xB6, shiftModifier: false},
+ ';': {keyCode: 0xBA, keyName: 'Semicolon', shiftModifier: false},
+ ':': {keyCode: 0xBA, keyName: 'Semicolon',shiftModifier: true},
+ '=': {keyCode: 0xBB, keyName: 'Equal', shiftModifier: false},
+ '+': {keyCode: 0xBB, keyName: 'Equal', shiftModifier: true},
+ ',': {keyCode: 0xBC, keyName: 'Comma', shiftModifier: false},
+ '<': {keyCode: 0xBC, keyName: 'Comma', shiftModifier: true},
+ '-': {keyCode: 0xBD, keyName: 'Minus', shiftModifier: false},
+ '_': {keyCode: 0xBD, keyName: 'Minus', shiftModifier: true},
+ '.': {keyCode: 0xBE, keyName: 'Period', shiftModifier: false},
+ '>': {keyCode: 0xBE, keyName: 'Period', shiftModifier: true},
+ '/': {keyCode: 0xBF, keyName: 'Slash', shiftModifier: false},
+ '?': {keyCode: 0xBF, keyName: 'Slash', shiftModifier: true},
+ '`': {keyCode: 0xC0, keyName: 'Backquote', shiftModifier: false},
+ '~': {keyCode: 0xC0, keyName: 'Backquote', shiftModifier: true},
+ 'Brightness-Down': {keyCode: 0xD8, keyName: 'BrightnessDown',
+ shiftModifier: false},
+ 'Brightness-Up': {keyCode: 0xD9, keyName: 'BrightnessUp',
+ shiftModifier: false},
+ '[': {keyCode: 0xDB, keyName: 'BracketLeft', shiftModifier: false},
+ '{': {keyCode: 0xDB, keyName: 'BracketLeft', shiftModifier: true},
+ '\\': {keyCode: 0xDC, keyName: 'Backslash', shiftModifier: false},
+ '|': {keyCode: 0xDC, keyName: 'Backslash', shiftModifier: true},
+ ']': {keyCode: 0xDD, keyName: 'BracketRight', shiftModifier: false},
+ '}': {keyCode: 0xDD, keyName: 'BracketRight', shiftModifier: true},
+ '\'': {keyCode: 0xDE, keyName: 'Quote', shiftModifier: false},
+ '"': {keyCode: 0xDE, keyName: 'Quote', shiftModifier: true},
+ };
+
+ Polymer('kb-key-codes', {
+ /**
+ * Retrieves the keyCode and status of the shift modifier.
+ * @param {string} id ID of an entry in the code table.
+ * @return {keyCode: numeric, shiftModifier: boolean}
+ */
+ GetKeyCodeAndModifiers: function(id) {
+ var entry = keyCodes[id];
+ if (entry) {
+ return {
+ keyCode: entry.keyCode,
+ keyName: entry.keyName || 'Unidentified',
+ shiftModifier: entry.shiftModifier
+ };
+ }
+ if (id.length != 1)
+ return;
+ // Special case of accented characters.
+ return {
+ keyCode: 0,
+ keyName: 'Unidentified',
+ shiftModifier: false
+ };
+ },
+
+ /**
+ * Creates a virtual key event for use with the keyboard extension API.
+ * See http://www.w3.org/TR/DOM-Level-3-Events/#events-KeyboardEvent.
+ * @param {Object} detail Attribute of the key being pressed or released.
+ * @param {string} type The type of key event, which may be keydown
+ * or keyup.
+ * @return {?KeyboardEvent} A KeyboardEvent object, or undefined on
+ * failure.
+ */
+ createVirtualKeyEvent: function(detail, type) {
+ var char = detail.char;
+ var keyCode = detail.keyCode;
+ var keyName = detail.keyName;
+ // The shift modifier is handled specially. Some charactares like '+'
+ // {keyCode: 0xBB, shiftModifier: true}, are available on non-upper
+ // keysets, and so we rely on caching the correct shiftModifier. If
+ // the cached value of the shiftModifier is undefined, we defer to
+ // the shiftModifier in the detail.
+ var shiftModifier = detail.shiftModifier;
+ if (keyCode == undefined || keyName == undefined) {
+ var state = this.GetKeyCodeAndModifiers(char);
+ if (state) {
+ keyCode = keyCode || state.keyCode;
+ keyName = keyName || state.keyName;
+ shiftModifier = (state.shiftModifier == undefined) ?
+ shiftModifier : state.shiftModifier;
+ } else {
+ // Keycode not defined.
+ return;
+ }
+ }
+ var modifiers = Modifier.NONE;
+ modifiers = shiftModifier ? modifiers | Modifier.SHIFT : modifiers;
+ modifiers = detail.controlModifier ?
+ modifiers | Modifier.CONTROL : modifiers;
+ modifiers = detail.altModifier ? modifiers | Modifier.ALT : modifiers;
+ return {
+ type: type,
+ charValue: char.charCodeAt(0),
+ keyCode: keyCode,
+ keyName: keyName,
+ modifiers: modifiers
+ };
+ },
+ });
+})();
diff --git a/ui/keyboard/resources/elements/kb-key-import.html b/ui/keyboard/resources/elements/kb-key-import.html
index 1174eb45ee..e703b25195 100644
--- a/ui/keyboard/resources/elements/kb-key-import.html
+++ b/ui/keyboard/resources/elements/kb-key-import.html
@@ -12,23 +12,4 @@
}
</style>
</template>
- <script>
- Polymer('kb-key-import', {
- /**
- * The id of the document fragment that will be imported.
- */
- importId: null,
-
- /**
- * Import content from a document fragment.
- * @param {!DocumentFragment} content Document fragment that contains
- * the content to import.
- */
- importDoc: function(content) {
- var id = this.getAttribute('importId');
- var fragment = content.querySelector('#' + id);
- return fragment && fragment.content ? fragment.content : fragment;
- }
- });
- </script>
</polymer-element>
diff --git a/ui/keyboard/resources/elements/kb-key-import.js b/ui/keyboard/resources/elements/kb-key-import.js
new file mode 100644
index 0000000000..a06774ca95
--- /dev/null
+++ b/ui/keyboard/resources/elements/kb-key-import.js
@@ -0,0 +1,22 @@
+// Copyright 2014 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.
+
+Polymer('kb-key-import', {
+ /**
+ * The id of the document fragment that will be imported.
+ */
+ importId: null,
+
+ /**
+ * Import content from a document fragment.
+ * @param {!DocumentFragment} content Document fragment that contains
+ * the content to import.
+ */
+ importDoc: function(content) {
+ var id = this.getAttribute('importId');
+ var fragment = content.querySelector('#' + id);
+ return fragment && fragment.content ? fragment.content : fragment;
+ }
+});
+
diff --git a/ui/keyboard/resources/elements/kb-key-sequence.html b/ui/keyboard/resources/elements/kb-key-sequence.html
index b0bbc23349..212e4279f9 100644
--- a/ui/keyboard/resources/elements/kb-key-sequence.html
+++ b/ui/keyboard/resources/elements/kb-key-sequence.html
@@ -4,8 +4,8 @@
-- found in the LICENSE file.
-->
-<polymer-element name="kb-key-sequence"
- attributes="keys hintTexts keyCodes invert">
+<polymer-element name="kb-key-sequence" attributes="keys hintTexts keyCodes
+ invert">
<template>
<style>
:host {
@@ -13,61 +13,4 @@
}
</style>
</template>
- <script>
- (function() {
-
- var metadata = null;
-
- function getKeyCodeAndModifiers(keyCodeIndex) {
- if (!metadata)
- metadata = document.createElement('kb-key-codes');
- return metadata.GetKeyCodeAndModifiers(keyCodeIndex);
- }
-
- Polymer('kb-key-sequence', {
- /**
- * Generates the DOM structure to replace (expand) this kb-key-sequence.
- */
- generateDom: function() {
- var replacement = document.createDocumentFragment();
- var newKeys = this.getAttribute('keys');
- var newHintTexts = this.getAttribute('hintTexts');
- var keyCodes = this.getAttribute('hintCodes') || newKeys;
- var invert = this.getAttribute('invert');
- if (newKeys) {
- if (newHintTexts && newKeys.length != newHintTexts.length) {
- console.error('keys and hintTexts do not match');
- return;
- }
- if (keyCodes && newKeys.length != keyCodes.length) {
- console.error('keys and keyCodes do not match');
- return;
- }
-
- for (var i = 0; i < newKeys.length; i++) {
- var key = document.createElement('kb-key');
- key.innerText = newKeys[i];
- key.accents = newKeys[i];
- if (newHintTexts)
- key.hintText = newHintTexts[i];
- var keyCodeIndex = keyCodes[i];
- if (invert) {
- key.invert = true;
- key.char = newKeys[i];
- keyCodeIndex = key.hintText;
- }
- var state = getKeyCodeAndModifiers(keyCodeIndex);
- if (state) {
- key.keyCode = state.keyCode;
- key.keyName = state.keyName;
- key.shiftModifier = state.shiftModifier;
- }
- replacement.appendChild(key);
- }
- }
- return replacement;
- }
- });
- })();
- </script>
</polymer-element>
diff --git a/ui/keyboard/resources/elements/kb-key-sequence.js b/ui/keyboard/resources/elements/kb-key-sequence.js
new file mode 100644
index 0000000000..7bd4d49004
--- /dev/null
+++ b/ui/keyboard/resources/elements/kb-key-sequence.js
@@ -0,0 +1,60 @@
+// Copyright 2014 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.
+
+(function() {
+
+ var metadata = null;
+
+ function getKeyCodeAndModifiers(keyCodeIndex) {
+ if (!metadata)
+ metadata = document.createElement('kb-key-codes');
+ return metadata.GetKeyCodeAndModifiers(keyCodeIndex);
+ }
+
+ Polymer('kb-key-sequence', {
+ /**
+ * Generates the DOM structure to replace (expand) this kb-key-sequence.
+ */
+ generateDom: function() {
+ var replacement = document.createDocumentFragment();
+ var newKeys = this.getAttribute('keys');
+ var newHintTexts = this.getAttribute('hintTexts');
+ var keyCodes = this.getAttribute('hintCodes') || newKeys;
+ var invert = this.getAttribute('invert');
+ if (newKeys) {
+ if (newHintTexts && newKeys.length != newHintTexts.length) {
+ console.error('keys and hintTexts do not match');
+ return;
+ }
+ if (keyCodes && newKeys.length != keyCodes.length) {
+ console.error('keys and keyCodes do not match');
+ return;
+ }
+
+ for (var i = 0; i < newKeys.length; i++) {
+ var key = document.createElement('kb-key');
+ key.innerText = newKeys[i];
+ key.accents = newKeys[i];
+ if (newHintTexts)
+ key.hintText = newHintTexts[i];
+ var keyCodeIndex = keyCodes[i];
+ if (invert) {
+ key.invert = true;
+ key.char = newKeys[i];
+ keyCodeIndex = key.hintText;
+ }
+ var state = getKeyCodeAndModifiers(keyCodeIndex);
+ if (state) {
+ key.keyCode = state.keyCode;
+ key.keyName = state.keyName;
+ key.shiftModifier = state.shiftModifier;
+ }
+ replacement.appendChild(key);
+ }
+ }
+ return replacement;
+ }
+ });
+})();
+
diff --git a/ui/keyboard/resources/elements/kb-key.html b/ui/keyboard/resources/elements/kb-key.html
index 9992aaf2f0..e430edcc5f 100644
--- a/ui/keyboard/resources/elements/kb-key.html
+++ b/ui/keyboard/resources/elements/kb-key.html
@@ -4,8 +4,8 @@
-- found in the LICENSE file.
-->
-<polymer-element name="kb-key" extends="kb-key-base"
- attributes="image keyCode keyName shiftModifier sound stretch weight">
+<polymer-element name="kb-key" extends="kb-key-base" attributes="image keyCode
+ keyName shiftModifier sound stretch weight">
<template>
<style>
:host {
@@ -99,217 +99,19 @@
border-bottom-color: #4a4a4a;
border-top-color: #878787;
}
-
- /** TODO(rsadam@): Move to kb-row once /shadow/ is supported. */
- :ancestor(kb-row:nth-child(2)):host(:not(.dark):not(.active)) {
- -webkit-box-shadow: inset 0px 1px #666666, inset 0px -1px #4c4c4c;
- background-image: -webkit-linear-gradient(#5a5a5a, #515151);
- background-size: cover;
- border-bottom-color: #414141;
- border-top-color: #7f7f7f;
- }
-
- :ancestor(kb-row:nth-child(3)):host(:not(.dark):not(.active)) {
- -webkit-box-shadow: inset 0px 1px #5d5d5d, inset 0px -1px #444444;
- background-image: -webkit-linear-gradient(#505050, #494949);
- background-size: cover;
- border-bottom-color: #3a3a3a;
- border-top-color: #787878;
- }
-
- :ancestor(kb-row:nth-child(n+3)):host(:not(.dark):not(.active)) {
- -webkit-box-shadow: inset 0px 1px #565656, inset 0px -1px #434343;
- background-image: -webkit-linear-gradient(#484848, #474747);
- background-size: cover;
- border-bottom-color: #393939;
- border-top-color: #717171;
- }
-
- :ancestor(kb-row:nth-child(2)):host(:not([invert])) .hint {
- color: #2C2C2C;
- }
-
- :ancestor(kb-row:nth-child(3)):host(:not([invert])) .hint {
- color: #272727;
- }
-
- :ancestor(kb-row:nth-child(n+3)):host(:not([invert])) .hint {
- color: #232323;
- }
-
- /**
- * The microphone key is handled separately from other images since the
- * image displayed changes depending on whether it's pressed or not.
- */
- :ancestor(.microphone) .key {
- background-image: url('../images/microphone.svg');
- background-position: 10%;
- }
-
- :ancestor(.audio .microphone) .key {
- background-image: url('../images/microphone-green.svg');
- }
-
- /* TODO(rsadam@): Use different assets for caps-lock and highlight. */
- :ancestor(.caps-locked):host(kb-shift-key.dark) .key,
- /**
- * Controls whether the shift key should be highlighted.
- * Only highlights if we are in the upper keyset, but not
- * capslocked.
- */
- :ancestor(kb-keyboard:not(.caps-locked)[keyset=upper]):host(
- kb-shift-key) .key {
- background-image: url('../images/shift-filled.svg');
- }
-
- :ancestor(kb-keyboard:not(.caps-locked)[keyset=lower]):host(
- kb-shift-key) .key {
- background-image: url('../images/shift.svg');
- }
-
- :ancestor(kb-keyboard.ctrl-active):host(
- kb-modifier-key[char=Ctrl]),
- :ancestor(kb-keyboard.alt-active):host(
- kb-modifier-key[char=Alt]) {
- color: lightblue;
- }
</style>
<div id="key" class="key">
<content></content>
</div>
<div class="hint" part="hint">{{hintText}}</div>
</template>
- <script>
- Polymer('kb-key', {
- /**
- * The background image to display on this key. Does not display an
- * image if this is the empty string.
- * @type {string}
- */
- image: "",
-
- /**
- * The background image size to use if an image is specified. The size
- * is provided as a string, for example, "50%".
- * @type {string}
- */
- imageSize: "",
-
- /**
- * Key codes have been deprecated in DOM3 key events, but are required
- * for legacy web content. The key codes depend on the position of the
- * key on the keyboard and is independent of which modifier keys (shift,
- * alt, ...) are active.
- * @type {number|undefined}
- */
- keyCode: undefined,
-
- /**
- * Name of the key as defined in the DOM3 specification for key events.
- * Like the keyCode, the keyName is independent of the state of the
- * modifier keys.
- * @type {string|undefined}
- */
- keyName: undefined,
-
- /**
- * Whether the shift key is pressed when producing the key value.
- * @type {boolean}
- */
- shiftModifier: false,
-
- /**
- * The sound to play when this key is pressed.
- * @type {Sound}
- */
- sound: Sound.DEFAULT,
-
- /**
- * Whether the key can be stretched to accomodate pixel rounding errors.
- */
- stretch: false,
-
- /**
- * Weighting to use for layout in order to properly size the key.
- * Keys with a high weighting are wider than normal keys.
- * @type {number}
- */
- weight: DEFAULT_KEY_WEIGHT,
-
- /**
- * Called when the image attribute changes. This is used to set the
- * background image of the key.
- * TODO(rsadam): Remove when polymer {{}} syntax regression is fixed.
- */
- imageChanged: function() {
- if (!this.image) {
- this.$.key.style.backgroundImage = "none";
- } else {
- this.$.key.style.backgroundImage =
- "url(images/" + this.image + ".svg)";
- }
- },
-
- /**
- * Returns a subset of the key attributes.
- * @param {string} caller The id of the function that called
- * populateDetails.
- * @return {Object} Mapping of attributes for the key element.
- */
- populateDetails: function(caller) {
- var details = this.super([caller]);
- details.keyCode = this.keyCode;
- details.keyName = this.keyName;
- details.shiftModifier = this.shiftModifier;
- details.sound = this.sound;
- return details;
- },
- });
- </script>
</polymer-element>
<!-- Special keys -->
<polymer-element name="kb-abc-key" class="symbol dark" char="Invalid"
extends="kb-key" weight="125">
- <script>
- Polymer('kb-abc-key', {
- populateDetails: function(caller) {
- var detail = this.super([caller]);
- switch (caller) {
- case ('down'):
- detail.relegateToShift = true;
- break;
- default:
- break;
- }
- return detail;
- }
- });
- </script>
</polymer-element>
<polymer-element name="kb-hide-keyboard-key" class="hide-keyboard dark"
align="center" attributes="showMenu" char="Invalid" extends="kb-key">
- <script>
- Polymer('kb-hide-keyboard-key', {
- /**
- * Whether to show the options menu on key-up.
- * @type {boolean}
- */
- showMenu: true,
-
- up: function(event) {
- if (!this.showMenu) {
- hideKeyboard();
- return;
- }
- var details = {
- left: this.offsetLeft,
- top: this.offsetTop,
- width: this.clientWidth,
- };
- this.fire('show-options', details);
- },
- });
- </script>
</polymer-element>
diff --git a/ui/keyboard/resources/elements/kb-key.js b/ui/keyboard/resources/elements/kb-key.js
new file mode 100644
index 0000000000..c58b190a54
--- /dev/null
+++ b/ui/keyboard/resources/elements/kb-key.js
@@ -0,0 +1,111 @@
+// Copyright 2014 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.
+
+Polymer('kb-key', {
+ /**
+ * The background image to display on this key. Does not display an
+ * image if this is the empty string.
+ * @type {string}
+ */
+ image: "",
+
+ /**
+ * The background image size to use if an image is specified. The size
+ * is provided as a string, for example, "50%".
+ * @type {string}
+ */
+ imageSize: "",
+
+ /**
+ * Key codes have been deprecated in DOM3 key events, but are required
+ * for legacy web content. The key codes depend on the position of the
+ * key on the keyboard and is independent of which modifier keys (shift,
+ * alt, ...) are active.
+ * @type {number|undefined}
+ */
+ keyCode: undefined,
+
+ /**
+ * Name of the key as defined in the DOM3 specification for key events.
+ * Like the keyCode, the keyName is independent of the state of the
+ * modifier keys.
+ * @type {string|undefined}
+ */
+ keyName: undefined,
+
+ /**
+ * Whether the shift key is pressed when producing the key value.
+ * @type {boolean}
+ */
+ shiftModifier: false,
+
+ /**
+ * The sound to play when this key is pressed.
+ * @type {Sound}
+ */
+ sound: Sound.DEFAULT,
+
+ /**
+ * Whether the key can be stretched to accomodate pixel rounding errors.
+ */
+ stretch: false,
+
+ /**
+ * Weighting to use for layout in order to properly size the key.
+ * Keys with a high weighting are wider than normal keys.
+ * @type {number}
+ */
+ weight: DEFAULT_KEY_WEIGHT,
+
+ /**
+ * Called when the image attribute changes. This is used to set the
+ * background image of the key.
+ * TODO(rsadam): Remove when polymer {{}} syntax regression is fixed.
+ */
+ imageChanged: function() {
+ if (!this.image) {
+ this.$.key.style.backgroundImage = "none";
+ } else {
+ this.$.key.style.backgroundImage =
+ "url(images/" + this.image + ".svg)";
+ }
+ },
+
+ /**
+ * Returns a subset of the key attributes.
+ * @param {string} caller The id of the function that called
+ * populateDetails.
+ * @return {Object} Mapping of attributes for the key element.
+ */
+ populateDetails: function(caller) {
+ var details = this.super([caller]);
+ details.keyCode = this.keyCode;
+ details.keyName = this.keyName;
+ details.shiftModifier = this.shiftModifier;
+ details.sound = this.sound;
+ return details;
+ },
+});
+;
+
+Polymer('kb-abc-key', {
+ populateDetails: function(caller) {
+ var detail = this.super([caller]);
+ switch (caller) {
+ case ('down'):
+ detail.relegateToShift = true;
+ break;
+ default:
+ break;
+ }
+ return detail;
+ }
+});
+;
+
+Polymer('kb-hide-keyboard-key', {
+ up: function(event) {
+ hideKeyboard();
+ },
+});
diff --git a/ui/keyboard/resources/elements/kb-keyboard.html b/ui/keyboard/resources/elements/kb-keyboard.html
index c27197d118..761e3c4f3e 100644
--- a/ui/keyboard/resources/elements/kb-keyboard.html
+++ b/ui/keyboard/resources/elements/kb-keyboard.html
@@ -9,8 +9,7 @@
on-key-longpress="{{keyLongpress}}" on-pointerup="{{up}}"
on-pointerdown="{{down}}" on-pointerout="{{out}}"
on-enable-sel="{{enableSel}}" on-enable-dbl="{{enableDbl}}"
- on-key-out="{{keyOut}}" on-show-options="{{showOptions}}"
- on-set-layout="{{setLayout}}" on-type-key="{{type}}"
+ on-key-out="{{keyOut}}" on-set-layout="{{setLayout}}" on-type-key="{{type}}"
attributes="inputType inputTypeToLayoutMap keyset layout volume">
<template>
<style>
@@ -36,1033 +35,6 @@
-- keyboard layouts.
-->
<content id="content"></content>
- <kb-keyboard-overlay id="overlay" hidden></kb-keyboard-overlay>
<kb-key-codes id="keyCodeMetadata"></kb-key-codes>
-
</template>
- <script>
- /**
- * The repeat delay in milliseconds before a key starts repeating. Use the
- * same rate as Chromebook.
- * (See chrome/browser/chromeos/language_preferences.cc)
- * @const
- * @type {number}
- */
- var REPEAT_DELAY_MSEC = 500;
-
- /**
- * The repeat interval or number of milliseconds between subsequent
- * keypresses. Use the same rate as Chromebook.
- * @const
- * @type {number}
- */
- var REPEAT_INTERVAL_MSEC = 50;
-
- /**
- * The double click/tap interval.
- * @const
- * @type {number}
- */
- var DBL_INTERVAL_MSEC = 300;
-
- /**
- * The index of the name of the keyset when searching for all keysets.
- * @const
- * @type {number}
- */
- var REGEX_KEYSET_INDEX = 1;
-
- /**
- * The integer number of matches when searching for keysets.
- * @const
- * @type {number}
- */
- var REGEX_MATCH_COUNT = 2;
-
- /**
- * The boolean to decide if keyboard should transit to upper case keyset
- * when spacebar is pressed. If a closing punctuation is followed by a
- * spacebar, keyboard should automatically transit to upper case.
- * @type {boolean}
- */
- var enterUpperOnSpace = false;
-
- /**
- * A structure to track the currently repeating key on the keyboard.
- */
- var repeatKey = {
-
- /**
- * The timer for the delay before repeating behaviour begins.
- * @type {number|undefined}
- */
- timer: undefined,
-
- /**
- * The interval timer for issuing keypresses of a repeating key.
- * @type {number|undefined}
- */
- interval: undefined,
-
- /**
- * The key which is currently repeating.
- * @type {BaseKey|undefined}
- */
- key: undefined,
-
- /**
- * Cancel the repeat timers of the currently active key.
- */
- cancel: function() {
- clearTimeout(this.timer);
- clearInterval(this.interval);
- this.timer = undefined;
- this.interval = undefined;
- this.key = undefined;
- }
- };
-
- /**
- * The minimum movement interval needed to trigger cursor move on
- * horizontal and vertical way.
- * @const
- * @type {number}
- */
- var MIN_SWIPE_DIST_X = 50;
- var MIN_SWIPE_DIST_Y = 20;
-
- /**
- * The maximum swipe distance that will trigger hintText of a key
- * to be typed.
- * @const
- * @type {number}
- */
- var MAX_SWIPE_FLICK_DIST = 60;
-
- /**
- * The boolean to decide if it is swipe in process or finished.
- * @type {boolean}
- */
- var swipeInProgress = false;
-
- // Flag values for ctrl, alt and shift as defined by EventFlags
- // in "event_constants.h".
- // @enum {number}
- var Modifier = {
- NONE: 0,
- ALT: 8,
- CONTROL: 4,
- SHIFT: 2
- };
-
- /**
- * A structure to track the current swipe status.
- */
- var swipeTracker = {
- /**
- * The latest PointerMove event in the swipe.
- * @type {Object}
- */
- currentEvent: undefined,
-
- /**
- * Whether or not a swipe changes direction.
- * @type {false}
- */
- isComplex: false,
-
- /**
- * The count of horizontal and vertical movement.
- * @type {number}
- */
- offset_x : 0,
- offset_y : 0,
-
- /**
- * Last touch coordinate.
- * @type {number}
- */
- pre_x : 0,
- pre_y : 0,
-
- /**
- * The PointerMove event which triggered the swipe.
- * @type {Object}
- */
- startEvent: undefined,
-
- /**
- * The flag of current modifier key.
- * @type {number}
- */
- swipeFlags : 0,
-
- /**
- * Current swipe direction.
- * @type {number}
- */
- swipeDirection : 0,
-
- /**
- * The number of times we've swiped within a single swipe.
- * @type {number}
- */
- swipeIndex: 0,
-
- /**
- * Returns the combined direction of the x and y offsets.
- * @return {number} The latest direction.
- */
- getOffsetDirection: function() {
- // TODO (rsadam): Use angles to figure out the direction.
- var direction = 0;
- // Checks for horizontal swipe.
- if (Math.abs(this.offset_x) > MIN_SWIPE_DIST_X) {
- if (this.offset_x > 0) {
- direction |= SwipeDirection.RIGHT;
- } else {
- direction |= SwipeDirection.LEFT;
- }
- }
- // Checks for vertical swipe.
- if (Math.abs(this.offset_y) > MIN_SWIPE_DIST_Y) {
- if (this.offset_y < 0) {
- direction |= SwipeDirection.UP;
- } else {
- direction |= SwipeDirection.DOWN;
- }
- }
- return direction;
- },
-
- /**
- * Populates the swipe update details.
- * @param {boolean} endSwipe Whether this is the final event for this
- * swipe.
- * @return {Object} The current state of the swipeTracker.
- */
- populateDetails: function(endSwipe) {
- var detail = {};
- detail.direction = this.swipeDirection;
- detail.index = this.swipeIndex;
- detail.status = this.swipeStatus;
- detail.endSwipe = endSwipe;
- detail.startEvent = this.startEvent;
- detail.currentEvent = this.currentEvent;
- detail.isComplex = this.isComplex;
- return detail;
- },
-
- /**
- * Reset all the values when swipe finished.
- */
- resetAll: function() {
- this.offset_x = 0;
- this.offset_y = 0;
- this.pre_x = 0;
- this.pre_y = 0;
- this.swipeFlags = 0;
- this.swipeDirection = 0;
- this.swipeIndex = 0;
- this.startEvent = undefined;
- this.currentEvent = undefined;
- this.isComplex = false;
- },
-
- /**
- * Updates the swipe path with the current event.
- * @param {Object} event The PointerEvent that triggered this update.
- * @return {boolean} Whether or not to notify swipe observers.
- */
- update: function(event) {
- if(!event.isPrimary)
- return false;
- // Update priors.
- this.offset_x += event.screenX - this.pre_x;
- this.offset_y += event.screenY - this.pre_y;
- this.pre_x = event.screenX;
- this.pre_y = event.screenY;
-
- // Check if movement crosses minimum thresholds in each direction.
- var direction = this.getOffsetDirection();
- if (direction == 0)
- return false;
- // If swipeIndex is zero the current event is triggering the swipe.
- if (this.swipeIndex == 0) {
- this.startEvent = event;
- } else if (direction != this.swipeDirection) {
- // Toggle the isComplex flag.
- this.isComplex = true;
- }
- // Update the swipe tracker.
- this.swipeDirection = direction;
- this.offset_x = 0;
- this.offset_y = 0;
- this.currentEvent = event;
- this.swipeIndex++;
- return true;
- },
-
- };
-
- Polymer('kb-keyboard', {
- alt: null,
- config: null,
- control: null,
- dblDetail_: null,
- dblTimer_: null,
- inputType: null,
- lastPressedKey: null,
- shift: null,
- sounds: {},
- stale: true,
- swipeHandler: null,
- voiceInput_: null,
- //TODO(rsadam@): Add a control to let users change this.
- volume: DEFAULT_VOLUME,
-
- /**
- * The default input type to keyboard layout map. The key must be one of
- * the input box type values.
- * @type {object}
- */
- inputTypeToLayoutMap: {
- number: "numeric",
- text: "qwerty",
- password: "qwerty"
- },
-
- /**
- * Caches the specified sound on the keyboard.
- * @param {string} soundId The name of the .wav file in the "sounds"
- directory.
- */
- addSound: function(soundId) {
- // Check if already loaded.
- if (soundId == Sound.NONE || this.sounds[soundId])
- return;
- var pool = [];
- for (var i = 0; i < SOUND_POOL_SIZE; i++) {
- var audio = document.createElement('audio');
- audio.preload = "auto";
- audio.id = soundId;
- audio.src = "../sounds/" + soundId + ".wav";
- audio.volume = this.volume;
- pool.push(audio);
- }
- this.sounds[soundId] = pool;
- },
-
- /**
- * Changes the current keyset.
- * @param {Object} detail The detail of the event that called this
- * function.
- */
- changeKeyset: function(detail) {
- if (detail.relegateToShift && this.shift) {
- this.keyset = this.shift.textKeyset;
- this.activeKeyset.nextKeyset = undefined;
- return true;
- }
- var toKeyset = detail.toKeyset;
- if (toKeyset) {
- this.keyset = toKeyset;
- this.activeKeyset.nextKeyset = detail.nextKeyset;
- return true;
- }
- return false;
- },
-
- keysetChanged: function() {
- var keyset = this.activeKeyset;
- // Show the keyset if it has been initialized.
- if (keyset)
- keyset.show();
- },
-
- configChanged: function() {
- this.layout = this.config.layout;
- },
-
- ready: function() {
- this.voiceInput_ = new VoiceInput(this);
- this.swipeHandler = this.move.bind(this);
- var self = this;
- getKeyboardConfig(function(config) {
- self.config = config;
- });
- },
-
- /**
- * Registers a callback for state change events.
- * @param{!Function} callback Callback function to register.
- */
- addKeysetChangedObserver: function(callback) {
- this.addEventListener('stateChange', callback);
- },
-
- /**
- * Called when the type of focused input box changes. If a keyboard layout
- * is defined for the current input type, that layout will be loaded.
- * Otherwise, the keyboard layout for 'text' type will be loaded.
- */
- inputTypeChanged: function() {
- // Disable layout switching at accessbility mode.
- if (this.config && this.config.a11ymode)
- return;
-
- // TODO(bshe): Toggle visibility of some keys in a keyboard layout
- // according to the input type.
- var layout = this.inputTypeToLayoutMap[this.inputType];
- if (!layout)
- layout = this.inputTypeToLayoutMap.text;
- this.layout = layout;
- },
-
- /**
- * When double click/tap event is enabled, the second key-down and key-up
- * events on the same key should be skipped. Return true when the event
- * with |detail| should be skipped.
- * @param {Object} detail The detail of key-up or key-down event.
- */
- skipEvent: function(detail) {
- if (this.dblDetail_) {
- if (this.dblDetail_.char != detail.char) {
- // The second key down is not on the same key. Double click/tap
- // should be ignored.
- this.dblDetail_ = null;
- clearTimeout(this.dblTimer_);
- } else if (this.dblDetail_.clickCount == 1) {
- return true;
- }
- }
- return false;
- },
-
- /**
- * Handles a swipe update.
- * param {Object} detail The swipe update details.
- */
- onSwipeUpdate: function(detail) {
- var direction = detail.direction;
- if (!direction)
- console.error("Swipe direction cannot be: " + direction);
- // Triggers swipe editting if it's a purely horizontal swipe.
- if (!(direction & (SwipeDirection.UP | SwipeDirection.DOWN))) {
- // Nothing to do if the swipe has ended.
- if (detail.endSwipe)
- return;
- var modifiers = 0;
- // TODO (rsadam): This doesn't take into account index shifts caused
- // by vertical swipes.
- if (detail.index % 2 != 0) {
- modifiers |= Modifier.SHIFT;
- modifiers |= Modifier.CONTROL;
- }
- MoveCursor(direction, modifiers);
- return;
- }
- // Triggers swipe hintText if it's a purely vertical swipe.
- if (!(direction & (SwipeDirection.LEFT | SwipeDirection.RIGHT))) {
- // Check if event is relevant to us.
- if ((!detail.endSwipe) || (detail.isComplex))
- return;
- // Too long a swipe.
- var distance = Math.abs(detail.startEvent.screenY -
- detail.currentEvent.screenY);
- if (distance > MAX_SWIPE_FLICK_DIST)
- return;
- var triggerKey = detail.startEvent.target;
- if (triggerKey && triggerKey.onFlick)
- triggerKey.onFlick(detail);
- }
- },
-
- /**
- * This function is bound to swipeHandler. Updates the current swipe
- * status so that PointerEvents can be converted to Swipe events.
- * @param {PointerEvent} event.
- */
- move: function(event) {
- if (!swipeTracker.update(event))
- return;
- // Conversion was successful, swipe is now in progress.
- swipeInProgress = true;
- if (this.lastPressedKey) {
- this.lastPressedKey.classList.remove('active');
- this.lastPressedKey = null;
- }
- this.onSwipeUpdate(swipeTracker.populateDetails(false));
- },
-
- /**
- * Handles key-down event that is sent by kb-key-base.
- * @param {CustomEvent} event The key-down event dispatched by
- * kb-key-base.
- * @param {Object} detail The detail of pressed kb-key.
- */
- keyDown: function(event, detail) {
- if (this.skipEvent(detail))
- return;
-
- if (this.lastPressedKey) {
- this.lastPressedKey.classList.remove('active');
- this.lastPressedKey.autoRelease();
- }
- this.lastPressedKey = event.target;
- this.lastPressedKey.classList.add('active');
- repeatKey.cancel();
- this.playSound(detail.sound);
-
- var char = detail.char;
- switch(char) {
- case 'Shift':
- this.classList.remove('caps-locked');
- break;
- case 'Alt':
- case 'Ctrl':
- var modifier = char.toLowerCase() + "-active";
- // Removes modifier if already active.
- if (this.classList.contains(modifier))
- this.classList.remove(modifier);
- break;
- case 'Invalid':
- // Not all Invalid keys are transition keys. Reset control keys if
- // we pressed a transition key.
- if (event.target.toKeyset || detail.relegateToShift)
- this.onNonControlKeyTyped();
- break;
- default:
- // Notify shift key.
- if (this.shift)
- this.shift.onNonControlKeyDown();
- if (this.ctrl)
- this.ctrl.onNonControlKeyDown();
- if (this.alt)
- this.alt.onNonControlKeyDown();
- break;
- }
- if(this.changeKeyset(detail))
- return;
- if (detail.repeat) {
- this.keyTyped(detail);
- this.onNonControlKeyTyped();
- repeatKey.key = this.lastPressedKey;
- var self = this;
- repeatKey.timer = setTimeout(function() {
- repeatKey.timer = undefined;
- repeatKey.interval = setInterval(function() {
- self.playSound(detail.sound);
- self.keyTyped(detail);
- }, REPEAT_INTERVAL_MSEC);
- }, Math.max(0, REPEAT_DELAY_MSEC - REPEAT_INTERVAL_MSEC));
- }
- },
-
- /**
- * Handles key-out event that is sent by kb-shift-key.
- * @param {CustomEvent} event The key-out event dispatched by
- * kb-shift-key.
- * @param {Object} detail The detail of pressed kb-shift-key.
- */
- keyOut: function(event, detail) {
- this.changeKeyset(detail);
- },
-
- /**
- * Enable/start double click/tap event recognition.
- * @param {CustomEvent} event The enable-dbl event dispatched by
- * kb-shift-key.
- * @param {Object} detail The detail of pressed kb-shift-key.
- */
- enableDbl: function(event, detail) {
- if (!this.dblDetail_) {
- this.dblDetail_ = detail;
- this.dblDetail_.clickCount = 0;
- var self = this;
- this.dblTimer_ = setTimeout(function() {
- self.dblDetail_.callback = null;
- self.dblDetail_ = null;
- }, DBL_INTERVAL_MSEC);
- }
- },
-
- /**
- * Enable the selection while swipe.
- * @param {CustomEvent} event The enable-dbl event dispatched by
- * kb-shift-key.
- */
- enableSel: function(event) {
- // TODO(rsadam): Disabled for now. May come back if we revert swipe
- // selection to not do word selection.
- },
-
- /**
- * Handles pointerdown event. This is used for swipe selection process.
- * to get the start pre_x and pre_y. And also add a pointermove handler
- * to start handling the swipe selection event.
- * @param {PointerEvent} event The pointerup event that received by
- * kb-keyboard.
- */
- down: function(event) {
- var layout = getKeysetLayout(this.activeKeysetId);
- var key = layout.findClosestKey(event.clientX, event.clientY);
- if (key)
- key.down(event);
- if (event.isPrimary) {
- swipeTracker.pre_x = event.screenX;
- swipeTracker.pre_y = event.screenY;
- this.addEventListener("pointermove", this.swipeHandler, false);
- }
- },
-
- /**
- * Handles pointerup event. This is used for double tap/click events.
- * @param {PointerEvent} event The pointerup event that bubbled to
- * kb-keyboard.
- */
- up: function(event) {
- var layout = getKeysetLayout(this.activeKeysetId);
- var key = layout.findClosestKey(event.clientX, event.clientY);
- if (key)
- key.up(event);
- // When touch typing, it is very possible that finger moves slightly out
- // of the key area before releases. The key should not be dropped in
- // this case.
- // TODO(rsadam@) Change behaviour such that the key drops and the second
- // key gets pressed.
- if (this.lastPressedKey &&
- this.lastPressedKey.pointerId == event.pointerId) {
- this.lastPressedKey.autoRelease();
- }
-
- if (this.dblDetail_) {
- this.dblDetail_.clickCount++;
- if (this.dblDetail_.clickCount == 2) {
- this.dblDetail_.callback();
- this.changeKeyset(this.dblDetail_);
- clearTimeout(this.dblTimer_);
-
- this.classList.add('caps-locked');
-
- this.dblDetail_ = null;
- }
- }
-
- // TODO(zyaozhujun): There are some edge cases to deal with later.
- // (for instance, what if a second finger trigger a down and up
- // event sequence while swiping).
- // When pointer up from the screen, a swipe selection session finished,
- // all the data should be reset to prepare for the next session.
- if (event.isPrimary && swipeInProgress) {
- swipeInProgress = false;
- this.onSwipeUpdate(swipeTracker.populateDetails(true))
- swipeTracker.resetAll();
- }
- this.removeEventListener('pointermove', this.swipeHandler, false);
- },
-
- /**
- * Handles PointerOut event. This is used for when a swipe gesture goes
- * outside of the keyboard window.
- * @param {Object} event The pointerout event that bubbled to the
- * kb-keyboard.
- */
- out: function(event) {
- // Ignore if triggered from one of the keys.
- if (this.compareDocumentPosition(event.relatedTarget) &
- Node.DOCUMENT_POSITION_CONTAINED_BY)
- return;
- if (swipeInProgress)
- this.onSwipeUpdate(swipeTracker.populateDetails(true))
- // Touched outside of the keyboard area, so disables swipe.
- swipeInProgress = false;
- swipeTracker.resetAll();
- this.removeEventListener('pointermove', this.swipeHandler, false);
- },
-
- /**
- * Handles a TypeKey event. This is used for when we programmatically
- * want to type a specific key.
- * @param {CustomEvent} event The TypeKey event that bubbled to the
- * kb-keyboard.
- */
- type: function(event) {
- this.keyTyped(event.detail);
- },
-
- /**
- * Handles key-up event that is sent by kb-key-base.
- * @param {CustomEvent} event The key-up event dispatched by kb-key-base.
- * @param {Object} detail The detail of pressed kb-key.
- */
- keyUp: function(event, detail) {
- if (this.skipEvent(detail))
- return;
- if (swipeInProgress)
- return;
- if (detail.activeModifier) {
- var modifier = detail.activeModifier.toLowerCase() + "-active";
- this.classList.add(modifier);
- }
- // Adds the current keyboard modifiers to the detail.
- if (this.ctrl)
- detail.controlModifier = this.ctrl.isActive();
- if (this.alt)
- detail.altModifier = this.alt.isActive();
- if (this.lastPressedKey)
- this.lastPressedKey.classList.remove('active');
- // Keyset transition key. This is needed to transition from upper
- // to lower case when we are not in caps mode, as well as when
- // we're ending chording.
- this.changeKeyset(detail);
-
- if (this.lastPressedKey &&
- this.lastPressedKey.charValue != event.target.charValue) {
- return;
- }
- if (repeatKey.key == event.target) {
- repeatKey.cancel();
- this.lastPressedKey = null;
- return;
- }
- var toLayoutId = detail.toLayout;
- // Layout transition key.
- if (toLayoutId)
- this.layout = toLayoutId;
- var char = detail.char;
- this.lastPressedKey = null;
- // Characters that should not be typed.
- switch(char) {
- case 'Invalid':
- case 'Shift':
- case 'Ctrl':
- case 'Alt':
- enterUpperOnSpace = false;
- swipeTracker.swipeFlags = 0;
- return;
- case 'Microphone':
- this.voiceInput_.onDown();
- return;
- default:
- break;
- }
- // Tries to type the character. Resorts to insertText if that fails.
- if(!this.keyTyped(detail))
- insertText(char);
- // Post-typing logic.
- switch(char) {
- case ' ':
- if(enterUpperOnSpace) {
- enterUpperOnSpace = false;
- if (this.shift) {
- var shiftDetail = this.shift.onSpaceAfterPunctuation();
- // Check if transition defined.
- this.changeKeyset(shiftDetail);
- } else {
- console.error('Capitalization on space after punctuation \
- enabled, but cannot find target keyset.');
- }
- // Immediately return to maintain shift-state. Space is a
- // non-control key and would otherwise trigger a reset of the
- // shift key, causing a transition to lower case.
- // TODO(rsadam): Add unit test after Polymer uprev complete.
- return;
- }
- break;
- case '.':
- case '?':
- case '!':
- enterUpperOnSpace = this.shouldUpperOnSpace();
- break;
- default:
- enterUpperOnSpace = false;
- break;
- }
- // Reset control keys.
- this.onNonControlKeyTyped();
- },
-
- /*
- * Handles key-longpress event that is sent by kb-key-base.
- * @param {CustomEvent} event The key-longpress event dispatched by
- * kb-key-base.
- * @param {Object} detail The detail of pressed key.
- */
- keyLongpress: function(event, detail) {
- // If the gesture is long press, remove the pointermove listener.
- this.removeEventListener('pointermove', this.swipeHandler, false);
- // Keyset transtion key.
- if (this.changeKeyset(detail)) {
- // Locks the keyset before removing active to prevent flicker.
- this.classList.add('caps-locked');
- // Makes last pressed key inactive if transit to a new keyset on long
- // press.
- if (this.lastPressedKey)
- this.lastPressedKey.classList.remove('active');
- }
- },
-
- /**
- * Plays the specified sound.
- * @param {Sound} sound The id of the audio tag.
- */
- playSound: function(sound) {
- if (!sound || sound == Sound.NONE)
- return;
- var pool = this.sounds[sound];
- if (!pool) {
- console.error("Cannot find audio tag: " + sound);
- return;
- }
- // Search the sound pool for a free resource.
- for (var i = 0; i < pool.length; i++) {
- if (pool[i].paused) {
- pool[i].play();
- return;
- }
- }
- },
-
- /**
- * Whether we should transit to upper case when seeing a space after
- * punctuation.
- * @return {boolean}
- */
- shouldUpperOnSpace: function() {
- // TODO(rsadam): Add other input types in which we should not
- // transition to upper after a space.
- return this.inputTypeValue != 'password';
- },
-
- /**
- * Show menu for selecting a keyboard layout.
- * @param {!Event} event The triggering event.
- * @param {{left: number, top: number, width: number}} details Location of
- * the button that triggered the popup.
- */
- showOptions: function(event, details) {
- var overlay = this.$.overlay;
- if (!overlay) {
- console.error('Missing overlay.');
- return;
- }
- var menu = overlay.$.options;
- if (!menu) {
- console.error('Missing options menu.');
- }
- menu.hidden = false;
- overlay.hidden = false;
- var left = details.left + details.width - menu.clientWidth;
- var top = details.top - menu.clientHeight;
- menu.style.left = left + 'px';
- menu.style.top = top + 'px';
- },
-
- /**
- * Handler for the 'set-layout' event.
- * @param {!Event} event The triggering event.
- * @param {{layout: string}} details Details of the event, which contains
- * the name of the layout to activate.
- */
- setLayout: function(event, details) {
- this.layout = details.layout;
- },
-
- /**
- * Handles a change in the keyboard layout. Auto-selects the default
- * keyset for the new layout.
- */
- layoutChanged: function() {
- this.stale = true;
- if (!this.selectDefaultKeyset()) {
- this.fire('stateChange', {state: 'loadingKeyset'});
-
- // Keyset selection fails if the keysets have not been loaded yet.
- var keysets = document.querySelector('#' + this.layout);
- if (keysets && keysets.content) {
- var content = flattenKeysets(keysets.content);
- this.appendChild(content);
- this.selectDefaultKeyset();
- } else {
- // Add link for the keysets if missing from the document. Force
- // a layout change after resolving the import of the link.
- var query = 'link[id=' + this.layout + ']';
- if (!document.querySelector(query)) {
- // Layout has not beeen loaded yet.
- var link = document.createElement('link');
- link.id = this.layout;
- link.setAttribute('rel', 'import');
- link.setAttribute('href', 'layouts/' + this.layout + '.html');
- document.head.appendChild(link);
-
- // Load content for the new link element.
- var self = this;
- HTMLImports.importer.load(document, function() {
- HTMLImports.parser.parseLink(link);
- self.layoutChanged();
- });
- }
- }
- // New keyset has already been loaded, can show immediately.
- } else {
- this.activeKeyset.show();
- }
- },
-
- /**
- * Notifies the modifier keys that a non-control key was typed. This
- * lets them reset sticky behaviour. A non-control key is defined as
- * any key that is not Control, Alt, or Shift.
- */
- onNonControlKeyTyped: function() {
- if (this.shift)
- this.shift.onNonControlKeyTyped();
- if (this.ctrl)
- this.ctrl.onNonControlKeyTyped();
- if (this.alt)
- this.alt.onNonControlKeyTyped();
- this.classList.remove('ctrl-active');
- this.classList.remove('alt-active');
- },
-
- /**
- * Callback function for when volume is changed.
- */
- volumeChanged: function() {
- var toChange = Object.keys(this.sounds);
- for (var i = 0; i < toChange.length; i++) {
- var pool = this.sounds[toChange[i]];
- for (var j = 0; j < pool.length; j++) {
- pool[j].volume = this.volume;
- }
- }
- },
-
- /**
- * Id for the active keyset.
- * @type {string}
- */
- get activeKeysetId() {
- return this.layout + '-' + this.keyset;
- },
-
- /**
- * The active keyset DOM object.
- * @type {kb-keyset}
- */
- get activeKeyset() {
- return this.querySelector('#' + this.activeKeysetId);
- },
-
- /**
- * The current input type.
- * @type {string}
- */
- get inputTypeValue() {
- return this.inputType;
- },
-
- /**
- * Changes the input type if it's different from the current
- * type, else resets the keyset to the default keyset.
- * @type {string}
- */
- set inputTypeValue(value) {
- if (value == this.inputType)
- this.selectDefaultKeyset();
- else
- this.inputType = value;
- },
-
- /**
- * The keyboard is ready for input once the target keyset appears
- * in the distributed nodes for the keyboard.
- * @return {boolean} Indicates if the keyboard is ready for input.
- */
- isReady: function() {
- var keyset = this.activeKeyset;
- if (!keyset)
- return false;
- var nodes = this.$.content.getDistributedNodes();
- for (var i = 0; i < nodes.length; i++) {
- if (nodes[i].id && nodes[i].id == keyset.id)
- return true;
- }
- return false;
- },
-
- /**
- * Generates fabricated key events to simulate typing on a
- * physical keyboard.
- * @param {Object} detail Attributes of the key being typed.
- * @return {boolean} Whether the key type succeeded.
- */
- keyTyped: function(detail) {
- var builder = this.$.keyCodeMetadata;
- if (this.ctrl)
- detail.controlModifier = this.ctrl.isActive();
- if (this.alt)
- detail.altModifier = this.alt.isActive();
- var downEvent = builder.createVirtualKeyEvent(detail, "keydown");
- if (downEvent) {
- sendKeyEvent(downEvent);
- sendKeyEvent(builder.createVirtualKeyEvent(detail, "keyup"));
- return true;
- }
- return false;
- },
-
- /**
- * Selects the default keyset for a layout.
- * @return {boolean} True if successful. This method can fail if the
- * keysets corresponding to the layout have not been injected.
- */
- selectDefaultKeyset: function() {
- var keysets = this.querySelectorAll('kb-keyset');
- // Full name of the keyset is of the form 'layout-keyset'.
- var regex = new RegExp('^' + this.layout + '-(.+)');
- var keysetsLoaded = false;
- for (var i = 0; i < keysets.length; i++) {
- var matches = keysets[i].id.match(regex);
- if (matches && matches.length == REGEX_MATCH_COUNT) {
- keysetsLoaded = true;
- // Without both tests for a default keyset, it is possible to get
- // into a state where multiple layouts are displayed. A
- // reproducable test case is do the following set of keyset
- // transitions: qwerty -> system -> dvorak -> qwerty.
- // TODO(kevers): Investigate why this is the case.
- if (keysets[i].isDefault ||
- keysets[i].getAttribute('isDefault') == 'true') {
- this.keyset = matches[REGEX_KEYSET_INDEX];
- this.classList.remove('caps-locked');
- this.classList.remove('alt-active');
- this.classList.remove('ctrl-active');
- // Caches shift key.
- this.shift = this.querySelector('kb-shift-key');
- if (this.shift)
- this.shift.reset();
- // Caches control key.
- this.ctrl = this.querySelector('kb-modifier-key[char=Ctrl]');
- if (this.ctrl)
- this.ctrl.reset();
- // Caches alt key.
- this.alt = this.querySelector('kb-modifier-key[char=Alt]');
- if (this.alt)
- this.alt.reset();
- this.fire('stateChange', {
- state: 'keysetLoaded',
- value: this.keyset,
- });
- keyboardLoaded();
- return true;
- }
- }
- }
- if (keysetsLoaded)
- console.error('No default keyset found for ' + this.layout);
- return false;
- }
- });
- </script>
</polymer-element>
diff --git a/ui/keyboard/resources/elements/kb-keyboard.js b/ui/keyboard/resources/elements/kb-keyboard.js
new file mode 100644
index 0000000000..23c49e5c54
--- /dev/null
+++ b/ui/keyboard/resources/elements/kb-keyboard.js
@@ -0,0 +1,1003 @@
+// Copyright 2014 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.
+
+/**
+ * The repeat delay in milliseconds before a key starts repeating. Use the
+ * same rate as Chromebook.
+ * (See chrome/browser/chromeos/language_preferences.cc)
+ * @const
+ * @type {number}
+ */
+var REPEAT_DELAY_MSEC = 500;
+
+/**
+ * The repeat interval or number of milliseconds between subsequent
+ * keypresses. Use the same rate as Chromebook.
+ * @const
+ * @type {number}
+ */
+var REPEAT_INTERVAL_MSEC = 50;
+
+/**
+ * The double click/tap interval.
+ * @const
+ * @type {number}
+ */
+var DBL_INTERVAL_MSEC = 300;
+
+/**
+ * The index of the name of the keyset when searching for all keysets.
+ * @const
+ * @type {number}
+ */
+var REGEX_KEYSET_INDEX = 1;
+
+/**
+ * The integer number of matches when searching for keysets.
+ * @const
+ * @type {number}
+ */
+var REGEX_MATCH_COUNT = 2;
+
+/**
+ * The boolean to decide if keyboard should transit to upper case keyset
+ * when spacebar is pressed. If a closing punctuation is followed by a
+ * spacebar, keyboard should automatically transit to upper case.
+ * @type {boolean}
+ */
+var enterUpperOnSpace = false;
+
+/**
+ * A structure to track the currently repeating key on the keyboard.
+ */
+var repeatKey = {
+
+ /**
+ * The timer for the delay before repeating behaviour begins.
+ * @type {number|undefined}
+ */
+ timer: undefined,
+
+ /**
+ * The interval timer for issuing keypresses of a repeating key.
+ * @type {number|undefined}
+ */
+ interval: undefined,
+
+ /**
+ * The key which is currently repeating.
+ * @type {BaseKey|undefined}
+ */
+ key: undefined,
+
+ /**
+ * Cancel the repeat timers of the currently active key.
+ */
+ cancel: function() {
+ clearTimeout(this.timer);
+ clearInterval(this.interval);
+ this.timer = undefined;
+ this.interval = undefined;
+ this.key = undefined;
+ }
+};
+
+/**
+ * The minimum movement interval needed to trigger cursor move on
+ * horizontal and vertical way.
+ * @const
+ * @type {number}
+ */
+var MIN_SWIPE_DIST_X = 50;
+var MIN_SWIPE_DIST_Y = 20;
+
+/**
+ * The maximum swipe distance that will trigger hintText of a key
+ * to be typed.
+ * @const
+ * @type {number}
+ */
+var MAX_SWIPE_FLICK_DIST = 60;
+
+/**
+ * The boolean to decide if it is swipe in process or finished.
+ * @type {boolean}
+ */
+var swipeInProgress = false;
+
+// Flag values for ctrl, alt and shift as defined by EventFlags
+// in "event_constants.h".
+// @enum {number}
+var Modifier = {
+ NONE: 0,
+ ALT: 8,
+ CONTROL: 4,
+ SHIFT: 2
+};
+
+/**
+ * A structure to track the current swipe status.
+ */
+var swipeTracker = {
+ /**
+ * The latest PointerMove event in the swipe.
+ * @type {Object}
+ */
+ currentEvent: undefined,
+
+ /**
+ * Whether or not a swipe changes direction.
+ * @type {false}
+ */
+ isComplex: false,
+
+ /**
+ * The count of horizontal and vertical movement.
+ * @type {number}
+ */
+ offset_x : 0,
+ offset_y : 0,
+
+ /**
+ * Last touch coordinate.
+ * @type {number}
+ */
+ pre_x : 0,
+ pre_y : 0,
+
+ /**
+ * The PointerMove event which triggered the swipe.
+ * @type {Object}
+ */
+ startEvent: undefined,
+
+ /**
+ * The flag of current modifier key.
+ * @type {number}
+ */
+ swipeFlags : 0,
+
+ /**
+ * Current swipe direction.
+ * @type {number}
+ */
+ swipeDirection : 0,
+
+ /**
+ * The number of times we've swiped within a single swipe.
+ * @type {number}
+ */
+ swipeIndex: 0,
+
+ /**
+ * Returns the combined direction of the x and y offsets.
+ * @return {number} The latest direction.
+ */
+ getOffsetDirection: function() {
+ // TODO (rsadam): Use angles to figure out the direction.
+ var direction = 0;
+ // Checks for horizontal swipe.
+ if (Math.abs(this.offset_x) > MIN_SWIPE_DIST_X) {
+ if (this.offset_x > 0) {
+ direction |= SwipeDirection.RIGHT;
+ } else {
+ direction |= SwipeDirection.LEFT;
+ }
+ }
+ // Checks for vertical swipe.
+ if (Math.abs(this.offset_y) > MIN_SWIPE_DIST_Y) {
+ if (this.offset_y < 0) {
+ direction |= SwipeDirection.UP;
+ } else {
+ direction |= SwipeDirection.DOWN;
+ }
+ }
+ return direction;
+ },
+
+ /**
+ * Populates the swipe update details.
+ * @param {boolean} endSwipe Whether this is the final event for this
+ * swipe.
+ * @return {Object} The current state of the swipeTracker.
+ */
+ populateDetails: function(endSwipe) {
+ var detail = {};
+ detail.direction = this.swipeDirection;
+ detail.index = this.swipeIndex;
+ detail.status = this.swipeStatus;
+ detail.endSwipe = endSwipe;
+ detail.startEvent = this.startEvent;
+ detail.currentEvent = this.currentEvent;
+ detail.isComplex = this.isComplex;
+ return detail;
+ },
+
+ /**
+ * Reset all the values when swipe finished.
+ */
+ resetAll: function() {
+ this.offset_x = 0;
+ this.offset_y = 0;
+ this.pre_x = 0;
+ this.pre_y = 0;
+ this.swipeFlags = 0;
+ this.swipeDirection = 0;
+ this.swipeIndex = 0;
+ this.startEvent = undefined;
+ this.currentEvent = undefined;
+ this.isComplex = false;
+ },
+
+ /**
+ * Updates the swipe path with the current event.
+ * @param {Object} event The PointerEvent that triggered this update.
+ * @return {boolean} Whether or not to notify swipe observers.
+ */
+ update: function(event) {
+ if(!event.isPrimary)
+ return false;
+ // Update priors.
+ this.offset_x += event.screenX - this.pre_x;
+ this.offset_y += event.screenY - this.pre_y;
+ this.pre_x = event.screenX;
+ this.pre_y = event.screenY;
+
+ // Check if movement crosses minimum thresholds in each direction.
+ var direction = this.getOffsetDirection();
+ if (direction == 0)
+ return false;
+ // If swipeIndex is zero the current event is triggering the swipe.
+ if (this.swipeIndex == 0) {
+ this.startEvent = event;
+ } else if (direction != this.swipeDirection) {
+ // Toggle the isComplex flag.
+ this.isComplex = true;
+ }
+ // Update the swipe tracker.
+ this.swipeDirection = direction;
+ this.offset_x = 0;
+ this.offset_y = 0;
+ this.currentEvent = event;
+ this.swipeIndex++;
+ return true;
+ },
+
+};
+
+Polymer('kb-keyboard', {
+ alt: null,
+ config: null,
+ control: null,
+ dblDetail_: null,
+ dblTimer_: null,
+ inputType: null,
+ lastPressedKey: null,
+ shift: null,
+ sounds: {},
+ stale: true,
+ swipeHandler: null,
+ voiceInput_: null,
+ //TODO(rsadam@): Add a control to let users change this.
+ volume: DEFAULT_VOLUME,
+
+ /**
+ * The default input type to keyboard layout map. The key must be one of
+ * the input box type values.
+ * @type {object}
+ */
+ inputTypeToLayoutMap: {
+ number: "numeric",
+ text: "qwerty",
+ password: "qwerty"
+ },
+
+ /**
+ * Caches the specified sound on the keyboard.
+ * @param {string} soundId The name of the .wav file in the "sounds"
+ directory.
+ */
+ addSound: function(soundId) {
+ // Check if already loaded.
+ if (soundId == Sound.NONE || this.sounds[soundId])
+ return;
+ var pool = [];
+ for (var i = 0; i < SOUND_POOL_SIZE; i++) {
+ var audio = document.createElement('audio');
+ audio.preload = "auto";
+ audio.id = soundId;
+ audio.src = "../sounds/" + soundId + ".wav";
+ audio.volume = this.volume;
+ pool.push(audio);
+ }
+ this.sounds[soundId] = pool;
+ },
+
+ /**
+ * Changes the current keyset.
+ * @param {Object} detail The detail of the event that called this
+ * function.
+ */
+ changeKeyset: function(detail) {
+ if (detail.relegateToShift && this.shift) {
+ this.keyset = this.shift.textKeyset;
+ this.activeKeyset.nextKeyset = undefined;
+ return true;
+ }
+ var toKeyset = detail.toKeyset;
+ if (toKeyset) {
+ this.keyset = toKeyset;
+ this.activeKeyset.nextKeyset = detail.nextKeyset;
+ return true;
+ }
+ return false;
+ },
+
+ keysetChanged: function() {
+ var keyset = this.activeKeyset;
+ // Show the keyset if it has been initialized.
+ if (keyset)
+ keyset.show();
+ },
+
+ configChanged: function() {
+ this.layout = this.config.layout;
+ },
+
+ ready: function() {
+ this.voiceInput_ = new VoiceInput(this);
+ this.swipeHandler = this.move.bind(this);
+ var self = this;
+ getKeyboardConfig(function(config) {
+ self.config = config;
+ });
+ },
+
+ /**
+ * Registers a callback for state change events.
+ * @param{!Function} callback Callback function to register.
+ */
+ addKeysetChangedObserver: function(callback) {
+ this.addEventListener('stateChange', callback);
+ },
+
+ /**
+ * Called when the type of focused input box changes. If a keyboard layout
+ * is defined for the current input type, that layout will be loaded.
+ * Otherwise, the keyboard layout for 'text' type will be loaded.
+ */
+ inputTypeChanged: function() {
+ // Disable layout switching at accessbility mode.
+ if (this.config && this.config.a11ymode)
+ return;
+
+ // TODO(bshe): Toggle visibility of some keys in a keyboard layout
+ // according to the input type.
+ var layout = this.inputTypeToLayoutMap[this.inputType];
+ if (!layout)
+ layout = this.inputTypeToLayoutMap.text;
+ this.layout = layout;
+ },
+
+ /**
+ * When double click/tap event is enabled, the second key-down and key-up
+ * events on the same key should be skipped. Return true when the event
+ * with |detail| should be skipped.
+ * @param {Object} detail The detail of key-up or key-down event.
+ */
+ skipEvent: function(detail) {
+ if (this.dblDetail_) {
+ if (this.dblDetail_.char != detail.char) {
+ // The second key down is not on the same key. Double click/tap
+ // should be ignored.
+ this.dblDetail_ = null;
+ clearTimeout(this.dblTimer_);
+ } else if (this.dblDetail_.clickCount == 1) {
+ return true;
+ }
+ }
+ return false;
+ },
+
+ /**
+ * Handles a swipe update.
+ * param {Object} detail The swipe update details.
+ */
+ onSwipeUpdate: function(detail) {
+ var direction = detail.direction;
+ if (!direction)
+ console.error("Swipe direction cannot be: " + direction);
+ // Triggers swipe editting if it's a purely horizontal swipe.
+ if (!(direction & (SwipeDirection.UP | SwipeDirection.DOWN))) {
+ // Nothing to do if the swipe has ended.
+ if (detail.endSwipe)
+ return;
+ var modifiers = 0;
+ // TODO (rsadam): This doesn't take into account index shifts caused
+ // by vertical swipes.
+ if (detail.index % 2 != 0) {
+ modifiers |= Modifier.SHIFT;
+ modifiers |= Modifier.CONTROL;
+ }
+ MoveCursor(direction, modifiers);
+ return;
+ }
+ // Triggers swipe hintText if it's a purely vertical swipe.
+ if (!(direction & (SwipeDirection.LEFT | SwipeDirection.RIGHT))) {
+ // Check if event is relevant to us.
+ if ((!detail.endSwipe) || (detail.isComplex))
+ return;
+ // Too long a swipe.
+ var distance = Math.abs(detail.startEvent.screenY -
+ detail.currentEvent.screenY);
+ if (distance > MAX_SWIPE_FLICK_DIST)
+ return;
+ var triggerKey = detail.startEvent.target;
+ if (triggerKey && triggerKey.onFlick)
+ triggerKey.onFlick(detail);
+ }
+ },
+
+ /**
+ * This function is bound to swipeHandler. Updates the current swipe
+ * status so that PointerEvents can be converted to Swipe events.
+ * @param {PointerEvent} event.
+ */
+ move: function(event) {
+ if (!swipeTracker.update(event))
+ return;
+ // Conversion was successful, swipe is now in progress.
+ swipeInProgress = true;
+ if (this.lastPressedKey) {
+ this.lastPressedKey.classList.remove('active');
+ this.lastPressedKey = null;
+ }
+ this.onSwipeUpdate(swipeTracker.populateDetails(false));
+ },
+
+ /**
+ * Handles key-down event that is sent by kb-key-base.
+ * @param {CustomEvent} event The key-down event dispatched by
+ * kb-key-base.
+ * @param {Object} detail The detail of pressed kb-key.
+ */
+ keyDown: function(event, detail) {
+ if (this.skipEvent(detail))
+ return;
+
+ if (this.lastPressedKey) {
+ this.lastPressedKey.classList.remove('active');
+ this.lastPressedKey.autoRelease();
+ }
+ this.lastPressedKey = event.target;
+ this.lastPressedKey.classList.add('active');
+ repeatKey.cancel();
+ this.playSound(detail.sound);
+
+ var char = detail.char;
+ switch(char) {
+ case 'Shift':
+ this.classList.remove('caps-locked');
+ break;
+ case 'Alt':
+ case 'Ctrl':
+ var modifier = char.toLowerCase() + "-active";
+ // Removes modifier if already active.
+ if (this.classList.contains(modifier))
+ this.classList.remove(modifier);
+ break;
+ case 'Invalid':
+ // Not all Invalid keys are transition keys. Reset control keys if
+ // we pressed a transition key.
+ if (event.target.toKeyset || detail.relegateToShift)
+ this.onNonControlKeyTyped();
+ break;
+ default:
+ // Notify shift key.
+ if (this.shift)
+ this.shift.onNonControlKeyDown();
+ if (this.ctrl)
+ this.ctrl.onNonControlKeyDown();
+ if (this.alt)
+ this.alt.onNonControlKeyDown();
+ break;
+ }
+ if(this.changeKeyset(detail))
+ return;
+ if (detail.repeat) {
+ this.keyTyped(detail);
+ this.onNonControlKeyTyped();
+ repeatKey.key = this.lastPressedKey;
+ var self = this;
+ repeatKey.timer = setTimeout(function() {
+ repeatKey.timer = undefined;
+ repeatKey.interval = setInterval(function() {
+ self.playSound(detail.sound);
+ self.keyTyped(detail);
+ }, REPEAT_INTERVAL_MSEC);
+ }, Math.max(0, REPEAT_DELAY_MSEC - REPEAT_INTERVAL_MSEC));
+ }
+ },
+
+ /**
+ * Handles key-out event that is sent by kb-shift-key.
+ * @param {CustomEvent} event The key-out event dispatched by
+ * kb-shift-key.
+ * @param {Object} detail The detail of pressed kb-shift-key.
+ */
+ keyOut: function(event, detail) {
+ this.changeKeyset(detail);
+ },
+
+ /**
+ * Enable/start double click/tap event recognition.
+ * @param {CustomEvent} event The enable-dbl event dispatched by
+ * kb-shift-key.
+ * @param {Object} detail The detail of pressed kb-shift-key.
+ */
+ enableDbl: function(event, detail) {
+ if (!this.dblDetail_) {
+ this.dblDetail_ = detail;
+ this.dblDetail_.clickCount = 0;
+ var self = this;
+ this.dblTimer_ = setTimeout(function() {
+ self.dblDetail_.callback = null;
+ self.dblDetail_ = null;
+ }, DBL_INTERVAL_MSEC);
+ }
+ },
+
+ /**
+ * Enable the selection while swipe.
+ * @param {CustomEvent} event The enable-dbl event dispatched by
+ * kb-shift-key.
+ */
+ enableSel: function(event) {
+ // TODO(rsadam): Disabled for now. May come back if we revert swipe
+ // selection to not do word selection.
+ },
+
+ /**
+ * Handles pointerdown event. This is used for swipe selection process.
+ * to get the start pre_x and pre_y. And also add a pointermove handler
+ * to start handling the swipe selection event.
+ * @param {PointerEvent} event The pointerup event that received by
+ * kb-keyboard.
+ */
+ down: function(event) {
+ var layout = getKeysetLayout(this.activeKeysetId);
+ var key = layout.findClosestKey(event.clientX, event.clientY);
+ if (key)
+ key.down(event);
+ if (event.isPrimary) {
+ swipeTracker.pre_x = event.screenX;
+ swipeTracker.pre_y = event.screenY;
+ this.addEventListener("pointermove", this.swipeHandler, false);
+ }
+ },
+
+ /**
+ * Handles pointerup event. This is used for double tap/click events.
+ * @param {PointerEvent} event The pointerup event that bubbled to
+ * kb-keyboard.
+ */
+ up: function(event) {
+ var layout = getKeysetLayout(this.activeKeysetId);
+ var key = layout.findClosestKey(event.clientX, event.clientY);
+ if (key)
+ key.up(event);
+ // When touch typing, it is very possible that finger moves slightly out
+ // of the key area before releases. The key should not be dropped in
+ // this case.
+ // TODO(rsadam@) Change behaviour such that the key drops and the second
+ // key gets pressed.
+ if (this.lastPressedKey &&
+ this.lastPressedKey.pointerId == event.pointerId) {
+ this.lastPressedKey.autoRelease();
+ }
+
+ if (this.dblDetail_) {
+ this.dblDetail_.clickCount++;
+ if (this.dblDetail_.clickCount == 2) {
+ this.dblDetail_.callback();
+ this.changeKeyset(this.dblDetail_);
+ clearTimeout(this.dblTimer_);
+
+ this.classList.add('caps-locked');
+
+ this.dblDetail_ = null;
+ }
+ }
+
+ // TODO(zyaozhujun): There are some edge cases to deal with later.
+ // (for instance, what if a second finger trigger a down and up
+ // event sequence while swiping).
+ // When pointer up from the screen, a swipe selection session finished,
+ // all the data should be reset to prepare for the next session.
+ if (event.isPrimary && swipeInProgress) {
+ swipeInProgress = false;
+ this.onSwipeUpdate(swipeTracker.populateDetails(true))
+ swipeTracker.resetAll();
+ }
+ this.removeEventListener('pointermove', this.swipeHandler, false);
+ },
+
+ /**
+ * Handles PointerOut event. This is used for when a swipe gesture goes
+ * outside of the keyboard window.
+ * @param {Object} event The pointerout event that bubbled to the
+ * kb-keyboard.
+ */
+ out: function(event) {
+ // Ignore if triggered from one of the keys.
+ if (this.compareDocumentPosition(event.relatedTarget) &
+ Node.DOCUMENT_POSITION_CONTAINED_BY)
+ return;
+ if (swipeInProgress)
+ this.onSwipeUpdate(swipeTracker.populateDetails(true))
+ // Touched outside of the keyboard area, so disables swipe.
+ swipeInProgress = false;
+ swipeTracker.resetAll();
+ this.removeEventListener('pointermove', this.swipeHandler, false);
+ },
+
+ /**
+ * Handles a TypeKey event. This is used for when we programmatically
+ * want to type a specific key.
+ * @param {CustomEvent} event The TypeKey event that bubbled to the
+ * kb-keyboard.
+ */
+ type: function(event) {
+ this.keyTyped(event.detail);
+ },
+
+ /**
+ * Handles key-up event that is sent by kb-key-base.
+ * @param {CustomEvent} event The key-up event dispatched by kb-key-base.
+ * @param {Object} detail The detail of pressed kb-key.
+ */
+ keyUp: function(event, detail) {
+ if (this.skipEvent(detail))
+ return;
+ if (swipeInProgress)
+ return;
+ if (detail.activeModifier) {
+ var modifier = detail.activeModifier.toLowerCase() + "-active";
+ this.classList.add(modifier);
+ }
+ // Adds the current keyboard modifiers to the detail.
+ if (this.ctrl)
+ detail.controlModifier = this.ctrl.isActive();
+ if (this.alt)
+ detail.altModifier = this.alt.isActive();
+ if (this.lastPressedKey)
+ this.lastPressedKey.classList.remove('active');
+ // Keyset transition key. This is needed to transition from upper
+ // to lower case when we are not in caps mode, as well as when
+ // we're ending chording.
+ this.changeKeyset(detail);
+
+ if (this.lastPressedKey &&
+ this.lastPressedKey.charValue != event.target.charValue) {
+ return;
+ }
+ if (repeatKey.key == event.target) {
+ repeatKey.cancel();
+ this.lastPressedKey = null;
+ return;
+ }
+ var toLayoutId = detail.toLayout;
+ // Layout transition key.
+ if (toLayoutId)
+ this.layout = toLayoutId;
+ var char = detail.char;
+ this.lastPressedKey = null;
+ // Characters that should not be typed.
+ switch(char) {
+ case 'Invalid':
+ case 'Shift':
+ case 'Ctrl':
+ case 'Alt':
+ enterUpperOnSpace = false;
+ swipeTracker.swipeFlags = 0;
+ return;
+ case 'Microphone':
+ this.voiceInput_.onDown();
+ return;
+ default:
+ break;
+ }
+ // Tries to type the character. Resorts to insertText if that fails.
+ if(!this.keyTyped(detail))
+ insertText(char);
+ // Post-typing logic.
+ switch(char) {
+ case '\n':
+ case ' ':
+ if(enterUpperOnSpace) {
+ enterUpperOnSpace = false;
+ if (this.shift) {
+ var shiftDetail = this.shift.onSpaceAfterPunctuation();
+ // Check if transition defined.
+ this.changeKeyset(shiftDetail);
+ } else {
+ console.error('Capitalization on space after punctuation \
+ enabled, but cannot find target keyset.');
+ }
+ // Immediately return to maintain shift-state. Space is a
+ // non-control key and would otherwise trigger a reset of the
+ // shift key, causing a transition to lower case.
+ return;
+ }
+ break;
+ case '.':
+ case '?':
+ case '!':
+ enterUpperOnSpace = this.shouldUpperOnSpace();
+ break;
+ default:
+ enterUpperOnSpace = false;
+ break;
+ }
+ // Reset control keys.
+ this.onNonControlKeyTyped();
+ },
+
+ /*
+ * Handles key-longpress event that is sent by kb-key-base.
+ * @param {CustomEvent} event The key-longpress event dispatched by
+ * kb-key-base.
+ * @param {Object} detail The detail of pressed key.
+ */
+ keyLongpress: function(event, detail) {
+ // If the gesture is long press, remove the pointermove listener.
+ this.removeEventListener('pointermove', this.swipeHandler, false);
+ // Keyset transtion key.
+ if (this.changeKeyset(detail)) {
+ // Locks the keyset before removing active to prevent flicker.
+ this.classList.add('caps-locked');
+ // Makes last pressed key inactive if transit to a new keyset on long
+ // press.
+ if (this.lastPressedKey)
+ this.lastPressedKey.classList.remove('active');
+ }
+ },
+
+ /**
+ * Plays the specified sound.
+ * @param {Sound} sound The id of the audio tag.
+ */
+ playSound: function(sound) {
+ if (!sound || sound == Sound.NONE)
+ return;
+ var pool = this.sounds[sound];
+ if (!pool) {
+ console.error("Cannot find audio tag: " + sound);
+ return;
+ }
+ // Search the sound pool for a free resource.
+ for (var i = 0; i < pool.length; i++) {
+ if (pool[i].paused) {
+ pool[i].play();
+ return;
+ }
+ }
+ },
+
+ /**
+ * Whether we should transit to upper case when seeing a space after
+ * punctuation.
+ * @return {boolean}
+ */
+ shouldUpperOnSpace: function() {
+ // TODO(rsadam): Add other input types in which we should not
+ // transition to upper after a space.
+ return this.inputTypeValue != 'password';
+ },
+
+ /**
+ * Handler for the 'set-layout' event.
+ * @param {!Event} event The triggering event.
+ * @param {{layout: string}} details Details of the event, which contains
+ * the name of the layout to activate.
+ */
+ setLayout: function(event, details) {
+ this.layout = details.layout;
+ },
+
+ /**
+ * Handles a change in the keyboard layout. Auto-selects the default
+ * keyset for the new layout.
+ */
+ layoutChanged: function() {
+ this.stale = true;
+ if (!this.selectDefaultKeyset()) {
+ this.fire('stateChange', {state: 'loadingKeyset'});
+
+ // Keyset selection fails if the keysets have not been loaded yet.
+ var keysets = document.querySelector('#' + this.layout);
+ if (keysets && keysets.content) {
+ var content = flattenKeysets(keysets.content);
+ this.appendChild(content);
+ this.selectDefaultKeyset();
+ } else {
+ // Add link for the keysets if missing from the document. Force
+ // a layout change after resolving the import of the link.
+ var query = 'link[id=' + this.layout + ']';
+ if (!document.querySelector(query)) {
+ // Layout has not beeen loaded yet.
+ var link = document.createElement('link');
+ link.id = this.layout;
+ link.setAttribute('rel', 'import');
+ link.setAttribute('href', 'layouts/' + this.layout + '.html');
+ document.head.appendChild(link);
+
+ // Load content for the new link element.
+ var self = this;
+ HTMLImports.importer.load(document, function() {
+ HTMLImports.parser.parseLink(link);
+ self.layoutChanged();
+ });
+ }
+ }
+ // New keyset has already been loaded, can show immediately.
+ } else {
+ this.activeKeyset.show();
+ }
+ },
+
+ /**
+ * Notifies the modifier keys that a non-control key was typed. This
+ * lets them reset sticky behaviour. A non-control key is defined as
+ * any key that is not Control, Alt, or Shift.
+ */
+ onNonControlKeyTyped: function() {
+ if (this.shift)
+ this.shift.onNonControlKeyTyped();
+ if (this.ctrl)
+ this.ctrl.onNonControlKeyTyped();
+ if (this.alt)
+ this.alt.onNonControlKeyTyped();
+ this.classList.remove('ctrl-active');
+ this.classList.remove('alt-active');
+ },
+
+ /**
+ * Callback function for when volume is changed.
+ */
+ volumeChanged: function() {
+ var toChange = Object.keys(this.sounds);
+ for (var i = 0; i < toChange.length; i++) {
+ var pool = this.sounds[toChange[i]];
+ for (var j = 0; j < pool.length; j++) {
+ pool[j].volume = this.volume;
+ }
+ }
+ },
+
+ /**
+ * Id for the active keyset.
+ * @type {string}
+ */
+ get activeKeysetId() {
+ return this.layout + '-' + this.keyset;
+ },
+
+ /**
+ * The active keyset DOM object.
+ * @type {kb-keyset}
+ */
+ get activeKeyset() {
+ return this.querySelector('#' + this.activeKeysetId);
+ },
+
+ /**
+ * The current input type.
+ * @type {string}
+ */
+ get inputTypeValue() {
+ return this.inputType;
+ },
+
+ /**
+ * Changes the input type if it's different from the current
+ * type, else resets the keyset to the default keyset.
+ * @type {string}
+ */
+ set inputTypeValue(value) {
+ if (value == this.inputType)
+ this.selectDefaultKeyset();
+ else
+ this.inputType = value;
+ },
+
+ /**
+ * The keyboard is ready for input once the target keyset appears
+ * in the distributed nodes for the keyboard.
+ * @return {boolean} Indicates if the keyboard is ready for input.
+ */
+ isReady: function() {
+ var keyset = this.activeKeyset;
+ if (!keyset)
+ return false;
+ var nodes = this.$.content.getDistributedNodes();
+ for (var i = 0; i < nodes.length; i++) {
+ if (nodes[i].id && nodes[i].id == keyset.id)
+ return true;
+ }
+ return false;
+ },
+
+ /**
+ * Generates fabricated key events to simulate typing on a
+ * physical keyboard.
+ * @param {Object} detail Attributes of the key being typed.
+ * @return {boolean} Whether the key type succeeded.
+ */
+ keyTyped: function(detail) {
+ var builder = this.$.keyCodeMetadata;
+ if (this.ctrl)
+ detail.controlModifier = this.ctrl.isActive();
+ if (this.alt)
+ detail.altModifier = this.alt.isActive();
+ var downEvent = builder.createVirtualKeyEvent(detail, "keydown");
+ if (downEvent) {
+ sendKeyEvent(downEvent);
+ sendKeyEvent(builder.createVirtualKeyEvent(detail, "keyup"));
+ return true;
+ }
+ return false;
+ },
+
+ /**
+ * Selects the default keyset for a layout.
+ * @return {boolean} True if successful. This method can fail if the
+ * keysets corresponding to the layout have not been injected.
+ */
+ selectDefaultKeyset: function() {
+ var keysets = this.querySelectorAll('kb-keyset');
+ // Full name of the keyset is of the form 'layout-keyset'.
+ var regex = new RegExp('^' + this.layout + '-(.+)');
+ var keysetsLoaded = false;
+ for (var i = 0; i < keysets.length; i++) {
+ var matches = keysets[i].id.match(regex);
+ if (matches && matches.length == REGEX_MATCH_COUNT) {
+ keysetsLoaded = true;
+ // Without both tests for a default keyset, it is possible to get
+ // into a state where multiple layouts are displayed. A
+ // reproducable test case is do the following set of keyset
+ // transitions: qwerty -> system -> dvorak -> qwerty.
+ // TODO(kevers): Investigate why this is the case.
+ if (keysets[i].isDefault ||
+ keysets[i].getAttribute('isDefault') == 'true') {
+ this.keyset = matches[REGEX_KEYSET_INDEX];
+ this.classList.remove('caps-locked');
+ this.classList.remove('alt-active');
+ this.classList.remove('ctrl-active');
+ // Caches shift key.
+ this.shift = this.querySelector('kb-shift-key');
+ if (this.shift)
+ this.shift.reset();
+ // Caches control key.
+ this.ctrl = this.querySelector('kb-modifier-key[char=Ctrl]');
+ if (this.ctrl)
+ this.ctrl.reset();
+ // Caches alt key.
+ this.alt = this.querySelector('kb-modifier-key[char=Alt]');
+ if (this.alt)
+ this.alt.reset();
+ this.fire('stateChange', {
+ state: 'keysetLoaded',
+ value: this.keyset,
+ });
+ keyboardLoaded();
+ return true;
+ }
+ }
+ }
+ if (keysetsLoaded)
+ console.error('No default keyset found for ' + this.layout);
+ return false;
+ }
+});
diff --git a/ui/keyboard/resources/elements/kb-keyset.html b/ui/keyboard/resources/elements/kb-keyset.html
index e2ffb27715..096f22dc10 100644
--- a/ui/keyboard/resources/elements/kb-keyset.html
+++ b/ui/keyboard/resources/elements/kb-keyset.html
@@ -4,10 +4,9 @@
-- found in the LICENSE file.
-->
-<polymer-element name="kb-keyset"
- attributes="align isDefault nextKeyset pitch weightRight
- weightTop weightBottom"
- on-key-up="{{keyUp}}" on-key-longpress="{{keyLongpress}}">
+<polymer-element name="kb-keyset" attributes="align isDefault nextKeyset pitch
+ weightRight weightTop weightBottom" on-key-up="{{keyUp}}"
+ on-key-longpress="{{keyLongpress}}">
<template>
<style>
:host(:not(.activeKeyset)) {
@@ -19,100 +18,4 @@
touch-action="none"></content>
<kb-altkey-data id="altkeyMetadata"></kb-altkey-data>
</template>
- <script>
- Polymer('kb-keyset', {
- align: "center",
- isDefault: false,
- nextKeyset: undefined,
- // Weight offsets for positioning the keyset.
- weightBottom: 15,
- weightLeft: 10,
- weightRight: 10,
- weightTop: 15,
-
- /**
- * Weight assigned to space between keys, of the form "xPitch yPitch".
- * Defaults to xPitch = yPitch if it's only a single number.
- * @type {string}
- */
- pitch: "10",
-
- // TODO(bshe): support select keyset on down, long and dbl events.
- keyUp: function(event, detail) {
- switch (detail.char) {
- case 'Shift':
- case 'Alt':
- case 'Ctrl':
- case 'Invalid':
- return;
- default:
- break;
- }
- if (!detail.toKeyset)
- detail.toKeyset = this.nextKeyset;
- },
- keyLongpress: function(event, detail) {
- if (!detail.char)
- return;
-
- var altkeyContainer = this.$.altkeyContainer.getDistributedNodes()[0];
- if (!altkeyContainer)
- return;
-
- var altkeyMetadata = this.$.altkeyMetadata;
- var altkeys = altkeyMetadata.getAltkeys(detail.char,
- !!detail.hintText);
- if (!altkeys)
- return;
-
- var id = altkeys.id;
- var activeAltKeySet = altkeyContainer.querySelector('#' + id);
- if (!activeAltKeySet) {
- var keyWidth = event.target.clientWidth;
- var leftMargin = event.target.offsetLeft;
- var maxLeftOffset = Math.round(leftMargin / keyWidth);
- var rightMargin = this.clientWidth - leftMargin - keyWidth;
- var maxRightOffset = Math.round(rightMargin / keyWidth);
- activeAltKeySet = altkeyMetadata.createAltkeySet(detail.char,
- maxLeftOffset,
- maxRightOffset,
- detail.hintText);
- altkeyContainer.appendChild(activeAltKeySet);
- }
-
- altkeyContainer.keyset = id;
- event.target.dropKey();
- activeAltKeySet.style.width = event.target.clientWidth *
- activeAltKeySet.childElementCount + 'px';
- activeAltKeySet.style.height = event.target.clientHeight + 'px';
- activeAltKeySet.style.top = event.target.offsetTop + 'px';
- var leftOffset = activeAltKeySet.offset * event.target.clientWidth;
- activeAltKeySet.style.left = event.target.offsetLeft - leftOffset +
- 'px';
- var nodes = activeAltKeySet.childNodes;
- nodes[activeAltKeySet.offset].classList.add('active');
- altkeyContainer.hidden = false;
- },
-
- show: function() {
- var old = $('keyboard').querySelector('.activeKeyset');
- if (old && old != this)
- old.classList.remove('activeKeyset');
- this.classList.add('activeKeyset');
- this.fire('stateChange', {
- state: 'keysetChanged',
- value: this.id
- });
- },
-
- enteredView: function() {
- var self = this;
- Platform.endOfMicrotask(function(){
- self.fire('realign');
- if (self.isDefault)
- self.show();
- });
- },
- });
- </script>
</polymer-element>
diff --git a/ui/keyboard/resources/elements/kb-keyset.js b/ui/keyboard/resources/elements/kb-keyset.js
new file mode 100644
index 0000000000..e32fc0bb9e
--- /dev/null
+++ b/ui/keyboard/resources/elements/kb-keyset.js
@@ -0,0 +1,98 @@
+// Copyright 2014 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.
+
+Polymer('kb-keyset', {
+ align: "center",
+ isDefault: false,
+ nextKeyset: undefined,
+ // Weight offsets for positioning the keyset.
+ weightBottom: 15,
+ weightLeft: 10,
+ weightRight: 10,
+ weightTop: 6,
+
+ /**
+ * Weight assigned to space between keys, of the form "xPitch yPitch".
+ * Defaults to xPitch = yPitch if it's only a single number.
+ * @type {string}
+ */
+ pitch: "10",
+
+ // TODO(bshe): support select keyset on down, long and dbl events.
+ keyUp: function(event, detail) {
+ switch (detail.char) {
+ case 'Shift':
+ case 'Alt':
+ case 'Ctrl':
+ case 'Invalid':
+ return;
+ default:
+ break;
+ }
+ if (!detail.toKeyset)
+ detail.toKeyset = this.nextKeyset;
+ },
+ keyLongpress: function(event, detail) {
+ if (!detail.char)
+ return;
+
+ var altkeyContainer = this.$.altkeyContainer.getDistributedNodes()[0];
+ if (!altkeyContainer)
+ return;
+
+ var altkeyMetadata = this.$.altkeyMetadata;
+ var altkeys = altkeyMetadata.getAltkeys(detail.char,
+ !!detail.hintText);
+ if (!altkeys)
+ return;
+
+ var id = altkeys.id;
+ var activeAltKeySet = altkeyContainer.querySelector('#' + id);
+ if (!activeAltKeySet) {
+ var keyWidth = event.target.clientWidth;
+ var leftMargin = event.target.offsetLeft;
+ var maxLeftOffset = Math.round(leftMargin / keyWidth);
+ var rightMargin = this.clientWidth - leftMargin - keyWidth;
+ var maxRightOffset = Math.round(rightMargin / keyWidth);
+ activeAltKeySet = altkeyMetadata.createAltkeySet(detail.char,
+ maxLeftOffset,
+ maxRightOffset,
+ detail.hintText);
+ altkeyContainer.appendChild(activeAltKeySet);
+ }
+
+ altkeyContainer.keyset = id;
+ event.target.dropKey();
+ activeAltKeySet.style.width = event.target.clientWidth *
+ activeAltKeySet.childElementCount + 'px';
+ activeAltKeySet.style.height = event.target.clientHeight + 'px';
+ activeAltKeySet.style.top = event.target.offsetTop + 'px';
+ var leftOffset = activeAltKeySet.offset * event.target.clientWidth;
+ activeAltKeySet.style.left = event.target.offsetLeft - leftOffset +
+ 'px';
+ var nodes = activeAltKeySet.childNodes;
+ nodes[activeAltKeySet.offset].classList.add('active');
+ altkeyContainer.hidden = false;
+ },
+
+ show: function() {
+ var old = $('keyboard').querySelector('.activeKeyset');
+ if (old && old != this)
+ old.classList.remove('activeKeyset');
+ this.classList.add('activeKeyset');
+ this.fire('stateChange', {
+ state: 'keysetChanged',
+ value: this.id
+ });
+ },
+
+ enteredView: function() {
+ var self = this;
+ Platform.endOfMicrotask(function(){
+ self.fire('realign');
+ if (self.isDefault)
+ self.show();
+ });
+ },
+});
diff --git a/ui/keyboard/resources/elements/kb-modifier-key.html b/ui/keyboard/resources/elements/kb-modifier-key.html
index adba476556..1a742ccec5 100644
--- a/ui/keyboard/resources/elements/kb-modifier-key.html
+++ b/ui/keyboard/resources/elements/kb-modifier-key.html
@@ -6,137 +6,4 @@
<polymer-element name="kb-modifier-key" class="unlocked dark" extends="kb-key"
on-pointerout="{{out}}">
- <script>
- (function () {
-
- /**
- * The possible states of the key.
- * @const
- * @type {Enum}
- */
- var KEY_STATES = {
- PRESSED: "pressed", // Key-down.
- UNLOCKED: "unlocked", // Default state.
- TAPPED: "tapped", // Key-down followed by key-up.
- CHORDING: "chording", // Chording mode.
- };
-
- /**
- * A map of the state of all modifier keys.
- * @type {Object}
- */
- var states = {};
-
- Polymer('kb-modifier-key', {
- up: function(event) {
- if (this.state == KEY_STATES.PRESSED)
- this.state = KEY_STATES.TAPPED;
- else
- this.state = KEY_STATES.UNLOCKED;
- this.super([event]);
- },
-
- down: function(event) {
- // First transition state so that populateDetails generates
- // correct data.
- switch (this.state) {
- case KEY_STATES.UNLOCKED:
- this.state = KEY_STATES.PRESSED;
- break;
- case KEY_STATES.TAPPED:
- this.state = KEY_STATES.UNLOCKED;
- break;
- case KEY_STATES.PRESSED:
- case KEY_STATES.CHORDING:
- // We pressed another key at the same time,
- // so ignore second press.
- return;
- default:
- console.error("Undefined key state: " + state);
- break;
- }
- this.super([event]);
- },
-
- /**
- * Returns whether the modifier for this key is active.
- * @return {boolean}
- */
- isActive: function() {
- return this.state != KEY_STATES.UNLOCKED;
- },
-
- /**
- * Notifies key that a non-control keyed down.
- * A control key is defined as one of shift, control or alt.
- */
- onNonControlKeyDown: function() {
- switch(this.state) {
- case (KEY_STATES.PRESSED):
- this.state = KEY_STATES.CHORDING;
- break;
- }
- },
-
- /**
- * Notifies key that a non-control keyed was typed.
- * A control key is defined as one of shift, control or alt.
- */
- onNonControlKeyTyped: function() {
- switch(this.state) {
- case (KEY_STATES.TAPPED):
- this.state = KEY_STATES.UNLOCKED;
- break;
- }
- },
-
- /**
- * Called on a pointer-out event. Ends chording.
- * @param {event} event The pointer-out event.
- */
- out: function(event) {
- // TODO(rsadam): Add chording event so that we don't reset
- // when shift-chording.
- if (this.state == KEY_STATES.CHORDING) {
- this.state = KEY_STATES.UNLOCKED;
- }
- },
-
- /*
- * Overrides the autoRelease function to enable chording.
- */
- autoRelease: function() {
- },
-
- populateDetails: function(caller) {
- var detail = this.super([caller]);
- if (this.state != KEY_STATES.UNLOCKED)
- detail.activeModifier = this.charValue;
- return detail;
- },
-
- /**
- * Resets the modifier key state.
- */
- reset: function() {
- this.state = KEY_STATES.UNLOCKED;
- },
-
- get state() {
- var key = this.charValue;
- if (!key)
- console.error("missing key for kb-modifier-key state: " + this);
- // All keys default to the unlock state.
- if (!(key in states))
- states[key] = KEY_STATES.UNLOCKED;
- return states[key];
- },
-
- set state(value) {
- var key = this.charValue;
- states[key] = value;
- }
- });
- })();
- </script>
</polymer-element>
diff --git a/ui/keyboard/resources/elements/kb-modifier-key.js b/ui/keyboard/resources/elements/kb-modifier-key.js
new file mode 100644
index 0000000000..0f9fd8a1da
--- /dev/null
+++ b/ui/keyboard/resources/elements/kb-modifier-key.js
@@ -0,0 +1,135 @@
+// Copyright 2014 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.
+
+(function () {
+
+ /**
+ * The possible states of the key.
+ * @const
+ * @type {Enum}
+ */
+ var KEY_STATES = {
+ PRESSED: "pressed", // Key-down.
+ UNLOCKED: "unlocked", // Default state.
+ TAPPED: "tapped", // Key-down followed by key-up.
+ CHORDING: "chording", // Chording mode.
+ };
+
+ /**
+ * A map of the state of all modifier keys.
+ * @type {Object}
+ */
+ var states = {};
+
+ Polymer('kb-modifier-key', {
+ up: function(event) {
+ if (this.state == KEY_STATES.PRESSED)
+ this.state = KEY_STATES.TAPPED;
+ else
+ this.state = KEY_STATES.UNLOCKED;
+ this.super([event]);
+ },
+
+ down: function(event) {
+ // First transition state so that populateDetails generates
+ // correct data.
+ switch (this.state) {
+ case KEY_STATES.UNLOCKED:
+ this.state = KEY_STATES.PRESSED;
+ break;
+ case KEY_STATES.TAPPED:
+ this.state = KEY_STATES.UNLOCKED;
+ break;
+ case KEY_STATES.PRESSED:
+ case KEY_STATES.CHORDING:
+ // We pressed another key at the same time,
+ // so ignore second press.
+ return;
+ default:
+ console.error("Undefined key state: " + state);
+ break;
+ }
+ this.super([event]);
+ },
+
+ /**
+ * Returns whether the modifier for this key is active.
+ * @return {boolean}
+ */
+ isActive: function() {
+ return this.state != KEY_STATES.UNLOCKED;
+ },
+
+ /**
+ * Notifies key that a non-control keyed down.
+ * A control key is defined as one of shift, control or alt.
+ */
+ onNonControlKeyDown: function() {
+ switch(this.state) {
+ case (KEY_STATES.PRESSED):
+ this.state = KEY_STATES.CHORDING;
+ break;
+ }
+ },
+
+ /**
+ * Notifies key that a non-control keyed was typed.
+ * A control key is defined as one of shift, control or alt.
+ */
+ onNonControlKeyTyped: function() {
+ switch(this.state) {
+ case (KEY_STATES.TAPPED):
+ this.state = KEY_STATES.UNLOCKED;
+ break;
+ }
+ },
+
+ /**
+ * Called on a pointer-out event. Ends chording.
+ * @param {event} event The pointer-out event.
+ */
+ out: function(event) {
+ // TODO(rsadam): Add chording event so that we don't reset
+ // when shift-chording.
+ if (this.state == KEY_STATES.CHORDING) {
+ this.state = KEY_STATES.UNLOCKED;
+ }
+ },
+
+ /*
+ * Overrides the autoRelease function to enable chording.
+ */
+ autoRelease: function() {
+ },
+
+ populateDetails: function(caller) {
+ var detail = this.super([caller]);
+ if (this.state != KEY_STATES.UNLOCKED)
+ detail.activeModifier = this.charValue;
+ return detail;
+ },
+
+ /**
+ * Resets the modifier key state.
+ */
+ reset: function() {
+ this.state = KEY_STATES.UNLOCKED;
+ },
+
+ get state() {
+ var key = this.charValue;
+ if (!key)
+ console.error("missing key for kb-modifier-key state: " + this);
+ // All keys default to the unlock state.
+ if (!(key in states))
+ states[key] = KEY_STATES.UNLOCKED;
+ return states[key];
+ },
+
+ set state(value) {
+ var key = this.charValue;
+ states[key] = value;
+ }
+ });
+})();
diff --git a/ui/keyboard/resources/elements/kb-options-menu.html b/ui/keyboard/resources/elements/kb-options-menu.html
deleted file mode 100644
index 57382ea8d2..0000000000
--- a/ui/keyboard/resources/elements/kb-options-menu.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<!--
- -- Copyright 2013 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.
- -->
-
-<polymer-element name="kb-options-menu-item" attributes="label active"
- on-pointerdown="down" on-pointerover="over" on-pointerout="out"
- on-pointerup="up">
- <template>
- <style>
- :host {
- -webkit-padding-after: 5px;
- -webkit-padding-before: 5px;
- -webkit-padding-end: 40px;
- -webkit-padding-start: 40px;
- color: #fff;
- display: -webkit-box;
- font-family: roboto-bold;
- font-size: 18px;
- font-weight: 300;
- height: 28px;
- }
-
- :host.active {
- background-color: #848490;
- }
- </style>
- <span>{{label}}</span>
- </template>
- <script>
- Polymer('kb-options-menu-item', {
- down: function(event) {
- event.stopPropagation();
- },
-
- over: function(event) {
- this.classList.add('active');
- },
-
- out: function(event) {
- this.classList.remove('active');
- },
-
- up: function(event) {
- this.hidden = true;
- hideKeyboard();
- },
- });
- </script>
-</polymer-element>
-
-<polymer-element name="kb-options-menu-toggle-lock-item"
- extends="kb-options-menu-item">
- <script>
- (function() {
- /**
- * The lock and unlock label for this key.
- * @const
- * @enum {string}
- */
- // TODO(bshe): Localize the string resources. http://crbug.com/328871
- var KEY_LABEL = {
- LOCK: 'Lock',
- UNLOCK: 'Unlock'
- };
-
- Polymer('kb-options-menu-toggle-lock-item', {
- up: function(event) {
- lockKeyboard(!keyboardLocked());
- this.hidden = true;
- },
-
- get label() {
- return keyboardLocked() ? KEY_LABEL.UNLOCK : KEY_LABEL.LOCK;
- }
- });
- })();
- </script>
-</polymer-element>
-
-<polymer-element name="kb-options-menu" noscript>
- <template>
- <style>
- :host {
- -webkit-box-orient: vertical;
- background-color: #3b3b3e;
- border-radius: 2px;
- display: -webkit-box;
- left: 0;
- position: absolute;
- top: 0;
- white-space:nowrap;
- z-index: 1;
- }
- .arm-dismiss :host {
- opacity: 0;
- }
- </style>
- <kb-options-menu-toggle-lock-item></kb-options-menu-toggle-lock-item>
- <kb-options-menu-item layout="none" label="Hide">
- </kb-options-menu-item>
- </template>
-</polymer-element>
-
-<polymer-element name="kb-keyboard-overlay" attributes="keyset"
- on-pointerdown="down" on-pointerup="up">
- <template>
- <style>
- :host {
- background-color: rgba(0, 0, 0, 0.6);
- bottom: 0;
- left: 0;
- position: absolute;
- right: 0;
- top: 0;
- z-index: 1;
- }
-
- :host.arm-dismiss {
- background-color: rgba(0,0,0,0);
- }
- </style>
- <!-- Insert popups here. -->
- <kb-options-menu id="options" hidden></kb-options-menu>
- </template>
- <script>
- Polymer('kb-keyboard-overlay', {
- up: function(event) {
- this.hidden = true;
- this.classList.remove('arm-dismiss');
- event.stopPropagation();
- },
-
- down: function(event) {
- this.classList.add('arm-dismiss');
- event.stopPropagation();
- },
-
- hiddenChanged: function() {
- this.fire('stateChange', {
- state: 'overlayVisibility',
- value: !!this.hidden
- });
- }
- });
- </script>
-</polymer-element>
diff --git a/ui/keyboard/resources/elements/kb-row.html b/ui/keyboard/resources/elements/kb-row.html
index e8429bb947..6d0f254fe3 100644
--- a/ui/keyboard/resources/elements/kb-row.html
+++ b/ui/keyboard/resources/elements/kb-row.html
@@ -1,5 +1,5 @@
<!--
- -- Copyright (c) 2013 The Chromium Authors. All rights reserved.
+ -- Copyright 2013 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.
-->
@@ -7,7 +7,7 @@
<polymer-element name="kb-row" attributes="align weight">
<template>
<style>
- :host {
+ :host() {
text-align: center;
margin-right: 0.25em;
margin-top: 0.25em;
@@ -18,10 +18,5 @@
</style>
<content select="*"></content>
</template>
- <script>
- Polymer('kb-row', {
- align: RowAlignment.STRETCH,
- weight: DEFAULT_KEY_WEIGHT,
- });
- </script>
+
</polymer-element>
diff --git a/ui/keyboard/resources/elements/kb-row.js b/ui/keyboard/resources/elements/kb-row.js
new file mode 100644
index 0000000000..d32a94f47c
--- /dev/null
+++ b/ui/keyboard/resources/elements/kb-row.js
@@ -0,0 +1,8 @@
+// Copyright 2014 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.
+
+Polymer('kb-row', {
+ align: RowAlignment.STRETCH,
+ weight: DEFAULT_KEY_WEIGHT,
+});
diff --git a/ui/keyboard/resources/elements/kb-shift-key.html b/ui/keyboard/resources/elements/kb-shift-key.html
index 8c617b41ad..1deb07dce0 100644
--- a/ui/keyboard/resources/elements/kb-shift-key.html
+++ b/ui/keyboard/resources/elements/kb-shift-key.html
@@ -4,251 +4,69 @@
-- found in the LICENSE file.
-->
-<polymer-element name="kb-shift-key"
- attributes="lowerCaseKeysetId upperCaseKeysetId"
- class="shift dark" char="Shift" on-pointerout="{{out}}" extends="kb-key">
- <script>
- (function () {
-
- /**
- * The possible states of the shift key.
- * Unlocked is the default state. Locked for capslocked, pressed is a
- * key-down and tapped for a key-down followed by an immediate key-up.
- * @const
- * @type {Enum}
- */
- var KEY_STATES = {
- PRESSED: "pressed", // Key-down on shift key.
- LOCKED: "locked", // Key is capslocked.
- UNLOCKED: "unlocked", // Default state.
- TAPPED: "tapped", // Key-down followed by key-up.
- CHORDING: "chording" // Key-down followed by other keys.
- };
-
- /**
- * The pointerdown event on shiftkey that may eventually trigger chording
- * state. pointerId and eventTarget are the two fields that is used now.
- * @type {PointerEvent}
- */
- var enterChordingEvent = undefined;
-
- /**
- * Uses a closure to define one long press timer among all shift keys
- * regardless of the layout they are in.
- * @type {function}
- */
- var shiftLongPressTimer = undefined;
-
- /**
- * The current state of the shift key.
- * @type {Enum}
- */
- var state = KEY_STATES.UNLOCKED;
-
- Polymer('kb-shift-key', {
- /**
- * Defines how capslock effects keyset transition. We always transition
- * from the lowerCaseKeysetId to the upperCaseKeysetId if capslock is
- * on.
- * @type {string}
- */
- lowerCaseKeysetId: 'lower',
- upperCaseKeysetId: 'upper',
-
- up: function(event) {
- if (state == KEY_STATES.CHORDING &&
- event.pointerId != enterChordingEvent.pointerId) {
- // Disables all other pointer events on shift keys when chording.
- return;
- }
- switch (state) {
- case KEY_STATES.PRESSED:
- state = KEY_STATES.TAPPED;
- break;
- case KEY_STATES.CHORDING:
- // Leaves chording only if the pointer that triggered it is
- // released.
- state = KEY_STATES.UNLOCKED;
- break;
- default:
- break;
- }
- // When releasing the shift key, it is not the same shift key that was
- // pressed. Updates the pointerId of the releasing shift key to make
- // sure key-up event fires correctly in kb-key-base.
- this.pointerId = enterChordingEvent.pointerId;
- this.super([event]);
- },
-
- out: function(event) {
- // Sliding off the shift key while chording is treated as a key-up.
- // Note that we switch to a new keyset on shift keydown, and a finger
- // movement on the new shift key will trigger this function being
- // called on the old shift key. We should not end chording in that
- // case.
- if (state == KEY_STATES.CHORDING &&
- event.pointerId == enterChordingEvent.pointerId &&
- event.target != enterChordingEvent.target) {
- state = KEY_STATES.UNLOCKED;
- var detail = this.populateDetails('out');
- this.fire("key-out", detail);
- }
- },
-
- down: function(event) {
- // First transition state so that populateDetails generates
- // correct data.
- switch (state) {
- case KEY_STATES.UNLOCKED:
- state = KEY_STATES.PRESSED;
- break;
- case KEY_STATES.TAPPED:
- case KEY_STATES.LOCKED:
- state = KEY_STATES.UNLOCKED;
- break;
- case KEY_STATES.PRESSED:
- case KEY_STATES.CHORDING:
- // We pressed another shift key at the same time,
- // so ignore second press.
- return;
- default:
- console.error("Undefined shift key state: " + state);
- break;
- }
- enterChordingEvent = event;
- // Trigger parent behaviour.
- this.super([event]);
- this.fire('enable-sel');
- // Populate double click transition details.
- var detail = {};
- detail.char = this.char || this.textContent;
- detail.toKeyset = this.upperCaseKeysetId;
- detail.nextKeyset = undefined;
- detail.callback = this.onDoubleClick;
- this.fire('enable-dbl', detail);
- },
-
- generateLongPressTimer: function() {
- return this.async(function() {
- var detail = this.populateDetails();
- if (state == KEY_STATES.LOCKED) {
- // We don't care about the longpress if we are already
- // capitalized.
- return;
- } else {
- state = KEY_STATES.LOCKED;
- detail.toKeyset = this.upperCaseKeysetId;
- detail.nextKeyset = undefined;
- }
- this.fire('key-longpress', detail);
- }, null, LONGPRESS_DELAY_MSEC);
- },
-
- // @return Whether the shift modifier is currently active.
- isActive: function() {
- return state != KEY_STATES.UNLOCKED;
- },
-
- /**
- * Callback function for when a double click is triggered.
- */
- onDoubleClick: function() {
- state = KEY_STATES.LOCKED;
- },
-
- /**
- * Notifies shift key that a non-control key was pressed down.
- * A control key is defined as one of shift, control or alt.
- */
- onNonControlKeyDown: function() {
- switch (state) {
- case (KEY_STATES.PRESSED):
- state = KEY_STATES.CHORDING;
- // Disable longpress timer.
- clearTimeout(shiftLongPressTimer);
- break;
- default:
- break;
- }
- },
-
- /**
- * Notifies key that a non-control keyed was typed.
- * A control key is defined as one of shift, control or alt.
- */
- onNonControlKeyTyped: function() {
- if (state == KEY_STATES.TAPPED)
- state = KEY_STATES.UNLOCKED;
- },
-
- /**
- * Callback function for when a space is pressed after punctuation.
- * @return {Object} The keyset transitions the keyboard should make.
- */
- onSpaceAfterPunctuation: function() {
- var detail = {};
- detail.toKeyset = this.upperCaseKeysetId;
- detail.nextKeyset = this.lowerCaseKeysetId;
- state = KEY_STATES.TAPPED;
- return detail;
- },
-
- populateDetails: function(caller) {
- var detail = this.super([caller]);
- switch(state) {
- case(KEY_STATES.LOCKED):
- detail.toKeyset = this.upperCaseKeysetId;
- break;
- case(KEY_STATES.UNLOCKED):
- detail.toKeyset = this.lowerCaseKeysetId;
- break;
- case(KEY_STATES.PRESSED):
- detail.toKeyset = this.upperCaseKeysetId;
- break;
- case(KEY_STATES.TAPPED):
- detail.toKeyset = this.upperCaseKeysetId;
- detail.nextKeyset = this.lowerCaseKeysetId;
- break;
- case(KEY_STATES.CHORDING):
- detail.toKeyset = this.lowerCaseKeysetId;
- break;
- default:
- break;
- }
- return detail;
- },
-
- /**
- * Resets the shift key state.
- */
- reset: function() {
- state = KEY_STATES.UNLOCKED;
- },
-
- /**
- * Overrides longPressTimer for the shift key.
- */
- get longPressTimer() {
- return shiftLongPressTimer;
- },
-
- set longPressTimer(timer) {
- shiftLongPressTimer = timer;
- },
-
- get state() {
- return state;
- },
-
- get textKeyset() {
- switch (state) {
- case KEY_STATES.UNLOCKED:
- return this.lowerCaseKeysetId;
- default:
- return this.upperCaseKeysetId;
- }
- },
- });
- })();
- </script>
+<polymer-element name="kb-shift-key" attributes="lowerCaseKeysetId
+ upperCaseKeysetId" class="shift dark" char="Shift" on-pointerout="{{out}}"
+ extends="kb-key">
+ <template>
+ <style>
+ :host() {
+ border-radius: 2px;
+ border-style: solid;
+ border-width: 1px 0;
+ color: #ffffff;
+ font-family: roboto-bold;
+ font-weight: 300;
+ }
+
+ :host(.active) {
+ -webkit-box-shadow: inset 0 1px #969696, inset 0 -1px #6f6f6f;
+ background-image: -webkit-linear-gradient(#8b8b8b, #7d7d7d);
+ background-size: cover;
+ border-bottom-color: #5b5b5b;
+ border-top-color: #a4a4a4;
+ }
+
+ :host() .key {
+ background-image: none;
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ bottom: 0;
+ font-size: 70%;
+ height: 70%;
+ left: 0;
+ margin: auto;
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: auto;
+ }
+
+ :host() .shift-light-wrapper {
+ bottom: 3px;
+ height: 10%;
+ margin: 0;
+ padding: 0;
+ position: absolute;
+ width: 100%;
+ }
+
+ :host() .shift-light {
+ -webkit-box-shadow: inset 0 1px #101010, inset 0 -1px #444444;
+ background-image: -webkit-linear-gradient(#101010, #000000);
+ border: solid;
+ border-bottom-color: #1d1d1d;
+ border-top-color: #2d2d2d;
+ border-width: 1px 0;
+ height: 0.3em;
+ margin: 0 auto;
+ position: relative;
+ width: 1.8em;
+ }
+ </style>
+ <div id="key" class="key"> </div>
+ <div class="shift-light-wrapper">
+ <div class="shift-light"> </div>
+ </div>
+ </template>
</polymer-element>
diff --git a/ui/keyboard/resources/elements/kb-shift-key.js b/ui/keyboard/resources/elements/kb-shift-key.js
new file mode 100644
index 0000000000..4ebb633304
--- /dev/null
+++ b/ui/keyboard/resources/elements/kb-shift-key.js
@@ -0,0 +1,246 @@
+// Copyright 2014 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.
+
+(function () {
+
+ /**
+ * The possible states of the shift key.
+ * Unlocked is the default state. Locked for capslocked, pressed is a
+ * key-down and tapped for a key-down followed by an immediate key-up.
+ * @const
+ * @type {Enum}
+ */
+ var KEY_STATES = {
+ PRESSED: "pressed", // Key-down on shift key.
+ LOCKED: "locked", // Key is capslocked.
+ UNLOCKED: "unlocked", // Default state.
+ TAPPED: "tapped", // Key-down followed by key-up.
+ CHORDING: "chording" // Key-down followed by other keys.
+ };
+
+ /**
+ * The pointerdown event on shiftkey that may eventually trigger chording
+ * state. pointerId and eventTarget are the two fields that is used now.
+ * @type {PointerEvent}
+ */
+ var enterChordingEvent = undefined;
+
+ /**
+ * Uses a closure to define one long press timer among all shift keys
+ * regardless of the layout they are in.
+ * @type {function}
+ */
+ var shiftLongPressTimer = undefined;
+
+ /**
+ * The current state of the shift key.
+ * @type {Enum}
+ */
+ var state = KEY_STATES.UNLOCKED;
+
+ Polymer('kb-shift-key', {
+ /**
+ * Defines how capslock effects keyset transition. We always transition
+ * from the lowerCaseKeysetId to the upperCaseKeysetId if capslock is
+ * on.
+ * @type {string}
+ */
+ lowerCaseKeysetId: 'lower',
+ upperCaseKeysetId: 'upper',
+
+ up: function(event) {
+ if (state == KEY_STATES.CHORDING &&
+ event.pointerId != enterChordingEvent.pointerId) {
+ // Disables all other pointer events on shift keys when chording.
+ return;
+ }
+ switch (state) {
+ case KEY_STATES.PRESSED:
+ state = KEY_STATES.TAPPED;
+ break;
+ case KEY_STATES.CHORDING:
+ // Leaves chording only if the pointer that triggered it is
+ // released.
+ state = KEY_STATES.UNLOCKED;
+ break;
+ default:
+ break;
+ }
+ // When releasing the shift key, it is not the same shift key that was
+ // pressed. Updates the pointerId of the releasing shift key to make
+ // sure key-up event fires correctly in kb-key-base.
+ this.pointerId = enterChordingEvent.pointerId;
+ this.super([event]);
+ },
+
+ out: function(event) {
+ // Sliding off the shift key while chording is treated as a key-up.
+ // Note that we switch to a new keyset on shift keydown, and a finger
+ // movement on the new shift key will trigger this function being
+ // called on the old shift key. We should not end chording in that
+ // case.
+ if (state == KEY_STATES.CHORDING &&
+ event.pointerId == enterChordingEvent.pointerId &&
+ event.target != enterChordingEvent.target) {
+ state = KEY_STATES.UNLOCKED;
+ var detail = this.populateDetails('out');
+ this.fire("key-out", detail);
+ }
+ },
+
+ down: function(event) {
+ // First transition state so that populateDetails generates
+ // correct data.
+ switch (state) {
+ case KEY_STATES.UNLOCKED:
+ state = KEY_STATES.PRESSED;
+ break;
+ case KEY_STATES.TAPPED:
+ case KEY_STATES.LOCKED:
+ state = KEY_STATES.UNLOCKED;
+ break;
+ case KEY_STATES.PRESSED:
+ case KEY_STATES.CHORDING:
+ // We pressed another shift key at the same time,
+ // so ignore second press.
+ return;
+ default:
+ console.error("Undefined shift key state: " + state);
+ break;
+ }
+ enterChordingEvent = event;
+ // Trigger parent behaviour.
+ this.super([event]);
+ this.fire('enable-sel');
+ // Populate double click transition details.
+ var detail = {};
+ detail.char = this.char || this.textContent;
+ detail.toKeyset = this.upperCaseKeysetId;
+ detail.nextKeyset = undefined;
+ detail.callback = this.onDoubleClick;
+ this.fire('enable-dbl', detail);
+ },
+
+ generateLongPressTimer: function() {
+ return this.async(function() {
+ var detail = this.populateDetails();
+ if (state == KEY_STATES.LOCKED) {
+ // We don't care about the longpress if we are already
+ // capitalized.
+ return;
+ } else {
+ state = KEY_STATES.LOCKED;
+ detail.toKeyset = this.upperCaseKeysetId;
+ detail.nextKeyset = undefined;
+ }
+ this.fire('key-longpress', detail);
+ }, null, LONGPRESS_DELAY_MSEC);
+ },
+
+ // @return Whether the shift modifier is currently active.
+ isActive: function() {
+ return state != KEY_STATES.UNLOCKED;
+ },
+
+ /**
+ * Callback function for when a double click is triggered.
+ */
+ onDoubleClick: function() {
+ state = KEY_STATES.LOCKED;
+ },
+
+ /**
+ * Notifies shift key that a non-control key was pressed down.
+ * A control key is defined as one of shift, control or alt.
+ */
+ onNonControlKeyDown: function() {
+ switch (state) {
+ case (KEY_STATES.PRESSED):
+ state = KEY_STATES.CHORDING;
+ // Disable longpress timer.
+ clearTimeout(shiftLongPressTimer);
+ break;
+ default:
+ break;
+ }
+ },
+
+ /**
+ * Notifies key that a non-control keyed was typed.
+ * A control key is defined as one of shift, control or alt.
+ */
+ onNonControlKeyTyped: function() {
+ if (state == KEY_STATES.TAPPED)
+ state = KEY_STATES.UNLOCKED;
+ },
+
+ /**
+ * Callback function for when a space is pressed after punctuation.
+ * @return {Object} The keyset transitions the keyboard should make.
+ */
+ onSpaceAfterPunctuation: function() {
+ var detail = {};
+ detail.toKeyset = this.upperCaseKeysetId;
+ detail.nextKeyset = this.lowerCaseKeysetId;
+ state = KEY_STATES.TAPPED;
+ return detail;
+ },
+
+ populateDetails: function(caller) {
+ var detail = this.super([caller]);
+ switch(state) {
+ case(KEY_STATES.LOCKED):
+ detail.toKeyset = this.upperCaseKeysetId;
+ break;
+ case(KEY_STATES.UNLOCKED):
+ detail.toKeyset = this.lowerCaseKeysetId;
+ break;
+ case(KEY_STATES.PRESSED):
+ detail.toKeyset = this.upperCaseKeysetId;
+ break;
+ case(KEY_STATES.TAPPED):
+ detail.toKeyset = this.upperCaseKeysetId;
+ detail.nextKeyset = this.lowerCaseKeysetId;
+ break;
+ case(KEY_STATES.CHORDING):
+ detail.toKeyset = this.lowerCaseKeysetId;
+ break;
+ default:
+ break;
+ }
+ return detail;
+ },
+
+ /**
+ * Resets the shift key state.
+ */
+ reset: function() {
+ state = KEY_STATES.UNLOCKED;
+ },
+
+ /**
+ * Overrides longPressTimer for the shift key.
+ */
+ get longPressTimer() {
+ return shiftLongPressTimer;
+ },
+
+ set longPressTimer(timer) {
+ shiftLongPressTimer = timer;
+ },
+
+ get state() {
+ return state;
+ },
+
+ get textKeyset() {
+ switch (state) {
+ case KEY_STATES.UNLOCKED:
+ return this.lowerCaseKeysetId;
+ default:
+ return this.upperCaseKeysetId;
+ }
+ },
+ });
+})();
diff --git a/ui/keyboard/resources/index.html b/ui/keyboard/resources/index.html
index e46e731930..505bc110d8 100644
--- a/ui/keyboard/resources/index.html
+++ b/ui/keyboard/resources/index.html
@@ -9,32 +9,22 @@
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="main.css">
- <script src="constants.js"></script>
<script src="polymer_loader.js"></script>
- <script src="api_adapter.js"></script>
- <script src="touch_fuzzing.js"></script>
- <script src="voice_input.js"></script>
- <script src="main.js"></script>
-
- <!-- TODO(kevers): Dynamically load alternative keys based on locale. -->
- <script src="layouts/latin-accents.js"></script>
- <script src="layouts/symbol-altkeys.js"></script>
-
- <link rel="import" href="elements/kb-altkey-container.html">
- <link rel="import" href="elements/kb-altkey.html">
- <link rel="import" href="elements/kb-altkey-data.html">
- <link rel="import" href="elements/kb-altkey-set.html">
- <link rel="import" href="elements/kb-key-codes.html">
- <link rel="import" href="elements/kb-key-base.html">
- <link rel="import" href="elements/kb-key.html">
- <link rel="import" href="elements/kb-keyboard.html">
- <link rel="import" href="elements/kb-keyset.html">
- <link rel="import" href="elements/kb-modifier-key.html">
- <link rel="import" href="elements/kb-row.html">
- <link rel="import" href="elements/kb-shift-key.html">
- <link rel="import" href="elements/kb-key-sequence.html">
- <link rel="import" href="elements/kb-key-import.html">
- <link rel="import" href="elements/kb-options-menu.html">
+ <script src="keyboard.js"></script>
+ <include src="elements/kb-altkey-container.html">
+ <include src="elements/kb-altkey.html">
+ <include src="elements/kb-altkey-data.html">
+ <include src="elements/kb-altkey-set.html">
+ <include src="elements/kb-key-codes.html">
+ <include src="elements/kb-key-base.html">
+ <include src="elements/kb-key.html">
+ <include src="elements/kb-keyboard.html">
+ <include src="elements/kb-keyset.html">
+ <include src="elements/kb-modifier-key.html">
+ <include src="elements/kb-row.html">
+ <include src="elements/kb-shift-key.html">
+ <include src="elements/kb-key-sequence.html">
+ <include src="elements/kb-key-import.html">
<!-- New layouts are dynamically loaded on demand. The link elements are
-- inserted here.
-->
diff --git a/ui/keyboard/resources/keyboard.js b/ui/keyboard/resources/keyboard.js
new file mode 100644
index 0000000000..4fe9fa59c8
--- /dev/null
+++ b/ui/keyboard/resources/keyboard.js
@@ -0,0 +1,26 @@
+// Copyright 2014 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 src="constants.js"></include>
+<include src="api_adapter.js"></include>
+<include src="touch_fuzzing.js"></include>
+<include src="voice_input.js"></include>
+<include src="main.js"></include>
+//TODO(kevers): Dynamically load alternative keys based on locale.
+<include src="layouts/latin-accents.js"></include>
+<include src="layouts/symbol-altkeys.js"></include>
+<include src="elements/kb-altkey-container.js"></include>
+<include src="elements/kb-altkey-set.js"></include>
+<include src="elements/kb-key-codes.js"></include>
+<include src="elements/kb-key-sequence.js"></include>
+<include src="elements/kb-altkey-data.js"></include>
+<include src="elements/kb-key-base.js"></include>
+<include src="elements/kb-key.js"></include>
+<include src="elements/kb-keyset.js"></include>
+<include src="elements/kb-row.js"></include>
+<include src="elements/kb-altkey.js"></include>
+<include src="elements/kb-keyboard.js"></include>
+<include src="elements/kb-key-import.js"></include>
+<include src="elements/kb-modifier-key.js"></include>
+<include src="elements/kb-shift-key.js"></include>
+
diff --git a/ui/keyboard/resources/layouts/qwerty.html b/ui/keyboard/resources/layouts/qwerty.html
index 678edf3a76..6c7e61e245 100644
--- a/ui/keyboard/resources/layouts/qwerty.html
+++ b/ui/keyboard/resources/layouts/qwerty.html
@@ -5,7 +5,7 @@
-->
<template>
- <kb-keyset id="qwerty-upper" align="stretch">
+ <kb-keyset id="qwerty-upper" pitch="10 20">
<kb-row>
<kb-key-sequence keys="QWERTYUIOP" hintTexts="1234567890">
</kb-key-sequence>
@@ -38,7 +38,7 @@
</kb-altkey-container>
</kb-keyset>
- <kb-keyset id="qwerty-lower" isDefault=true align="stretch">
+ <kb-keyset id="qwerty-lower" isDefault=true pitch="10 20">
<kb-row>
<kb-key-sequence keys="qwertyuiop" hintTexts="1234567890">
</kb-key-sequence>
@@ -71,7 +71,7 @@
</kb-altkey-container>
</kb-keyset>
- <kb-keyset id="qwerty-symbol" align="stretch">
+ <kb-keyset id="qwerty-symbol" pitch="10 20">
<kb-row>
<kb-key-sequence keys="1234567890"></kb-key-sequence>
<kb-key class="dark" char="&#x0008;" align="right" image="backspace"
@@ -104,7 +104,7 @@
</kb-altkey-container>
</kb-keyset>
- <kb-keyset id="qwerty-more" align="stretch">
+ <kb-keyset id="qwerty-more" pitch="10 20">
<kb-row>
<kb-key-sequence
keys="~`|&#x2022;&radic;&Pi;&divide;&times;&para;&Delta;">
diff --git a/ui/keyboard/resources/layouts/system-qwerty.html b/ui/keyboard/resources/layouts/system-qwerty.html
index 9afdd54c3c..9b2458b08b 100644
--- a/ui/keyboard/resources/layouts/system-qwerty.html
+++ b/ui/keyboard/resources/layouts/system-qwerty.html
@@ -4,8 +4,6 @@
-- found in the LICENSE file.
-->
-<link id="function-key-row" rel="import" href="function-key-row.html">
-
<template>
<kb-keyset id="system-qwerty-upper" align="center">
<kb-row>
@@ -53,7 +51,7 @@
weight="75"> </kb-key>
<kb-key class="cursor dark" repeat char="Arrow-Right" image="right"
weight="75"></kb-key>
- <kb-hide-keyboard-key image="hide-keyboard" showMenu=false stretch>
+ <kb-hide-keyboard-key image="hide-keyboard" stretch>
</kb-hide-keyboard-key>
</kb-row>
<kb-altkey-container hidden>
@@ -103,7 +101,7 @@
weight="75"> </kb-key>
<kb-key class="cursor dark" repeat char="Arrow-Right" image="right"
weight="75"></kb-key>
- <kb-hide-keyboard-key image="hide-keyboard" showMenu=false stretch>
+ <kb-hide-keyboard-key image="hide-keyboard" stretch>
</kb-hide-keyboard-key>
</kb-row>
<kb-altkey-container hidden>
diff --git a/ui/keyboard/resources/layouts/webui_qwerty.html b/ui/keyboard/resources/layouts/webui_qwerty.html
deleted file mode 100644
index 2763307d70..0000000000
--- a/ui/keyboard/resources/layouts/webui_qwerty.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<!--
- -- Copyright 2013 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.
- -->
-
-<template>
- <kb-keyset id="qwerty-upper">
- <kb-row class="top">
- <kb-key>Q</kb-key><kb-key>W</kb-key><kb-key>E</kb-key><kb-key>R</kb-key>
- <kb-key>T</kb-key><kb-key>Y</kb-key><kb-key>U</kb-key>
- <kb-key>I</kb-key><kb-key>O</kb-key><kb-key>P</kb-key>
- </kb-row>
- <kb-row>
- <div class="half-key-spacer"></div>
- <kb-key>A</kb-key><kb-key>S</kb-key><kb-key>D</kb-key><kb-key>F</kb-key>
- <kb-key>G</kb-key><kb-key>H</kb-key><kb-key>J</kb-key><kb-key>K</kb-key>
- <kb-key>L</kb-key>
- <div class="half-key-spacer"></div>
- </kb-row>
- <kb-row>
- <kb-shift-key class="padded-left-special" weight="1.4">shift</kb-shift-key>
- <kb-key>Z</kb-key><kb-key>X</kb-key><kb-key>C</kb-key><kb-key>V</kb-key>
- <kb-key>B</kb-key><kb-key>N</kb-key><kb-key>M</kb-key>
- <kb-key class="backspace padded-right-special dark" char="&#x0008;" repeat>delete</kb-key>
- </kb-row>
- <kb-row>
- <kb-key class="symbol dark" toKeyset="down:symbol" char="Invalid">?123</kb-key>
- <kb-key class="microphone dark" char="Microphone"></kb-key>
- <kb-key class="dark">,</kb-key>
- <kb-key class="space dark" char=" "></kb-key>
- <kb-key class="dark">.</kb-key>
- <kb-key class="return dark" char="&#000A;">enter</kb-key>
- </kb-row>
- <kb-altkey-container hidden>
- </kb-altkey-container>
- </kb-keyset>
-
- <kb-keyset id="qwerty-lower" isDefault=true>
- <kb-row class="top">
- <kb-key>q</kb-key><kb-key>w</kb-key><kb-key>e</kb-key><kb-key>r</kb-key>
- <kb-key>t</kb-key><kb-key>y</kb-key><kb-key>u</kb-key>
- <kb-key>i</kb-key><kb-key>o</kb-key><kb-key>p</kb-key>
- </kb-row>
- <kb-row>
- <div class="half-key-spacer"></div>
- <kb-key>a</kb-key><kb-key>s</kb-key><kb-key>d</kb-key><kb-key>f</kb-key>
- <kb-key>g</kb-key><kb-key>h</kb-key><kb-key>j</kb-key><kb-key>k</kb-key>
- <kb-key>l</kb-key>
- <div class="half-key-spacer"></div>
- </kb-row>
- <kb-row>
- <kb-shift-key class="padded-left-special" weight="1.4">shift</kb-shift-key>
- <kb-key>z</kb-key><kb-key>x</kb-key><kb-key>c</kb-key><kb-key>v</kb-key>
- <kb-key>b</kb-key><kb-key>n</kb-key><kb-key>m</kb-key>
- <kb-key class="backspace padded-right-special dark" char="&#x0008;" repeat>delete</kb-key>
- </kb-row>
- <kb-row>
- <kb-key class="symbol dark" toKeyset="down:symbol" char="Invalid">?123</kb-key>
- <kb-key class="microphone dark" char="Microphone"></kb-key>
- <kb-key class="dark">,</kb-key>
- <kb-key class="space dark" char=" "></kb-key>
- <kb-key class="dark">.</kb-key>
- <kb-key class='return dark' char="&#x000A;">enter</kb-key>
- </kb-row>
- <kb-altkey-container hidden>
- </kb-altkey-container>
- </kb-keyset>
-
- <kb-keyset id="qwerty-symbol">
- <kb-row class="top">
- <kb-key>1</kb-key><kb-key>2</kb-key><kb-key>3</kb-key><kb-key>4</kb-key>
- <kb-key>5</kb-key><kb-key>6</kb-key><kb-key>7</kb-key><kb-key>8</kb-key>
- <kb-key>9</kb-key><kb-key>0</kb-key>
- </kb-row>
- <kb-row>
- <kb-key>@</kb-key><kb-key>$</kb-key><kb-key>&</kb-key><kb-key>:</kb-key><kb-key>;</kb-key>
- <kb-key>/</kb-key><kb-key>(</kb-key><kb-key>)</kb-key>
- </kb-row>
- <kb-row>
- <kb-key class="left-more padded-left-special dark" toKeyset="down:more" char="Invalid">more</kb-key>
- <kb-key>"</kb-key><kb-key>'</kb-key><kb-key>-</kb-key>
- <kb-key>+</kb-key><kb-key>!</kb-key><kb-key>?</kb-key>
- <kb-key class="backspace padded-right-special dark" char="&#x0008;" repeat>delete</kb-key>
- </kb-row>
- <kb-row>
- <kb-abc-key>abc</kb-abc-key>
- <kb-key class="microphone dark" char="Microphone"></kb-key>
- <kb-key class="dark">,</kb-key>
- <kb-key class="space dark" char=" "></kb-key>
- <kb-key class="dark">.</kb-key>
- <kb-key class='return dark' char="&#x000A;">enter</kb-key>
- </kb-row>
- </kb-keyset>
-
- <kb-keyset id="qwerty-more">
- <kb-row class="top">
- <kb-key>&#x20AC;</kb-key><kb-key>&#x00A3;</kb-key><kb-key>&#x00A2;</kb-key>
- <kb-key>&#x2022;</kb-key><kb-key>&#x00B6;</kb-key><kb-key>|</kb-key>
- <kb-key>{</kb-key><kb-key>}</kb-key>
- </kb-row>
- <kb-row>
- <kb-key class="tab padded-left-special dark" char="&#x0009;">tab</kb-key>
- <kb-key>#</kb-key><kb-key>%</kb-key><kb-key>^</kb-key><kb-key>*</kb-key>
- <kb-key>\</kb-key><kb-key>&#x003C;</kb-key><kb-key>&#x003E;</kb-key>
- </kb-row>
- <kb-row>
- <kb-key class="left-more padded-left-special dark" toKeyset="down:symbol" char="Invalid">?123</kb-key>
- <kb-key>`</kb-key><kb-key>~</kb-key><kb-key>_</kb-key><kb-key>=</kb-key>
- <kb-key>[</kb-key><kb-key>]</kb-key>
- <kb-key class="backspace padded-right-special dark" char="&#x0008;" repeat>delete</kb-key>
- </kb-row>
- <kb-row>
- <kb-abc-key>abc</kb-abc-key>
- <kb-key class="microphone dark" char="Microphone"></kb-key>
- <kb-key class="dark">,</kb-key>
- <kb-key class="space dark" char=" "></kb-key>
- <kb-key class="dark">.</kb-key>
- <kb-key class='return dark' char="&#x000A;">enter</kb-key>
- </kb-row>
- </kb-keyset>
-</template>
diff --git a/ui/keyboard/resources/main.css b/ui/keyboard/resources/main.css
index b96ac07cb1..2c5b621eb3 100644
--- a/ui/keyboard/resources/main.css
+++ b/ui/keyboard/resources/main.css
@@ -18,18 +18,70 @@ kb-keyboard.alt-active kb-modifier-key[char=Alt] {
color: lightblue;
}
-/** TODO(rsadam@): Use different assets for caps-lock and highlight **/
-.caps-locked kb-shift-key.dark .key,
+kb-keyboard[keyset="upper"] kb-shift-key.dark /shadow-deep/ .key {
+ background-image: url('images/shift-filled.svg');
+}
+
+kb-keyboard[keyset="lower"] kb-shift-key /shadow-deep/ .key {
+ background-image: url('images/shift.svg');
+}
+
/**
* Controls whether the shift key should be highlighted or not.
-* Only highlights if we are in the upper keyset, but not capslocked.
*/
-kb-keyboard:not(.caps-locked)[keyset=upper] kb-shift-key .key{
- background-image: url('images/shift-filled.svg');
+kb-keyboard.caps-locked kb-shift-key.dark /shadow-deep/
+ .shift-light {
+ -webkit-box-shadow: 0 1px 1px rgba(213, 213, 213, 0.5),
+ 0 -1px 1px rgba(213, 213, 213, 0.5);
+ background-image: -webkit-linear-gradient(#d5d5d5, #d5d5d5);
+ border: none;
+ height: 0.2em;
+}
+kb-keyboard.caps-locked kb-shift-key.dark /shadow-deep/
+ .shift-light-wrapper {
+ bottom: 2px;
}
-kb-keyboard:not(.caps-locked)[keyset=lower] kb-shift-key .key{
- background-image: url('images/shift.svg');
+kb-keyboard.ctrl-active kb-modifier-key[char=Ctrl],
+kb-keyboard.ctrl-active kb-modifier-key[char=Ctrl] {
+ color: lightblue;
+}
+
+/** TODO(rsadam@): Move these rules to kb-row once we uprev to latest Polymer.*/
+kb-row:nth-child(2) kb-key:not(.dark):not(.active){
+ -webkit-box-shadow: inset 0px 1px #666666, inset 0px -1px #4c4c4c;
+ background-image: -webkit-linear-gradient(#5a5a5a, #515151);
+ background-size: cover;
+ border-bottom-color: #414141;
+ border-top-color: #7f7f7f;
+}
+
+kb-row:nth-child(3) kb-key:not(.dark):not(.active){
+ -webkit-box-shadow: inset 0px 1px #5d5d5d, inset 0px -1px #444444;
+ background-image: -webkit-linear-gradient(#505050, #494949);
+ background-size: cover;
+ border-bottom-color: #3a3a3a;
+ border-top-color: #787878;
+}
+
+kb-row:nth-child(n+3) kb-key:not(.dark):not(.active){
+ -webkit-box-shadow: inset 0px 1px #565656, inset 0px -1px #434343;
+ background-image: -webkit-linear-gradient(#484848, #474747);
+ background-size: cover;
+ border-bottom-color: #393939;
+ border-top-color: #717171;
+}
+
+kb-row:nth-child(2) kb-key:not([invert]) /shadow-deep/ .hint {
+ color: #2C2C2C;
+}
+
+kb-row:nth-child(3) kb-key:not([invert]) /shadow-deep/ .hint {
+ color: #272727;
+}
+
+kb-row:nth-child(n+3) kb-key:not([invert]) /shadow-deep/ .hint {
+ color: #232323;
}
.dark {
@@ -50,16 +102,3 @@ kb-keyboard:not(.caps-locked)[keyset=lower] kb-shift-key .key{
border-bottom-color: #5b5b5b;
border-top-color: #a4a4a4;
}
-
-/**
- * The microphone key is handled separately from other images since the image
- * displayed changes depending on whether it's pressed or not.
- */
-.microphone .key {
- background-image: url('images/microphone.svg');
- background-position: 10%;
-}
-
-.audio .microphone .key {
- background-image: url('images/microphone-green.svg');
-}
diff --git a/ui/keyboard/resources/main.js b/ui/keyboard/resources/main.js
index bf255d1793..dbfa81f622 100644
--- a/ui/keyboard/resources/main.js
+++ b/ui/keyboard/resources/main.js
@@ -1,4 +1,4 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
+// Copyright 2014 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.
(function(exports) {
diff --git a/ui/keyboard/resources/touch_fuzzing.js b/ui/keyboard/resources/touch_fuzzing.js
index a2789e90b5..f610dbe479 100644
--- a/ui/keyboard/resources/touch_fuzzing.js
+++ b/ui/keyboard/resources/touch_fuzzing.js
@@ -55,7 +55,8 @@
// row-centric.
var splits = findSplits(this.keys, Orientation.HORIZONTAL);
this.tree = createBinaryTree(0, splits.length - 1, splits);
- this.tree.populate(this.keys);
+ if (this.tree)
+ this.tree.populate(this.keys);
},
/**
diff --git a/ui/keyboard/resources/webui/api_adapter.js b/ui/keyboard/resources/webui/api_adapter.js
deleted file mode 100644
index 206f60dd8a..0000000000
--- a/ui/keyboard/resources/webui/api_adapter.js
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright (c) 2013 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.
-
-function insertText(text) {
- chrome.send('insertText', [ text ]);
-}
-
-function sendKeyEvent(event) {
- chrome.send('sendKeyEvent', [ event ]);
-}
-
-function hideKeyboard() {
- chrome.send('hideKeyboard');
-}
-
-function keyboardLoaded() {
- chrome.send('keyboardLoaded');
-}
-
-(function(exports) {
- /**
- * An array to save callbacks of each request.
- * @type {Array.<function(Object)>}
- */
- var requestIdCallbackMap = [];
-
- /**
- * An incremental integer that represents a unique requestId.
- * @type {number}
- */
- var requestId = 0;
-
- /**
- * Called when a text input box gets focus.
- * @param {object} inputContext Describes an input context. It only contains
- * the type of text input box at present and only "password", "number" and
- * "text" are supported.
- */
- function OnTextInputBoxFocused(inputContext) {
- // Do not want to use the system keyboard for passwords in webui.
- if (inputContext.type == 'password')
- inputContext.type = 'text';
- keyboard.inputTypeValue = inputContext.type;
- }
-
- /**
- * Gets the context of the focused input field. The context is returned as a
- * paramter in the |callback|.
- * @param {function(Object)} callback The callback function after the webui
- * function finished.
- * @return {number} The ID of the new request.
- */
- function GetInputContext(callback) {
- var id = requestId;
- requestIdCallbackMap[id] = callback;
- chrome.send('getInputContext', [ id ]);
- requestId++;
- return id;
- }
-
- /**
- * Cancel the callback specified by requestId.
- * @param {number} requestId The requestId of the callback that about to
- * cancel.
- */
- function CancelRequest(requestId) {
- requestIdCallbackMap[requestId] = undefined;
- }
-
- /**
- * Webui function callback. Any call to chrome.send('getInputContext', [id])
- * should trigger this function being called with the parameter
- * inputContext.requestId == id.
- * @param {Object} inputContext The context of focused input field. Note we
- * only have type(input box type) and requestId fields now.
- */
- function GetInputContextCallback(inputContext) {
- var requestId = inputContext.requestId;
- if (!requestIdCallbackMap[requestId])
- return;
- requestIdCallbackMap[requestId](inputContext);
- }
-
- exports.OnTextInputBoxFocused = OnTextInputBoxFocused;
- exports.getInputContext = GetInputContext;
- exports.cancelRequest = CancelRequest;
- exports.GetInputContextCallback = GetInputContextCallback;
-})(this);
diff --git a/ui/keyboard/resources/webui/constants.js b/ui/keyboard/resources/webui/constants.js
deleted file mode 100644
index 94ccfb2f96..0000000000
--- a/ui/keyboard/resources/webui/constants.js
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2011 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.
-
-
-/**
- * Aspect ratio of keyboard.
- * @type {number}
- */
-var ASPECT_RATIO = 2.0;
-
-/**
- * Ratio of key height and font size.
- * @type {number}
- */
-var FONT_SIZE_RATIO = 2;
-
-/**
- * The number of rows in each keyset.
- * @type {number}
- */
-// TODO(bshe): The number of rows should equal to the number of kb-row elements
-// in kb-keyset. Remove this variable once figure out how to calculate the
-// number from keysets.
-
-var ROW_LENGTH = 4;
diff --git a/ui/keyboard/resources/webui/main.css b/ui/keyboard/resources/webui/main.css
deleted file mode 100644
index e14611d3d3..0000000000
--- a/ui/keyboard/resources/webui/main.css
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- Copyright (c) 2013 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.
-*/
-
-body {
- -webkit-box-pack: center;
- -webkit-user-select: none;
- background-color: #0b0b0b;
- display: -webkit-box;
- margin: 0;
- overflow: hidden;
- padding: 0;
-}
-
-kb-keyboard {
- -webkit-box-orient: vertical;
- display: -webkit-box;
-}
-
-kb-abc-key,
-kb-shift-key,
-kb-key {
- background-color: #3b3b3e;
- background-position: center center;
- background-repeat: no-repeat;
- background-size: contain;
- border-top: 2px solid #4b4b4e;
- border-radius: 1px;
- color: #ffffff;
- display: -webkit-box;
- font-family: 'Open Sans', sans-serif;
- font-weight: 600;
- margin-left: 0.2em;
- position: relative;
-}
-
-kb-abc-key::x-key,
-kb-shift-key::x-key,
-kb-key::x-key {
- bottom: 0;
- height: 1.2em;
- left: 0;
- margin: auto;
- padding-left: 0.5em;
- padding-right: 0.5em;
- position: absolute;
- right: 0;
- top: 0;
-}
-
-kb-key::x-hinttext {
- color: #7c7c7c;
- font-size: 70%;
- position: absolute;
- right: 7%;
- top: 5%;
-}
-
-kb-key::x-key[inverted] {
- color: #7c7c7c;
-}
-
-kb-key::x-hinttext[inverted] {
- color: #ffffff;
-}
-
-kb-abc-key.dark,
-kb-shift-key.dark,
-kb-key.dark {
- background-color: #2a2a2c;
- border-top: 2px solid #3a3a3c;
-}
-
-kb-altkey::x-key {
- bottom: 0;
- height: 1.2em;
- left: 0;
- margin: auto;
- position: absolute;
- right: 0;
- top: 0;
- text-align: center;
-}
-
-/* Left and right-side special keys with a character letter next to them need
- * additional padding.
- * */
-kb-abc-key.padded-left-special,
-kb-shift-key.padded-left-special,
-kb-key.padded-left-special {
- margin-right: 2px;
-}
-
-kb-abc-key.padded-right-special,
-kb-shift-key.padded-right-special,
-kb-key.padded-right-special {
- margin-left: 5px;
-}
-
-kb-row.top {
- margin-top: 5px !important;
-}
-
-.active {
- background-color: #848490 !important;
- border-top: 2px solid #A9A9AF !important;
- /* Do not use box shadow until performance improves
- * http://code.google.com/p/chromium/issues/detail?id=99045
- * box-shadow: 0px 0px 15px #fff;
- * */
-}
-
-.at,
-.com,
-.comma,
-.hide,
-.microphone,
-.period,
-.tab {
- -webkit-box-flex: 1.3 !important;
-}
-
-.symbol,
-.return {
- -webkit-box-flex: 1.5 !important;
-}
-
-.backspace {
- -webkit-box-flex: 1.7 !important;
-}
-
-.left-more {
- -webkit-box-flex: 1.4 !important;
-}
-
-.right-more {
- -webkit-box-flex: 1.6 !important;
-}
-
-.space {
- -webkit-box-flex: 4.8 !important;
-}
-
-.bar {
- -webkit-box-flex: 0.6 !important;
-}
-
-.backspace,
-.tab,
-.return,
-.shift,
-.left-more,
-.right-more,
-.symbol {
- font-size: 55%;
- font-weight: 200;
-}
-
-.microphone {
- background-image: url('images/microphone.svg');
-}
-
-.audio .microphone {
- background-image: url('images/microphone-green.svg');
-}
-
-.half-key-spacer {
- -webkit-box-flex: 0.5;
- margin-left: 4px;
-}
diff --git a/ui/keyboard/resources/webui_index.html b/ui/keyboard/resources/webui_index.html
deleted file mode 100644
index bdc81167fc..0000000000
--- a/ui/keyboard/resources/webui_index.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE HTML>
-<!--
- -- Copyright 2013 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.
- -->
-
-<!--
- -- To avoid unintentionally break webui keyboard when changing extension
- -- keyboard, creates this file and uses it as index.html for webui keyboard.
- -- TODO(bshe): remove this file when dynamic layout loading is fixed
- -- (http://www.crbug.com/260278).
- -->
-
-<html>
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
- <link rel="stylesheet" href="main.css">
- <script src="constants.js"></script>
- <script src="polymer_loader.js"></script>
- <script src="api_adapter.js"></script>
- <script src="voice_input.js"></script>
- <link rel="import" href="elements/kb-altkey.html">
- <link rel="import" href="elements/kb-altkey-container.html">
- <link rel="import" href="elements/kb-altkey-data.html">
- <link rel="import" href="elements/kb-altkey-set.html">
- <link rel="import" href="elements/kb-key-codes.html">
- <link rel="import" href="elements/kb-key-base.html">
- <link rel="import" href="elements/kb-key.html">
- <link rel="import" href="elements/kb-keyboard.html">
- <link rel="import" href="elements/kb-keyset.html">
- <link rel="import" href="elements/kb-row.html">
- <link rel="import" href="elements/kb-shift-key.html">
- <link id="numeric" rel="import" href="layouts/numeric.html">
- <link id="qwerty" rel="import" href="layouts/qwerty.html">
- <!--TODO(stevet): Import 'Open Sans' font. -->
- <script src="main.js"></script>
- <script src="layouts/latin-accents.js"></script>
- </head>
- <body>
- <kb-keyboard id="keyboard" touch-action="none" layout="qwerty">
- </kb-keyboard>
- </body>
-</html>
diff --git a/ui/message_center/message_center.gyp b/ui/message_center/message_center.gyp
index e3ea206836..8fc29a6209 100644
--- a/ui/message_center/message_center.gyp
+++ b/ui/message_center/message_center.gyp
@@ -73,8 +73,6 @@
'notifier_settings.h',
'views/bounded_label.cc',
'views/bounded_label.h',
- 'views/bounded_scroll_view.cc',
- 'views/bounded_scroll_view.h',
'views/constants.h',
'views/message_bubble_base.cc',
'views/message_bubble_base.h',
@@ -201,11 +199,6 @@
'test/run_all_unittests.cc',
],
'conditions': [
- ['desktop_linux == 1 or chromeos == 1 or OS=="ios"', {
- 'dependencies': [
- '../base/strings/ui_strings.gyp:ui_unittest_strings',
- ],
- }],
['OS=="mac"', {
'dependencies': [
'../gfx/gfx.gyp:gfx_test_support',
@@ -221,7 +214,6 @@
],
'sources': [
'views/bounded_label_unittest.cc',
- 'views/bounded_scroll_view_unittest.cc',
'views/message_center_view_unittest.cc',
'views/message_popup_collection_unittest.cc',
'views/notifier_settings_view_unittest.cc',
diff --git a/ui/message_center/views/bounded_scroll_view.cc b/ui/message_center/views/bounded_scroll_view.cc
deleted file mode 100644
index 7170105e99..0000000000
--- a/ui/message_center/views/bounded_scroll_view.cc
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2014 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 "ui/message_center/views/bounded_scroll_view.h"
-
-#include <algorithm>
-
-#include "ui/gfx/insets.h"
-#include "ui/gfx/size.h"
-#include "ui/message_center/message_center_style.h"
-#include "ui/views/background.h"
-#include "ui/views/controls/scrollbar/overlay_scroll_bar.h"
-
-namespace message_center {
-
-BoundedScrollView::BoundedScrollView(int min_height, int max_height)
- : min_height_(min_height), max_height_(max_height) {
- set_notify_enter_exit_on_child(true);
- set_background(
- views::Background::CreateSolidBackground(kMessageCenterBackgroundColor));
- SetVerticalScrollBar(new views::OverlayScrollBar(false));
-}
-
-gfx::Size BoundedScrollView::GetPreferredSize() {
- gfx::Size size = contents()->GetPreferredSize();
- size.SetToMax(gfx::Size(size.width(), min_height_));
- size.SetToMin(gfx::Size(size.width(), max_height_));
- gfx::Insets insets = GetInsets();
- size.Enlarge(insets.width(), insets.height());
- return size;
-}
-
-int BoundedScrollView::GetHeightForWidth(int width) {
- gfx::Insets insets = GetInsets();
- width = std::max(0, width - insets.width());
- int height = contents()->GetHeightForWidth(width) + insets.height();
- return std::min(std::max(height, min_height_), max_height_);
-}
-
-void BoundedScrollView::Layout() {
- int content_width = width();
- int content_height = contents()->GetHeightForWidth(content_width);
- if (content_height > height()) {
- content_width = std::max(content_width - GetScrollBarWidth(), 0);
- content_height = contents()->GetHeightForWidth(content_width);
- }
- if (contents()->bounds().size() != gfx::Size(content_width, content_height))
- contents()->SetBounds(0, 0, content_width, content_height);
- views::ScrollView::Layout();
-}
-
-} // namespace
diff --git a/ui/message_center/views/bounded_scroll_view.h b/ui/message_center/views/bounded_scroll_view.h
deleted file mode 100644
index d3bb82da59..0000000000
--- a/ui/message_center/views/bounded_scroll_view.h
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2014 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 UI_MESSAGE_CENTER_VIEWS_BOUNDED_SCROLL_VIEW_H_
-#define UI_MESSAGE_CENTER_VIEWS_BOUNDED_SCROLL_VIEW_H_
-
-#include "ui/gfx/size.h"
-#include "ui/message_center/message_center_export.h"
-#include "ui/views/controls/scroll_view.h"
-
-namespace message_center {
-
-// A custom scroll view whose height has a minimum and maximum value and whose
-// scroll bar disappears when not needed.
-class MESSAGE_CENTER_EXPORT BoundedScrollView : public views::ScrollView {
- public:
- BoundedScrollView(int min_height, int max_height);
-
- // Overridden from views::View:
- virtual gfx::Size GetPreferredSize() OVERRIDE;
- virtual int GetHeightForWidth(int width) OVERRIDE;
- virtual void Layout() OVERRIDE;
-
- private:
- int min_height_;
- int max_height_;
-
- DISALLOW_COPY_AND_ASSIGN(BoundedScrollView);
-};
-
-} // namespace message_center
-
-#endif // UI_MESSAGE_CENTER_VIEWS_BOUNDED_SCROLL_VIEW_H_
diff --git a/ui/message_center/views/bounded_scroll_view_unittest.cc b/ui/message_center/views/bounded_scroll_view_unittest.cc
deleted file mode 100644
index 590114df78..0000000000
--- a/ui/message_center/views/bounded_scroll_view_unittest.cc
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2014 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 "ui/message_center/views/bounded_scroll_view.h"
-
-#include "base/memory/scoped_ptr.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/gfx/size.h"
-#include "ui/views/test/test_views.h"
-
-namespace message_center {
-
-namespace test {
-
-const int kMinHeight = 50;
-const int kMaxHeight = 100;
-
-const int kWidth = 100;
-
-class BoundedScrollViewTest : public testing::Test {
- public:
- BoundedScrollViewTest() {}
- virtual ~BoundedScrollViewTest() {}
-
- virtual void SetUp() OVERRIDE {
- scroller_.reset(
- new message_center::BoundedScrollView(kMinHeight, kMaxHeight));
- }
-
- virtual void TearDown() OVERRIDE { scroller_.reset(); }
-
- protected:
- message_center::BoundedScrollView* scroller() { return scroller_.get(); }
-
- private:
- scoped_ptr<message_center::BoundedScrollView> scroller_;
-};
-
-TEST_F(BoundedScrollViewTest, NormalSizeContentTest) {
- const int kNormalContentHeight = 75;
- scroller()->SetContents(
- new views::StaticSizedView(gfx::Size(kWidth, kNormalContentHeight)));
-
- EXPECT_EQ(gfx::Size(kWidth, kNormalContentHeight),
- scroller()->GetPreferredSize());
-
- scroller()->SizeToPreferredSize();
- scroller()->Layout();
-
- EXPECT_EQ(gfx::Size(kWidth, kNormalContentHeight),
- scroller()->contents()->size());
- EXPECT_EQ(gfx::Size(kWidth, kNormalContentHeight), scroller()->size());
-}
-
-TEST_F(BoundedScrollViewTest, ShortContentTest) {
- const int kShortContentHeight = 10;
- scroller()->SetContents(
- new views::StaticSizedView(gfx::Size(kWidth, kShortContentHeight)));
-
- EXPECT_EQ(gfx::Size(kWidth, kMinHeight), scroller()->GetPreferredSize());
-
- scroller()->SizeToPreferredSize();
- scroller()->Layout();
-
- EXPECT_EQ(gfx::Size(kWidth, kShortContentHeight),
- scroller()->contents()->size());
- EXPECT_EQ(gfx::Size(kWidth, kMinHeight), scroller()->size());
-}
-
-TEST_F(BoundedScrollViewTest, TallContentTest) {
- const int kTallContentHeight = 1000;
- scroller()->SetContents(
- new views::StaticSizedView(gfx::Size(kWidth, kTallContentHeight)));
-
- EXPECT_EQ(gfx::Size(kWidth, kMaxHeight), scroller()->GetPreferredSize());
-
- scroller()->SizeToPreferredSize();
- scroller()->Layout();
-
- EXPECT_EQ(gfx::Size(kWidth, kTallContentHeight),
- scroller()->contents()->size());
- EXPECT_EQ(gfx::Size(kWidth, kMaxHeight), scroller()->size());
-}
-
-TEST_F(BoundedScrollViewTest, NeedsScrollBarTest) {
- // Create a view that will be much taller than it is high.
- scroller()->SetContents(new views::ProportionallySizedView(1000));
-
- // Without any width, it will default to 0,0 but be overridden by min height.
- scroller()->SizeToPreferredSize();
- EXPECT_EQ(gfx::Size(0, kMinHeight), scroller()->GetPreferredSize());
-
- gfx::Size new_size(kWidth, scroller()->GetHeightForWidth(kWidth));
- scroller()->SetSize(new_size);
- scroller()->Layout();
-
- int scroll_bar_width = scroller()->GetScrollBarWidth();
- int expected_width = kWidth - scroll_bar_width;
- EXPECT_EQ(scroller()->contents()->size().width(), expected_width);
- EXPECT_EQ(scroller()->contents()->size().height(), 1000 * expected_width);
- EXPECT_EQ(gfx::Size(kWidth, kMaxHeight), scroller()->size());
-}
-
-} // namespace test
-
-} // namespace message_center
diff --git a/ui/message_center/views/message_center_view.cc b/ui/message_center/views/message_center_view.cc
index 174f4e1dc5..0c31e16fc3 100644
--- a/ui/message_center/views/message_center_view.cc
+++ b/ui/message_center/views/message_center_view.cc
@@ -25,7 +25,6 @@
#include "ui/message_center/message_center_tray.h"
#include "ui/message_center/message_center_types.h"
#include "ui/message_center/message_center_util.h"
-#include "ui/message_center/views/bounded_scroll_view.h"
#include "ui/message_center/views/message_center_button_bar.h"
#include "ui/message_center/views/message_view.h"
#include "ui/message_center/views/message_view_context_menu_controller.h"
@@ -37,6 +36,8 @@
#include "ui/views/border.h"
#include "ui/views/controls/button/button.h"
#include "ui/views/controls/label.h"
+#include "ui/views/controls/scroll_view.h"
+#include "ui/views/controls/scrollbar/overlay_scroll_bar.h"
#include "ui/views/layout/box_layout.h"
#include "ui/views/layout/fill_layout.h"
#include "ui/views/widget/widget.h"
@@ -565,8 +566,11 @@ MessageCenterView::MessageCenterView(MessageCenter* message_center,
const int button_height = button_bar_->GetPreferredSize().height();
- scroller_ =
- new BoundedScrollView(kMinScrollViewHeight, max_height - button_height);
+ scroller_ = new views::ScrollView();
+ scroller_->ClipHeightTo(kMinScrollViewHeight, max_height - button_height);
+ scroller_->SetVerticalScrollBar(new views::OverlayScrollBar(false));
+ scroller_->set_background(
+ views::Background::CreateSolidBackground(kMessageCenterBackgroundColor));
scroller_->SetPaintToLayer(true);
scroller_->SetFillsBoundsOpaquely(false);
diff --git a/ui/message_center/views/message_popup_collection.cc b/ui/message_center/views/message_popup_collection.cc
index 9f02145801..252072b9e6 100644
--- a/ui/message_center/views/message_popup_collection.cc
+++ b/ui/message_center/views/message_popup_collection.cc
@@ -506,9 +506,7 @@ void MessagePopupCollection::DecrementDeferCounter() {
// deferred tasks are even able to run)
// Then, see if there is vacant space for new toasts.
void MessagePopupCollection::DoUpdateIfPossible() {
- // |work_area_| can be set from some tests and those test expectations should
- // not be reset here.
- if (!screen_ && work_area_.IsEmpty()) {
+ if (!screen_) {
gfx::Display display;
if (!parent_) {
// On Win+Aura, we don't have a parent since the popups currently show up
@@ -523,8 +521,11 @@ void MessagePopupCollection::DoUpdateIfPossible() {
screen_->AddObserver(this);
display_id_ = display.id();
- work_area_ = display.work_area();
- ComputePopupAlignment(work_area_, display.bounds());
+ // |work_area_| can be set already and it should not be overwritten here.
+ if (work_area_.IsEmpty()) {
+ work_area_ = display.work_area();
+ ComputePopupAlignment(work_area_, display.bounds());
+ }
}
if (defer_counter_ > 0)
diff --git a/ui/native_theme/native_theme.target.darwin-arm.mk b/ui/native_theme/native_theme.target.darwin-arm.mk
index 507239dba1..19aa7a2fcc 100644
--- a/ui/native_theme/native_theme.target.darwin-arm.mk
+++ b/ui/native_theme/native_theme.target.darwin-arm.mk
@@ -95,9 +95,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -107,6 +105,7 @@ MY_DEFS_Debug := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -216,9 +215,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -228,6 +225,7 @@ MY_DEFS_Release := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/native_theme/native_theme.target.darwin-mips.mk b/ui/native_theme/native_theme.target.darwin-mips.mk
index 89137c772a..07d1385b37 100644
--- a/ui/native_theme/native_theme.target.darwin-mips.mk
+++ b/ui/native_theme/native_theme.target.darwin-mips.mk
@@ -94,9 +94,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -106,6 +104,7 @@ MY_DEFS_Debug := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -214,9 +213,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -226,6 +223,7 @@ MY_DEFS_Release := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/native_theme/native_theme.target.darwin-x86.mk b/ui/native_theme/native_theme.target.darwin-x86.mk
index 836017de04..0025780db3 100644
--- a/ui/native_theme/native_theme.target.darwin-x86.mk
+++ b/ui/native_theme/native_theme.target.darwin-x86.mk
@@ -96,9 +96,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -107,6 +105,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -216,9 +215,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -227,6 +224,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/native_theme/native_theme.target.darwin-x86_64.mk b/ui/native_theme/native_theme.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..6eab773ef1
--- /dev/null
+++ b/ui/native_theme/native_theme.target.darwin-x86_64.mk
@@ -0,0 +1,340 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_native_theme_native_theme_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,skia_skia_gyp)/skia.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,ui_base_ui_base_gyp)/ui_base_ui_base_gyp.a \
+ $(call intermediates-dir-for,GYP,ui_resources_ui_resources_gyp)/ui_resources.stamp
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/native_theme/common_theme.cc \
+ ui/native_theme/fallback_theme.cc \
+ ui/native_theme/native_theme.cc \
+ ui/native_theme/native_theme_android.cc \
+ ui/native_theme/native_theme_base.cc \
+ ui/native_theme/native_theme_switches.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DNATIVE_THEME_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DNATIVE_THEME_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp \
+ ui_base_ui_base_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_native_theme_native_theme_gyp
+
+# Alias gyp target name.
+.PHONY: native_theme
+native_theme: ui_native_theme_native_theme_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/native_theme/native_theme.target.linux-arm.mk b/ui/native_theme/native_theme.target.linux-arm.mk
index 507239dba1..19aa7a2fcc 100644
--- a/ui/native_theme/native_theme.target.linux-arm.mk
+++ b/ui/native_theme/native_theme.target.linux-arm.mk
@@ -95,9 +95,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -107,6 +105,7 @@ MY_DEFS_Debug := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -216,9 +215,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -228,6 +225,7 @@ MY_DEFS_Release := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/native_theme/native_theme.target.linux-mips.mk b/ui/native_theme/native_theme.target.linux-mips.mk
index 89137c772a..07d1385b37 100644
--- a/ui/native_theme/native_theme.target.linux-mips.mk
+++ b/ui/native_theme/native_theme.target.linux-mips.mk
@@ -94,9 +94,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -106,6 +104,7 @@ MY_DEFS_Debug := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -214,9 +213,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -226,6 +223,7 @@ MY_DEFS_Release := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/native_theme/native_theme.target.linux-x86.mk b/ui/native_theme/native_theme.target.linux-x86.mk
index 836017de04..0025780db3 100644
--- a/ui/native_theme/native_theme.target.linux-x86.mk
+++ b/ui/native_theme/native_theme.target.linux-x86.mk
@@ -96,9 +96,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -107,6 +105,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -216,9 +215,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -227,6 +224,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/native_theme/native_theme.target.linux-x86_64.mk b/ui/native_theme/native_theme.target.linux-x86_64.mk
new file mode 100644
index 0000000000..6eab773ef1
--- /dev/null
+++ b/ui/native_theme/native_theme.target.linux-x86_64.mk
@@ -0,0 +1,340 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_native_theme_native_theme_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,skia_skia_gyp)/skia.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,ui_base_ui_base_gyp)/ui_base_ui_base_gyp.a \
+ $(call intermediates-dir-for,GYP,ui_resources_ui_resources_gyp)/ui_resources.stamp
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/native_theme/common_theme.cc \
+ ui/native_theme/fallback_theme.cc \
+ ui/native_theme/native_theme.cc \
+ ui/native_theme/native_theme_android.cc \
+ ui/native_theme/native_theme_base.cc \
+ ui/native_theme/native_theme_switches.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DNATIVE_THEME_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DNATIVE_THEME_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp \
+ ui_base_ui_base_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_native_theme_native_theme_gyp
+
+# Alias gyp target name.
+.PHONY: native_theme
+native_theme: ui_native_theme_native_theme_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/ozone/platform/dri/cursor_factory_evdev_dri.cc b/ui/ozone/platform/dri/cursor_factory_evdev_dri.cc
index b11c1a0f81..fd073caf03 100644
--- a/ui/ozone/platform/dri/cursor_factory_evdev_dri.cc
+++ b/ui/ozone/platform/dri/cursor_factory_evdev_dri.cc
@@ -15,6 +15,11 @@ CursorFactoryEvdevDri::CursorFactoryEvdevDri(gfx::DriSurfaceFactory* dri)
cursor_bounds_ = gfx::RectF(0, 0, 2560, 1700); // TODO(spang): Argh!
cursor_location_ =
gfx::PointF(cursor_bounds_.width() / 2, cursor_bounds_.height() / 2);
+
+ // The DRI cursor is invisible unless explicitly set. Therefore, set the
+ // pointer cursor on initialization.
+ // TODO(spang): Move this to DRI window initialization.
+ SetCursor(dri->GetAcceleratedWidget(), GetDefaultCursor(kCursorPointer));
}
CursorFactoryEvdevDri::~CursorFactoryEvdevDri() {}
diff --git a/ui/resources/default_100_percent/common/app_list_experimental_icon.png b/ui/resources/default_100_percent/common/app_list_experimental_icon.png
index 802249caec..3d6f702133 100644
--- a/ui/resources/default_100_percent/common/app_list_experimental_icon.png
+++ b/ui/resources/default_100_percent/common/app_list_experimental_icon.png
Binary files differ
diff --git a/ui/resources/default_100_percent/win/app_list_user_indicator.png b/ui/resources/default_100_percent/common/app_list_user_indicator.png
index 77f5858879..77f5858879 100644
--- a/ui/resources/default_100_percent/win/app_list_user_indicator.png
+++ b/ui/resources/default_100_percent/common/app_list_user_indicator.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_bottom.png b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_bottom.png
index 3f126326c2..9a7a1e88c8 100644
--- a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_bottom.png
+++ b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_bottom.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_left.png b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_left.png
index 99f8222acd..3a2ee9158a 100644
--- a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_left.png
+++ b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_left.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_right.png b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_right.png
index 4bf3a6dc16..a2c7253306 100644
--- a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_right.png
+++ b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_right.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_center.png b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_center.png
index 21dedd6676..5c87bea82a 100644
--- a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_center.png
+++ b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_center.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_left.png b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_left.png
index b31d391b27..5dece07626 100644
--- a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_left.png
+++ b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_left.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_right.png b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_right.png
index 02b8009984..5dece07626 100644
--- a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_right.png
+++ b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_right.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_top.png b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_top.png
index 7237cbbeb0..9a7a1e88c8 100644
--- a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_top.png
+++ b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_top.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_top_left.png b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_top_left.png
index 099ed249c5..96bef5e21a 100644
--- a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_top_left.png
+++ b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_top_left.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_top_right.png b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_top_right.png
index 8fb15d6fa4..816deb4521 100644
--- a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_top_right.png
+++ b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_fill_top_right.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom.png b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom.png
index 754e454b7f..37cfa86107 100644
--- a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom.png
+++ b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_left.png b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_left.png
index d901f0c945..7bca659509 100644
--- a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_left.png
+++ b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_left.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_right.png b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_right.png
index 43c9ef9eb8..577b607985 100644
--- a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_right.png
+++ b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_right.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_left.png b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_left.png
index 2fbd539389..37cfa86107 100644
--- a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_left.png
+++ b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_left.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_right.png b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_right.png
index 7d0f2227aa..37cfa86107 100644
--- a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_right.png
+++ b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_right.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_top.png b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_top.png
index 545b8b50ad..37cfa86107 100644
--- a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_top.png
+++ b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_top.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_top_left.png b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_top_left.png
index bb793ed46c..bdde2bd25f 100644
--- a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_top_left.png
+++ b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_top_left.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_top_right.png b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_top_right.png
index d11483724a..952854f3c1 100644
--- a/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_top_right.png
+++ b/ui/resources/default_100_percent/common/aura_scrollbar_overlay_thumb_stroke_top_right.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/back_arrow.png b/ui/resources/default_100_percent/common/back_arrow.png
index 1c92bc5865..0334cafe4f 100644
--- a/ui/resources/default_100_percent/common/back_arrow.png
+++ b/ui/resources/default_100_percent/common/back_arrow.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/pointers/xterm.png b/ui/resources/default_100_percent/common/pointers/xterm.png
index 6f3849f4f1..8c16409986 100644
--- a/ui/resources/default_100_percent/common/pointers/xterm.png
+++ b/ui/resources/default_100_percent/common/pointers/xterm.png
Binary files differ
diff --git a/ui/resources/default_100_percent/common/pointers/xterm_horiz.png b/ui/resources/default_100_percent/common/pointers/xterm_horiz.png
index 4939536fa3..2dedbc0d27 100644
--- a/ui/resources/default_100_percent/common/pointers/xterm_horiz.png
+++ b/ui/resources/default_100_percent/common/pointers/xterm_horiz.png
Binary files differ
diff --git a/ui/resources/default_100_percent/oak.png b/ui/resources/default_100_percent/oak.png
deleted file mode 100644
index 49954798da..0000000000
--- a/ui/resources/default_100_percent/oak.png
+++ /dev/null
Binary files differ
diff --git a/ui/resources/default_200_percent/common/app_list_experimental_icon.png b/ui/resources/default_200_percent/common/app_list_experimental_icon.png
index c1db726f5b..3c999d6e66 100644
--- a/ui/resources/default_200_percent/common/app_list_experimental_icon.png
+++ b/ui/resources/default_200_percent/common/app_list_experimental_icon.png
Binary files differ
diff --git a/ui/resources/default_200_percent/win/app_list_user_indicator.png b/ui/resources/default_200_percent/common/app_list_user_indicator.png
index 9fb3a484c0..9fb3a484c0 100644
--- a/ui/resources/default_200_percent/win/app_list_user_indicator.png
+++ b/ui/resources/default_200_percent/common/app_list_user_indicator.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_bottom.png b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_bottom.png
index 9971f2984b..78d9c0f423 100644
--- a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_bottom.png
+++ b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_bottom.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_left.png b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_left.png
index 2e4660b39f..9617a5d873 100644
--- a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_left.png
+++ b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_left.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_right.png b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_right.png
index 993978de31..69b617cd1e 100644
--- a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_right.png
+++ b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_bottom_right.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_center.png b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_center.png
index f8618f1c81..56d451e9f5 100644
--- a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_center.png
+++ b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_center.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_left.png b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_left.png
index 1576df2be5..535837d81c 100644
--- a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_left.png
+++ b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_left.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_right.png b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_right.png
index e7654f7308..535837d81c 100644
--- a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_right.png
+++ b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_right.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_top.png b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_top.png
index c5d42bb9c7..78d9c0f423 100644
--- a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_top.png
+++ b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_top.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_top_left.png b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_top_left.png
index 1ad635bbdd..07231fdb1e 100644
--- a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_top_left.png
+++ b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_top_left.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_top_right.png b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_top_right.png
index 9e3d934dbe..136af2ce36 100644
--- a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_top_right.png
+++ b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_fill_top_right.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom.png b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom.png
index 854c09d986..592784704d 100644
--- a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom.png
+++ b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_left.png b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_left.png
index 53641d982b..6ad0393309 100644
--- a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_left.png
+++ b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_left.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_right.png b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_right.png
index 80d4e96b20..f7fb94dc20 100644
--- a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_right.png
+++ b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_bottom_right.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_left.png b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_left.png
index 8ea7bf3a33..592784704d 100644
--- a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_left.png
+++ b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_left.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_right.png b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_right.png
index ce2db18cdf..592784704d 100644
--- a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_right.png
+++ b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_right.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_top.png b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_top.png
index 10c2e6e3b8..592784704d 100644
--- a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_top.png
+++ b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_top.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_top_left.png b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_top_left.png
index 01e01fb4ac..84a594dc47 100644
--- a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_top_left.png
+++ b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_top_left.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_top_right.png b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_top_right.png
index 67f0318c19..75f5bde985 100644
--- a/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_top_right.png
+++ b/ui/resources/default_200_percent/common/aura_scrollbar_overlay_thumb_stroke_top_right.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/back_arrow.png b/ui/resources/default_200_percent/common/back_arrow.png
index d10b993c6f..e1f212f8f3 100644
--- a/ui/resources/default_200_percent/common/back_arrow.png
+++ b/ui/resources/default_200_percent/common/back_arrow.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/forward_arrow.png b/ui/resources/default_200_percent/common/forward_arrow.png
index a8c946763e..85ebf170bb 100644
--- a/ui/resources/default_200_percent/common/forward_arrow.png
+++ b/ui/resources/default_200_percent/common/forward_arrow.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/pointers/xterm.png b/ui/resources/default_200_percent/common/pointers/xterm.png
index 18ed44eefe..ecd9b61462 100644
--- a/ui/resources/default_200_percent/common/pointers/xterm.png
+++ b/ui/resources/default_200_percent/common/pointers/xterm.png
Binary files differ
diff --git a/ui/resources/default_200_percent/common/pointers/xterm_horiz.png b/ui/resources/default_200_percent/common/pointers/xterm_horiz.png
index 1fd6d1dcc3..b95e553d1d 100644
--- a/ui/resources/default_200_percent/common/pointers/xterm_horiz.png
+++ b/ui/resources/default_200_percent/common/pointers/xterm_horiz.png
Binary files differ
diff --git a/ui/resources/ui_resources.grd b/ui/resources/ui_resources.grd
index 6121bd934d..ee03db91c7 100644
--- a/ui/resources/ui_resources.grd
+++ b/ui/resources/ui_resources.grd
@@ -28,7 +28,7 @@
<structure type="chrome_scaled_image" name="IDR_APP_LIST_SPEECH_MIC_OFF" file="common/app_list_mic_off.png" />
<structure type="chrome_scaled_image" name="IDR_APP_LIST_SPEECH_MIC_RECORDING" file="common/app_list_mic_recording.png" />
<if expr="is_win">
- <structure type="chrome_scaled_image" name="IDR_APP_LIST_USER_INDICATOR" file="win/app_list_user_indicator.png" />
+ <structure type="chrome_scaled_image" name="IDR_APP_LIST_USER_INDICATOR" file="common/app_list_user_indicator.png" />
</if>
</if>
<if expr="toolkit_views">
@@ -353,9 +353,6 @@
<structure type="chrome_scaled_image" name="IDR_NOTIFICATION_SETTINGS_HOVER" file="common/notification_settings_hover.png"/>
<structure type="chrome_scaled_image" name="IDR_NOTIFICATION_SETTINGS_PRESSED" file="common/notification_settings_pressed.png"/>
</if>
- <if expr="use_aura">
- <structure type="chrome_scaled_image" name="IDR_OAK" file="oak.png" />
- </if>
<if expr="not is_android and not is_ios">
<structure type="chrome_scaled_image" name="IDR_OOBE_ACTION_BOX_BUTTON_HOVER" file="cros/action_box_button_hover.png" />
<structure type="chrome_scaled_image" name="IDR_OOBE_ACTION_BOX_BUTTON_NORMAL" file="cros/action_box_button_normal.png" />
diff --git a/ui/resources/ui_resources.gyp b/ui/resources/ui_resources.gyp
index dbc800c962..fa68ace4c4 100644
--- a/ui/resources/ui_resources.gyp
+++ b/ui/resources/ui_resources.gyp
@@ -44,9 +44,6 @@
'../base/strings/ui_strings.gyp:ui_strings',
'ui_resources',
],
- 'variables': {
- 'repack_path': '../../tools/grit/grit/format/repack.py',
- },
'actions': [
{
'action_name': 'repack_ui_test_pack',
@@ -57,16 +54,62 @@
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/webui_resources.pak',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_strings/ui_strings_en-US.pak',
],
+ 'pak_output': '<(PRODUCT_DIR)/ui_test.pak',
},
- 'inputs': [
- '<(repack_path)',
- '<@(pak_inputs)',
+ 'includes': [ '../../build/repack_action.gypi' ],
+ },
+ ],
+ 'conditions': [
+ ['OS != "mac"', {
+ 'copies': [
+ {
+ 'destination': '<(PRODUCT_DIR)/ui',
+ 'files': [
+ '<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_resources_100_percent.pak',
+ ],
+ },
],
- 'outputs': [
- '<(PRODUCT_DIR)/ui_test.pak',
+ }],
+ ['OS == "ios"', {
+ 'actions': [
+ {
+ 'action_name': 'copy_ui_test_pak',
+ 'message': 'Copying ui_test.pak into locale.pak',
+ 'inputs': [
+ '<(PRODUCT_DIR)/ui_test.pak',
+ ],
+ 'outputs': [
+ '<(PRODUCT_DIR)/ui/en.lproj/locale.pak',
+ ],
+ 'action': [
+ 'python',
+ '../../build/cp.py',
+ '<@(_inputs)',
+ '<@(_outputs)'
+ ],
+ },
],
- 'action': ['python', '<(repack_path)', '<@(_outputs)', '<@(pak_inputs)'],
- },
+ }],
+ ['OS != "mac" and OS !="ios"', {
+ 'actions': [
+ {
+ 'action_name': 'copy_ui_test_pak',
+ 'message': 'Copying ui_test.pak into en-US.pak',
+ 'inputs': [
+ '<(PRODUCT_DIR)/ui_test.pak',
+ ],
+ 'outputs': [
+ '<(PRODUCT_DIR)/ui/en-US.pak',
+ ],
+ 'action': [
+ 'python',
+ '../../build/cp.py',
+ '<@(_inputs)',
+ '<@(_outputs)'
+ ],
+ },
+ ],
+ }],
],
},
],
diff --git a/ui/resources/ui_resources.target.darwin-arm.mk b/ui/resources/ui_resources.target.darwin-arm.mk
index 24f7200727..d6fd22df89 100644
--- a/ui/resources/ui_resources.target.darwin-arm.mk
+++ b/ui/resources/ui_resources.target.darwin-arm.mk
@@ -32,7 +32,7 @@ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_local
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: $(LOCAL_PATH)/third_party/jstemplate/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/webui_resources.grd $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/webui/resources/css/alert_overlay.css $(LOCAL_PATH)/ui/webui/resources/css/apps/common.css $(LOCAL_PATH)/ui/webui/resources/css/apps/topbutton_bar.css $(LOCAL_PATH)/ui/webui/resources/css/bubble.css $(LOCAL_PATH)/ui/webui/resources/css/bubble_button.css $(LOCAL_PATH)/ui/webui/resources/css/butter_bar.css $(LOCAL_PATH)/ui/webui/resources/css/chrome_shared.css $(LOCAL_PATH)/ui/webui/resources/css/dialogs.css $(LOCAL_PATH)/ui/webui/resources/css/list.css $(LOCAL_PATH)/ui/webui/resources/css/menu.css $(LOCAL_PATH)/ui/webui/resources/css/menu_button.css $(LOCAL_PATH)/ui/webui/resources/css/overlay.css $(LOCAL_PATH)/ui/webui/resources/css/spinner.css $(LOCAL_PATH)/ui/webui/resources/css/table.css $(LOCAL_PATH)/ui/webui/resources/css/tabs.css $(LOCAL_PATH)/ui/webui/resources/css/throbber.css $(LOCAL_PATH)/ui/webui/resources/css/trash.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css.js $(LOCAL_PATH)/ui/webui/resources/css/widgets.css $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/check.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_black.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_white.png $(LOCAL_PATH)/ui/webui/resources/images/clouds.png $(LOCAL_PATH)/ui/webui/resources/images/disabled_select.png $(LOCAL_PATH)/ui/webui/resources/images/gear.png $(LOCAL_PATH)/ui/webui/resources/images/google-transparent.png $(LOCAL_PATH)/ui/webui/resources/images/help.png $(LOCAL_PATH)/ui/webui/resources/images/question_mark.png $(LOCAL_PATH)/ui/webui/resources/images/select.png $(LOCAL_PATH)/ui/webui/resources/images/spinner.svg $(LOCAL_PATH)/ui/webui/resources/images/throbber.svg $(LOCAL_PATH)/ui/webui/resources/images/trash.png $(LOCAL_PATH)/ui/webui/resources/js/assert.js $(LOCAL_PATH)/ui/webui/resources/js/cr.js $(LOCAL_PATH)/ui/webui/resources/js/cr/event_target.js $(LOCAL_PATH)/ui/webui/resources/js/cr/link_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/promise.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/alert_overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/array_data_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/autocomplete_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/card_slider.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/command.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/dialogs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/drag_wrapper.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_outline_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/grid.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_single_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/position_util.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/repeating_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_header.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tabs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/touch_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tree.js $(LOCAL_PATH)/ui/webui/resources/js/event_tracker.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_process.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template2.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template_no_process.js $(LOCAL_PATH)/ui/webui/resources/js/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/js/load_time_data.js $(LOCAL_PATH)/ui/webui/resources/js/local_strings.js $(LOCAL_PATH)/ui/webui/resources/js/media_common.js $(LOCAL_PATH)/ui/webui/resources/js/parse_html_subset.js $(LOCAL_PATH)/ui/webui/resources/js/util.js $(LOCAL_PATH)/ui/webui/resources/js/webui_resource_test.js $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: $(LOCAL_PATH)/third_party/jstemplate/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/webui_resources.grd $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/webui/resources/css/alert_overlay.css $(LOCAL_PATH)/ui/webui/resources/css/apps/common.css $(LOCAL_PATH)/ui/webui/resources/css/apps/topbutton_bar.css $(LOCAL_PATH)/ui/webui/resources/css/bubble.css $(LOCAL_PATH)/ui/webui/resources/css/bubble_button.css $(LOCAL_PATH)/ui/webui/resources/css/butter_bar.css $(LOCAL_PATH)/ui/webui/resources/css/chrome_shared.css $(LOCAL_PATH)/ui/webui/resources/css/dialogs.css $(LOCAL_PATH)/ui/webui/resources/css/list.css $(LOCAL_PATH)/ui/webui/resources/css/menu.css $(LOCAL_PATH)/ui/webui/resources/css/menu_button.css $(LOCAL_PATH)/ui/webui/resources/css/overlay.css $(LOCAL_PATH)/ui/webui/resources/css/spinner.css $(LOCAL_PATH)/ui/webui/resources/css/table.css $(LOCAL_PATH)/ui/webui/resources/css/tabs.css $(LOCAL_PATH)/ui/webui/resources/css/throbber.css $(LOCAL_PATH)/ui/webui/resources/css/trash.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css.js $(LOCAL_PATH)/ui/webui/resources/css/widgets.css $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/check.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_black.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_white.png $(LOCAL_PATH)/ui/webui/resources/images/clouds.png $(LOCAL_PATH)/ui/webui/resources/images/disabled_select.png $(LOCAL_PATH)/ui/webui/resources/images/gear.png $(LOCAL_PATH)/ui/webui/resources/images/google-transparent.png $(LOCAL_PATH)/ui/webui/resources/images/help.png $(LOCAL_PATH)/ui/webui/resources/images/question_mark.png $(LOCAL_PATH)/ui/webui/resources/images/select.png $(LOCAL_PATH)/ui/webui/resources/images/spinner.svg $(LOCAL_PATH)/ui/webui/resources/images/throbber.svg $(LOCAL_PATH)/ui/webui/resources/images/trash.png $(LOCAL_PATH)/ui/webui/resources/js/assert.js $(LOCAL_PATH)/ui/webui/resources/js/cr.js $(LOCAL_PATH)/ui/webui/resources/js/cr/event_target.js $(LOCAL_PATH)/ui/webui/resources/js/cr/link_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/alert_overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/array_data_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/autocomplete_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/card_slider.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/command.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/dialogs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/drag_wrapper.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_outline_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/grid.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_single_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/position_util.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/repeating_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_header.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tabs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/touch_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tree.js $(LOCAL_PATH)/ui/webui/resources/js/event_tracker.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_process.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template2.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template_no_process.js $(LOCAL_PATH)/ui/webui/resources/js/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/js/load_time_data.js $(LOCAL_PATH)/ui/webui/resources/js/local_strings.js $(LOCAL_PATH)/ui/webui/resources/js/media_common.js $(LOCAL_PATH)/ui/webui/resources/js/parse_html_subset.js $(LOCAL_PATH)/ui/webui/resources/js/util.js $(LOCAL_PATH)/ui/webui/resources/js/webui_resource_test.js $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: Generating resources from ../webui/resources/webui_resources.grd ($@)"
$(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ../webui/resources/webui_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
diff --git a/ui/resources/ui_resources.target.darwin-mips.mk b/ui/resources/ui_resources.target.darwin-mips.mk
index 24f7200727..d6fd22df89 100644
--- a/ui/resources/ui_resources.target.darwin-mips.mk
+++ b/ui/resources/ui_resources.target.darwin-mips.mk
@@ -32,7 +32,7 @@ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_local
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: $(LOCAL_PATH)/third_party/jstemplate/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/webui_resources.grd $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/webui/resources/css/alert_overlay.css $(LOCAL_PATH)/ui/webui/resources/css/apps/common.css $(LOCAL_PATH)/ui/webui/resources/css/apps/topbutton_bar.css $(LOCAL_PATH)/ui/webui/resources/css/bubble.css $(LOCAL_PATH)/ui/webui/resources/css/bubble_button.css $(LOCAL_PATH)/ui/webui/resources/css/butter_bar.css $(LOCAL_PATH)/ui/webui/resources/css/chrome_shared.css $(LOCAL_PATH)/ui/webui/resources/css/dialogs.css $(LOCAL_PATH)/ui/webui/resources/css/list.css $(LOCAL_PATH)/ui/webui/resources/css/menu.css $(LOCAL_PATH)/ui/webui/resources/css/menu_button.css $(LOCAL_PATH)/ui/webui/resources/css/overlay.css $(LOCAL_PATH)/ui/webui/resources/css/spinner.css $(LOCAL_PATH)/ui/webui/resources/css/table.css $(LOCAL_PATH)/ui/webui/resources/css/tabs.css $(LOCAL_PATH)/ui/webui/resources/css/throbber.css $(LOCAL_PATH)/ui/webui/resources/css/trash.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css.js $(LOCAL_PATH)/ui/webui/resources/css/widgets.css $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/check.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_black.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_white.png $(LOCAL_PATH)/ui/webui/resources/images/clouds.png $(LOCAL_PATH)/ui/webui/resources/images/disabled_select.png $(LOCAL_PATH)/ui/webui/resources/images/gear.png $(LOCAL_PATH)/ui/webui/resources/images/google-transparent.png $(LOCAL_PATH)/ui/webui/resources/images/help.png $(LOCAL_PATH)/ui/webui/resources/images/question_mark.png $(LOCAL_PATH)/ui/webui/resources/images/select.png $(LOCAL_PATH)/ui/webui/resources/images/spinner.svg $(LOCAL_PATH)/ui/webui/resources/images/throbber.svg $(LOCAL_PATH)/ui/webui/resources/images/trash.png $(LOCAL_PATH)/ui/webui/resources/js/assert.js $(LOCAL_PATH)/ui/webui/resources/js/cr.js $(LOCAL_PATH)/ui/webui/resources/js/cr/event_target.js $(LOCAL_PATH)/ui/webui/resources/js/cr/link_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/promise.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/alert_overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/array_data_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/autocomplete_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/card_slider.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/command.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/dialogs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/drag_wrapper.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_outline_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/grid.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_single_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/position_util.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/repeating_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_header.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tabs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/touch_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tree.js $(LOCAL_PATH)/ui/webui/resources/js/event_tracker.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_process.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template2.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template_no_process.js $(LOCAL_PATH)/ui/webui/resources/js/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/js/load_time_data.js $(LOCAL_PATH)/ui/webui/resources/js/local_strings.js $(LOCAL_PATH)/ui/webui/resources/js/media_common.js $(LOCAL_PATH)/ui/webui/resources/js/parse_html_subset.js $(LOCAL_PATH)/ui/webui/resources/js/util.js $(LOCAL_PATH)/ui/webui/resources/js/webui_resource_test.js $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: $(LOCAL_PATH)/third_party/jstemplate/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/webui_resources.grd $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/webui/resources/css/alert_overlay.css $(LOCAL_PATH)/ui/webui/resources/css/apps/common.css $(LOCAL_PATH)/ui/webui/resources/css/apps/topbutton_bar.css $(LOCAL_PATH)/ui/webui/resources/css/bubble.css $(LOCAL_PATH)/ui/webui/resources/css/bubble_button.css $(LOCAL_PATH)/ui/webui/resources/css/butter_bar.css $(LOCAL_PATH)/ui/webui/resources/css/chrome_shared.css $(LOCAL_PATH)/ui/webui/resources/css/dialogs.css $(LOCAL_PATH)/ui/webui/resources/css/list.css $(LOCAL_PATH)/ui/webui/resources/css/menu.css $(LOCAL_PATH)/ui/webui/resources/css/menu_button.css $(LOCAL_PATH)/ui/webui/resources/css/overlay.css $(LOCAL_PATH)/ui/webui/resources/css/spinner.css $(LOCAL_PATH)/ui/webui/resources/css/table.css $(LOCAL_PATH)/ui/webui/resources/css/tabs.css $(LOCAL_PATH)/ui/webui/resources/css/throbber.css $(LOCAL_PATH)/ui/webui/resources/css/trash.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css.js $(LOCAL_PATH)/ui/webui/resources/css/widgets.css $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/check.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_black.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_white.png $(LOCAL_PATH)/ui/webui/resources/images/clouds.png $(LOCAL_PATH)/ui/webui/resources/images/disabled_select.png $(LOCAL_PATH)/ui/webui/resources/images/gear.png $(LOCAL_PATH)/ui/webui/resources/images/google-transparent.png $(LOCAL_PATH)/ui/webui/resources/images/help.png $(LOCAL_PATH)/ui/webui/resources/images/question_mark.png $(LOCAL_PATH)/ui/webui/resources/images/select.png $(LOCAL_PATH)/ui/webui/resources/images/spinner.svg $(LOCAL_PATH)/ui/webui/resources/images/throbber.svg $(LOCAL_PATH)/ui/webui/resources/images/trash.png $(LOCAL_PATH)/ui/webui/resources/js/assert.js $(LOCAL_PATH)/ui/webui/resources/js/cr.js $(LOCAL_PATH)/ui/webui/resources/js/cr/event_target.js $(LOCAL_PATH)/ui/webui/resources/js/cr/link_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/alert_overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/array_data_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/autocomplete_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/card_slider.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/command.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/dialogs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/drag_wrapper.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_outline_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/grid.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_single_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/position_util.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/repeating_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_header.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tabs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/touch_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tree.js $(LOCAL_PATH)/ui/webui/resources/js/event_tracker.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_process.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template2.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template_no_process.js $(LOCAL_PATH)/ui/webui/resources/js/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/js/load_time_data.js $(LOCAL_PATH)/ui/webui/resources/js/local_strings.js $(LOCAL_PATH)/ui/webui/resources/js/media_common.js $(LOCAL_PATH)/ui/webui/resources/js/parse_html_subset.js $(LOCAL_PATH)/ui/webui/resources/js/util.js $(LOCAL_PATH)/ui/webui/resources/js/webui_resource_test.js $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: Generating resources from ../webui/resources/webui_resources.grd ($@)"
$(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ../webui/resources/webui_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
diff --git a/ui/resources/ui_resources.target.darwin-x86.mk b/ui/resources/ui_resources.target.darwin-x86.mk
index 26d6f31c2a..d6fd22df89 100644
--- a/ui/resources/ui_resources.target.darwin-x86.mk
+++ b/ui/resources/ui_resources.target.darwin-x86.mk
@@ -20,7 +20,7 @@ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h: gyp_shared_i
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/ui_resources.grd $(LOCAL_PATH)/ui/resources/default_100_percent/close_2.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_2_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_2_mask.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_2_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_dialog.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_dialog_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_dialog_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/back_arrow.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/browser_action_badge_center.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/browser_action_badge_left.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/browser_action_badge_right.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkmark.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/default_favicon.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/default_favicon_32.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/default_favicon_64.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/forward_arrow.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/message_close.png $(LOCAL_PATH)/ui/resources/default_100_percent/cros/menu_droparrow.png $(LOCAL_PATH)/ui/resources/default_100_percent/linux/linux-progress-bar.png $(LOCAL_PATH)/ui/resources/default_100_percent/linux/linux-progress-border-left.png $(LOCAL_PATH)/ui/resources/default_100_percent/linux/linux-progress-border-right.png $(LOCAL_PATH)/ui/resources/default_100_percent/linux/linux-progress-value.png $(LOCAL_PATH)/ui/resources/default_100_percent/throbber.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_2.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_2_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_2_mask.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_2_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_dialog.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_dialog_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_dialog_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/back_arrow.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/browser_action_badge_center.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/browser_action_badge_left.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/browser_action_badge_right.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkmark.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/default_favicon.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/forward_arrow.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/message_close.png $(LOCAL_PATH)/ui/resources/default_200_percent/cros/menu_droparrow.png $(LOCAL_PATH)/ui/resources/default_200_percent/throbber.png $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: Generating resources from ui_resources.grd ($@)"
- $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ui_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -D use_webaudio_enable_message -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+ $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ui_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources_map.cc: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h ;
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources_map.h: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h ;
@@ -32,9 +32,9 @@ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_local
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: $(LOCAL_PATH)/third_party/jstemplate/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/webui_resources.grd $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/webui/resources/css/alert_overlay.css $(LOCAL_PATH)/ui/webui/resources/css/apps/common.css $(LOCAL_PATH)/ui/webui/resources/css/apps/topbutton_bar.css $(LOCAL_PATH)/ui/webui/resources/css/bubble.css $(LOCAL_PATH)/ui/webui/resources/css/bubble_button.css $(LOCAL_PATH)/ui/webui/resources/css/butter_bar.css $(LOCAL_PATH)/ui/webui/resources/css/chrome_shared.css $(LOCAL_PATH)/ui/webui/resources/css/dialogs.css $(LOCAL_PATH)/ui/webui/resources/css/list.css $(LOCAL_PATH)/ui/webui/resources/css/menu.css $(LOCAL_PATH)/ui/webui/resources/css/menu_button.css $(LOCAL_PATH)/ui/webui/resources/css/overlay.css $(LOCAL_PATH)/ui/webui/resources/css/spinner.css $(LOCAL_PATH)/ui/webui/resources/css/table.css $(LOCAL_PATH)/ui/webui/resources/css/tabs.css $(LOCAL_PATH)/ui/webui/resources/css/throbber.css $(LOCAL_PATH)/ui/webui/resources/css/trash.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css.js $(LOCAL_PATH)/ui/webui/resources/css/widgets.css $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/check.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_black.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_white.png $(LOCAL_PATH)/ui/webui/resources/images/clouds.png $(LOCAL_PATH)/ui/webui/resources/images/disabled_select.png $(LOCAL_PATH)/ui/webui/resources/images/gear.png $(LOCAL_PATH)/ui/webui/resources/images/google-transparent.png $(LOCAL_PATH)/ui/webui/resources/images/help.png $(LOCAL_PATH)/ui/webui/resources/images/question_mark.png $(LOCAL_PATH)/ui/webui/resources/images/select.png $(LOCAL_PATH)/ui/webui/resources/images/spinner.svg $(LOCAL_PATH)/ui/webui/resources/images/throbber.svg $(LOCAL_PATH)/ui/webui/resources/images/trash.png $(LOCAL_PATH)/ui/webui/resources/js/assert.js $(LOCAL_PATH)/ui/webui/resources/js/cr.js $(LOCAL_PATH)/ui/webui/resources/js/cr/event_target.js $(LOCAL_PATH)/ui/webui/resources/js/cr/link_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/promise.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/alert_overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/array_data_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/autocomplete_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/card_slider.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/command.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/dialogs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/drag_wrapper.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_outline_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/grid.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_single_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/position_util.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/repeating_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_header.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tabs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/touch_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tree.js $(LOCAL_PATH)/ui/webui/resources/js/event_tracker.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_process.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template2.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template_no_process.js $(LOCAL_PATH)/ui/webui/resources/js/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/js/load_time_data.js $(LOCAL_PATH)/ui/webui/resources/js/local_strings.js $(LOCAL_PATH)/ui/webui/resources/js/media_common.js $(LOCAL_PATH)/ui/webui/resources/js/parse_html_subset.js $(LOCAL_PATH)/ui/webui/resources/js/util.js $(LOCAL_PATH)/ui/webui/resources/js/webui_resource_test.js $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: $(LOCAL_PATH)/third_party/jstemplate/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/webui_resources.grd $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/webui/resources/css/alert_overlay.css $(LOCAL_PATH)/ui/webui/resources/css/apps/common.css $(LOCAL_PATH)/ui/webui/resources/css/apps/topbutton_bar.css $(LOCAL_PATH)/ui/webui/resources/css/bubble.css $(LOCAL_PATH)/ui/webui/resources/css/bubble_button.css $(LOCAL_PATH)/ui/webui/resources/css/butter_bar.css $(LOCAL_PATH)/ui/webui/resources/css/chrome_shared.css $(LOCAL_PATH)/ui/webui/resources/css/dialogs.css $(LOCAL_PATH)/ui/webui/resources/css/list.css $(LOCAL_PATH)/ui/webui/resources/css/menu.css $(LOCAL_PATH)/ui/webui/resources/css/menu_button.css $(LOCAL_PATH)/ui/webui/resources/css/overlay.css $(LOCAL_PATH)/ui/webui/resources/css/spinner.css $(LOCAL_PATH)/ui/webui/resources/css/table.css $(LOCAL_PATH)/ui/webui/resources/css/tabs.css $(LOCAL_PATH)/ui/webui/resources/css/throbber.css $(LOCAL_PATH)/ui/webui/resources/css/trash.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css.js $(LOCAL_PATH)/ui/webui/resources/css/widgets.css $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/check.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_black.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_white.png $(LOCAL_PATH)/ui/webui/resources/images/clouds.png $(LOCAL_PATH)/ui/webui/resources/images/disabled_select.png $(LOCAL_PATH)/ui/webui/resources/images/gear.png $(LOCAL_PATH)/ui/webui/resources/images/google-transparent.png $(LOCAL_PATH)/ui/webui/resources/images/help.png $(LOCAL_PATH)/ui/webui/resources/images/question_mark.png $(LOCAL_PATH)/ui/webui/resources/images/select.png $(LOCAL_PATH)/ui/webui/resources/images/spinner.svg $(LOCAL_PATH)/ui/webui/resources/images/throbber.svg $(LOCAL_PATH)/ui/webui/resources/images/trash.png $(LOCAL_PATH)/ui/webui/resources/js/assert.js $(LOCAL_PATH)/ui/webui/resources/js/cr.js $(LOCAL_PATH)/ui/webui/resources/js/cr/event_target.js $(LOCAL_PATH)/ui/webui/resources/js/cr/link_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/alert_overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/array_data_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/autocomplete_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/card_slider.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/command.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/dialogs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/drag_wrapper.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_outline_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/grid.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_single_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/position_util.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/repeating_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_header.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tabs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/touch_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tree.js $(LOCAL_PATH)/ui/webui/resources/js/event_tracker.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_process.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template2.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template_no_process.js $(LOCAL_PATH)/ui/webui/resources/js/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/js/load_time_data.js $(LOCAL_PATH)/ui/webui/resources/js/local_strings.js $(LOCAL_PATH)/ui/webui/resources/js/media_common.js $(LOCAL_PATH)/ui/webui/resources/js/parse_html_subset.js $(LOCAL_PATH)/ui/webui/resources/js/util.js $(LOCAL_PATH)/ui/webui/resources/js/webui_resource_test.js $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: Generating resources from ../webui/resources/webui_resources.grd ($@)"
- $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ../webui/resources/webui_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -D use_webaudio_enable_message -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+ $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ../webui/resources/webui_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources_map.cc: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h ;
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources_map.h: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h ;
@@ -47,7 +47,7 @@ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h: gyp
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/ui_unscaled_resources.grd $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: Generating resources from ui_unscaled_resources.grd ($@)"
- $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ui_unscaled_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -D use_webaudio_enable_message -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+ $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ui_unscaled_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
$(gyp_shared_intermediate_dir)/ui/ui_resources/ui_unscaled_resources.rc: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h ;
diff --git a/ui/resources/ui_resources.target.darwin-x86_64.mk b/ui/resources/ui_resources.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..d6fd22df89
--- /dev/null
+++ b/ui/resources/ui_resources.target.darwin-x86_64.mk
@@ -0,0 +1,88 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := ui_resources_ui_resources_gyp
+LOCAL_MODULE_STEM := ui_resources
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "ui_resources":
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/ui_resources.grd $(LOCAL_PATH)/ui/resources/default_100_percent/close_2.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_2_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_2_mask.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_2_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_dialog.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_dialog_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_dialog_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/back_arrow.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/browser_action_badge_center.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/browser_action_badge_left.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/browser_action_badge_right.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkmark.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/default_favicon.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/default_favicon_32.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/default_favicon_64.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/forward_arrow.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/message_close.png $(LOCAL_PATH)/ui/resources/default_100_percent/cros/menu_droparrow.png $(LOCAL_PATH)/ui/resources/default_100_percent/linux/linux-progress-bar.png $(LOCAL_PATH)/ui/resources/default_100_percent/linux/linux-progress-border-left.png $(LOCAL_PATH)/ui/resources/default_100_percent/linux/linux-progress-border-right.png $(LOCAL_PATH)/ui/resources/default_100_percent/linux/linux-progress-value.png $(LOCAL_PATH)/ui/resources/default_100_percent/throbber.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_2.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_2_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_2_mask.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_2_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_dialog.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_dialog_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_dialog_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/back_arrow.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/browser_action_badge_center.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/browser_action_badge_left.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/browser_action_badge_right.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkmark.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/default_favicon.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/forward_arrow.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/message_close.png $(LOCAL_PATH)/ui/resources/default_200_percent/cros/menu_droparrow.png $(LOCAL_PATH)/ui/resources/default_200_percent/throbber.png $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating resources from ui_resources.grd ($@)"
+ $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ui_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources_map.cc: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources_map.h: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_resources/ui_resources_100_percent.pak: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_resources/ui_resources_200_percent.pak: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h ;
+
+### Rules for action "webui_resources":
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: $(LOCAL_PATH)/third_party/jstemplate/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/webui_resources.grd $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/webui/resources/css/alert_overlay.css $(LOCAL_PATH)/ui/webui/resources/css/apps/common.css $(LOCAL_PATH)/ui/webui/resources/css/apps/topbutton_bar.css $(LOCAL_PATH)/ui/webui/resources/css/bubble.css $(LOCAL_PATH)/ui/webui/resources/css/bubble_button.css $(LOCAL_PATH)/ui/webui/resources/css/butter_bar.css $(LOCAL_PATH)/ui/webui/resources/css/chrome_shared.css $(LOCAL_PATH)/ui/webui/resources/css/dialogs.css $(LOCAL_PATH)/ui/webui/resources/css/list.css $(LOCAL_PATH)/ui/webui/resources/css/menu.css $(LOCAL_PATH)/ui/webui/resources/css/menu_button.css $(LOCAL_PATH)/ui/webui/resources/css/overlay.css $(LOCAL_PATH)/ui/webui/resources/css/spinner.css $(LOCAL_PATH)/ui/webui/resources/css/table.css $(LOCAL_PATH)/ui/webui/resources/css/tabs.css $(LOCAL_PATH)/ui/webui/resources/css/throbber.css $(LOCAL_PATH)/ui/webui/resources/css/trash.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css.js $(LOCAL_PATH)/ui/webui/resources/css/widgets.css $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/check.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_black.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_white.png $(LOCAL_PATH)/ui/webui/resources/images/clouds.png $(LOCAL_PATH)/ui/webui/resources/images/disabled_select.png $(LOCAL_PATH)/ui/webui/resources/images/gear.png $(LOCAL_PATH)/ui/webui/resources/images/google-transparent.png $(LOCAL_PATH)/ui/webui/resources/images/help.png $(LOCAL_PATH)/ui/webui/resources/images/question_mark.png $(LOCAL_PATH)/ui/webui/resources/images/select.png $(LOCAL_PATH)/ui/webui/resources/images/spinner.svg $(LOCAL_PATH)/ui/webui/resources/images/throbber.svg $(LOCAL_PATH)/ui/webui/resources/images/trash.png $(LOCAL_PATH)/ui/webui/resources/js/assert.js $(LOCAL_PATH)/ui/webui/resources/js/cr.js $(LOCAL_PATH)/ui/webui/resources/js/cr/event_target.js $(LOCAL_PATH)/ui/webui/resources/js/cr/link_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/alert_overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/array_data_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/autocomplete_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/card_slider.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/command.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/dialogs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/drag_wrapper.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_outline_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/grid.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_single_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/position_util.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/repeating_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_header.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tabs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/touch_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tree.js $(LOCAL_PATH)/ui/webui/resources/js/event_tracker.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_process.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template2.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template_no_process.js $(LOCAL_PATH)/ui/webui/resources/js/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/js/load_time_data.js $(LOCAL_PATH)/ui/webui/resources/js/local_strings.js $(LOCAL_PATH)/ui/webui/resources/js/media_common.js $(LOCAL_PATH)/ui/webui/resources/js/parse_html_subset.js $(LOCAL_PATH)/ui/webui/resources/js/util.js $(LOCAL_PATH)/ui/webui/resources/js/webui_resource_test.js $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating resources from ../webui/resources/webui_resources.grd ($@)"
+ $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ../webui/resources/webui_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources_map.cc: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources_map.h: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_resources/webui_resources.pak: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h ;
+
+### Rules for action "ui_unscaled_resources":
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/ui_unscaled_resources.grd $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating resources from ui_unscaled_resources.grd ($@)"
+ $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ui_unscaled_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+
+$(gyp_shared_intermediate_dir)/ui/ui_resources/ui_unscaled_resources.rc: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h ;
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources_map.cc \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources_map.h \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/ui_resources_100_percent.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/ui_resources_200_percent.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources_map.cc \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources_map.h \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/webui_resources.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/ui_unscaled_resources.rc
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_resources_ui_resources_gyp
+
+# Alias gyp target name.
+.PHONY: ui_resources
+ui_resources: ui_resources_ui_resources_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/ui/resources/ui_resources.target.linux-arm.mk b/ui/resources/ui_resources.target.linux-arm.mk
index 24f7200727..d6fd22df89 100644
--- a/ui/resources/ui_resources.target.linux-arm.mk
+++ b/ui/resources/ui_resources.target.linux-arm.mk
@@ -32,7 +32,7 @@ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_local
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: $(LOCAL_PATH)/third_party/jstemplate/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/webui_resources.grd $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/webui/resources/css/alert_overlay.css $(LOCAL_PATH)/ui/webui/resources/css/apps/common.css $(LOCAL_PATH)/ui/webui/resources/css/apps/topbutton_bar.css $(LOCAL_PATH)/ui/webui/resources/css/bubble.css $(LOCAL_PATH)/ui/webui/resources/css/bubble_button.css $(LOCAL_PATH)/ui/webui/resources/css/butter_bar.css $(LOCAL_PATH)/ui/webui/resources/css/chrome_shared.css $(LOCAL_PATH)/ui/webui/resources/css/dialogs.css $(LOCAL_PATH)/ui/webui/resources/css/list.css $(LOCAL_PATH)/ui/webui/resources/css/menu.css $(LOCAL_PATH)/ui/webui/resources/css/menu_button.css $(LOCAL_PATH)/ui/webui/resources/css/overlay.css $(LOCAL_PATH)/ui/webui/resources/css/spinner.css $(LOCAL_PATH)/ui/webui/resources/css/table.css $(LOCAL_PATH)/ui/webui/resources/css/tabs.css $(LOCAL_PATH)/ui/webui/resources/css/throbber.css $(LOCAL_PATH)/ui/webui/resources/css/trash.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css.js $(LOCAL_PATH)/ui/webui/resources/css/widgets.css $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/check.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_black.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_white.png $(LOCAL_PATH)/ui/webui/resources/images/clouds.png $(LOCAL_PATH)/ui/webui/resources/images/disabled_select.png $(LOCAL_PATH)/ui/webui/resources/images/gear.png $(LOCAL_PATH)/ui/webui/resources/images/google-transparent.png $(LOCAL_PATH)/ui/webui/resources/images/help.png $(LOCAL_PATH)/ui/webui/resources/images/question_mark.png $(LOCAL_PATH)/ui/webui/resources/images/select.png $(LOCAL_PATH)/ui/webui/resources/images/spinner.svg $(LOCAL_PATH)/ui/webui/resources/images/throbber.svg $(LOCAL_PATH)/ui/webui/resources/images/trash.png $(LOCAL_PATH)/ui/webui/resources/js/assert.js $(LOCAL_PATH)/ui/webui/resources/js/cr.js $(LOCAL_PATH)/ui/webui/resources/js/cr/event_target.js $(LOCAL_PATH)/ui/webui/resources/js/cr/link_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/promise.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/alert_overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/array_data_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/autocomplete_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/card_slider.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/command.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/dialogs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/drag_wrapper.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_outline_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/grid.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_single_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/position_util.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/repeating_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_header.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tabs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/touch_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tree.js $(LOCAL_PATH)/ui/webui/resources/js/event_tracker.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_process.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template2.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template_no_process.js $(LOCAL_PATH)/ui/webui/resources/js/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/js/load_time_data.js $(LOCAL_PATH)/ui/webui/resources/js/local_strings.js $(LOCAL_PATH)/ui/webui/resources/js/media_common.js $(LOCAL_PATH)/ui/webui/resources/js/parse_html_subset.js $(LOCAL_PATH)/ui/webui/resources/js/util.js $(LOCAL_PATH)/ui/webui/resources/js/webui_resource_test.js $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: $(LOCAL_PATH)/third_party/jstemplate/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/webui_resources.grd $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/webui/resources/css/alert_overlay.css $(LOCAL_PATH)/ui/webui/resources/css/apps/common.css $(LOCAL_PATH)/ui/webui/resources/css/apps/topbutton_bar.css $(LOCAL_PATH)/ui/webui/resources/css/bubble.css $(LOCAL_PATH)/ui/webui/resources/css/bubble_button.css $(LOCAL_PATH)/ui/webui/resources/css/butter_bar.css $(LOCAL_PATH)/ui/webui/resources/css/chrome_shared.css $(LOCAL_PATH)/ui/webui/resources/css/dialogs.css $(LOCAL_PATH)/ui/webui/resources/css/list.css $(LOCAL_PATH)/ui/webui/resources/css/menu.css $(LOCAL_PATH)/ui/webui/resources/css/menu_button.css $(LOCAL_PATH)/ui/webui/resources/css/overlay.css $(LOCAL_PATH)/ui/webui/resources/css/spinner.css $(LOCAL_PATH)/ui/webui/resources/css/table.css $(LOCAL_PATH)/ui/webui/resources/css/tabs.css $(LOCAL_PATH)/ui/webui/resources/css/throbber.css $(LOCAL_PATH)/ui/webui/resources/css/trash.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css.js $(LOCAL_PATH)/ui/webui/resources/css/widgets.css $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/check.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_black.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_white.png $(LOCAL_PATH)/ui/webui/resources/images/clouds.png $(LOCAL_PATH)/ui/webui/resources/images/disabled_select.png $(LOCAL_PATH)/ui/webui/resources/images/gear.png $(LOCAL_PATH)/ui/webui/resources/images/google-transparent.png $(LOCAL_PATH)/ui/webui/resources/images/help.png $(LOCAL_PATH)/ui/webui/resources/images/question_mark.png $(LOCAL_PATH)/ui/webui/resources/images/select.png $(LOCAL_PATH)/ui/webui/resources/images/spinner.svg $(LOCAL_PATH)/ui/webui/resources/images/throbber.svg $(LOCAL_PATH)/ui/webui/resources/images/trash.png $(LOCAL_PATH)/ui/webui/resources/js/assert.js $(LOCAL_PATH)/ui/webui/resources/js/cr.js $(LOCAL_PATH)/ui/webui/resources/js/cr/event_target.js $(LOCAL_PATH)/ui/webui/resources/js/cr/link_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/alert_overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/array_data_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/autocomplete_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/card_slider.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/command.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/dialogs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/drag_wrapper.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_outline_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/grid.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_single_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/position_util.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/repeating_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_header.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tabs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/touch_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tree.js $(LOCAL_PATH)/ui/webui/resources/js/event_tracker.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_process.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template2.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template_no_process.js $(LOCAL_PATH)/ui/webui/resources/js/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/js/load_time_data.js $(LOCAL_PATH)/ui/webui/resources/js/local_strings.js $(LOCAL_PATH)/ui/webui/resources/js/media_common.js $(LOCAL_PATH)/ui/webui/resources/js/parse_html_subset.js $(LOCAL_PATH)/ui/webui/resources/js/util.js $(LOCAL_PATH)/ui/webui/resources/js/webui_resource_test.js $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: Generating resources from ../webui/resources/webui_resources.grd ($@)"
$(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ../webui/resources/webui_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
diff --git a/ui/resources/ui_resources.target.linux-mips.mk b/ui/resources/ui_resources.target.linux-mips.mk
index 24f7200727..d6fd22df89 100644
--- a/ui/resources/ui_resources.target.linux-mips.mk
+++ b/ui/resources/ui_resources.target.linux-mips.mk
@@ -32,7 +32,7 @@ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_local
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: $(LOCAL_PATH)/third_party/jstemplate/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/webui_resources.grd $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/webui/resources/css/alert_overlay.css $(LOCAL_PATH)/ui/webui/resources/css/apps/common.css $(LOCAL_PATH)/ui/webui/resources/css/apps/topbutton_bar.css $(LOCAL_PATH)/ui/webui/resources/css/bubble.css $(LOCAL_PATH)/ui/webui/resources/css/bubble_button.css $(LOCAL_PATH)/ui/webui/resources/css/butter_bar.css $(LOCAL_PATH)/ui/webui/resources/css/chrome_shared.css $(LOCAL_PATH)/ui/webui/resources/css/dialogs.css $(LOCAL_PATH)/ui/webui/resources/css/list.css $(LOCAL_PATH)/ui/webui/resources/css/menu.css $(LOCAL_PATH)/ui/webui/resources/css/menu_button.css $(LOCAL_PATH)/ui/webui/resources/css/overlay.css $(LOCAL_PATH)/ui/webui/resources/css/spinner.css $(LOCAL_PATH)/ui/webui/resources/css/table.css $(LOCAL_PATH)/ui/webui/resources/css/tabs.css $(LOCAL_PATH)/ui/webui/resources/css/throbber.css $(LOCAL_PATH)/ui/webui/resources/css/trash.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css.js $(LOCAL_PATH)/ui/webui/resources/css/widgets.css $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/check.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_black.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_white.png $(LOCAL_PATH)/ui/webui/resources/images/clouds.png $(LOCAL_PATH)/ui/webui/resources/images/disabled_select.png $(LOCAL_PATH)/ui/webui/resources/images/gear.png $(LOCAL_PATH)/ui/webui/resources/images/google-transparent.png $(LOCAL_PATH)/ui/webui/resources/images/help.png $(LOCAL_PATH)/ui/webui/resources/images/question_mark.png $(LOCAL_PATH)/ui/webui/resources/images/select.png $(LOCAL_PATH)/ui/webui/resources/images/spinner.svg $(LOCAL_PATH)/ui/webui/resources/images/throbber.svg $(LOCAL_PATH)/ui/webui/resources/images/trash.png $(LOCAL_PATH)/ui/webui/resources/js/assert.js $(LOCAL_PATH)/ui/webui/resources/js/cr.js $(LOCAL_PATH)/ui/webui/resources/js/cr/event_target.js $(LOCAL_PATH)/ui/webui/resources/js/cr/link_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/promise.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/alert_overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/array_data_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/autocomplete_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/card_slider.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/command.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/dialogs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/drag_wrapper.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_outline_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/grid.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_single_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/position_util.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/repeating_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_header.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tabs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/touch_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tree.js $(LOCAL_PATH)/ui/webui/resources/js/event_tracker.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_process.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template2.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template_no_process.js $(LOCAL_PATH)/ui/webui/resources/js/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/js/load_time_data.js $(LOCAL_PATH)/ui/webui/resources/js/local_strings.js $(LOCAL_PATH)/ui/webui/resources/js/media_common.js $(LOCAL_PATH)/ui/webui/resources/js/parse_html_subset.js $(LOCAL_PATH)/ui/webui/resources/js/util.js $(LOCAL_PATH)/ui/webui/resources/js/webui_resource_test.js $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: $(LOCAL_PATH)/third_party/jstemplate/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/webui_resources.grd $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/webui/resources/css/alert_overlay.css $(LOCAL_PATH)/ui/webui/resources/css/apps/common.css $(LOCAL_PATH)/ui/webui/resources/css/apps/topbutton_bar.css $(LOCAL_PATH)/ui/webui/resources/css/bubble.css $(LOCAL_PATH)/ui/webui/resources/css/bubble_button.css $(LOCAL_PATH)/ui/webui/resources/css/butter_bar.css $(LOCAL_PATH)/ui/webui/resources/css/chrome_shared.css $(LOCAL_PATH)/ui/webui/resources/css/dialogs.css $(LOCAL_PATH)/ui/webui/resources/css/list.css $(LOCAL_PATH)/ui/webui/resources/css/menu.css $(LOCAL_PATH)/ui/webui/resources/css/menu_button.css $(LOCAL_PATH)/ui/webui/resources/css/overlay.css $(LOCAL_PATH)/ui/webui/resources/css/spinner.css $(LOCAL_PATH)/ui/webui/resources/css/table.css $(LOCAL_PATH)/ui/webui/resources/css/tabs.css $(LOCAL_PATH)/ui/webui/resources/css/throbber.css $(LOCAL_PATH)/ui/webui/resources/css/trash.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css.js $(LOCAL_PATH)/ui/webui/resources/css/widgets.css $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/check.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_black.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_white.png $(LOCAL_PATH)/ui/webui/resources/images/clouds.png $(LOCAL_PATH)/ui/webui/resources/images/disabled_select.png $(LOCAL_PATH)/ui/webui/resources/images/gear.png $(LOCAL_PATH)/ui/webui/resources/images/google-transparent.png $(LOCAL_PATH)/ui/webui/resources/images/help.png $(LOCAL_PATH)/ui/webui/resources/images/question_mark.png $(LOCAL_PATH)/ui/webui/resources/images/select.png $(LOCAL_PATH)/ui/webui/resources/images/spinner.svg $(LOCAL_PATH)/ui/webui/resources/images/throbber.svg $(LOCAL_PATH)/ui/webui/resources/images/trash.png $(LOCAL_PATH)/ui/webui/resources/js/assert.js $(LOCAL_PATH)/ui/webui/resources/js/cr.js $(LOCAL_PATH)/ui/webui/resources/js/cr/event_target.js $(LOCAL_PATH)/ui/webui/resources/js/cr/link_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/alert_overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/array_data_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/autocomplete_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/card_slider.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/command.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/dialogs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/drag_wrapper.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_outline_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/grid.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_single_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/position_util.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/repeating_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_header.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tabs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/touch_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tree.js $(LOCAL_PATH)/ui/webui/resources/js/event_tracker.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_process.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template2.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template_no_process.js $(LOCAL_PATH)/ui/webui/resources/js/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/js/load_time_data.js $(LOCAL_PATH)/ui/webui/resources/js/local_strings.js $(LOCAL_PATH)/ui/webui/resources/js/media_common.js $(LOCAL_PATH)/ui/webui/resources/js/parse_html_subset.js $(LOCAL_PATH)/ui/webui/resources/js/util.js $(LOCAL_PATH)/ui/webui/resources/js/webui_resource_test.js $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: Generating resources from ../webui/resources/webui_resources.grd ($@)"
$(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ../webui/resources/webui_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
diff --git a/ui/resources/ui_resources.target.linux-x86.mk b/ui/resources/ui_resources.target.linux-x86.mk
index 26d6f31c2a..d6fd22df89 100644
--- a/ui/resources/ui_resources.target.linux-x86.mk
+++ b/ui/resources/ui_resources.target.linux-x86.mk
@@ -20,7 +20,7 @@ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h: gyp_shared_i
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/ui_resources.grd $(LOCAL_PATH)/ui/resources/default_100_percent/close_2.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_2_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_2_mask.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_2_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_dialog.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_dialog_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_dialog_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/back_arrow.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/browser_action_badge_center.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/browser_action_badge_left.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/browser_action_badge_right.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkmark.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/default_favicon.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/default_favicon_32.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/default_favicon_64.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/forward_arrow.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/message_close.png $(LOCAL_PATH)/ui/resources/default_100_percent/cros/menu_droparrow.png $(LOCAL_PATH)/ui/resources/default_100_percent/linux/linux-progress-bar.png $(LOCAL_PATH)/ui/resources/default_100_percent/linux/linux-progress-border-left.png $(LOCAL_PATH)/ui/resources/default_100_percent/linux/linux-progress-border-right.png $(LOCAL_PATH)/ui/resources/default_100_percent/linux/linux-progress-value.png $(LOCAL_PATH)/ui/resources/default_100_percent/throbber.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_2.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_2_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_2_mask.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_2_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_dialog.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_dialog_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_dialog_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/back_arrow.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/browser_action_badge_center.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/browser_action_badge_left.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/browser_action_badge_right.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkmark.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/default_favicon.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/forward_arrow.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/message_close.png $(LOCAL_PATH)/ui/resources/default_200_percent/cros/menu_droparrow.png $(LOCAL_PATH)/ui/resources/default_200_percent/throbber.png $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: Generating resources from ui_resources.grd ($@)"
- $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ui_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -D use_webaudio_enable_message -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+ $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ui_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources_map.cc: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h ;
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources_map.h: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h ;
@@ -32,9 +32,9 @@ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_local
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
-$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: $(LOCAL_PATH)/third_party/jstemplate/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/webui_resources.grd $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/webui/resources/css/alert_overlay.css $(LOCAL_PATH)/ui/webui/resources/css/apps/common.css $(LOCAL_PATH)/ui/webui/resources/css/apps/topbutton_bar.css $(LOCAL_PATH)/ui/webui/resources/css/bubble.css $(LOCAL_PATH)/ui/webui/resources/css/bubble_button.css $(LOCAL_PATH)/ui/webui/resources/css/butter_bar.css $(LOCAL_PATH)/ui/webui/resources/css/chrome_shared.css $(LOCAL_PATH)/ui/webui/resources/css/dialogs.css $(LOCAL_PATH)/ui/webui/resources/css/list.css $(LOCAL_PATH)/ui/webui/resources/css/menu.css $(LOCAL_PATH)/ui/webui/resources/css/menu_button.css $(LOCAL_PATH)/ui/webui/resources/css/overlay.css $(LOCAL_PATH)/ui/webui/resources/css/spinner.css $(LOCAL_PATH)/ui/webui/resources/css/table.css $(LOCAL_PATH)/ui/webui/resources/css/tabs.css $(LOCAL_PATH)/ui/webui/resources/css/throbber.css $(LOCAL_PATH)/ui/webui/resources/css/trash.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css.js $(LOCAL_PATH)/ui/webui/resources/css/widgets.css $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/check.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_black.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_white.png $(LOCAL_PATH)/ui/webui/resources/images/clouds.png $(LOCAL_PATH)/ui/webui/resources/images/disabled_select.png $(LOCAL_PATH)/ui/webui/resources/images/gear.png $(LOCAL_PATH)/ui/webui/resources/images/google-transparent.png $(LOCAL_PATH)/ui/webui/resources/images/help.png $(LOCAL_PATH)/ui/webui/resources/images/question_mark.png $(LOCAL_PATH)/ui/webui/resources/images/select.png $(LOCAL_PATH)/ui/webui/resources/images/spinner.svg $(LOCAL_PATH)/ui/webui/resources/images/throbber.svg $(LOCAL_PATH)/ui/webui/resources/images/trash.png $(LOCAL_PATH)/ui/webui/resources/js/assert.js $(LOCAL_PATH)/ui/webui/resources/js/cr.js $(LOCAL_PATH)/ui/webui/resources/js/cr/event_target.js $(LOCAL_PATH)/ui/webui/resources/js/cr/link_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/promise.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/alert_overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/array_data_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/autocomplete_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/card_slider.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/command.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/dialogs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/drag_wrapper.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_outline_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/grid.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_single_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/position_util.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/repeating_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_header.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tabs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/touch_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tree.js $(LOCAL_PATH)/ui/webui/resources/js/event_tracker.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_process.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template2.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template_no_process.js $(LOCAL_PATH)/ui/webui/resources/js/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/js/load_time_data.js $(LOCAL_PATH)/ui/webui/resources/js/local_strings.js $(LOCAL_PATH)/ui/webui/resources/js/media_common.js $(LOCAL_PATH)/ui/webui/resources/js/parse_html_subset.js $(LOCAL_PATH)/ui/webui/resources/js/util.js $(LOCAL_PATH)/ui/webui/resources/js/webui_resource_test.js $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: $(LOCAL_PATH)/third_party/jstemplate/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/webui_resources.grd $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/webui/resources/css/alert_overlay.css $(LOCAL_PATH)/ui/webui/resources/css/apps/common.css $(LOCAL_PATH)/ui/webui/resources/css/apps/topbutton_bar.css $(LOCAL_PATH)/ui/webui/resources/css/bubble.css $(LOCAL_PATH)/ui/webui/resources/css/bubble_button.css $(LOCAL_PATH)/ui/webui/resources/css/butter_bar.css $(LOCAL_PATH)/ui/webui/resources/css/chrome_shared.css $(LOCAL_PATH)/ui/webui/resources/css/dialogs.css $(LOCAL_PATH)/ui/webui/resources/css/list.css $(LOCAL_PATH)/ui/webui/resources/css/menu.css $(LOCAL_PATH)/ui/webui/resources/css/menu_button.css $(LOCAL_PATH)/ui/webui/resources/css/overlay.css $(LOCAL_PATH)/ui/webui/resources/css/spinner.css $(LOCAL_PATH)/ui/webui/resources/css/table.css $(LOCAL_PATH)/ui/webui/resources/css/tabs.css $(LOCAL_PATH)/ui/webui/resources/css/throbber.css $(LOCAL_PATH)/ui/webui/resources/css/trash.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css.js $(LOCAL_PATH)/ui/webui/resources/css/widgets.css $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/check.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_black.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_white.png $(LOCAL_PATH)/ui/webui/resources/images/clouds.png $(LOCAL_PATH)/ui/webui/resources/images/disabled_select.png $(LOCAL_PATH)/ui/webui/resources/images/gear.png $(LOCAL_PATH)/ui/webui/resources/images/google-transparent.png $(LOCAL_PATH)/ui/webui/resources/images/help.png $(LOCAL_PATH)/ui/webui/resources/images/question_mark.png $(LOCAL_PATH)/ui/webui/resources/images/select.png $(LOCAL_PATH)/ui/webui/resources/images/spinner.svg $(LOCAL_PATH)/ui/webui/resources/images/throbber.svg $(LOCAL_PATH)/ui/webui/resources/images/trash.png $(LOCAL_PATH)/ui/webui/resources/js/assert.js $(LOCAL_PATH)/ui/webui/resources/js/cr.js $(LOCAL_PATH)/ui/webui/resources/js/cr/event_target.js $(LOCAL_PATH)/ui/webui/resources/js/cr/link_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/alert_overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/array_data_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/autocomplete_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/card_slider.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/command.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/dialogs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/drag_wrapper.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_outline_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/grid.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_single_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/position_util.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/repeating_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_header.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tabs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/touch_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tree.js $(LOCAL_PATH)/ui/webui/resources/js/event_tracker.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_process.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template2.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template_no_process.js $(LOCAL_PATH)/ui/webui/resources/js/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/js/load_time_data.js $(LOCAL_PATH)/ui/webui/resources/js/local_strings.js $(LOCAL_PATH)/ui/webui/resources/js/media_common.js $(LOCAL_PATH)/ui/webui/resources/js/parse_html_subset.js $(LOCAL_PATH)/ui/webui/resources/js/util.js $(LOCAL_PATH)/ui/webui/resources/js/webui_resource_test.js $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: Generating resources from ../webui/resources/webui_resources.grd ($@)"
- $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ../webui/resources/webui_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -D use_webaudio_enable_message -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+ $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ../webui/resources/webui_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources_map.cc: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h ;
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources_map.h: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h ;
@@ -47,7 +47,7 @@ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h: gyp
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/ui_unscaled_resources.grd $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
@echo "Gyp action: Generating resources from ui_unscaled_resources.grd ($@)"
- $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ui_unscaled_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -D use_webaudio_enable_message -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+ $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ui_unscaled_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
$(gyp_shared_intermediate_dir)/ui/ui_resources/ui_unscaled_resources.rc: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h ;
diff --git a/ui/resources/ui_resources.target.linux-x86_64.mk b/ui/resources/ui_resources.target.linux-x86_64.mk
new file mode 100644
index 0000000000..d6fd22df89
--- /dev/null
+++ b/ui/resources/ui_resources.target.linux-x86_64.mk
@@ -0,0 +1,88 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := ui_resources_ui_resources_gyp
+LOCAL_MODULE_STEM := ui_resources
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "ui_resources":
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/ui_resources.grd $(LOCAL_PATH)/ui/resources/default_100_percent/close_2.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_2_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_2_mask.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_2_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_dialog.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_dialog_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/close_dialog_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/back_arrow.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/browser_action_badge_center.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/browser_action_badge_left.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/browser_action_badge_right.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkmark.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/default_favicon.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/default_favicon_32.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/default_favicon_64.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/forward_arrow.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/message_close.png $(LOCAL_PATH)/ui/resources/default_100_percent/cros/menu_droparrow.png $(LOCAL_PATH)/ui/resources/default_100_percent/linux/linux-progress-bar.png $(LOCAL_PATH)/ui/resources/default_100_percent/linux/linux-progress-border-left.png $(LOCAL_PATH)/ui/resources/default_100_percent/linux/linux-progress-border-right.png $(LOCAL_PATH)/ui/resources/default_100_percent/linux/linux-progress-value.png $(LOCAL_PATH)/ui/resources/default_100_percent/throbber.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_2.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_2_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_2_mask.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_2_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_dialog.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_dialog_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/close_dialog_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/back_arrow.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/browser_action_badge_center.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/browser_action_badge_left.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/browser_action_badge_right.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkmark.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/default_favicon.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/forward_arrow.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/message_close.png $(LOCAL_PATH)/ui/resources/default_200_percent/cros/menu_droparrow.png $(LOCAL_PATH)/ui/resources/default_200_percent/throbber.png $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating resources from ui_resources.grd ($@)"
+ $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ui_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources_map.cc: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources_map.h: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_resources/ui_resources_100_percent.pak: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_resources/ui_resources_200_percent.pak: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h ;
+
+### Rules for action "webui_resources":
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h: $(LOCAL_PATH)/third_party/jstemplate/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/webui_resources.grd $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_closed_rtl.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open.png $(LOCAL_PATH)/ui/resources/default_100_percent/common/folder_open_rtl.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/blue_button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/button_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_checked_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_focused_pressed.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_hover.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_inactive.png $(LOCAL_PATH)/ui/resources/default_200_percent/common/checkbox_pressed.png $(LOCAL_PATH)/ui/webui/resources/css/alert_overlay.css $(LOCAL_PATH)/ui/webui/resources/css/apps/common.css $(LOCAL_PATH)/ui/webui/resources/css/apps/topbutton_bar.css $(LOCAL_PATH)/ui/webui/resources/css/bubble.css $(LOCAL_PATH)/ui/webui/resources/css/bubble_button.css $(LOCAL_PATH)/ui/webui/resources/css/butter_bar.css $(LOCAL_PATH)/ui/webui/resources/css/chrome_shared.css $(LOCAL_PATH)/ui/webui/resources/css/dialogs.css $(LOCAL_PATH)/ui/webui/resources/css/list.css $(LOCAL_PATH)/ui/webui/resources/css/menu.css $(LOCAL_PATH)/ui/webui/resources/css/menu_button.css $(LOCAL_PATH)/ui/webui/resources/css/overlay.css $(LOCAL_PATH)/ui/webui/resources/css/spinner.css $(LOCAL_PATH)/ui/webui/resources/css/table.css $(LOCAL_PATH)/ui/webui/resources/css/tabs.css $(LOCAL_PATH)/ui/webui/resources/css/throbber.css $(LOCAL_PATH)/ui/webui/resources/css/trash.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css $(LOCAL_PATH)/ui/webui/resources/css/tree.css.js $(LOCAL_PATH)/ui/webui/resources/css/widgets.css $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/2x/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_hover.png $(LOCAL_PATH)/ui/webui/resources/images/apps/button_butter_bar_close_pressed.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_close.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_maximize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_minimize.png $(LOCAL_PATH)/ui/webui/resources/images/apps/topbar_button_settings.png $(LOCAL_PATH)/ui/webui/resources/images/check.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_black.png $(LOCAL_PATH)/ui/webui/resources/images/checkbox_white.png $(LOCAL_PATH)/ui/webui/resources/images/clouds.png $(LOCAL_PATH)/ui/webui/resources/images/disabled_select.png $(LOCAL_PATH)/ui/webui/resources/images/gear.png $(LOCAL_PATH)/ui/webui/resources/images/google-transparent.png $(LOCAL_PATH)/ui/webui/resources/images/help.png $(LOCAL_PATH)/ui/webui/resources/images/question_mark.png $(LOCAL_PATH)/ui/webui/resources/images/select.png $(LOCAL_PATH)/ui/webui/resources/images/spinner.svg $(LOCAL_PATH)/ui/webui/resources/images/throbber.svg $(LOCAL_PATH)/ui/webui/resources/images/trash.png $(LOCAL_PATH)/ui/webui/resources/js/assert.js $(LOCAL_PATH)/ui/webui/resources/js/cr.js $(LOCAL_PATH)/ui/webui/resources/js/cr/event_target.js $(LOCAL_PATH)/ui/webui/resources/js/cr/link_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/alert_overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/array_data_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/autocomplete_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/bubble_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/card_slider.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/command.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/context_menu_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/dialogs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/drag_wrapper.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/focus_outline_manager.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/grid.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_controller.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/list_single_selection_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/menu_item.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/overlay.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/position_util.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/repeating_button.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_column_model.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_header.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_list.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/table/table_splitter.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tabs.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/touch_handler.js $(LOCAL_PATH)/ui/webui/resources/js/cr/ui/tree.js $(LOCAL_PATH)/ui/webui/resources/js/event_tracker.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_process.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template2.js $(LOCAL_PATH)/ui/webui/resources/js/i18n_template_no_process.js $(LOCAL_PATH)/ui/webui/resources/js/jstemplate_compiled.js $(LOCAL_PATH)/ui/webui/resources/js/load_time_data.js $(LOCAL_PATH)/ui/webui/resources/js/local_strings.js $(LOCAL_PATH)/ui/webui/resources/js/media_common.js $(LOCAL_PATH)/ui/webui/resources/js/parse_html_subset.js $(LOCAL_PATH)/ui/webui/resources/js/util.js $(LOCAL_PATH)/ui/webui/resources/js/webui_resource_test.js $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating resources from ../webui/resources/webui_resources.grd ($@)"
+ $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ../webui/resources/webui_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources_map.cc: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources_map.h: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h ;
+$(gyp_shared_intermediate_dir)/ui/ui_resources/webui_resources.pak: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h ;
+
+### Rules for action "ui_unscaled_resources":
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h: gyp_intermediate_dir := $(abspath $(gyp_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h: gyp_shared_intermediate_dir := $(abspath $(gyp_shared_intermediate_dir))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h: $(LOCAL_PATH)/tools/gritsettings/resource_ids $(LOCAL_PATH)/ui/resources/ui_unscaled_resources.grd $(LOCAL_PATH)/tools/grit/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit.py $(LOCAL_PATH)/tools/grit/grit/__init__.py $(LOCAL_PATH)/tools/grit/grit/clique.py $(LOCAL_PATH)/tools/grit/grit/constants.py $(LOCAL_PATH)/tools/grit/grit/exception.py $(LOCAL_PATH)/tools/grit/grit/extern/BogoFP.py $(LOCAL_PATH)/tools/grit/grit/extern/FP.py $(LOCAL_PATH)/tools/grit/grit/extern/__init__.py $(LOCAL_PATH)/tools/grit/grit/extern/tclib.py $(LOCAL_PATH)/tools/grit/grit/format/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/android_xml.py $(LOCAL_PATH)/tools/grit/grit/format/c_format.py $(LOCAL_PATH)/tools/grit/grit/format/chrome_messages_json.py $(LOCAL_PATH)/tools/grit/grit/format/data_pack.py $(LOCAL_PATH)/tools/grit/grit/format/html_inline.py $(LOCAL_PATH)/tools/grit/grit/format/js_map_format.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/PRESUBMIT.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/policy_template_generator.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/template_formatter.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writer_configuration.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/__init__.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adm_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/adml_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/admx_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/doc_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/json_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/mock_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_helper.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_strings_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/plist_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/reg_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/template_writer.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/writer_unittest_common.py $(LOCAL_PATH)/tools/grit/grit/format/policy_templates/writers/xml_formatted_writer.py $(LOCAL_PATH)/tools/grit/grit/format/rc.py $(LOCAL_PATH)/tools/grit/grit/format/rc_header.py $(LOCAL_PATH)/tools/grit/grit/format/repack.py $(LOCAL_PATH)/tools/grit/grit/format/resource_map.py $(LOCAL_PATH)/tools/grit/grit/gather/__init__.py $(LOCAL_PATH)/tools/grit/grit/gather/admin_template.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_html.py $(LOCAL_PATH)/tools/grit/grit/gather/chrome_scaled_image.py $(LOCAL_PATH)/tools/grit/grit/gather/igoogle_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/interface.py $(LOCAL_PATH)/tools/grit/grit/gather/json_loader.py $(LOCAL_PATH)/tools/grit/grit/gather/muppet_strings.py $(LOCAL_PATH)/tools/grit/grit/gather/policy_json.py $(LOCAL_PATH)/tools/grit/grit/gather/rc.py $(LOCAL_PATH)/tools/grit/grit/gather/regexp.py $(LOCAL_PATH)/tools/grit/grit/gather/skeleton_gatherer.py $(LOCAL_PATH)/tools/grit/grit/gather/tr_html.py $(LOCAL_PATH)/tools/grit/grit/gather/txt.py $(LOCAL_PATH)/tools/grit/grit/grd_reader.py $(LOCAL_PATH)/tools/grit/grit/grit_runner.py $(LOCAL_PATH)/tools/grit/grit/lazy_re.py $(LOCAL_PATH)/tools/grit/grit/node/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/base.py $(LOCAL_PATH)/tools/grit/grit/node/custom/__init__.py $(LOCAL_PATH)/tools/grit/grit/node/custom/filename.py $(LOCAL_PATH)/tools/grit/grit/node/empty.py $(LOCAL_PATH)/tools/grit/grit/node/include.py $(LOCAL_PATH)/tools/grit/grit/node/io.py $(LOCAL_PATH)/tools/grit/grit/node/mapping.py $(LOCAL_PATH)/tools/grit/grit/node/message.py $(LOCAL_PATH)/tools/grit/grit/node/misc.py $(LOCAL_PATH)/tools/grit/grit/node/structure.py $(LOCAL_PATH)/tools/grit/grit/node/variant.py $(LOCAL_PATH)/tools/grit/grit/pseudo.py $(LOCAL_PATH)/tools/grit/grit/pseudo_rtl.py $(LOCAL_PATH)/tools/grit/grit/scons.py $(LOCAL_PATH)/tools/grit/grit/shortcuts.py $(LOCAL_PATH)/tools/grit/grit/shortcuts_unittests.py $(LOCAL_PATH)/tools/grit/grit/tclib.py $(LOCAL_PATH)/tools/grit/grit/test_suite_all.py $(LOCAL_PATH)/tools/grit/grit/tool/__init__.py $(LOCAL_PATH)/tools/grit/grit/tool/android2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/build.py $(LOCAL_PATH)/tools/grit/grit/tool/buildinfo.py $(LOCAL_PATH)/tools/grit/grit/tool/count.py $(LOCAL_PATH)/tools/grit/grit/tool/diff_structures.py $(LOCAL_PATH)/tools/grit/grit/tool/interface.py $(LOCAL_PATH)/tools/grit/grit/tool/menu_from_parts.py $(LOCAL_PATH)/tools/grit/grit/tool/newgrd.py $(LOCAL_PATH)/tools/grit/grit/tool/postprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/preprocess_interface.py $(LOCAL_PATH)/tools/grit/grit/tool/rc2grd.py $(LOCAL_PATH)/tools/grit/grit/tool/resize.py $(LOCAL_PATH)/tools/grit/grit/tool/test.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_postprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/toolbar_preprocess.py $(LOCAL_PATH)/tools/grit/grit/tool/transl2tc.py $(LOCAL_PATH)/tools/grit/grit/tool/unit.py $(LOCAL_PATH)/tools/grit/grit/tool/xmb.py $(LOCAL_PATH)/tools/grit/grit/util.py $(LOCAL_PATH)/tools/grit/grit/xtb_reader.py $(LOCAL_PATH)/tools/grit/grit_info.py $(GYP_TARGET_DEPENDENCIES)
+ @echo "Gyp action: Generating resources from ui_unscaled_resources.grd ($@)"
+ $(hide)cd $(gyp_local_path)/ui/resources; mkdir -p $(gyp_shared_intermediate_dir)/ui/ui_resources/grit $(gyp_shared_intermediate_dir)/ui/ui_resources; python ../../tools/grit/grit.py -i ui_unscaled_resources.grd build -f ../../tools/gritsettings/resource_ids -o "$(gyp_shared_intermediate_dir)/ui/ui_resources" -D _chromium -E "CHROMIUM_BUILD=chromium" -t android -E "ANDROID_JAVA_TAGGED_ONLY=true" -D enable_printing -D use_concatenated_impulse_responses
+
+$(gyp_shared_intermediate_dir)/ui/ui_resources/ui_unscaled_resources.rc: $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h ;
+
+
+GYP_GENERATED_OUTPUTS := \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources.h \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources_map.cc \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_resources_map.h \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/ui_resources_100_percent.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/ui_resources_200_percent.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources.h \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources_map.cc \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/webui_resources_map.h \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/webui_resources.pak \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/grit/ui_unscaled_resources.h \
+ $(gyp_shared_intermediate_dir)/ui/ui_resources/ui_unscaled_resources.rc
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_resources_ui_resources_gyp
+
+# Alias gyp target name.
+.PHONY: ui_resources
+ui_resources: ui_resources_ui_resources_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+ $(hide) echo "Gyp timestamp: $@"
+ $(hide) mkdir -p $(dir $@)
+ $(hide) touch $@
diff --git a/ui/shell_dialogs/shell_dialogs.target.darwin-arm.mk b/ui/shell_dialogs/shell_dialogs.target.darwin-arm.mk
index 1e5f46558b..e47c94d06d 100644
--- a/ui/shell_dialogs/shell_dialogs.target.darwin-arm.mk
+++ b/ui/shell_dialogs/shell_dialogs.target.darwin-arm.mk
@@ -98,9 +98,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -110,6 +108,7 @@ MY_DEFS_Debug := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -221,9 +220,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -233,6 +230,7 @@ MY_DEFS_Release := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/shell_dialogs/shell_dialogs.target.darwin-mips.mk b/ui/shell_dialogs/shell_dialogs.target.darwin-mips.mk
index 9cf2eea255..e4bf11e87c 100644
--- a/ui/shell_dialogs/shell_dialogs.target.darwin-mips.mk
+++ b/ui/shell_dialogs/shell_dialogs.target.darwin-mips.mk
@@ -97,9 +97,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -109,6 +107,7 @@ MY_DEFS_Debug := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -219,9 +218,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -231,6 +228,7 @@ MY_DEFS_Release := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/shell_dialogs/shell_dialogs.target.darwin-x86.mk b/ui/shell_dialogs/shell_dialogs.target.darwin-x86.mk
index af48ad69c5..0fe202e799 100644
--- a/ui/shell_dialogs/shell_dialogs.target.darwin-x86.mk
+++ b/ui/shell_dialogs/shell_dialogs.target.darwin-x86.mk
@@ -99,9 +99,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -110,6 +108,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -221,9 +220,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -232,6 +229,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/shell_dialogs/shell_dialogs.target.darwin-x86_64.mk b/ui/shell_dialogs/shell_dialogs.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..0fe6dbb282
--- /dev/null
+++ b/ui/shell_dialogs/shell_dialogs.target.darwin-x86_64.mk
@@ -0,0 +1,347 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_shell_dialogs_shell_dialogs_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,skia_skia_gyp)/skia.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a \
+ $(call intermediates-dir-for,GYP,ui_base_strings_ui_strings_gyp)/ui_strings.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,ui_base_ui_base_gyp)/ui_base_ui_base_gyp.a \
+ $(call intermediates-dir-for,GYP,ui_base_ui_base_jni_headers_gyp)/ui_base_jni_headers.stamp
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/shell_dialogs/android/shell_dialogs_jni_registrar.cc \
+ ui/shell_dialogs/base_shell_dialog.cc \
+ ui/shell_dialogs/linux_shell_dialog.cc \
+ ui/shell_dialogs/select_file_dialog.cc \
+ ui/shell_dialogs/select_file_dialog_android.cc \
+ ui/shell_dialogs/select_file_dialog_factory.cc \
+ ui/shell_dialogs/select_file_policy.cc \
+ ui/shell_dialogs/selected_file_info.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DSHELL_DIALOGS_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(gyp_shared_intermediate_dir)/ui \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DSHELL_DIALOGS_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(gyp_shared_intermediate_dir)/ui \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp \
+ ui_base_ui_base_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_shell_dialogs_shell_dialogs_gyp
+
+# Alias gyp target name.
+.PHONY: shell_dialogs
+shell_dialogs: ui_shell_dialogs_shell_dialogs_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/shell_dialogs/shell_dialogs.target.linux-arm.mk b/ui/shell_dialogs/shell_dialogs.target.linux-arm.mk
index 1e5f46558b..e47c94d06d 100644
--- a/ui/shell_dialogs/shell_dialogs.target.linux-arm.mk
+++ b/ui/shell_dialogs/shell_dialogs.target.linux-arm.mk
@@ -98,9 +98,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -110,6 +108,7 @@ MY_DEFS_Debug := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -221,9 +220,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -233,6 +230,7 @@ MY_DEFS_Release := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/shell_dialogs/shell_dialogs.target.linux-mips.mk b/ui/shell_dialogs/shell_dialogs.target.linux-mips.mk
index 9cf2eea255..e4bf11e87c 100644
--- a/ui/shell_dialogs/shell_dialogs.target.linux-mips.mk
+++ b/ui/shell_dialogs/shell_dialogs.target.linux-mips.mk
@@ -97,9 +97,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -109,6 +107,7 @@ MY_DEFS_Debug := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -219,9 +218,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -231,6 +228,7 @@ MY_DEFS_Release := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/shell_dialogs/shell_dialogs.target.linux-x86.mk b/ui/shell_dialogs/shell_dialogs.target.linux-x86.mk
index af48ad69c5..0fe202e799 100644
--- a/ui/shell_dialogs/shell_dialogs.target.linux-x86.mk
+++ b/ui/shell_dialogs/shell_dialogs.target.linux-x86.mk
@@ -99,9 +99,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -110,6 +108,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -221,9 +220,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -232,6 +229,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/shell_dialogs/shell_dialogs.target.linux-x86_64.mk b/ui/shell_dialogs/shell_dialogs.target.linux-x86_64.mk
new file mode 100644
index 0000000000..0fe6dbb282
--- /dev/null
+++ b/ui/shell_dialogs/shell_dialogs.target.linux-x86_64.mk
@@ -0,0 +1,347 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_shell_dialogs_shell_dialogs_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,skia_skia_gyp)/skia.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a \
+ $(call intermediates-dir-for,GYP,ui_base_strings_ui_strings_gyp)/ui_strings.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,ui_base_ui_base_gyp)/ui_base_ui_base_gyp.a \
+ $(call intermediates-dir-for,GYP,ui_base_ui_base_jni_headers_gyp)/ui_base_jni_headers.stamp
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/shell_dialogs/android/shell_dialogs_jni_registrar.cc \
+ ui/shell_dialogs/base_shell_dialog.cc \
+ ui/shell_dialogs/linux_shell_dialog.cc \
+ ui/shell_dialogs/select_file_dialog.cc \
+ ui/shell_dialogs/select_file_dialog_android.cc \
+ ui/shell_dialogs/select_file_dialog_factory.cc \
+ ui/shell_dialogs/select_file_policy.cc \
+ ui/shell_dialogs/selected_file_info.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DSHELL_DIALOGS_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(gyp_shared_intermediate_dir)/ui \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DSHELL_DIALOGS_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(gyp_shared_intermediate_dir)/ui \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(gyp_shared_intermediate_dir)/ui/app_locale_settings \
+ $(gyp_shared_intermediate_dir)/ui/ui_strings \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp \
+ ui_base_ui_base_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_shell_dialogs_shell_dialogs_gyp
+
+# Alias gyp target name.
+.PHONY: shell_dialogs
+shell_dialogs: ui_shell_dialogs_shell_dialogs_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/snapshot/snapshot.target.darwin-arm.mk b/ui/snapshot/snapshot.target.darwin-arm.mk
index 1e52ce38b8..6d28f20ffa 100644
--- a/ui/snapshot/snapshot.target.darwin-arm.mk
+++ b/ui/snapshot/snapshot.target.darwin-arm.mk
@@ -89,9 +89,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -101,6 +99,7 @@ MY_DEFS_Debug := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -210,9 +209,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -222,6 +219,7 @@ MY_DEFS_Release := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/snapshot/snapshot.target.darwin-mips.mk b/ui/snapshot/snapshot.target.darwin-mips.mk
index 36376d32b9..b67cb9eebe 100644
--- a/ui/snapshot/snapshot.target.darwin-mips.mk
+++ b/ui/snapshot/snapshot.target.darwin-mips.mk
@@ -88,9 +88,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -100,6 +98,7 @@ MY_DEFS_Debug := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -208,9 +207,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -220,6 +217,7 @@ MY_DEFS_Release := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/snapshot/snapshot.target.darwin-x86.mk b/ui/snapshot/snapshot.target.darwin-x86.mk
index a5574ba38b..14c3ad78b1 100644
--- a/ui/snapshot/snapshot.target.darwin-x86.mk
+++ b/ui/snapshot/snapshot.target.darwin-x86.mk
@@ -90,9 +90,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -101,6 +99,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -210,9 +209,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -221,6 +218,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/snapshot/snapshot.target.darwin-x86_64.mk b/ui/snapshot/snapshot.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..a2b38d6e55
--- /dev/null
+++ b/ui/snapshot/snapshot.target.darwin-x86_64.mk
@@ -0,0 +1,334 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_snapshot_snapshot_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,skia_skia_gyp)/skia.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,ui_base_ui_base_gyp)/ui_base_ui_base_gyp.a
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/snapshot/snapshot_android.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DSNAPSHOT_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(LOCAL_PATH)/ui \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DSNAPSHOT_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(LOCAL_PATH)/ui \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp \
+ ui_base_ui_base_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_snapshot_snapshot_gyp
+
+# Alias gyp target name.
+.PHONY: snapshot
+snapshot: ui_snapshot_snapshot_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/snapshot/snapshot.target.linux-arm.mk b/ui/snapshot/snapshot.target.linux-arm.mk
index 1e52ce38b8..6d28f20ffa 100644
--- a/ui/snapshot/snapshot.target.linux-arm.mk
+++ b/ui/snapshot/snapshot.target.linux-arm.mk
@@ -89,9 +89,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -101,6 +99,7 @@ MY_DEFS_Debug := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -210,9 +209,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -222,6 +219,7 @@ MY_DEFS_Release := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/snapshot/snapshot.target.linux-mips.mk b/ui/snapshot/snapshot.target.linux-mips.mk
index 36376d32b9..b67cb9eebe 100644
--- a/ui/snapshot/snapshot.target.linux-mips.mk
+++ b/ui/snapshot/snapshot.target.linux-mips.mk
@@ -88,9 +88,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -100,6 +98,7 @@ MY_DEFS_Debug := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -208,9 +207,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -220,6 +217,7 @@ MY_DEFS_Release := \
'-DPOSIX_AVOID_MMAP' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/snapshot/snapshot.target.linux-x86.mk b/ui/snapshot/snapshot.target.linux-x86.mk
index a5574ba38b..14c3ad78b1 100644
--- a/ui/snapshot/snapshot.target.linux-x86.mk
+++ b/ui/snapshot/snapshot.target.linux-x86.mk
@@ -90,9 +90,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -101,6 +99,7 @@ MY_DEFS_Debug := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -210,9 +209,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -221,6 +218,7 @@ MY_DEFS_Release := \
'-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
'-DU_USING_ICU_NAMESPACE=0' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/snapshot/snapshot.target.linux-x86_64.mk b/ui/snapshot/snapshot.target.linux-x86_64.mk
new file mode 100644
index 0000000000..a2b38d6e55
--- /dev/null
+++ b/ui/snapshot/snapshot.target.linux-x86_64.mk
@@ -0,0 +1,334 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_snapshot_snapshot_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,skia_skia_gyp)/skia.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,ui_base_ui_base_gyp)/ui_base_ui_base_gyp.a
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/snapshot/snapshot_android.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DSNAPSHOT_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(LOCAL_PATH)/ui \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DSNAPSHOT_IMPLEMENTATION' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(LOCAL_PATH)/ui \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp \
+ ui_base_ui_base_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_snapshot_snapshot_gyp
+
+# Alias gyp target name.
+.PHONY: snapshot
+snapshot: ui_snapshot_snapshot_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/surface/surface.target.darwin-arm.mk b/ui/surface/surface.target.darwin-arm.mk
index 8dbd5b86f4..68fb4644f7 100644
--- a/ui/surface/surface.target.darwin-arm.mk
+++ b/ui/surface/surface.target.darwin-arm.mk
@@ -93,9 +93,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -106,6 +104,7 @@ MY_DEFS_Debug := \
'-DU_USING_ICU_NAMESPACE=0' \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -220,9 +219,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -233,6 +230,7 @@ MY_DEFS_Release := \
'-DU_USING_ICU_NAMESPACE=0' \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/surface/surface.target.darwin-mips.mk b/ui/surface/surface.target.darwin-mips.mk
index 2daa546c9e..cc1205fbcc 100644
--- a/ui/surface/surface.target.darwin-mips.mk
+++ b/ui/surface/surface.target.darwin-mips.mk
@@ -92,9 +92,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -105,6 +103,7 @@ MY_DEFS_Debug := \
'-DU_USING_ICU_NAMESPACE=0' \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -218,9 +217,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -231,6 +228,7 @@ MY_DEFS_Release := \
'-DU_USING_ICU_NAMESPACE=0' \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/surface/surface.target.darwin-x86.mk b/ui/surface/surface.target.darwin-x86.mk
index 66ff2b8093..2adf8ea9e9 100644
--- a/ui/surface/surface.target.darwin-x86.mk
+++ b/ui/surface/surface.target.darwin-x86.mk
@@ -94,9 +94,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -106,6 +104,7 @@ MY_DEFS_Debug := \
'-DU_USING_ICU_NAMESPACE=0' \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -220,9 +219,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -232,6 +229,7 @@ MY_DEFS_Release := \
'-DU_USING_ICU_NAMESPACE=0' \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/surface/surface.target.darwin-x86_64.mk b/ui/surface/surface.target.darwin-x86_64.mk
new file mode 100644
index 0000000000..4f77ccfeec
--- /dev/null
+++ b/ui/surface/surface.target.darwin-x86_64.mk
@@ -0,0 +1,349 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_surface_surface_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,skia_skia_gyp)/skia.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,ui_base_ui_base_gyp)/ui_base_ui_base_gyp.a \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,ui_gl_gl_gyp)/ui_gl_gl_gyp.a
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/surface/transport_dib.cc \
+ ui/surface/transport_dib_posix.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -Wno-unknown-pragmas \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DSURFACE_IMPLEMENTATION' \
+ '-DMEDIA_DISABLE_LIBVPX' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DMESA_EGL_NO_X11_HEADERS' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH)/third_party/khronos \
+ $(LOCAL_PATH)/gpu \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(gyp_shared_intermediate_dir)/ui/gl \
+ $(LOCAL_PATH)/third_party/mesa/src/include \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -Wno-unknown-pragmas \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DSURFACE_IMPLEMENTATION' \
+ '-DMEDIA_DISABLE_LIBVPX' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DMESA_EGL_NO_X11_HEADERS' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH)/third_party/khronos \
+ $(LOCAL_PATH)/gpu \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(gyp_shared_intermediate_dir)/ui/gl \
+ $(LOCAL_PATH)/third_party/mesa/src/include \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp \
+ ui_base_ui_base_gyp \
+ ui_gl_gl_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_surface_surface_gyp
+
+# Alias gyp target name.
+.PHONY: surface
+surface: ui_surface_surface_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/surface/surface.target.linux-arm.mk b/ui/surface/surface.target.linux-arm.mk
index 8dbd5b86f4..68fb4644f7 100644
--- a/ui/surface/surface.target.linux-arm.mk
+++ b/ui/surface/surface.target.linux-arm.mk
@@ -93,9 +93,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -106,6 +104,7 @@ MY_DEFS_Debug := \
'-DU_USING_ICU_NAMESPACE=0' \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -220,9 +219,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -233,6 +230,7 @@ MY_DEFS_Release := \
'-DU_USING_ICU_NAMESPACE=0' \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/surface/surface.target.linux-mips.mk b/ui/surface/surface.target.linux-mips.mk
index 2daa546c9e..cc1205fbcc 100644
--- a/ui/surface/surface.target.linux-mips.mk
+++ b/ui/surface/surface.target.linux-mips.mk
@@ -92,9 +92,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -105,6 +103,7 @@ MY_DEFS_Debug := \
'-DU_USING_ICU_NAMESPACE=0' \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -218,9 +217,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -231,6 +228,7 @@ MY_DEFS_Release := \
'-DU_USING_ICU_NAMESPACE=0' \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/surface/surface.target.linux-x86.mk b/ui/surface/surface.target.linux-x86.mk
index 66ff2b8093..2adf8ea9e9 100644
--- a/ui/surface/surface.target.linux-x86.mk
+++ b/ui/surface/surface.target.linux-x86.mk
@@ -94,9 +94,7 @@ MY_DEFS_Debug := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -106,6 +104,7 @@ MY_DEFS_Debug := \
'-DU_USING_ICU_NAMESPACE=0' \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
@@ -220,9 +219,7 @@ MY_DEFS_Release := \
'-DGR_GL_IGNORE_ES3_MSAA=0' \
'-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
'-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
- '-DSK_SUPPORT_LEGACY_COMPATIBLEDEVICE_CONFIG=1' \
'-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
- '-DSK_SUPPORT_LEGACY_READPIXELSCONFIG' \
'-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
'-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
'-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
@@ -232,6 +229,7 @@ MY_DEFS_Release := \
'-DU_USING_ICU_NAMESPACE=0' \
'-DMESA_EGL_NO_X11_HEADERS' \
'-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
'-D__STDC_CONSTANT_MACROS' \
'-D__STDC_FORMAT_MACROS' \
'-DANDROID' \
diff --git a/ui/surface/surface.target.linux-x86_64.mk b/ui/surface/surface.target.linux-x86_64.mk
new file mode 100644
index 0000000000..4f77ccfeec
--- /dev/null
+++ b/ui/surface/surface.target.linux-x86_64.mk
@@ -0,0 +1,349 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := ui_surface_surface_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+ $(call intermediates-dir-for,GYP,skia_skia_gyp)/skia.stamp \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_library_gyp)/skia_skia_library_gyp.a \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,ui_base_ui_base_gyp)/ui_base_ui_base_gyp.a \
+ $(call intermediates-dir-for,STATIC_LIBRARIES,ui_gl_gl_gyp)/ui_gl_gl_gyp.a
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+ ui/surface/transport_dib.cc \
+ ui/surface/transport_dib_posix.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Debug := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -Wno-unknown-pragmas \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -g \
+ -fomit-frame-pointer \
+ -fdata-sections \
+ -ffunction-sections \
+ -funwind-tables
+
+MY_DEFS_Debug := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DSURFACE_IMPLEMENTATION' \
+ '-DMEDIA_DISABLE_LIBVPX' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DMESA_EGL_NO_X11_HEADERS' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+ '-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+ '-D_DEBUG'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Debug := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH)/third_party/khronos \
+ $(LOCAL_PATH)/gpu \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(gyp_shared_intermediate_dir)/ui/gl \
+ $(LOCAL_PATH)/third_party/mesa/src/include \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Debug := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS_Release := \
+ -fstack-protector \
+ --param=ssp-buffer-size=4 \
+ -Werror \
+ -fno-exceptions \
+ -fno-strict-aliasing \
+ -Wall \
+ -Wno-unused-parameter \
+ -Wno-missing-field-initializers \
+ -fvisibility=hidden \
+ -pipe \
+ -fPIC \
+ -Wno-unused-local-typedefs \
+ -Wno-unknown-pragmas \
+ -m64 \
+ -march=x86-64 \
+ -fuse-ld=gold \
+ -ffunction-sections \
+ -funwind-tables \
+ -g \
+ -fstack-protector \
+ -fno-short-enums \
+ -finline-limit=64 \
+ -Wa,--noexecstack \
+ -U_FORTIFY_SOURCE \
+ -Wno-extra \
+ -Wno-ignored-qualifiers \
+ -Wno-type-limits \
+ -Wno-unused-but-set-variable \
+ -Os \
+ -fno-ident \
+ -fdata-sections \
+ -ffunction-sections \
+ -fomit-frame-pointer \
+ -funwind-tables
+
+MY_DEFS_Release := \
+ '-DV8_DEPRECATION_WARNINGS' \
+ '-DBLINK_SCALE_FILTERS_AT_RECORD_TIME' \
+ '-D_FILE_OFFSET_BITS=64' \
+ '-DNO_TCMALLOC' \
+ '-DDISABLE_NACL' \
+ '-DCHROMIUM_BUILD' \
+ '-DUSE_LIBJPEG_TURBO=1' \
+ '-DUSE_PROPRIETARY_CODECS' \
+ '-DENABLE_CONFIGURATION_POLICY' \
+ '-DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY' \
+ '-DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE' \
+ '-DENABLE_EGLIMAGE=1' \
+ '-DCLD_VERSION=1' \
+ '-DENABLE_PRINTING=1' \
+ '-DENABLE_MANAGED_USERS=1' \
+ '-DSURFACE_IMPLEMENTATION' \
+ '-DMEDIA_DISABLE_LIBVPX' \
+ '-DSK_ENABLE_INST_COUNT=0' \
+ '-DSK_SUPPORT_GPU=1' \
+ '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+ '-DSK_ENABLE_LEGACY_API_ALIASING=1' \
+ '-DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1' \
+ '-DGR_GL_IGNORE_ES3_MSAA=0' \
+ '-DSK_SUPPORT_LEGACY_LAYERRASTERIZER_API=1' \
+ '-DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT' \
+ '-DSK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS=1' \
+ '-DSK_SUPPORT_LEGACY_GETCLIPTYPE' \
+ '-DSK_SUPPORT_LEGACY_GETTOTALCLIP' \
+ '-DSK_SUPPORT_LEGACY_GETTOPDEVICE' \
+ '-DSK_BUILD_FOR_ANDROID' \
+ '-DSK_USE_POSIX_THREADS' \
+ '-DSK_DEFERRED_CANVAS_USES_FACTORIES=1' \
+ '-DPOSIX_AVOID_MMAP' \
+ '-DU_USING_ICU_NAMESPACE=0' \
+ '-DMESA_EGL_NO_X11_HEADERS' \
+ '-DUSE_OPENSSL=1' \
+ '-DUSE_OPENSSL_CERTS=1' \
+ '-D__STDC_CONSTANT_MACROS' \
+ '-D__STDC_FORMAT_MACROS' \
+ '-DANDROID' \
+ '-D__GNU_SOURCE=1' \
+ '-DUSE_STLPORT=1' \
+ '-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+ '-DCHROME_BUILD_ID=""' \
+ '-DNDEBUG' \
+ '-DNVALGRIND' \
+ '-DDYNAMIC_ANNOTATIONS_ENABLED=0' \
+ '-D_FORTIFY_SOURCE=2'
+
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES_Release := \
+ $(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+ $(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+ $(LOCAL_PATH)/third_party/khronos \
+ $(LOCAL_PATH)/gpu \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/skia/config \
+ $(LOCAL_PATH)/third_party/skia/src/core \
+ $(LOCAL_PATH)/third_party/skia/include/core \
+ $(LOCAL_PATH)/third_party/skia/include/effects \
+ $(LOCAL_PATH)/third_party/skia/include/pdf \
+ $(LOCAL_PATH)/third_party/skia/include/gpu \
+ $(LOCAL_PATH)/third_party/skia/include/lazy \
+ $(LOCAL_PATH)/third_party/skia/include/pathops \
+ $(LOCAL_PATH)/third_party/skia/include/pipe \
+ $(LOCAL_PATH)/third_party/skia/include/ports \
+ $(LOCAL_PATH)/third_party/skia/include/utils \
+ $(LOCAL_PATH)/skia/ext \
+ $(PWD)/external/icu4c/common \
+ $(PWD)/external/icu4c/i18n \
+ $(gyp_shared_intermediate_dir)/ui/gl \
+ $(LOCAL_PATH)/third_party/mesa/src/include \
+ $(PWD)/frameworks/wilhelm/include \
+ $(PWD)/bionic \
+ $(PWD)/external/stlport/stlport
+
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS_Release := \
+ -fno-rtti \
+ -fno-threadsafe-statics \
+ -fvisibility-inlines-hidden \
+ -Wsign-compare \
+ -Wno-non-virtual-dtor \
+ -Wno-sign-promo
+
+
+LOCAL_CFLAGS := $(MY_CFLAGS_$(GYP_CONFIGURATION)) $(MY_DEFS_$(GYP_CONFIGURATION))
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES_$(GYP_CONFIGURATION))
+LOCAL_CPPFLAGS := $(LOCAL_CPPFLAGS_$(GYP_CONFIGURATION))
+LOCAL_ASFLAGS := $(LOCAL_CFLAGS)
+### Rules for final target.
+
+LOCAL_LDFLAGS_Debug := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel \
+ -Wl,-O1 \
+ -Wl,--as-needed
+
+
+LOCAL_LDFLAGS_Release := \
+ -Wl,--fatal-warnings \
+ -Wl,-z,now \
+ -Wl,-z,relro \
+ -Wl,-z,noexecstack \
+ -fPIC \
+ -m64 \
+ -fuse-ld=gold \
+ -nostdlib \
+ -Wl,--no-undefined \
+ -Wl,--exclude-libs=ALL \
+ -Wl,-O1 \
+ -Wl,--as-needed \
+ -Wl,--gc-sections \
+ -Wl,--warn-shared-textrel
+
+
+LOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))
+
+LOCAL_STATIC_LIBRARIES := \
+ skia_skia_library_gyp \
+ ui_base_ui_base_gyp \
+ ui_gl_gl_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+ libstlport \
+ libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: ui_surface_surface_gyp
+
+# Alias gyp target name.
+.PHONY: surface
+surface: ui_surface_surface_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/ui/ui_unittests.gyp b/ui/ui_unittests.gyp
index e311335f7e..f09b35bb85 100644
--- a/ui/ui_unittests.gyp
+++ b/ui/ui_unittests.gyp
@@ -179,9 +179,9 @@
],
# The ResourceBundle unittest expects a locale.pak file to exist in
# the bundle for English-US. Copy it in from where it was generated
- # by ui_strings.gyp:ui_unittest_strings.
+ # by ui_resources.gyp:ui_test_pak.
'mac_bundle_resources': [
- '<(PRODUCT_DIR)/ui_unittests_strings/en.lproj/locale.pak',
+ '<(PRODUCT_DIR)/ui/en.lproj/locale.pak',
],
}],
['OS == "win"', {
@@ -234,11 +234,6 @@
'../testing/android/native_test.gyp:native_test_native_code',
],
}],
- ['desktop_linux == 1 or chromeos == 1 or OS == "ios"', {
- 'dependencies': [
- 'base/strings/ui_strings.gyp:ui_unittest_strings',
- ],
- }],
['use_pango == 1', {
'dependencies': [
'../build/linux/system.gyp:fontconfig',
@@ -290,10 +285,6 @@
'gfx/gfx.gyp:gfx_test_support',
'ui_unittests_bundle',
],
- }, { # OS!="mac"
- 'dependencies': [
- 'base/strings/ui_strings.gyp:ui_unittest_strings',
- ],
}],
['use_aura==1 or toolkit_views==1', {
'sources': [
diff --git a/ui/views/DEPS b/ui/views/DEPS
index 065ceac4df..b29fbd88a0 100644
--- a/ui/views/DEPS
+++ b/ui/views/DEPS
@@ -8,6 +8,7 @@ include_rules = [
"+ui/aura",
"+ui/base",
"+ui/compositor",
+ "+ui/display",
"+ui/events",
"+ui/gfx",
"+ui/gl/gl_surface.h", # To initialize GL for tests.
diff --git a/ui/views/accessibility/native_view_accessibility_win.cc b/ui/views/accessibility/native_view_accessibility_win.cc
index ead097f51e..10c17ff3d6 100644
--- a/ui/views/accessibility/native_view_accessibility_win.cc
+++ b/ui/views/accessibility/native_view_accessibility_win.cc
@@ -837,7 +837,7 @@ STDMETHODIMP NativeViewAccessibilityWin::get_states(AccessibleStates* states) {
// in IAccessible2. If any more are added, we may want to
// add a helper function like MSAAState.
*states = IA2_STATE_OPAQUE;
- if (state.state & ui::AX_STATE_EDITABLE)
+ if (state.HasStateFlag(ui::AX_STATE_EDITABLE))
*states |= IA2_STATE_EDITABLE;
return S_OK;
@@ -1245,40 +1245,40 @@ int32 NativeViewAccessibilityWin::MSAARole(ui::AXRole role) {
}
}
-int32 NativeViewAccessibilityWin::MSAAState(uint32 state) {
+int32 NativeViewAccessibilityWin::MSAAState(const ui::AXViewState& state) {
// This maps MSAA states for get_accState(). See also the IAccessible2
// interface get_states().
int32 msaa_state = 0;
- if (state & ui::AX_STATE_CHECKED)
+ if (state.HasStateFlag(ui::AX_STATE_CHECKED))
msaa_state |= STATE_SYSTEM_CHECKED;
- if (state & ui::AX_STATE_COLLAPSED)
+ if (state.HasStateFlag(ui::AX_STATE_COLLAPSED))
msaa_state |= STATE_SYSTEM_COLLAPSED;
- if (state & ui::AX_STATE_DEFAULT)
+ if (state.HasStateFlag(ui::AX_STATE_DEFAULT))
msaa_state |= STATE_SYSTEM_DEFAULT;
- if (state & ui::AX_STATE_EXPANDED)
+ if (state.HasStateFlag(ui::AX_STATE_EXPANDED))
msaa_state |= STATE_SYSTEM_EXPANDED;
- if (state & ui::AX_STATE_HASPOPUP)
+ if (state.HasStateFlag(ui::AX_STATE_HASPOPUP))
msaa_state |= STATE_SYSTEM_HASPOPUP;
- if (state & ui::AX_STATE_HOVERED)
+ if (state.HasStateFlag(ui::AX_STATE_HOVERED))
msaa_state |= STATE_SYSTEM_HOTTRACKED;
- if (state & ui::AX_STATE_INVISIBLE)
+ if (state.HasStateFlag(ui::AX_STATE_INVISIBLE))
msaa_state |= STATE_SYSTEM_INVISIBLE;
- if (state & ui::AX_STATE_LINKED)
+ if (state.HasStateFlag(ui::AX_STATE_LINKED))
msaa_state |= STATE_SYSTEM_LINKED;
- if (state & ui::AX_STATE_OFFSCREEN)
+ if (state.HasStateFlag(ui::AX_STATE_OFFSCREEN))
msaa_state |= STATE_SYSTEM_OFFSCREEN;
- if (state & ui::AX_STATE_PRESSED)
+ if (state.HasStateFlag(ui::AX_STATE_PRESSED))
msaa_state |= STATE_SYSTEM_PRESSED;
- if (state & ui::AX_STATE_PROTECTED)
+ if (state.HasStateFlag(ui::AX_STATE_PROTECTED))
msaa_state |= STATE_SYSTEM_PROTECTED;
- if (state & ui::AX_STATE_READ_ONLY)
+ if (state.HasStateFlag(ui::AX_STATE_READ_ONLY))
msaa_state |= STATE_SYSTEM_READONLY;
- if (state & ui::AX_STATE_SELECTED)
+ if (state.HasStateFlag(ui::AX_STATE_SELECTED))
msaa_state |= STATE_SYSTEM_SELECTED;
- if (state & ui::AX_STATE_FOCUSED)
+ if (state.HasStateFlag(ui::AX_STATE_FOCUSED))
msaa_state |= STATE_SYSTEM_FOCUSED;
- if (state & ui::AX_STATE_DISABLED)
+ if (state.HasStateFlag(ui::AX_STATE_DISABLED))
msaa_state |= STATE_SYSTEM_UNAVAILABLE;
return msaa_state;
}
@@ -1339,7 +1339,7 @@ void NativeViewAccessibilityWin::SetState(
// Add on any view-specific states.
ui::AXViewState view_state;
view->GetAccessibleState(&view_state);
- msaa_state->lVal |= MSAAState(view_state.state);
+ msaa_state->lVal |= MSAAState(view_state);
}
base::string16 NativeViewAccessibilityWin::TextForIAccessibleText() {
diff --git a/ui/views/accessibility/native_view_accessibility_win.h b/ui/views/accessibility/native_view_accessibility_win.h
index ffb9a4dadf..2c8c1fee76 100644
--- a/ui/views/accessibility/native_view_accessibility_win.h
+++ b/ui/views/accessibility/native_view_accessibility_win.h
@@ -337,17 +337,17 @@ NativeViewAccessibilityWin
// Static methods
- // Returns a conversion from the event (as defined in accessibility_types.h)
+ // Returns a conversion from the event (as defined in ax_enums.idl)
// to an MSAA event.
static int32 MSAAEvent(ui::AXEvent event);
- // Returns a conversion from the Role (as defined in accessibility_types.h)
+ // Returns a conversion from the Role (as defined in ax_enums.idl)
// to an MSAA role.
static int32 MSAARole(ui::AXRole role);
- // Returns a conversion from the State (as defined in accessibility_types.h)
+ // Returns a conversion from the State (as defined in ax_enums.idl)
// to MSAA states set.
- static int32 MSAAState(uint32 state);
+ static int32 MSAAState(const ui::AXViewState& state);
protected:
NativeViewAccessibilityWin();
diff --git a/ui/views/bubble/bubble_delegate.cc b/ui/views/bubble/bubble_delegate.cc
index 7ba8862274..9a8fe31fa1 100644
--- a/ui/views/bubble/bubble_delegate.cc
+++ b/ui/views/bubble/bubble_delegate.cc
@@ -85,6 +85,8 @@ BubbleDelegateView::BubbleDelegateView(
}
BubbleDelegateView::~BubbleDelegateView() {
+ if (GetWidget())
+ GetWidget()->RemoveObserver(this);
SetLayoutManager(NULL);
SetAnchorView(NULL);
}
diff --git a/ui/views/controls/button/checkbox.cc b/ui/views/controls/button/checkbox.cc
index 2389b62bbf..22c5f88e2d 100644
--- a/ui/views/controls/button/checkbox.cc
+++ b/ui/views/controls/button/checkbox.cc
@@ -97,7 +97,8 @@ const char* Checkbox::GetClassName() const {
void Checkbox::GetAccessibleState(ui::AXViewState* state) {
LabelButton::GetAccessibleState(state);
state->role = ui::AX_ROLE_CHECK_BOX;
- state->state = checked() ? ui::AX_STATE_CHECKED : 0;
+ if (checked())
+ state->AddStateFlag(ui::AX_STATE_CHECKED);
}
void Checkbox::OnFocus() {
diff --git a/ui/views/controls/button/custom_button.cc b/ui/views/controls/button/custom_button.cc
index 4890b1373a..0e237a3127 100644
--- a/ui/views/controls/button/custom_button.cc
+++ b/ui/views/controls/button/custom_button.cc
@@ -288,13 +288,13 @@ void CustomButton::GetAccessibleState(ui::AXViewState* state) {
Button::GetAccessibleState(state);
switch (state_) {
case STATE_HOVERED:
- state->state = ui::AX_STATE_HOVERED;
+ state->AddStateFlag(ui::AX_STATE_HOVERED);
break;
case STATE_PRESSED:
- state->state = ui::AX_STATE_PRESSED;
+ state->AddStateFlag(ui::AX_STATE_PRESSED);
break;
case STATE_DISABLED:
- state->state = ui::AX_STATE_DISABLED;
+ state->AddStateFlag(ui::AX_STATE_DISABLED);
break;
case STATE_NORMAL:
case STATE_COUNT:
diff --git a/ui/views/controls/button/menu_button.cc b/ui/views/controls/button/menu_button.cc
index 0f6a393186..83af3c9f2e 100644
--- a/ui/views/controls/button/menu_button.cc
+++ b/ui/views/controls/button/menu_button.cc
@@ -244,7 +244,7 @@ void MenuButton::GetAccessibleState(ui::AXViewState* state) {
CustomButton::GetAccessibleState(state);
state->role = ui::AX_ROLE_POP_UP_BUTTON;
state->default_action = l10n_util::GetStringUTF16(IDS_APP_ACCACTION_PRESS);
- state->state = ui::AX_STATE_HASPOPUP;
+ state->AddStateFlag(ui::AX_STATE_HASPOPUP);
}
void MenuButton::PaintMenuMarker(gfx::Canvas* canvas) {
diff --git a/ui/views/controls/label.cc b/ui/views/controls/label.cc
index f35d119b4f..7145323fa1 100644
--- a/ui/views/controls/label.cc
+++ b/ui/views/controls/label.cc
@@ -291,7 +291,7 @@ bool Label::GetTooltipText(const gfx::Point& p, base::string16* tooltip) const {
void Label::GetAccessibleState(ui::AXViewState* state) {
state->role = ui::AX_ROLE_STATIC_TEXT;
- state->state = ui::AX_STATE_READ_ONLY;
+ state->AddStateFlag(ui::AX_STATE_READ_ONLY);
state->name = text_;
}
diff --git a/ui/views/controls/label_unittest.cc b/ui/views/controls/label_unittest.cc
index c4941d826c..42cc0cda47 100644
--- a/ui/views/controls/label_unittest.cc
+++ b/ui/views/controls/label_unittest.cc
@@ -154,7 +154,7 @@ TEST(LabelTest, Accessibility) {
label.GetAccessibleState(&state);
EXPECT_EQ(ui::AX_ROLE_STATIC_TEXT, state.role);
EXPECT_EQ(test_text, state.name);
- EXPECT_TRUE(ui::AX_STATE_READ_ONLY & state.state);
+ EXPECT_TRUE(state.HasStateFlag(ui::AX_STATE_READ_ONLY));
}
TEST(LabelTest, SingleLineSizing) {
diff --git a/ui/views/controls/menu/menu_config.cc b/ui/views/controls/menu/menu_config.cc
index c03f193da0..089d666eb6 100644
--- a/ui/views/controls/menu/menu_config.cc
+++ b/ui/views/controls/menu/menu_config.cc
@@ -27,8 +27,6 @@ MenuConfig::MenuConfig(const ui::NativeTheme* theme)
check_width(16),
check_height(16),
radio_width(16),
- radio_height(16),
- arrow_height(9),
arrow_width(9),
gutter_width(0),
separator_height(11),
diff --git a/ui/views/controls/menu/menu_config.h b/ui/views/controls/menu/menu_config.h
index 1977e8d553..3cdbccdbf4 100644
--- a/ui/views/controls/menu/menu_config.h
+++ b/ui/views/controls/menu/menu_config.h
@@ -67,12 +67,10 @@ struct VIEWS_EXPORT MenuConfig {
int check_width;
int check_height;
- // Size of the radio bullet.
+ // Width of the radio bullet.
int radio_width;
- int radio_height;
- // Size of the submenu arrow.
- int arrow_height;
+ // Width of the submenu arrow.
int arrow_width;
// Width of the gutter. Only used if render_gutter is true.
diff --git a/ui/views/controls/menu/menu_config_views.cc b/ui/views/controls/menu/menu_config_views.cc
index 98f2a007f8..e22f5658b2 100644
--- a/ui/views/controls/menu/menu_config_views.cc
+++ b/ui/views/controls/menu/menu_config_views.cc
@@ -33,8 +33,7 @@ void MenuConfig::InitAura(const ui::NativeTheme* theme) {
submenu_horizontal_inset = 1;
arrow_to_edge_padding = 20;
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
- arrow_width =
- rb.GetImageNamed(IDR_MENU_HIERARCHY_ARROW).ToImageSkia()->width();
+ arrow_width = rb.GetImageNamed(IDR_MENU_HIERARCHY_ARROW).Width();
gfx::ImageSkia check = GetMenuCheckImage(false);
check_height = check.height();
item_min_height = 29;
diff --git a/ui/views/controls/menu/menu_config_win.cc b/ui/views/controls/menu/menu_config_win.cc
index b4d0f9a1f7..4ef5fac307 100644
--- a/ui/views/controls/menu/menu_config_win.cc
+++ b/ui/views/controls/menu/menu_config_win.cc
@@ -53,23 +53,18 @@ void MenuConfig::Init(const NativeTheme* theme) {
extra.menu_check.is_radio = true;
gfx::Size radio_size = NativeThemeWin::instance()->GetPartSize(
NativeTheme::kMenuCheck, NativeTheme::kNormal, extra);
- if (!radio_size.IsEmpty()) {
+ if (!radio_size.IsEmpty())
radio_width = radio_size.width();
- radio_height = radio_size.height();
- } else {
+ else
radio_width = GetSystemMetrics(SM_CXMENUCHECK);
- radio_height = GetSystemMetrics(SM_CYMENUCHECK);
- }
gfx::Size arrow_size = NativeThemeWin::instance()->GetPartSize(
NativeTheme::kMenuPopupArrow, NativeTheme::kNormal, extra);
if (!arrow_size.IsEmpty()) {
arrow_width = arrow_size.width();
- arrow_height = arrow_size.height();
} else {
// Sadly I didn't see a specify metrics for this.
arrow_width = GetSystemMetrics(SM_CXMENUCHECK);
- arrow_height = GetSystemMetrics(SM_CYMENUCHECK);
}
BOOL show_cues;
diff --git a/ui/views/controls/menu/menu_controller.cc b/ui/views/controls/menu/menu_controller.cc
index 16f2ad3425..5d58c697e7 100644
--- a/ui/views/controls/menu/menu_controller.cc
+++ b/ui/views/controls/menu/menu_controller.cc
@@ -13,7 +13,6 @@
#include "base/run_loop.h"
#include "base/strings/utf_string_conversions.h"
#include "base/time/time.h"
-#include "ui/aura/client/dispatcher_client.h"
#include "ui/aura/env.h"
#include "ui/aura/window.h"
#include "ui/aura/window_event_dispatcher.h"
@@ -44,6 +43,7 @@
#include "ui/views/widget/root_view.h"
#include "ui/views/widget/tooltip_manager.h"
#include "ui/views/widget/widget.h"
+#include "ui/wm/public/dispatcher_client.h"
#if defined(OS_WIN)
#include "ui/base/win/internal_constants.h"
diff --git a/ui/views/controls/menu/menu_controller_aura.cc b/ui/views/controls/menu/menu_controller_aura.cc
index 726b8c4af5..ec402c71df 100644
--- a/ui/views/controls/menu/menu_controller_aura.cc
+++ b/ui/views/controls/menu/menu_controller_aura.cc
@@ -5,14 +5,14 @@
#include "ui/views/controls/menu/menu_controller.h"
#include "base/run_loop.h"
-#include "ui/aura/client/activation_change_observer.h"
-#include "ui/aura/client/activation_client.h"
-#include "ui/aura/client/dispatcher_client.h"
-#include "ui/aura/client/drag_drop_client.h"
#include "ui/aura/window.h"
#include "ui/aura/window_observer.h"
#include "ui/gfx/screen.h"
#include "ui/views/widget/widget.h"
+#include "ui/wm/public/activation_change_observer.h"
+#include "ui/wm/public/activation_client.h"
+#include "ui/wm/public/dispatcher_client.h"
+#include "ui/wm/public/drag_drop_client.h"
namespace views {
diff --git a/ui/views/controls/menu/menu_item_view.cc b/ui/views/controls/menu/menu_item_view.cc
index 386a23e2ae..33c5e44add 100644
--- a/ui/views/controls/menu/menu_item_view.cc
+++ b/ui/views/controls/menu/menu_item_view.cc
@@ -168,12 +168,12 @@ void MenuItemView::GetAccessibleState(ui::AXViewState* state) {
switch (GetType()) {
case SUBMENU:
- state->state |= ui::AX_STATE_HASPOPUP;
+ state->AddStateFlag(ui::AX_STATE_HASPOPUP);
break;
case CHECKBOX:
case RADIO:
- state->state |= GetDelegate()->IsItemChecked(GetCommand()) ?
- ui::AX_STATE_CHECKED : 0;
+ if (GetDelegate()->IsItemChecked(GetCommand()))
+ state->AddStateFlag(ui::AX_STATE_CHECKED);
break;
case NORMAL:
case SEPARATOR:
@@ -742,13 +742,6 @@ void MenuItemView::PaintButton(gfx::Canvas* canvas, PaintButtonMode mode) {
parent_menu_item_->GetSubmenu()->GetShowSelection(this) &&
(NonIconChildViewsCount() == 0));
- int icon_x = config.item_left_margin + left_icon_margin_;
- int top_margin = GetTopMargin();
- int bottom_margin = GetBottomMargin();
- int icon_y = top_margin + (height() - config.item_top_margin -
- bottom_margin - config.check_height) / 2;
- int icon_height = config.check_height;
- int available_height = height() - top_margin - bottom_margin;
MenuDelegate *delegate = GetDelegate();
// Render the background. As MenuScrollViewContainer draws the background, we
// only need the background when we want it to look different, as when we're
@@ -770,21 +763,27 @@ void MenuItemView::PaintButton(gfx::Canvas* canvas, PaintButtonMode mode) {
ui::NativeTheme::ExtraParams());
}
+ const int icon_x = config.item_left_margin + left_icon_margin_;
+ const int top_margin = GetTopMargin();
+ const int bottom_margin = GetBottomMargin();
+ const int available_height = height() - top_margin - bottom_margin;
+
// Render the check.
if (type_ == CHECKBOX && delegate->IsItemChecked(GetCommand())) {
gfx::ImageSkia check = GetMenuCheckImage(IsSelected());
// Don't use config.check_width here as it's padded
// to force more padding (AURA).
- gfx::Rect check_bounds(icon_x, icon_y, check.width(), icon_height);
+ gfx::Rect check_bounds(icon_x,
+ top_margin + (available_height - check.height()) / 2,
+ check.width(),
+ check.height());
AdjustBoundsForRTLUI(&check_bounds);
canvas->DrawImageInt(check, check_bounds.x(), check_bounds.y());
} else if (type_ == RADIO) {
gfx::ImageSkia image =
GetRadioButtonImage(delegate->IsItemChecked(GetCommand()));
gfx::Rect radio_bounds(icon_x,
- top_margin +
- (height() - top_margin - bottom_margin -
- image.height()) / 2,
+ top_margin + (available_height - image.height()) / 2,
image.width(),
image.height());
AdjustBoundsForRTLUI(&radio_bounds);
@@ -843,14 +842,14 @@ void MenuItemView::PaintButton(gfx::Canvas* canvas, PaintButtonMode mode) {
// Render the submenu indicator (arrow).
if (HasSubmenu()) {
+ gfx::ImageSkia arrow = GetSubmenuArrowImage(IsSelected());
gfx::Rect arrow_bounds(this->width() - config.arrow_width -
config.arrow_to_edge_padding,
- top_margin + (available_height -
- config.arrow_width) / 2,
- config.arrow_width, height());
+ top_margin + (available_height - arrow.height()) / 2,
+ config.arrow_width,
+ arrow.height());
AdjustBoundsForRTLUI(&arrow_bounds);
- canvas->DrawImageInt(GetSubmenuArrowImage(IsSelected()),
- arrow_bounds.x(), arrow_bounds.y());
+ canvas->DrawImageInt(arrow, arrow_bounds.x(), arrow_bounds.y());
}
}
diff --git a/ui/views/controls/menu/menu_scroll_view_container.cc b/ui/views/controls/menu/menu_scroll_view_container.cc
index f01bea6006..dfb9ef364e 100644
--- a/ui/views/controls/menu/menu_scroll_view_container.cc
+++ b/ui/views/controls/menu/menu_scroll_view_container.cc
@@ -259,7 +259,7 @@ void MenuScrollViewContainer::GetAccessibleState(
state->role = ui::AX_ROLE_MENU_BAR;
// Some AT (like NVDA) will not process focus events on menu item children
// unless a parent claims to be focused.
- state->state = ui::AX_STATE_FOCUSED;
+ state->AddStateFlag(ui::AX_STATE_FOCUSED);
}
void MenuScrollViewContainer::OnBoundsChanged(
diff --git a/ui/views/controls/progress_bar.cc b/ui/views/controls/progress_bar.cc
index f1d7b1fb5b..2049f6e4eb 100644
--- a/ui/views/controls/progress_bar.cc
+++ b/ui/views/controls/progress_bar.cc
@@ -180,7 +180,7 @@ bool ProgressBar::GetTooltipText(const gfx::Point& p,
void ProgressBar::GetAccessibleState(ui::AXViewState* state) {
state->role = ui::AX_ROLE_PROGRESS_INDICATOR;
- state->state = ui::AX_STATE_READ_ONLY;
+ state->AddStateFlag(ui::AX_STATE_READ_ONLY);
}
gfx::Size ProgressBar::GetPreferredSize() {
diff --git a/ui/views/controls/progress_bar_unittest.cc b/ui/views/controls/progress_bar_unittest.cc
index 91515a0a84..b9067b20c9 100644
--- a/ui/views/controls/progress_bar_unittest.cc
+++ b/ui/views/controls/progress_bar_unittest.cc
@@ -29,7 +29,7 @@ TEST(ProgressBarTest, Accessibility) {
bar.GetAccessibleState(&state);
EXPECT_EQ(ui::AX_ROLE_PROGRESS_INDICATOR, state.role);
EXPECT_EQ(base::string16(), state.name);
- EXPECT_TRUE(ui::AX_STATE_READ_ONLY & state.state);
+ EXPECT_TRUE(state.HasStateFlag(ui::AX_STATE_READ_ONLY));
}
} // namespace views
diff --git a/ui/views/controls/scroll_view.cc b/ui/views/controls/scroll_view.cc
index 22dbcb0d63..297be034ae 100644
--- a/ui/views/controls/scroll_view.cc
+++ b/ui/views/controls/scroll_view.cc
@@ -117,6 +117,8 @@ ScrollView::ScrollView()
horiz_sb_(new NativeScrollBar(true)),
vert_sb_(new NativeScrollBar(false)),
resize_corner_(NULL),
+ min_height_(-1),
+ max_height_(-1),
hide_horizontal_scrollbar_(false) {
set_notify_enter_exit_on_child(true);
@@ -163,6 +165,11 @@ gfx::Rect ScrollView::GetVisibleRect() const {
contents_viewport_->width(), contents_viewport_->height());
}
+void ScrollView::ClipHeightTo(int min_height, int max_height) {
+ min_height_ = min_height;
+ max_height_ = max_height;
+}
+
int ScrollView::GetScrollBarWidth() const {
return vert_sb_ ? vert_sb_->GetLayoutSize() : 0;
}
@@ -187,7 +194,40 @@ void ScrollView::SetVerticalScrollBar(ScrollBar* vert_sb) {
vert_sb_ = vert_sb;
}
+gfx::Size ScrollView::GetPreferredSize() {
+ if (!is_bounded())
+ return View::GetPreferredSize();
+
+ gfx::Size size = contents()->GetPreferredSize();
+ size.SetToMax(gfx::Size(size.width(), min_height_));
+ size.SetToMin(gfx::Size(size.width(), max_height_));
+ gfx::Insets insets = GetInsets();
+ size.Enlarge(insets.width(), insets.height());
+ return size;
+}
+
+int ScrollView::GetHeightForWidth(int width) {
+ if (!is_bounded())
+ return View::GetHeightForWidth(width);
+
+ gfx::Insets insets = GetInsets();
+ width = std::max(0, width - insets.width());
+ int height = contents()->GetHeightForWidth(width) + insets.height();
+ return std::min(std::max(height, min_height_), max_height_);
+}
+
void ScrollView::Layout() {
+ if (is_bounded()) {
+ int content_width = width();
+ int content_height = contents()->GetHeightForWidth(content_width);
+ if (content_height > height()) {
+ content_width = std::max(content_width - GetScrollBarWidth(), 0);
+ content_height = contents()->GetHeightForWidth(content_width);
+ }
+ if (contents()->bounds().size() != gfx::Size(content_width, content_height))
+ contents()->SetBounds(0, 0, content_width, content_height);
+ }
+
// Most views will want to auto-fit the available space. Most of them want to
// use all available width (without overflowing) and only overflow in
// height. Examples are HistoryView, MostVisitedView, DownloadTabView, etc.
diff --git a/ui/views/controls/scroll_view.h b/ui/views/controls/scroll_view.h
index da87ffdc75..7e239f086c 100644
--- a/ui/views/controls/scroll_view.h
+++ b/ui/views/controls/scroll_view.h
@@ -31,6 +31,7 @@ class VIEWS_EXPORT ScrollView : public View, public ScrollBarController {
static const char kViewClassName[];
ScrollView();
+
virtual ~ScrollView();
// Creates a ScrollView with a theme specific border.
@@ -52,6 +53,13 @@ class VIEWS_EXPORT ScrollView : public View, public ScrollBarController {
hide_horizontal_scrollbar_ = visible;
}
+ // Turns this scroll view into a bounded scroll view, with a fixed height.
+ // By default, a ScrollView will stretch to fill its outer container.
+ void ClipHeightTo(int min_height, int max_height);
+
+ // Returns whether or not the ScrollView is bounded (as set by ClipHeightTo).
+ bool is_bounded() { return max_height_ >= 0 && min_height_ >= 0; }
+
// Retrieves the width/height of scrollbars. These return 0 if the scrollbar
// has not yet been created.
int GetScrollBarWidth() const;
@@ -67,6 +75,8 @@ class VIEWS_EXPORT ScrollView : public View, public ScrollBarController {
void SetVerticalScrollBar(ScrollBar* vert_sb);
// View overrides:
+ virtual gfx::Size GetPreferredSize() OVERRIDE;
+ virtual int GetHeightForWidth(int width) OVERRIDE;
virtual void Layout() OVERRIDE;
virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
virtual bool OnMouseWheel(const ui::MouseWheelEvent& e) OVERRIDE;
@@ -127,6 +137,11 @@ class VIEWS_EXPORT ScrollView : public View, public ScrollBarController {
// Resize corner.
View* resize_corner_;
+ // The min and max height for the bounded scroll view. These are negative
+ // values if the view is not bounded.
+ int min_height_;
+ int max_height_;
+
// If true, never show the horizontal scrollbar (even if the contents is wider
// than the viewport).
bool hide_horizontal_scrollbar_;
diff --git a/ui/views/controls/scroll_view_unittest.cc b/ui/views/controls/scroll_view_unittest.cc
index f0bdbd5443..8fcd713042 100644
--- a/ui/views/controls/scroll_view_unittest.cc
+++ b/ui/views/controls/scroll_view_unittest.cc
@@ -5,11 +5,17 @@
#include "ui/views/controls/scroll_view.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/views/controls/scrollbar/overlay_scroll_bar.h"
+#include "ui/views/test/test_views.h"
namespace views {
namespace {
+const int kWidth = 100;
+const int kMinHeight = 50;
+const int kMaxHeight = 100;
+
// View implementation that allows setting the preferred size.
class CustomView : public View {
public:
@@ -20,9 +26,7 @@ class CustomView : public View {
PreferredSizeChanged();
}
- virtual gfx::Size GetPreferredSize() OVERRIDE {
- return preferred_size_;
- }
+ virtual gfx::Size GetPreferredSize() OVERRIDE { return preferred_size_; }
virtual void Layout() OVERRIDE {
gfx::Size pref = GetPreferredSize();
@@ -148,7 +152,6 @@ TEST(ScrollViewTest, ScrollBarsWithHeader) {
ASSERT_TRUE(scroll_view.vertical_scroll_bar() != NULL);
EXPECT_TRUE(scroll_view.vertical_scroll_bar()->visible());
-
// Size the contents such that horizontal scrollbar is needed.
contents->SetBounds(0, 0, 400, 50);
scroll_view.Layout();
@@ -214,7 +217,6 @@ TEST(ScrollViewTest, HeaderScrollsWithContent) {
EXPECT_EQ("-1,0", header->bounds().origin().ToString());
}
-
// Verifies ScrollRectToVisible() on the child works.
TEST(ScrollViewTest, ScrollRectToVisible) {
ScrollView scroll_view;
@@ -237,4 +239,97 @@ TEST(ScrollViewTest, ScrollRectToVisible) {
EXPECT_EQ(-(415 - viewport_height), contents->y());
}
+// Verifies ClipHeightTo() uses the height of the content when it is between the
+// minimum and maximum height values.
+TEST(ScrollViewTest, ClipHeightToNormalContentHeight) {
+ ScrollView scroll_view;
+
+ scroll_view.ClipHeightTo(kMinHeight, kMaxHeight);
+
+ const int kNormalContentHeight = 75;
+ scroll_view.SetContents(
+ new views::StaticSizedView(gfx::Size(kWidth, kNormalContentHeight)));
+
+ EXPECT_EQ(gfx::Size(kWidth, kNormalContentHeight),
+ scroll_view.GetPreferredSize());
+
+ scroll_view.SizeToPreferredSize();
+ scroll_view.Layout();
+
+ EXPECT_EQ(gfx::Size(kWidth, kNormalContentHeight),
+ scroll_view.contents()->size());
+ EXPECT_EQ(gfx::Size(kWidth, kNormalContentHeight), scroll_view.size());
+}
+
+// Verifies ClipHeightTo() uses the minimum height when the content is shorter
+// thamn the minimum height value.
+TEST(ScrollViewTest, ClipHeightToShortContentHeight) {
+ ScrollView scroll_view;
+
+ scroll_view.ClipHeightTo(kMinHeight, kMaxHeight);
+
+ const int kShortContentHeight = 10;
+ scroll_view.SetContents(
+ new views::StaticSizedView(gfx::Size(kWidth, kShortContentHeight)));
+
+ EXPECT_EQ(gfx::Size(kWidth, kMinHeight), scroll_view.GetPreferredSize());
+
+ scroll_view.SizeToPreferredSize();
+ scroll_view.Layout();
+
+ EXPECT_EQ(gfx::Size(kWidth, kShortContentHeight),
+ scroll_view.contents()->size());
+ EXPECT_EQ(gfx::Size(kWidth, kMinHeight), scroll_view.size());
+}
+
+// Verifies ClipHeightTo() uses the maximum height when the content is longer
+// thamn the maximum height value.
+TEST(ScrollViewTest, ClipHeightToTallContentHeight) {
+ ScrollView scroll_view;
+
+ // Use a scrollbar that is disabled by default, so the width of the content is
+ // not affected.
+ scroll_view.SetVerticalScrollBar(new views::OverlayScrollBar(false));
+
+ scroll_view.ClipHeightTo(kMinHeight, kMaxHeight);
+
+ const int kTallContentHeight = 1000;
+ scroll_view.SetContents(
+ new views::StaticSizedView(gfx::Size(kWidth, kTallContentHeight)));
+
+ EXPECT_EQ(gfx::Size(kWidth, kMaxHeight), scroll_view.GetPreferredSize());
+
+ scroll_view.SizeToPreferredSize();
+ scroll_view.Layout();
+
+ EXPECT_EQ(gfx::Size(kWidth, kTallContentHeight),
+ scroll_view.contents()->size());
+ EXPECT_EQ(gfx::Size(kWidth, kMaxHeight), scroll_view.size());
+}
+
+// Verifies that when ClipHeightTo() produces a scrollbar, it reduces the width
+// of the inner content of the ScrollView.
+TEST(ScrollViewTest, ClipHeightToScrollbarUsesWidth) {
+ ScrollView scroll_view;
+
+ scroll_view.ClipHeightTo(kMinHeight, kMaxHeight);
+
+ // Create a view that will be much taller than it is wide.
+ scroll_view.SetContents(new views::ProportionallySizedView(1000));
+
+ // Without any width, it will default to 0,0 but be overridden by min height.
+ scroll_view.SizeToPreferredSize();
+ EXPECT_EQ(gfx::Size(0, kMinHeight), scroll_view.GetPreferredSize());
+
+ gfx::Size new_size(kWidth, scroll_view.GetHeightForWidth(kWidth));
+ scroll_view.SetSize(new_size);
+ scroll_view.Layout();
+
+ int scroll_bar_width = scroll_view.GetScrollBarWidth();
+ int expected_width = kWidth - scroll_bar_width;
+ EXPECT_EQ(scroll_view.contents()->size().width(), expected_width);
+ EXPECT_EQ(scroll_view.contents()->size().height(), 1000 * expected_width);
+ EXPECT_EQ(gfx::Size(kWidth, kMaxHeight), scroll_view.size());
+}
+
} // namespace views
diff --git a/ui/views/controls/textfield/textfield.cc b/ui/views/controls/textfield/textfield.cc
index f3f5859376..65554acd67 100644
--- a/ui/views/controls/textfield/textfield.cc
+++ b/ui/views/controls/textfield/textfield.cc
@@ -47,6 +47,8 @@ namespace {
// Default placeholder text color.
const SkColor kDefaultPlaceholderTextColor = SK_ColorLTGRAY;
+const int kNoCommand = 0;
+
void ConvertRectToScreen(const View* src, gfx::Rect* r) {
DCHECK(src);
@@ -55,6 +57,78 @@ void ConvertRectToScreen(const View* src, gfx::Rect* r) {
r->set_origin(new_origin);
}
+int GetCommandForKeyEvent(const ui::KeyEvent& event, bool has_selection) {
+ if (event.type() != ui::ET_KEY_PRESSED || event.IsUnicodeKeyCode())
+ return kNoCommand;
+
+ const bool shift = event.IsShiftDown();
+ const bool control = event.IsControlDown();
+ const bool alt = event.IsAltDown() || event.IsAltGrDown();
+ switch (event.key_code()) {
+ case ui::VKEY_Z:
+ if (control && !shift && !alt)
+ return IDS_APP_UNDO;
+ return (control && shift && !alt) ? IDS_APP_REDO : kNoCommand;
+ case ui::VKEY_Y:
+ return (control && !alt) ? IDS_APP_REDO : kNoCommand;
+ case ui::VKEY_A:
+ return (control && !alt) ? IDS_APP_SELECT_ALL : kNoCommand;
+ case ui::VKEY_X:
+ return (control && !alt) ? IDS_APP_CUT : kNoCommand;
+ case ui::VKEY_C:
+ return (control && !alt) ? IDS_APP_COPY : kNoCommand;
+ case ui::VKEY_V:
+ return (control && !alt) ? IDS_APP_PASTE : kNoCommand;
+ case ui::VKEY_RIGHT:
+ // Ignore alt+right, which may be a browser navigation shortcut.
+ if (alt)
+ return kNoCommand;
+ if (!shift)
+ return control ? IDS_MOVE_WORD_RIGHT : IDS_MOVE_RIGHT;
+ return control ? IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION :
+ IDS_MOVE_RIGHT_AND_MODIFY_SELECTION;
+ case ui::VKEY_LEFT:
+ // Ignore alt+left, which may be a browser navigation shortcut.
+ if (alt)
+ return kNoCommand;
+ if (!shift)
+ return control ? IDS_MOVE_WORD_LEFT : IDS_MOVE_LEFT;
+ return control ? IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION :
+ IDS_MOVE_LEFT_AND_MODIFY_SELECTION;
+ case ui::VKEY_HOME:
+ return shift ? IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION :
+ IDS_MOVE_TO_BEGINNING_OF_LINE;
+ case ui::VKEY_END:
+ return shift ? IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION :
+ IDS_MOVE_TO_END_OF_LINE;
+ case ui::VKEY_BACK:
+ if (!control || has_selection)
+ return IDS_DELETE_BACKWARD;
+#if defined(OS_LINUX)
+ // Only erase by line break on Linux and ChromeOS.
+ if (shift)
+ return IDS_DELETE_TO_BEGINNING_OF_LINE;
+#endif
+ return IDS_DELETE_WORD_BACKWARD;
+ case ui::VKEY_DELETE:
+ if (!control || has_selection)
+ return (shift && has_selection) ? IDS_APP_CUT : IDS_DELETE_FORWARD;
+#if defined(OS_LINUX)
+ // Only erase by line break on Linux and ChromeOS.
+ if (shift)
+ return IDS_DELETE_TO_END_OF_LINE;
+#endif
+ return IDS_DELETE_WORD_FORWARD;
+ case ui::VKEY_INSERT:
+ if (control && !shift)
+ return IDS_APP_COPY;
+ return (shift && !control) ? IDS_APP_PASTE : kNoCommand;
+ default:
+ return kNoCommand;
+ }
+ return kNoCommand;
+}
+
} // namespace
// static
@@ -419,129 +493,15 @@ void Textfield::OnMouseReleased(const ui::MouseEvent& event) {
}
bool Textfield::OnKeyPressed(const ui::KeyEvent& event) {
- bool handled = controller_ && controller_->HandleKeyEvent(this, event);
+ const bool handled = controller_ && controller_->HandleKeyEvent(this, event);
touch_selection_controller_.reset();
if (handled)
return true;
- // TODO(oshima): Refactor and consolidate with ExecuteCommand.
- if (event.type() == ui::ET_KEY_PRESSED) {
- ui::KeyboardCode key_code = event.key_code();
- if (key_code == ui::VKEY_TAB || event.IsUnicodeKeyCode())
- return false;
-
- gfx::RenderText* render_text = GetRenderText();
- const bool editable = !read_only();
- const bool readable = text_input_type_ != ui::TEXT_INPUT_TYPE_PASSWORD;
- const bool shift = event.IsShiftDown();
- const bool control = event.IsControlDown();
- const bool alt = event.IsAltDown() || event.IsAltGrDown();
- bool text_changed = false;
- bool cursor_changed = false;
-
- OnBeforeUserAction();
- switch (key_code) {
- case ui::VKEY_Z:
- if (control && !shift && !alt && editable)
- cursor_changed = text_changed = model_->Undo();
- else if (control && shift && !alt && editable)
- cursor_changed = text_changed = model_->Redo();
- break;
- case ui::VKEY_Y:
- if (control && !alt && editable)
- cursor_changed = text_changed = model_->Redo();
- break;
- case ui::VKEY_A:
- if (control && !alt) {
- model_->SelectAll(false);
- UpdateSelectionClipboard();
- cursor_changed = true;
- }
- break;
- case ui::VKEY_X:
- if (control && !alt && editable && readable)
- cursor_changed = text_changed = Cut();
- break;
- case ui::VKEY_C:
- if (control && !alt && readable)
- Copy();
- break;
- case ui::VKEY_V:
- if (control && !alt && editable)
- cursor_changed = text_changed = Paste();
- break;
- case ui::VKEY_RIGHT:
- case ui::VKEY_LEFT: {
- // We should ignore the alt-left/right keys because alt key doesn't make
- // any special effects for them and they can be shortcut keys such like
- // forward/back of the browser history.
- if (alt)
- break;
- const gfx::Range selection_range = render_text->selection();
- model_->MoveCursor(
- control ? gfx::WORD_BREAK : gfx::CHARACTER_BREAK,
- (key_code == ui::VKEY_RIGHT) ? gfx::CURSOR_RIGHT : gfx::CURSOR_LEFT,
- shift);
- UpdateSelectionClipboard();
- cursor_changed = render_text->selection() != selection_range;
- break;
- }
- case ui::VKEY_END:
- case ui::VKEY_HOME:
- if ((key_code == ui::VKEY_HOME) ==
- (render_text->GetTextDirection() == base::i18n::RIGHT_TO_LEFT))
- model_->MoveCursor(gfx::LINE_BREAK, gfx::CURSOR_RIGHT, shift);
- else
- model_->MoveCursor(gfx::LINE_BREAK, gfx::CURSOR_LEFT, shift);
- UpdateSelectionClipboard();
- cursor_changed = true;
- break;
- case ui::VKEY_BACK:
- case ui::VKEY_DELETE:
- if (!editable)
- break;
- if (!model_->HasSelection()) {
- gfx::VisualCursorDirection direction = (key_code == ui::VKEY_DELETE) ?
- gfx::CURSOR_RIGHT : gfx::CURSOR_LEFT;
- if (shift && control) {
- // If shift and control are pressed, erase up to the next line break
- // on Linux and ChromeOS. Otherwise, do nothing.
-#if defined(OS_LINUX)
- model_->MoveCursor(gfx::LINE_BREAK, direction, true);
-#else
- break;
-#endif
- } else if (control) {
- // If only control is pressed, then erase the previous/next word.
- model_->MoveCursor(gfx::WORD_BREAK, direction, true);
- }
- }
- if (key_code == ui::VKEY_BACK)
- model_->Backspace();
- else if (shift && model_->HasSelection() && readable)
- Cut();
- else
- model_->Delete();
-
- // Consume backspace and delete keys even if the edit did nothing. This
- // prevents potential unintended side-effects of further event handling.
- text_changed = true;
- break;
- case ui::VKEY_INSERT:
- if (control && !shift && readable)
- Copy();
- else if (shift && !control && editable)
- cursor_changed = text_changed = Paste();
- break;
- default:
- break;
- }
-
- // We must have input method in order to support text input.
- DCHECK(GetInputMethod());
- UpdateAfterChange(text_changed, cursor_changed);
- OnAfterUserAction();
- return (text_changed || cursor_changed);
+ const int command = GetCommandForKeyEvent(event, HasSelection());
+ if (IsCommandIdEnabled(command)) {
+ ExecuteCommand(command);
+ return true;
}
return false;
}
@@ -736,9 +696,9 @@ void Textfield::GetAccessibleState(ui::AXViewState* state) {
state->role = ui::AX_ROLE_TEXT_FIELD;
state->name = accessible_name_;
if (read_only())
- state->state |= ui::AX_STATE_READ_ONLY;
+ state->AddStateFlag(ui::AX_STATE_READ_ONLY);
if (text_input_type_ == ui::TEXT_INPUT_TYPE_PASSWORD)
- state->state |= ui::AX_STATE_PROTECTED;
+ state->AddStateFlag(ui::AX_STATE_PROTECTED);
state->value = text();
const gfx::Range range = GetSelectedRange();
@@ -960,6 +920,8 @@ bool Textfield::IsCommandIdEnabled(int command_id) const {
switch (command_id) {
case IDS_APP_UNDO:
return editable && model_->CanUndo();
+ case IDS_APP_REDO:
+ return editable && model_->CanRedo();
case IDS_APP_CUT:
return editable && readable && model_->HasSelection();
case IDS_APP_COPY:
@@ -972,6 +934,26 @@ bool Textfield::IsCommandIdEnabled(int command_id) const {
return editable && model_->HasSelection();
case IDS_APP_SELECT_ALL:
return !text().empty();
+ case IDS_DELETE_FORWARD:
+ case IDS_DELETE_BACKWARD:
+ case IDS_DELETE_TO_BEGINNING_OF_LINE:
+ case IDS_DELETE_TO_END_OF_LINE:
+ case IDS_DELETE_WORD_BACKWARD:
+ case IDS_DELETE_WORD_FORWARD:
+ return editable;
+ case IDS_MOVE_LEFT:
+ case IDS_MOVE_LEFT_AND_MODIFY_SELECTION:
+ case IDS_MOVE_RIGHT:
+ case IDS_MOVE_RIGHT_AND_MODIFY_SELECTION:
+ case IDS_MOVE_WORD_LEFT:
+ case IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION:
+ case IDS_MOVE_WORD_RIGHT:
+ case IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION:
+ case IDS_MOVE_TO_BEGINNING_OF_LINE:
+ case IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION:
+ case IDS_MOVE_TO_END_OF_LINE:
+ case IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION:
+ return true;
default:
return false;
}
@@ -988,31 +970,102 @@ void Textfield::ExecuteCommand(int command_id, int event_flags) {
return;
bool text_changed = false;
+ bool cursor_changed = false;
+ bool rtl = GetTextDirection() == base::i18n::RIGHT_TO_LEFT;
+ gfx::VisualCursorDirection begin = rtl ? gfx::CURSOR_RIGHT : gfx::CURSOR_LEFT;
+ gfx::VisualCursorDirection end = rtl ? gfx::CURSOR_LEFT : gfx::CURSOR_RIGHT;
+ gfx::Range selection_range = GetSelectedRange();
+
OnBeforeUserAction();
switch (command_id) {
case IDS_APP_UNDO:
- text_changed = model_->Undo();
+ text_changed = cursor_changed = model_->Undo();
+ break;
+ case IDS_APP_REDO:
+ text_changed = cursor_changed = model_->Redo();
break;
case IDS_APP_CUT:
- text_changed = Cut();
+ text_changed = cursor_changed = Cut();
break;
case IDS_APP_COPY:
Copy();
break;
case IDS_APP_PASTE:
- text_changed = Paste();
+ text_changed = cursor_changed = Paste();
break;
case IDS_APP_DELETE:
- text_changed = model_->Delete();
+ text_changed = cursor_changed = model_->Delete();
break;
case IDS_APP_SELECT_ALL:
SelectAll(false);
break;
+ case IDS_DELETE_BACKWARD:
+ text_changed = cursor_changed = model_->Backspace();
+ break;
+ case IDS_DELETE_FORWARD:
+ text_changed = cursor_changed = model_->Delete();
+ break;
+ case IDS_DELETE_TO_END_OF_LINE:
+ model_->MoveCursor(gfx::LINE_BREAK, end, true);
+ text_changed = cursor_changed = model_->Delete();
+ break;
+ case IDS_DELETE_TO_BEGINNING_OF_LINE:
+ model_->MoveCursor(gfx::LINE_BREAK, begin, true);
+ text_changed = cursor_changed = model_->Backspace();
+ break;
+ case IDS_DELETE_WORD_BACKWARD:
+ model_->MoveCursor(gfx::WORD_BREAK, begin, true);
+ text_changed = cursor_changed = model_->Backspace();
+ break;
+ case IDS_DELETE_WORD_FORWARD:
+ model_->MoveCursor(gfx::WORD_BREAK, end, true);
+ text_changed = cursor_changed = model_->Delete();
+ break;
+ case IDS_MOVE_LEFT:
+ model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_LEFT, false);
+ break;
+ case IDS_MOVE_LEFT_AND_MODIFY_SELECTION:
+ model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_LEFT, true);
+ break;
+ case IDS_MOVE_RIGHT:
+ model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_RIGHT, false);
+ break;
+ case IDS_MOVE_RIGHT_AND_MODIFY_SELECTION:
+ model_->MoveCursor(gfx::CHARACTER_BREAK, gfx::CURSOR_RIGHT, true);
+ break;
+ case IDS_MOVE_WORD_LEFT:
+ model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, false);
+ break;
+ case IDS_MOVE_WORD_LEFT_AND_MODIFY_SELECTION:
+ model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_LEFT, true);
+ break;
+ case IDS_MOVE_WORD_RIGHT:
+ model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT, false);
+ break;
+ case IDS_MOVE_WORD_RIGHT_AND_MODIFY_SELECTION:
+ model_->MoveCursor(gfx::WORD_BREAK, gfx::CURSOR_RIGHT, true);
+ break;
+ case IDS_MOVE_TO_BEGINNING_OF_LINE:
+ model_->MoveCursor(gfx::LINE_BREAK, begin, false);
+ break;
+ case IDS_MOVE_TO_BEGINNING_OF_LINE_AND_MODIFY_SELECTION:
+ model_->MoveCursor(gfx::LINE_BREAK, begin, true);
+ break;
+ case IDS_MOVE_TO_END_OF_LINE:
+ model_->MoveCursor(gfx::LINE_BREAK, end, false);
+ break;
+ case IDS_MOVE_TO_END_OF_LINE_AND_MODIFY_SELECTION:
+ model_->MoveCursor(gfx::LINE_BREAK, end, true);
+ break;
default:
NOTREACHED();
break;
}
- UpdateAfterChange(text_changed, text_changed);
+
+ cursor_changed |= GetSelectedRange() != selection_range;
+ if (cursor_changed)
+ UpdateSelectionClipboard();
+ UpdateAfterChange(text_changed, cursor_changed);
OnAfterUserAction();
}
diff --git a/ui/views/controls/textfield/textfield_unittest.cc b/ui/views/controls/textfield/textfield_unittest.cc
index 503c6562db..861b24dd5e 100644
--- a/ui/views/controls/textfield/textfield_unittest.cc
+++ b/ui/views/controls/textfield/textfield_unittest.cc
@@ -430,13 +430,13 @@ TEST_F(TextfieldTest, InsertionDeletionTest) {
SendKeyEvent(ui::VKEY_BACK, false, false, true, false);
EXPECT_STR_EQ("one two three ", textfield_->text());
- // Delete to a line break on Linux and ChromeOS, no-op on Windows.
+ // Delete to a line break on Linux and ChromeOS, to a word break on Windows.
SendKeyEvent(ui::VKEY_LEFT, false, false, true, false);
SendKeyEvent(ui::VKEY_BACK, false, true, true, false);
#if defined(OS_LINUX)
EXPECT_STR_EQ("three ", textfield_->text());
#else
- EXPECT_STR_EQ("one two three ", textfield_->text());
+ EXPECT_STR_EQ("one three ", textfield_->text());
#endif
// Delete the next word from cursor.
@@ -445,13 +445,13 @@ TEST_F(TextfieldTest, InsertionDeletionTest) {
SendKeyEvent(ui::VKEY_DELETE, false, false, true, false);
EXPECT_STR_EQ(" two three four", textfield_->text());
- // Delete to a line break on Linux and ChromeOS, no-op on Windows.
+ // Delete to a line break on Linux and ChromeOS, to a word break on Windows.
SendKeyEvent(ui::VKEY_RIGHT, false, false, true, false);
SendKeyEvent(ui::VKEY_DELETE, false, true, true, false);
#if defined(OS_LINUX)
EXPECT_STR_EQ(" two", textfield_->text());
#else
- EXPECT_STR_EQ(" two three four", textfield_->text());
+ EXPECT_STR_EQ(" two four", textfield_->text());
#endif
}
@@ -523,61 +523,45 @@ TEST_F(TextfieldTest, TextInputType) {
TEST_F(TextfieldTest, OnKeyPressReturnValueTest) {
InitTextfield();
- // Character keys will be handled by input method.
+ // Character keys are handled by the input method.
SendKeyEvent(ui::VKEY_A);
EXPECT_TRUE(textfield_->key_received());
EXPECT_FALSE(textfield_->key_handled());
textfield_->clear();
- // Home will be handled.
- SendKeyEvent(ui::VKEY_HOME);
+ // Arrow keys and home/end are handled by the textfield.
+ SendKeyEvent(ui::VKEY_LEFT);
EXPECT_TRUE(textfield_->key_received());
EXPECT_TRUE(textfield_->key_handled());
textfield_->clear();
- // F24, up/down key won't be handled.
- SendKeyEvent(ui::VKEY_F24);
- EXPECT_TRUE(textfield_->key_received());
- EXPECT_FALSE(textfield_->key_handled());
- textfield_->clear();
-
- SendKeyEvent(ui::VKEY_UP);
+ SendKeyEvent(ui::VKEY_RIGHT);
EXPECT_TRUE(textfield_->key_received());
- EXPECT_FALSE(textfield_->key_handled());
+ EXPECT_TRUE(textfield_->key_handled());
textfield_->clear();
- SendKeyEvent(ui::VKEY_DOWN);
+ SendKeyEvent(ui::VKEY_HOME);
EXPECT_TRUE(textfield_->key_received());
- EXPECT_FALSE(textfield_->key_handled());
+ EXPECT_TRUE(textfield_->key_handled());
textfield_->clear();
- // Empty Textfield does not handle left/right.
- textfield_->SetText(base::string16());
- SendKeyEvent(ui::VKEY_LEFT);
+ SendKeyEvent(ui::VKEY_END);
EXPECT_TRUE(textfield_->key_received());
- EXPECT_FALSE(textfield_->key_handled());
+ EXPECT_TRUE(textfield_->key_handled());
textfield_->clear();
- SendKeyEvent(ui::VKEY_RIGHT);
+ // F24, up/down key won't be handled.
+ SendKeyEvent(ui::VKEY_F24);
EXPECT_TRUE(textfield_->key_received());
EXPECT_FALSE(textfield_->key_handled());
textfield_->clear();
- // Add a char. Right key should not be handled when cursor is at the end.
- SendKeyEvent(ui::VKEY_B);
- SendKeyEvent(ui::VKEY_RIGHT);
+ SendKeyEvent(ui::VKEY_UP);
EXPECT_TRUE(textfield_->key_received());
EXPECT_FALSE(textfield_->key_handled());
textfield_->clear();
- // First left key is handled to move cursor left to the beginning.
- SendKeyEvent(ui::VKEY_LEFT);
- EXPECT_TRUE(textfield_->key_received());
- EXPECT_TRUE(textfield_->key_handled());
- textfield_->clear();
-
- // Now left key should not be handled.
- SendKeyEvent(ui::VKEY_LEFT);
+ SendKeyEvent(ui::VKEY_DOWN);
EXPECT_TRUE(textfield_->key_received());
EXPECT_FALSE(textfield_->key_handled());
textfield_->clear();
@@ -1106,8 +1090,8 @@ TEST_F(TextfieldTest, TextInputClientTest) {
EXPECT_TRUE(client->GetCompositionTextRange(&range));
EXPECT_STR_EQ("0321456789", textfield_->text());
EXPECT_EQ(gfx::Range(1, 4), range);
- EXPECT_EQ(2, on_before_user_action_);
- EXPECT_EQ(2, on_after_user_action_);
+ EXPECT_EQ(1, on_before_user_action_);
+ EXPECT_EQ(1, on_after_user_action_);
input_method_->SetResultTextForNextKey(UTF8ToUTF16("123"));
on_before_user_action_ = on_after_user_action_ = 0;
@@ -1118,8 +1102,8 @@ TEST_F(TextfieldTest, TextInputClientTest) {
EXPECT_FALSE(client->HasCompositionText());
EXPECT_FALSE(input_method_->cancel_composition_called());
EXPECT_STR_EQ("0123456789", textfield_->text());
- EXPECT_EQ(2, on_before_user_action_);
- EXPECT_EQ(2, on_after_user_action_);
+ EXPECT_EQ(1, on_before_user_action_);
+ EXPECT_EQ(1, on_after_user_action_);
input_method_->Clear();
input_method_->SetCompositionTextForNextKey(composition);
diff --git a/ui/views/controls/tree/tree_view.cc b/ui/views/controls/tree/tree_view.cc
index 77d978036f..bf75a65ac3 100644
--- a/ui/views/controls/tree/tree_view.cc
+++ b/ui/views/controls/tree/tree_view.cc
@@ -406,7 +406,7 @@ void TreeView::ShowContextMenu(const gfx::Point& p,
void TreeView::GetAccessibleState(ui::AXViewState* state) {
state->role = ui::AX_ROLE_TREE;
- state->state = ui::AX_STATE_READ_ONLY;
+ state->AddStateFlag(ui::AX_STATE_READ_ONLY);
if (!selected_node_)
return;
diff --git a/ui/views/controls/webview/web_dialog_view.cc b/ui/views/controls/webview/web_dialog_view.cc
index 98da5ad56c..949c82af1e 100644
--- a/ui/views/controls/webview/web_dialog_view.cc
+++ b/ui/views/controls/webview/web_dialog_view.cc
@@ -324,7 +324,8 @@ void WebDialogView::AddNewContents(content::WebContents* source,
was_blocked);
}
-void WebDialogView::LoadingStateChanged(content::WebContents* source) {
+void WebDialogView::LoadingStateChanged(content::WebContents* source,
+ bool to_different_document) {
if (delegate_)
delegate_->OnLoadingStateChanged(source);
}
diff --git a/ui/views/controls/webview/web_dialog_view.h b/ui/views/controls/webview/web_dialog_view.h
index 51d67eb88d..902aa3269b 100644
--- a/ui/views/controls/webview/web_dialog_view.h
+++ b/ui/views/controls/webview/web_dialog_view.h
@@ -110,7 +110,8 @@ class WEBVIEW_EXPORT WebDialogView : public views::ClientView,
const gfx::Rect& initial_pos,
bool user_gesture,
bool* was_blocked) OVERRIDE;
- virtual void LoadingStateChanged(content::WebContents* source) OVERRIDE;
+ virtual void LoadingStateChanged(content::WebContents* source,
+ bool to_different_document) OVERRIDE;
virtual void BeforeUnloadFired(content::WebContents* tab,
bool proceed,
bool* proceed_to_fire_unload) OVERRIDE;
diff --git a/ui/views/controls/webview/webview_tests.gyp b/ui/views/controls/webview/webview_tests.gyp
new file mode 100644
index 0000000000..0adc5c2bef
--- /dev/null
+++ b/ui/views/controls/webview/webview_tests.gyp
@@ -0,0 +1,38 @@
+# Copyright 2014 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.
+
+{
+ 'variables': {
+ 'chromium_code': 1,
+ },
+ 'targets': [
+ {
+ 'target_name': 'webview_test_support',
+ 'type': 'static_library',
+ 'dependencies': [
+ '../../../../base/base.gyp:base',
+ '../../../../content/content.gyp:content',
+ '../../../../content/content_shell_and_tests.gyp:test_support_content',
+ '../../../../ipc/ipc.gyp:test_support_ipc',
+ '../../../../skia/skia.gyp:skia',
+ '../../../../testing/gtest.gyp:gtest',
+ '../../../aura/aura.gyp:aura',
+ '../../../base/ui_base.gyp:ui_base',
+ '../../../events/events.gyp:events',
+ '../../../gfx/gfx.gyp:gfx',
+ '../../../gfx/gfx.gyp:gfx_geometry',
+ '../../views.gyp:views',
+ '../../views.gyp:views_test_support',
+ 'webview.gyp:webview',
+ ],
+ 'include_dirs': [
+ '../../../..',
+ ],
+ 'sources': [
+ '../../test/webview_test_helper.cc',
+ '../../test/webview_test_helper.h',
+ ],
+ },
+ ],
+}
diff --git a/ui/views/corewm/desktop_capture_controller_unittest.cc b/ui/views/corewm/desktop_capture_controller_unittest.cc
index ad6d849e03..8807aafdd6 100644
--- a/ui/views/corewm/desktop_capture_controller_unittest.cc
+++ b/ui/views/corewm/desktop_capture_controller_unittest.cc
@@ -101,6 +101,7 @@ TEST_F(DesktopCaptureControllerTest, ResetMouseHandlers) {
EXPECT_TRUE(w1_dispatcher->mouse_pressed_handler() == NULL);
EXPECT_TRUE(w1_dispatcher->mouse_moved_handler() == NULL);
w2->ReleaseCapture();
+ RunPendingMessages();
}
// Tests aura::Window capture and whether gesture events are sent to the window
diff --git a/ui/views/corewm/tooltip_aura.cc b/ui/views/corewm/tooltip_aura.cc
index 5b8da6a6d4..50ced84d66 100644
--- a/ui/views/corewm/tooltip_aura.cc
+++ b/ui/views/corewm/tooltip_aura.cc
@@ -64,7 +64,6 @@ TooltipAura::TooltipAura(gfx::ScreenType screen_type)
views::Background::CreateSolidBackground(kTooltipBackground));
label_.set_owned_by_client();
label_.SetMultiLine(true);
- label_.SetHorizontalAlignment(gfx::ALIGN_LEFT);
}
TooltipAura::~TooltipAura() {
diff --git a/ui/views/corewm/tooltip_controller.cc b/ui/views/corewm/tooltip_controller.cc
index c5e621bd1e..500466fdf4 100644
--- a/ui/views/corewm/tooltip_controller.cc
+++ b/ui/views/corewm/tooltip_controller.cc
@@ -10,7 +10,6 @@
#include "base/time/time.h"
#include "ui/aura/client/capture_client.h"
#include "ui/aura/client/cursor_client.h"
-#include "ui/aura/client/drag_drop_client.h"
#include "ui/aura/client/screen_position_client.h"
#include "ui/aura/env.h"
#include "ui/aura/window.h"
@@ -20,6 +19,7 @@
#include "ui/gfx/screen.h"
#include "ui/views/corewm/tooltip.h"
#include "ui/views/widget/tooltip_manager.h"
+#include "ui/wm/public/drag_drop_client.h"
namespace views {
namespace corewm {
diff --git a/ui/views/corewm/tooltip_controller.h b/ui/views/corewm/tooltip_controller.h
index e75a1e677f..9815df1817 100644
--- a/ui/views/corewm/tooltip_controller.h
+++ b/ui/views/corewm/tooltip_controller.h
@@ -10,11 +10,11 @@
#include "base/memory/scoped_ptr.h"
#include "base/strings/string16.h"
#include "base/timer/timer.h"
-#include "ui/aura/client/tooltip_client.h"
#include "ui/aura/window_observer.h"
#include "ui/events/event_handler.h"
#include "ui/gfx/point.h"
#include "ui/views/views_export.h"
+#include "ui/wm/public/tooltip_client.h"
namespace aura {
class Window;
diff --git a/ui/views/corewm/tooltip_controller_unittest.cc b/ui/views/corewm/tooltip_controller_unittest.cc
index 39cab8e031..152a5a2e1d 100644
--- a/ui/views/corewm/tooltip_controller_unittest.cc
+++ b/ui/views/corewm/tooltip_controller_unittest.cc
@@ -7,7 +7,6 @@
#include "base/strings/utf_string_conversions.h"
#include "ui/aura/client/cursor_client.h"
#include "ui/aura/client/screen_position_client.h"
-#include "ui/aura/client/tooltip_client.h"
#include "ui/aura/env.h"
#include "ui/aura/test/aura_test_base.h"
#include "ui/aura/test/event_generator.h"
@@ -27,6 +26,7 @@
#include "ui/views/widget/tooltip_manager.h"
#include "ui/views/widget/widget.h"
#include "ui/wm/core/wm_state.h"
+#include "ui/wm/public/tooltip_client.h"
#include "ui/wm/public/window_types.h"
#if defined(OS_WIN)
diff --git a/ui/views/drag_utils.cc b/ui/views/drag_utils.cc
index 27f6d58bc7..840d75febd 100644
--- a/ui/views/drag_utils.cc
+++ b/ui/views/drag_utils.cc
@@ -4,7 +4,6 @@
#include "ui/views/drag_utils.h"
-#include "ui/aura/client/drag_drop_client.h"
#include "ui/aura/window.h"
#include "ui/aura/window_event_dispatcher.h"
#include "ui/gfx/canvas.h"
@@ -12,6 +11,7 @@
#include "ui/gfx/screen.h"
#include "ui/gfx/size.h"
#include "ui/views/widget/widget.h"
+#include "ui/wm/public/drag_drop_client.h"
float GetDeviceScaleForNativeView(views::Widget* widget) {
float device_scale = 1.0f;
diff --git a/ui/views/examples/content_client/examples_browser_main_parts.cc b/ui/views/examples/content_client/examples_browser_main_parts.cc
index 9e9cecb99f..16e5eb6999 100644
--- a/ui/views/examples/content_client/examples_browser_main_parts.cc
+++ b/ui/views/examples/content_client/examples_browser_main_parts.cc
@@ -18,7 +18,6 @@
#include "ui/gfx/screen.h"
#include "ui/views/examples/examples_window_with_content.h"
#include "ui/views/test/desktop_test_views_delegate.h"
-#include "ui/views/widget/desktop_aura/desktop_screen.h"
#include "ui/views/widget/native_widget_aura.h"
#include "ui/wm/core/wm_state.h"
#include "url/gurl.h"
@@ -28,6 +27,8 @@
#include "ui/aura/window.h"
#include "ui/aura/window_event_dispatcher.h"
#include "ui/wm/test/wm_test_helper.h"
+#else // !defined(OS_CHROMEOS)
+#include "ui/views/widget/desktop_aura/desktop_screen.h"
#endif
namespace views {
diff --git a/ui/views/examples/examples.gyp b/ui/views/examples/examples.gyp
new file mode 100644
index 0000000000..100d8b94e4
--- /dev/null
+++ b/ui/views/examples/examples.gyp
@@ -0,0 +1,230 @@
+# Copyright 2014 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.
+{
+ 'variables': {
+ 'chromium_code': 1,
+ },
+ 'targets': [
+ {
+ 'target_name': 'views_examples_lib',
+ 'type': '<(component)',
+ 'dependencies': [
+ '../../../base/base.gyp:base',
+ '../../../skia/skia.gyp:skia',
+ '../../../third_party/icu/icu.gyp:icui18n',
+ '../../../third_party/icu/icu.gyp:icuuc',
+ '../../aura/aura.gyp:aura',
+ '../../base/ui_base.gyp:ui_base',
+ '../../events/events.gyp:events',
+ '../../gfx/gfx.gyp:gfx',
+ '../../gfx/gfx.gyp:gfx_geometry',
+ '../../resources/ui_resources.gyp:ui_resources',
+ '../../resources/ui_resources.gyp:ui_test_pak',
+ '../views.gyp:views',
+ ],
+ 'include_dirs': [
+ '../../..',
+ ],
+ 'defines': [
+ 'VIEWS_EXAMPLES_IMPLEMENTATION',
+ ],
+ 'sources': [
+ 'bubble_example.cc',
+ 'bubble_example.h',
+ 'button_example.cc',
+ 'button_example.h',
+ 'checkbox_example.cc',
+ 'checkbox_example.h',
+ 'combobox_example.cc',
+ 'combobox_example.h',
+ 'double_split_view_example.cc',
+ 'double_split_view_example.h',
+ 'example_base.cc',
+ 'example_base.h',
+ 'example_combobox_model.cc',
+ 'example_combobox_model.h',
+ 'examples_window.cc',
+ 'examples_window.h',
+ 'label_example.cc',
+ 'label_example.h',
+ 'link_example.cc',
+ 'link_example.h',
+ 'message_box_example.cc',
+ 'message_box_example.h',
+ 'menu_example.cc',
+ 'menu_example.h',
+ 'multiline_example.cc',
+ 'multiline_example.h',
+ 'progress_bar_example.cc',
+ 'progress_bar_example.h',
+ 'radio_button_example.cc',
+ 'radio_button_example.h',
+ 'scroll_view_example.cc',
+ 'scroll_view_example.h',
+ 'single_split_view_example.cc',
+ 'single_split_view_example.h',
+ 'slider_example.cc',
+ 'slider_example.h',
+ 'tabbed_pane_example.cc',
+ 'tabbed_pane_example.h',
+ 'table_example.cc',
+ 'table_example.h',
+ 'text_example.cc',
+ 'text_example.h',
+ 'textfield_example.cc',
+ 'textfield_example.h',
+ 'throbber_example.cc',
+ 'throbber_example.h',
+ 'tree_view_example.cc',
+ 'tree_view_example.h',
+ 'views_examples_export.h',
+ 'widget_example.cc',
+ 'widget_example.h',
+ ],
+ 'conditions': [
+ ['OS=="win"', {
+ 'include_dirs': [
+ '../../../third_party/wtl/include',
+ ],
+ # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
+ 'msvs_disabled_warnings': [ 4267, ],
+ }],
+ ],
+ }, # target_name: views_examples_lib
+ {
+ 'target_name': 'views_examples_exe',
+ 'type': 'executable',
+ 'dependencies': [
+ '../../../base/base.gyp:base',
+ '../../../base/base.gyp:base_i18n',
+ '../../aura/aura.gyp:aura',
+ '../../base/ui_base.gyp:ui_base',
+ '../../compositor/compositor.gyp:compositor',
+ '../../compositor/compositor.gyp:compositor_test_support',
+ '../../gfx/gfx.gyp:gfx',
+ '../../resources/ui_resources.gyp:ui_test_pak',
+ '../views.gyp:views',
+ '../views.gyp:views_test_support',
+ 'views_examples_lib',
+ ],
+ 'sources': [
+ 'examples_main.cc',
+ ],
+ }, # target_name: views_examples_exe
+ {
+ 'target_name': 'views_examples_with_content_lib',
+ 'type': '<(component)',
+ 'dependencies': [
+ '../../../base/base.gyp:base',
+ '../../../base/base.gyp:base_i18n',
+ '../../../content/content.gyp:content',
+ '../../../skia/skia.gyp:skia',
+ '../../../third_party/icu/icu.gyp:icui18n',
+ '../../../third_party/icu/icu.gyp:icuuc',
+ '../../../url/url.gyp:url_lib',
+ '../../aura/aura.gyp:aura',
+ '../../base/ui_base.gyp:ui_base',
+ '../../events/events.gyp:events',
+ '../../gfx/gfx.gyp:gfx',
+ '../../gfx/gfx.gyp:gfx_geometry',
+ '../../resources/ui_resources.gyp:ui_resources',
+ '../../resources/ui_resources.gyp:ui_test_pak',
+ '../controls/webview/webview.gyp:webview',
+ '../views.gyp:views',
+ 'views_examples_lib',
+ ],
+ 'include_dirs': [
+ '../../..',
+ ],
+ 'defines': [
+ 'VIEWS_EXAMPLES_WITH_CONTENT_IMPLEMENTATION',
+ ],
+ 'sources': [
+ 'examples_window_with_content.cc',
+ 'examples_window_with_content.h',
+ 'views_examples_with_content_export.h',
+ 'webview_example.cc',
+ 'webview_example.h',
+ ],
+ 'conditions': [
+ ['OS=="win"', {
+ 'include_dirs': [
+ '../../../third_party/wtl/include',
+ ],
+ # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
+ 'msvs_disabled_warnings': [ 4267, ],
+ }],
+ ],
+ }, # target_name: views_examples_with_content_lib
+ {
+ 'target_name': 'views_examples_with_content_exe',
+ 'type': 'executable',
+ 'dependencies': [
+ '../../../base/base.gyp:base',
+ '../../../base/base.gyp:base_i18n',
+ '../../../content/content.gyp:content',
+ '../../../content/content_shell_and_tests.gyp:content_shell_lib',
+ '../../../content/content_shell_and_tests.gyp:test_support_content',
+ '../../../skia/skia.gyp:skia',
+ '../../../third_party/icu/icu.gyp:icui18n',
+ '../../../third_party/icu/icu.gyp:icuuc',
+ '../../aura/aura.gyp:aura',
+ '../../base/ui_base.gyp:ui_base',
+ '../../compositor/compositor.gyp:compositor',
+ '../../events/events.gyp:events',
+ '../../gfx/gfx.gyp:gfx',
+ '../../gfx/gfx.gyp:gfx_geometry',
+ '../../resources/ui_resources.gyp:ui_resources',
+ '../../resources/ui_resources.gyp:ui_test_pak',
+ '../../wm/wm.gyp:wm_test_support',
+ '../views.gyp:views',
+ '../views.gyp:views_test_support',
+ 'views_examples_with_content_lib',
+ ],
+ 'include_dirs': [
+ '../../..',
+ ],
+ 'sources': [
+ '../../../content/app/startup_helper_win.cc',
+ 'content_client/examples_browser_main_parts.cc',
+ 'content_client/examples_browser_main_parts.h',
+ 'content_client/examples_content_browser_client.cc',
+ 'content_client/examples_content_browser_client.h',
+ 'content_client/examples_main_delegate.cc',
+ 'content_client/examples_main_delegate.h',
+ 'content_client/examples_main.cc',
+ ],
+ 'conditions': [
+ ['OS=="win"', {
+ 'link_settings': {
+ 'libraries': [
+ '-limm32.lib',
+ '-loleacc.lib',
+ ]
+ },
+ 'msvs_settings': {
+ 'VCManifestTool': {
+ 'AdditionalManifestFiles': [
+ 'views_examples.exe.manifest',
+ ],
+ },
+ 'VCLinkerTool': {
+ 'SubSystem': '2', # Set /SUBSYSTEM:WINDOWS
+ },
+ },
+ 'dependencies': [
+ '../../../sandbox/sandbox.gyp:sandbox',
+ ],
+ }],
+ ['OS=="win"', {
+ 'sources/': [
+ # This is needed because the aura rule strips it from the default
+ # sources list.
+ ['include', '^../../../content/app/startup_helper_win.cc'],
+ ],
+ }],
+ ],
+ }, # target_name: views_examples_with_content_exe
+ ],
+}
diff --git a/ui/views/focus/view_storage.h b/ui/views/focus/view_storage.h
index 629aec1cbb..5e36f3c5e9 100644
--- a/ui/views/focus/view_storage.h
+++ b/ui/views/focus/view_storage.h
@@ -17,7 +17,7 @@ template <typename T> struct DefaultSingletonTraits;
// used for example in the FocusManager to store/restore focused views when the
// main window becomes active/inactive.
// It automatically removes a view from the storage if the view is removed from
-// the tree hierarchy.
+// the tree hierarchy or when the view is destroyed, which ever comes first.
//
// To use it, you first need to create a view storage id that can then be used
// to store/retrieve views.
diff --git a/ui/views/ime/OWNERS b/ui/views/ime/OWNERS
index 953dfa3b43..9f6409afd8 100644
--- a/ui/views/ime/OWNERS
+++ b/ui/views/ime/OWNERS
@@ -1,3 +1,6 @@
-komatsu@chromium.org
+# primary reviewer
+yukishiino@chromium.org
+
+# backup reviewers.
+mukai@chromium.org
nona@chromium.org
-penghuang@chromium.org
diff --git a/ui/views/view.cc b/ui/views/view.cc
index 5875c7cee8..2da6e3020d 100644
--- a/ui/views/view.cc
+++ b/ui/views/view.cc
@@ -20,7 +20,6 @@
#include "ui/base/cursor/cursor.h"
#include "ui/base/dragdrop/drag_drop_types.h"
#include "ui/base/ui_base_switches_util.h"
-#include "ui/compositor/clone_layer.h"
#include "ui/compositor/compositor.h"
#include "ui/compositor/layer.h"
#include "ui/compositor/layer_animator.h"
@@ -41,6 +40,7 @@
#include "ui/views/border.h"
#include "ui/views/context_menu_controller.h"
#include "ui/views/drag_controller.h"
+#include "ui/views/focus/view_storage.h"
#include "ui/views/layout/layout_manager.h"
#include "ui/views/rect_based_targeting_utils.h"
#include "ui/views/views_delegate.h"
@@ -171,6 +171,8 @@ View::~View() {
if (parent_)
parent_->RemoveChildView(this);
+ ViewStorage::GetInstance()->ViewRemoved(this);
+
for (Views::const_iterator i(children_.begin()); i != children_.end(); ++i) {
(*i)->parent_ = NULL;
if (!(*i)->owned_by_client_)
@@ -506,10 +508,6 @@ void View::SetPaintToLayer(bool paint_to_layer) {
}
}
-scoped_ptr<ui::Layer> View::RecreateLayer() {
- return ui::CloneLayer(this);
-}
-
// RTL positioning -------------------------------------------------------------
gfx::Rect View::GetMirroredBounds() const {
@@ -590,14 +588,19 @@ const char* View::GetClassName() const {
return kViewClassName;
}
-View* View::GetAncestorWithClassName(const std::string& name) {
- for (View* view = this; view; view = view->parent_) {
+const View* View::GetAncestorWithClassName(const std::string& name) const {
+ for (const View* view = this; view; view = view->parent_) {
if (!strcmp(view->GetClassName(), name.c_str()))
return view;
}
return NULL;
}
+View* View::GetAncestorWithClassName(const std::string& name) {
+ return const_cast<View*>(const_cast<const View*>(this)->
+ GetAncestorWithClassName(name));
+}
+
const View* View::GetViewByID(int id) const {
if (id == id_)
return const_cast<View*>(this);
diff --git a/ui/views/view.h b/ui/views/view.h
index cc4c9a1208..a839c06f18 100644
--- a/ui/views/view.h
+++ b/ui/views/view.h
@@ -323,9 +323,6 @@ class VIEWS_EXPORT View : public ui::LayerDelegate,
// Compositor.
void SetPaintToLayer(bool paint_to_layer);
- // Overriden from ui:LayerOwner:
- virtual scoped_ptr<ui::Layer> RecreateLayer() OVERRIDE;
-
// RTL positioning -----------------------------------------------------------
// Methods for accessing the bounds and position of the view, relative to its
@@ -404,6 +401,7 @@ class VIEWS_EXPORT View : public ui::LayerDelegate,
// Returns the first ancestor, starting at this, whose class name is |name|.
// Returns null if no ancestor has the class name |name|.
+ const View* GetAncestorWithClassName(const std::string& name) const;
View* GetAncestorWithClassName(const std::string& name);
// Recursively descends the view tree starting at this view, and returns
@@ -1024,6 +1022,8 @@ class VIEWS_EXPORT View : public ui::LayerDelegate,
// changed. The default implementation calls SchedulePaint() on this View.
virtual void OnEnabledChanged();
+ bool needs_layout() const { return needs_layout_; }
+
// Tree operations -----------------------------------------------------------
// This method is invoked when the tree changes.
diff --git a/ui/views/view_unittest.cc b/ui/views/view_unittest.cc
index 24a2612974..d681114720 100644
--- a/ui/views/view_unittest.cc
+++ b/ui/views/view_unittest.cc
@@ -41,10 +41,6 @@
#include "ui/views/window/dialog_delegate.h"
#include "ui/wm/core/window_util.h"
-#if defined(OS_WIN)
-#include "ui/views/test/test_views_delegate.h"
-#endif
-
using base::ASCIIToUTF16;
namespace {
@@ -3630,23 +3626,20 @@ TEST_F(ViewTest, FocusableAssertions) {
// Creates a widget of TYPE_CONTROL.
// The caller takes ownership of the returned widget.
-views::Widget* CreateControlWidget(
- aura::Window* parent,
- const gfx::Rect& bounds) {
- views::Widget::InitParams params(views::Widget::InitParams::TYPE_CONTROL);
+Widget* CreateControlWidget(aura::Window* parent, const gfx::Rect& bounds) {
+ Widget::InitParams params(Widget::InitParams::TYPE_CONTROL);
params.parent = parent;
params.bounds = bounds;
- views::Widget* widget = new views::Widget();
+ Widget* widget = new Widget();
widget->Init(params);
return widget;
}
// Returns a view with a layer with the passed in |bounds| and |layer_name|.
// The caller takes ownership of the returned view.
-views::View* CreateViewWithLayer(
- const gfx::Rect& bounds,
- const char* layer_name) {
- views::View* view = new views::View();
+View* CreateViewWithLayer(const gfx::Rect& bounds,
+ const char* layer_name) {
+ View* view = new View();
view->SetBoundsRect(bounds);
view->SetPaintToLayer(true);
view->layer()->set_name(layer_name);
@@ -3666,35 +3659,50 @@ views::View* CreateViewWithLayer(
// +-- v5
// +-- v6
// +-- v7
+// +-- v8
+// +-- v9
TEST_F(ViewTest, RecreateLayers) {
- views::Widget* w1 = CreateControlWidget(GetContext(),
- gfx::Rect(0, 0, 100, 100));
+ Widget* w1 = CreateControlWidget(GetContext(), gfx::Rect(0, 0, 100, 100));
w1->GetNativeView()->layer()->set_name("w1");
- views::View* v2 = new views::View();
+ View* v2 = new View();
v2->SetBounds(0, 1, 100, 101);
- views::View* v3 = new views::View();
+ View* v3 = new View();
v3->SetBounds(0, 2, 100, 102);
- views::View* w2_host_view = new views::View();
+ View* w2_host_view = new View();
- w1->GetRootView()->AddChildView(CreateViewWithLayer(
- gfx::Rect(0, 3, 100, 103), "v1"));
+ View* v1 = CreateViewWithLayer(gfx::Rect(0, 3, 100, 103), "v1");
+ ui::Layer* v1_layer = v1->layer();
+ w1->GetRootView()->AddChildView(v1);
w1->GetRootView()->AddChildView(v2);
v2->AddChildView(v3);
- v2->AddChildView(CreateViewWithLayer(gfx::Rect(0, 4, 100, 104), "v4"));
+ View* v4 = CreateViewWithLayer(gfx::Rect(0, 4, 100, 104), "v4");
+ ui::Layer* v4_layer = v4->layer();
+ v2->AddChildView(v4);
w1->GetRootView()->AddChildView(w2_host_view);
- w1->GetRootView()->AddChildView(CreateViewWithLayer(
- gfx::Rect(0, 4, 100, 104), "v7"));
+ View* v7 = CreateViewWithLayer(gfx::Rect(0, 4, 100, 104), "v7");
+ ui::Layer* v7_layer = v7->layer();
+ w1->GetRootView()->AddChildView(v7);
+
+ View* v8 = CreateViewWithLayer(gfx::Rect(0, 4, 100, 104), "v8");
+ ui::Layer* v8_layer = v8->layer();
+ v7->AddChildView(v8);
+
+ View* v9 = CreateViewWithLayer(gfx::Rect(0, 4, 100, 104), "v9");
+ ui::Layer* v9_layer = v9->layer();
+ v7->AddChildView(v9);
- views::Widget* w2 = CreateControlWidget(w1->GetNativeView(),
+ Widget* w2 = CreateControlWidget(w1->GetNativeView(),
gfx::Rect(0, 5, 100, 105));
w2->GetNativeView()->layer()->set_name("w2");
- w2->GetNativeView()->SetProperty(views::kHostViewKey, w2_host_view);
+ w2->GetNativeView()->SetProperty(kHostViewKey, w2_host_view);
- views::View* v5 = CreateViewWithLayer(gfx::Rect(0, 6, 100, 106), "v5");
+ View* v5 = CreateViewWithLayer(gfx::Rect(0, 6, 100, 106), "v5");
w2->GetRootView()->AddChildView(v5);
- v5->AddChildView(CreateViewWithLayer(gfx::Rect(0, 7, 100, 107), "v6"));
+ View* v6 = CreateViewWithLayer(gfx::Rect(0, 7, 100, 107), "v6");
+ ui::Layer* v6_layer = v6->layer();
+ v5->AddChildView(v6);
// Test the initial order of the layers.
ui::Layer* w1_layer = w1->GetNativeView()->layer();
@@ -3708,20 +3716,58 @@ TEST_F(ViewTest, RecreateLayers) {
{
scoped_ptr<ui::LayerTreeOwner> cloned_owner(
wm::RecreateLayers(w1->GetNativeView()));
- w1_layer = cloned_owner->root();
+ EXPECT_EQ(w1_layer, cloned_owner->root());
+ EXPECT_NE(w1_layer, w1->GetNativeView()->layer());
- // The order of the layers returned by RecreateWindowLayers() should match
- // the order of the layers prior to calling RecreateWindowLayers().
+ // The old layers should still exist and have the same hierarchy.
ASSERT_EQ("w1", w1_layer->name());
ASSERT_EQ("v1 v4 w2 v7", ui::test::ChildLayerNamesAsString(*w1_layer));
- w2_layer = w1_layer->children()[2];
ASSERT_EQ("v5", ui::test::ChildLayerNamesAsString(*w2_layer));
- v5_layer = w2_layer->children()[0];
ASSERT_EQ("v6", ui::test::ChildLayerNamesAsString(*v5_layer));
-
+ EXPECT_EQ("v8 v9", ui::test::ChildLayerNamesAsString(*v7_layer));
+
+ ASSERT_EQ(4u, w1_layer->children().size());
+ EXPECT_EQ(v1_layer, w1_layer->children()[0]);
+ EXPECT_EQ(v4_layer, w1_layer->children()[1]);
+ EXPECT_EQ(w2_layer, w1_layer->children()[2]);
+ EXPECT_EQ(v7_layer, w1_layer->children()[3]);
+
+ ASSERT_EQ(1u, w2_layer->children().size());
+ EXPECT_EQ(v5_layer, w2_layer->children()[0]);
+
+ ASSERT_EQ(1u, v5_layer->children().size());
+ EXPECT_EQ(v6_layer, v5_layer->children()[0]);
+
+ ASSERT_EQ(0u, v6_layer->children().size());
+
+ EXPECT_EQ(2u, v7_layer->children().size());
+ EXPECT_EQ(v8_layer, v7_layer->children()[0]);
+ EXPECT_EQ(v9_layer, v7_layer->children()[1]);
+
+ // The cloned layers should have the same hierarchy as old.
+ ui::Layer* w1_new_layer = w1->GetNativeView()->layer();
+ EXPECT_EQ("w1", w1_new_layer->name());
+ ASSERT_EQ("v1 v4 w2 v7", ui::test::ChildLayerNamesAsString(*w1_new_layer));
+ ui::Layer* w2_new_layer = w1_new_layer->children()[2];
+ ASSERT_EQ("v5", ui::test::ChildLayerNamesAsString(*w2_new_layer));
+ ui::Layer* v5_new_layer = w2_new_layer->children()[0];
+ ASSERT_EQ("v6", ui::test::ChildLayerNamesAsString(*v5_new_layer));
+ ui::Layer* v7_new_layer = w1_new_layer->children()[3];
+ ASSERT_EQ("v8 v9", ui::test::ChildLayerNamesAsString(*v7_new_layer));
}
// The views and the widgets are destroyed when AuraTestHelper::TearDown()
// destroys root_window().
}
+// Verifies when a view is deleted it is removed from ViewStorage.
+TEST_F(ViewTest, UpdateViewStorageOnDelete) {
+ ViewStorage* view_storage = ViewStorage::GetInstance();
+ const int storage_id = view_storage->CreateStorageID();
+ {
+ View view;
+ view_storage->StoreView(storage_id, &view);
+ }
+ EXPECT_TRUE(view_storage->RetrieveView(storage_id) == NULL);
+}
+
} // namespace views
diff --git a/ui/views/views.gyp b/ui/views/views.gyp
index 9b010e7961..feb92d8942 100644
--- a/ui/views/views.gyp
+++ b/ui/views/views.gyp
@@ -5,13 +5,6 @@
'variables': {
'chromium_code': 1,
},
- 'target_defaults': {
- 'conditions': [
- ['OS!="linux" or chromeos==1', {
- 'sources/': [ ['exclude', '_linux\\.(h|cc)$'] ],
- }],
- ],
- },
'targets': [
{
'target_name': 'views',
@@ -433,6 +426,11 @@
'bubble/tray_bubble_view.h',
],
}],
+ ['chromeos==0 and use_x11==1', {
+ 'dependencies': [
+ '../display/display.gyp:display',
+ ],
+ }],
['OS=="linux" and chromeos==0', {
'dependencies': [
'../shell_dialogs/shell_dialogs.gyp:shell_dialogs',
@@ -551,33 +549,6 @@
],
}, # target_name: views_test_support
{
- 'target_name': 'views_with_content_test_support',
- 'type': 'static_library',
- 'dependencies': [
- '../../base/base.gyp:base',
- '../../content/content.gyp:content',
- '../../content/content_shell_and_tests.gyp:test_support_content',
- '../../ipc/ipc.gyp:test_support_ipc',
- '../../skia/skia.gyp:skia',
- '../../testing/gtest.gyp:gtest',
- '../aura/aura.gyp:aura',
- '../base/ui_base.gyp:ui_base',
- '../events/events.gyp:events',
- '../gfx/gfx.gyp:gfx',
- '../gfx/gfx.gyp:gfx_geometry',
- 'controls/webview/webview.gyp:webview',
- 'views_test_support',
- 'views',
- ],
- 'include_dirs': [
- '..',
- ],
- 'sources': [
- 'test/webview_test_helper.cc',
- 'test/webview_test_helper.h',
- ],
- }, # target_name: views_with_content_test_support
- {
'target_name': 'views_unittests',
'type': 'executable',
'dependencies': [
@@ -718,225 +689,5 @@
}],
],
}, # target_name: views_unittests
- {
- 'target_name': 'views_examples_lib',
- 'type': '<(component)',
- 'dependencies': [
- '../../base/base.gyp:base',
- '../../skia/skia.gyp:skia',
- '../../third_party/icu/icu.gyp:icui18n',
- '../../third_party/icu/icu.gyp:icuuc',
- '../aura/aura.gyp:aura',
- '../base/ui_base.gyp:ui_base',
- '../events/events.gyp:events',
- '../gfx/gfx.gyp:gfx',
- '../gfx/gfx.gyp:gfx_geometry',
- '../resources/ui_resources.gyp:ui_resources',
- '../resources/ui_resources.gyp:ui_test_pak',
- 'views',
- ],
- 'include_dirs': [
- '..',
- ],
- 'defines': [
- 'VIEWS_EXAMPLES_IMPLEMENTATION',
- ],
- 'sources': [
- 'examples/bubble_example.cc',
- 'examples/bubble_example.h',
- 'examples/button_example.cc',
- 'examples/button_example.h',
- 'examples/checkbox_example.cc',
- 'examples/checkbox_example.h',
- 'examples/combobox_example.cc',
- 'examples/combobox_example.h',
- 'examples/double_split_view_example.cc',
- 'examples/double_split_view_example.h',
- 'examples/example_base.cc',
- 'examples/example_base.h',
- 'examples/example_combobox_model.cc',
- 'examples/example_combobox_model.h',
- 'examples/examples_window.cc',
- 'examples/examples_window.h',
- 'examples/label_example.cc',
- 'examples/label_example.h',
- 'examples/link_example.cc',
- 'examples/link_example.h',
- 'examples/message_box_example.cc',
- 'examples/message_box_example.h',
- 'examples/menu_example.cc',
- 'examples/menu_example.h',
- 'examples/multiline_example.cc',
- 'examples/multiline_example.h',
- 'examples/progress_bar_example.cc',
- 'examples/progress_bar_example.h',
- 'examples/radio_button_example.cc',
- 'examples/radio_button_example.h',
- 'examples/scroll_view_example.cc',
- 'examples/scroll_view_example.h',
- 'examples/single_split_view_example.cc',
- 'examples/single_split_view_example.h',
- 'examples/slider_example.cc',
- 'examples/slider_example.h',
- 'examples/tabbed_pane_example.cc',
- 'examples/tabbed_pane_example.h',
- 'examples/table_example.cc',
- 'examples/table_example.h',
- 'examples/text_example.cc',
- 'examples/text_example.h',
- 'examples/textfield_example.cc',
- 'examples/textfield_example.h',
- 'examples/throbber_example.cc',
- 'examples/throbber_example.h',
- 'examples/tree_view_example.cc',
- 'examples/tree_view_example.h',
- 'examples/views_examples_export.h',
- 'examples/widget_example.cc',
- 'examples/widget_example.h',
- ],
- 'conditions': [
- ['OS=="win"', {
- 'include_dirs': [
- '../third_party/wtl/include',
- ],
- # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
- 'msvs_disabled_warnings': [ 4267, ],
- }],
- ],
- }, # target_name: views_examples_lib
- {
- 'target_name': 'views_examples_exe',
- 'type': 'executable',
- 'dependencies': [
- '../../base/base.gyp:base',
- '../../base/base.gyp:base_i18n',
- '../aura/aura.gyp:aura',
- '../base/ui_base.gyp:ui_base',
- '../compositor/compositor.gyp:compositor',
- '../compositor/compositor.gyp:compositor_test_support',
- '../gfx/gfx.gyp:gfx',
- '../resources/ui_resources.gyp:ui_test_pak',
- 'views',
- 'views_examples_lib',
- 'views_test_support',
- ],
- 'sources': [
- 'examples/examples_main.cc',
- ],
- }, # target_name: views_examples_exe
- {
- 'target_name': 'views_examples_with_content_lib',
- 'type': '<(component)',
- 'dependencies': [
- '../../base/base.gyp:base',
- '../../base/base.gyp:base_i18n',
- '../../content/content.gyp:content',
- '../../skia/skia.gyp:skia',
- '../../third_party/icu/icu.gyp:icui18n',
- '../../third_party/icu/icu.gyp:icuuc',
- '../../url/url.gyp:url_lib',
- '../aura/aura.gyp:aura',
- '../base/ui_base.gyp:ui_base',
- '../events/events.gyp:events',
- '../gfx/gfx.gyp:gfx',
- '../gfx/gfx.gyp:gfx_geometry',
- '../resources/ui_resources.gyp:ui_resources',
- '../resources/ui_resources.gyp:ui_test_pak',
- 'controls/webview/webview.gyp:webview',
- 'views',
- 'views_examples_lib',
- ],
- 'include_dirs': [
- '..',
- ],
- 'defines': [
- 'VIEWS_EXAMPLES_WITH_CONTENT_IMPLEMENTATION',
- ],
- 'sources': [
- 'examples/examples_window_with_content.cc',
- 'examples/examples_window_with_content.h',
- 'examples/views_examples_with_content_export.h',
- 'examples/webview_example.cc',
- 'examples/webview_example.h',
- ],
- 'conditions': [
- ['OS=="win"', {
- 'include_dirs': [
- '../third_party/wtl/include',
- ],
- # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
- 'msvs_disabled_warnings': [ 4267, ],
- }],
- ],
- }, # target_name: views_examples_with_content_lib
- {
- 'target_name': 'views_examples_with_content_exe',
- 'type': 'executable',
- 'dependencies': [
- '../../base/base.gyp:base',
- '../../base/base.gyp:base_i18n',
- '../../content/content.gyp:content',
- '../../content/content_shell_and_tests.gyp:content_shell_lib',
- '../../content/content_shell_and_tests.gyp:test_support_content',
- '../../skia/skia.gyp:skia',
- '../../third_party/icu/icu.gyp:icui18n',
- '../../third_party/icu/icu.gyp:icuuc',
- '../aura/aura.gyp:aura',
- '../base/ui_base.gyp:ui_base',
- '../compositor/compositor.gyp:compositor',
- '../events/events.gyp:events',
- '../gfx/gfx.gyp:gfx',
- '../gfx/gfx.gyp:gfx_geometry',
- '../resources/ui_resources.gyp:ui_resources',
- '../resources/ui_resources.gyp:ui_test_pak',
- '../wm/wm.gyp:wm_test_support',
- 'views',
- 'views_examples_with_content_lib',
- 'views_test_support'
- ],
- 'include_dirs': [
- '../..',
- ],
- 'sources': [
- '../../content/app/startup_helper_win.cc',
- 'examples/content_client/examples_browser_main_parts.cc',
- 'examples/content_client/examples_browser_main_parts.h',
- 'examples/content_client/examples_content_browser_client.cc',
- 'examples/content_client/examples_content_browser_client.h',
- 'examples/content_client/examples_main_delegate.cc',
- 'examples/content_client/examples_main_delegate.h',
- 'examples/content_client/examples_main.cc',
- ],
- 'conditions': [
- ['OS=="win"', {
- 'link_settings': {
- 'libraries': [
- '-limm32.lib',
- '-loleacc.lib',
- ]
- },
- 'msvs_settings': {
- 'VCManifestTool': {
- 'AdditionalManifestFiles': [
- 'examples\\views_examples.exe.manifest',
- ],
- },
- 'VCLinkerTool': {
- 'SubSystem': '2', # Set /SUBSYSTEM:WINDOWS
- },
- },
- 'dependencies': [
- '../../sandbox/sandbox.gyp:sandbox',
- ],
- }],
- ['OS=="win"', {
- 'sources/': [
- # This is needed because the aura rule strips it from the default
- # sources list.
- ['include', '^../../content/app/startup_helper_win.cc'],
- ],
- }],
- ],
- }, # target_name: views_examples_with_content_exe
],
}
diff --git a/ui/views/widget/desktop_aura/desktop_dispatcher_client.h b/ui/views/widget/desktop_aura/desktop_dispatcher_client.h
index 0d01df24b6..5351d8a1b7 100644
--- a/ui/views/widget/desktop_aura/desktop_dispatcher_client.h
+++ b/ui/views/widget/desktop_aura/desktop_dispatcher_client.h
@@ -8,8 +8,8 @@
#include "base/basictypes.h"
#include "base/callback.h"
#include "base/memory/weak_ptr.h"
-#include "ui/aura/client/dispatcher_client.h"
#include "ui/views/views_export.h"
+#include "ui/wm/public/dispatcher_client.h"
namespace views {
diff --git a/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc b/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc
index 0fcebdc63b..c56a3ce0e0 100644
--- a/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc
+++ b/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.cc
@@ -10,10 +10,9 @@
#include "base/lazy_instance.h"
#include "base/message_loop/message_loop.h"
#include "base/message_loop/message_pump_dispatcher.h"
-#include "ui/aura/client/drag_drop_client.h"
-#include "ui/aura/client/drag_drop_delegate.h"
#include "ui/aura/window.h"
#include "ui/aura/window_tree_host.h"
+#include "ui/base/clipboard/clipboard.h"
#include "ui/base/dragdrop/drag_drop_types.h"
#include "ui/base/dragdrop/drop_target_event.h"
#include "ui/base/dragdrop/os_exchange_data.h"
@@ -22,6 +21,8 @@
#include "ui/base/x/x11_util.h"
#include "ui/events/event.h"
#include "ui/views/widget/desktop_aura/desktop_native_cursor_manager.h"
+#include "ui/wm/public/drag_drop_client.h"
+#include "ui/wm/public/drag_drop_delegate.h"
using aura::client::DragDropDelegate;
using ui::OSExchangeData;
@@ -36,19 +37,23 @@ const int kWantFurtherPosEvents = 2;
const char kXdndActionCopy[] = "XdndActionCopy";
const char kXdndActionMove[] = "XdndActionMove";
const char kXdndActionLink[] = "XdndActionLink";
+const char kXdndActionDirectSave[] = "XdndActionDirectSave";
const char kChromiumDragReciever[] = "_CHROMIUM_DRAG_RECEIVER";
const char kXdndSelection[] = "XdndSelection";
+const char kXdndDirectSave0[] = "XdndDirectSave0";
const char* kAtomsToCache[] = {
kChromiumDragReciever,
"XdndActionAsk",
kXdndActionCopy,
+ kXdndActionDirectSave,
kXdndActionLink,
"XdndActionList",
kXdndActionMove,
"XdndActionPrivate",
"XdndAware",
+ kXdndDirectSave0,
"XdndDrop",
"XdndEnter",
"XdndFinished",
@@ -58,9 +63,15 @@ const char* kAtomsToCache[] = {
kXdndSelection,
"XdndStatus",
"XdndTypeList",
+ ui::Clipboard::kMimeTypeText,
+ "_NET_WM_WINDOW_TYPE_MENU",
NULL
};
+// The time to wait for the target to respond after the user has released the
+// mouse button before ending the move loop.
+const int kEndMoveLoopTimeoutMs = 30000;
+
static base::LazyInstance<
std::map< ::Window, views::DesktopDragDropClientAuraX11*> >::Leaky
g_live_client_map = LAZY_INSTANCE_INITIALIZER;
@@ -70,9 +81,11 @@ static base::LazyInstance<
class DragTargetWindowFinder : public ui::EnumerateWindowsDelegate {
public:
DragTargetWindowFinder(XID ignored_icon_window,
+ Atom menu_type_atom,
gfx::Point screen_loc)
: ignored_icon_window_(ignored_icon_window),
output_window_(None),
+ menu_type_atom_(menu_type_atom),
screen_loc_(screen_loc) {
ui::EnumerateTopLevelWindows(this);
}
@@ -92,7 +105,10 @@ class DragTargetWindowFinder : public ui::EnumerateWindowsDelegate {
if (!ui::WindowContainsPoint(window, screen_loc_))
return false;
- if (ui::PropertyExists(window, "WM_STATE")) {
+ int value = 0;
+ if (ui::PropertyExists(window, "WM_STATE") ||
+ (ui::GetIntProperty(window, "_NET_WM_WINDOW_TYPE", &value) &&
+ static_cast<Atom>(value) == menu_type_atom_)) {
output_window_ = window;
return true;
}
@@ -103,6 +119,7 @@ class DragTargetWindowFinder : public ui::EnumerateWindowsDelegate {
private:
XID ignored_icon_window_;
XID output_window_;
+ const Atom menu_type_atom_;
gfx::Point screen_loc_;
DISALLOW_COPY_AND_ASSIGN(DragTargetWindowFinder);
@@ -113,8 +130,9 @@ class DragTargetWindowFinder : public ui::EnumerateWindowsDelegate {
// |mouse_window|. If there's a Xdnd aware window, it will be returned in
// |dest_window|.
void FindWindowFor(const gfx::Point& screen_point,
- ::Window* mouse_window, ::Window* dest_window) {
- DragTargetWindowFinder finder(None, screen_point);
+ ::Window* mouse_window, ::Window* dest_window,
+ Atom menu_type_atom) {
+ DragTargetWindowFinder finder(None, menu_type_atom, screen_point);
*mouse_window = finder.window();
*dest_window = None;
@@ -404,6 +422,7 @@ DesktopDragDropClientAuraX11::DesktopDragDropClientAuraX11(
target_window_(NULL),
source_provider_(NULL),
source_current_window_(None),
+ source_state_(SOURCE_STATE_OTHER),
drag_operation_(0),
resulting_operation_(0),
grab_cursor_(cursor_manager->GetInitializedCursor(ui::kCursorGrabbing)),
@@ -423,6 +442,10 @@ DesktopDragDropClientAuraX11::DesktopDragDropClientAuraX11(
DesktopDragDropClientAuraX11::~DesktopDragDropClientAuraX11() {
g_live_client_map.Get().erase(xwindow_);
+ // Make sure that all observers are unregistered from source and target
+ // windows. This may be necessary when the parent native widget gets destroyed
+ // while a drag operation is in progress.
+ NotifyDragLeave();
}
// static
@@ -489,6 +512,11 @@ void DesktopDragDropClientAuraX11::OnXdndStatus(
DVLOG(1) << "XdndStatus";
unsigned long source_window = event.data.l[0];
+
+ waiting_on_status_.erase(source_window);
+ if (source_window != source_current_window_)
+ return;
+
int drag_operation = ui::DragDropTypes::DRAG_NONE;
if (event.data.l[1] & 1) {
::Atom atom_operation = event.data.l[4];
@@ -514,16 +542,16 @@ void DesktopDragDropClientAuraX11::OnXdndStatus(
// the spec) the other side must handle further position messages within
// it. GTK+ doesn't bother with this, so neither should we.
- waiting_on_status_.erase(source_window);
-
- if (ContainsKey(pending_drop_, source_window)) {
+ if (source_state_ == SOURCE_STATE_PENDING_DROP) {
// We were waiting on the status message so we could send the XdndDrop.
+ source_state_ = SOURCE_STATE_DROPPED;
SendXdndDrop(source_window);
return;
}
NextPositionMap::iterator it = next_position_message_.find(source_window);
- if (it != next_position_message_.end()) {
+ if (source_state_ == SOURCE_STATE_OTHER &&
+ it != next_position_message_.end()) {
// We were waiting on the status message so we could send off the next
// position message we queued up.
gfx::Point p = it->second.first;
@@ -599,6 +627,8 @@ int DesktopDragDropClientAuraX11::StartDragAndDrop(
source_current_window_ = None;
DCHECK(!g_current_drag_drop_client);
g_current_drag_drop_client = this;
+ waiting_on_status_.clear();
+ source_state_ = SOURCE_STATE_OTHER;
drag_operation_ = operation;
resulting_operation_ = ui::DragDropTypes::DRAG_NONE;
@@ -609,6 +639,14 @@ int DesktopDragDropClientAuraX11::StartDragAndDrop(
source_provider_->TakeOwnershipOfSelection();
std::vector< ::Atom> actions = GetOfferedDragOperations();
+ if (!source_provider_->file_contents_name().empty()) {
+ actions.push_back(atom_cache_.GetAtom(kXdndActionDirectSave));
+ ui::SetStringProperty(
+ xwindow_,
+ atom_cache_.GetAtom(kXdndDirectSave0),
+ atom_cache_.GetAtom(ui::Clipboard::kMimeTypeText),
+ source_provider_->file_contents_name().AsUTF8Unsafe());
+ }
ui::SetAtomArrayProperty(xwindow_, "XdndActionList", "ATOM", actions);
// It is possible for the DesktopWindowTreeHostX11 to be destroyed during the
@@ -631,6 +669,7 @@ int DesktopDragDropClientAuraX11::StartDragAndDrop(
g_current_drag_drop_client = NULL;
drag_operation_ = 0;
XDeleteProperty(xdisplay_, xwindow_, atom_cache_.GetAtom("XdndActionList"));
+ XDeleteProperty(xdisplay_, xwindow_, atom_cache_.GetAtom(kXdndDirectSave0));
return resulting_operation_;
}
@@ -663,10 +702,14 @@ void DesktopDragDropClientAuraX11::OnWindowDestroyed(aura::Window* window) {
void DesktopDragDropClientAuraX11::OnMouseMovement(XMotionEvent* event) {
gfx::Point screen_point(event->x_root, event->y_root);
+ if (source_state_ != SOURCE_STATE_OTHER)
+ return;
+
// Find the current window the cursor is over.
::Window mouse_window = None;
::Window dest_window = None;
- FindWindowFor(screen_point, &mouse_window, &dest_window);
+ FindWindowFor(screen_point, &mouse_window, &dest_window,
+ atom_cache_.GetAtom("_NET_WM_WINDOW_TYPE_MENU"));
if (source_current_window_ != dest_window) {
if (source_current_window_ != None)
@@ -695,7 +738,11 @@ void DesktopDragDropClientAuraX11::OnMouseReleased() {
if (ContainsKey(waiting_on_status_, source_current_window_)) {
// If we are waiting for an XdndStatus message, we need to wait for it to
// complete.
- pending_drop_.insert(source_current_window_);
+ source_state_ = SOURCE_STATE_PENDING_DROP;
+
+ // Start timer to end the move loop if the target takes too long to send
+ // the XdndStatus and XdndFinished messages.
+ StartEndMoveLoopTimer();
return;
}
@@ -703,7 +750,12 @@ void DesktopDragDropClientAuraX11::OnMouseReleased() {
negotiated_operation_.find(source_current_window_);
if (it != negotiated_operation_.end() && it->second != None) {
// We have negotiated an action with the other end.
+ source_state_ = SOURCE_STATE_DROPPED;
SendXdndDrop(source_current_window_);
+
+ // Start timer to end the move loop if the target takes too long to send
+ // an XdndFinished message.
+ StartEndMoveLoopTimer();
return;
}
@@ -718,6 +770,20 @@ void DesktopDragDropClientAuraX11::OnMoveLoopEnded() {
if (source_current_window_ != None)
SendXdndLeave(source_current_window_);
target_current_context_.reset();
+ source_state_ = SOURCE_STATE_OTHER;
+ end_move_loop_timer_.Stop();
+}
+
+void DesktopDragDropClientAuraX11::StartEndMoveLoopTimer() {
+ end_move_loop_timer_.Start(FROM_HERE,
+ base::TimeDelta::FromMilliseconds(
+ kEndMoveLoopTimeoutMs),
+ this,
+ &DesktopDragDropClientAuraX11::EndMoveLoop);
+}
+
+void DesktopDragDropClientAuraX11::EndMoveLoop() {
+ move_loop_.EndMoveLoop();
}
void DesktopDragDropClientAuraX11::DragTranslate(
diff --git a/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.h b/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.h
index f77e60fe31..360e31cd47 100644
--- a/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.h
+++ b/ui/views/widget/desktop_aura/desktop_drag_drop_client_aurax11.h
@@ -11,7 +11,7 @@
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
-#include "ui/aura/client/drag_drop_client.h"
+#include "base/timer/timer.h"
#include "ui/aura/window_observer.h"
#include "ui/base/cursor/cursor.h"
#include "ui/gfx/point.h"
@@ -19,6 +19,7 @@
#include "ui/views/views_export.h"
#include "ui/views/widget/desktop_aura/x11_whole_screen_move_loop.h"
#include "ui/views/widget/desktop_aura/x11_whole_screen_move_loop_delegate.h"
+#include "ui/wm/public/drag_drop_client.h"
namespace aura {
namespace client {
@@ -96,6 +97,28 @@ class VIEWS_EXPORT DesktopDragDropClientAuraX11
virtual void OnMoveLoopEnded() OVERRIDE;
private:
+ enum SourceState {
+ // |source_current_window_| will receive a drop once we receive an
+ // XdndStatus from it.
+ SOURCE_STATE_PENDING_DROP,
+
+ // The move looped will be ended once we receive XdndFinished from
+ // |source_current_window_|. We should not send XdndPosition to
+ // |source_current_window_| while in this state.
+ SOURCE_STATE_DROPPED,
+
+ // There is no drag in progress or there is a drag in progress and the
+ // user has not yet released the mouse.
+ SOURCE_STATE_OTHER,
+ };
+
+ // Start timer to end the move loop if the target is too slow to respond after
+ // the mouse is released.
+ void StartEndMoveLoopTimer();
+
+ // Ends the move loop.
+ void EndMoveLoop();
+
typedef std::map< ::Window, std::pair<gfx::Point, unsigned long> >
NextPositionMap;
@@ -184,6 +207,7 @@ class VIEWS_EXPORT DesktopDragDropClientAuraX11
// Source side information.
ui::OSExchangeDataProviderAuraX11 const* source_provider_;
::Window source_current_window_;
+ SourceState source_state_;
// The current drag-drop client that has an active operation. Since we have
// multiple root windows and multiple DesktopDragDropClientAuraX11 instances
@@ -198,10 +222,6 @@ class VIEWS_EXPORT DesktopDragDropClientAuraX11
// message.
int resulting_operation_;
- // This window will be receiving a drop as soon as we receive an XdndStatus
- // from it.
- std::set< ::Window> pending_drop_;
-
// We offer the other window a list of possible operations,
// XdndActionsList. This is the requested action from the other window. This
// is None if we haven't sent out an XdndPosition message yet, haven't yet
@@ -213,6 +233,10 @@ class VIEWS_EXPORT DesktopDragDropClientAuraX11
// window responds to an XdndStatus.
std::map< ::Window, ::Atom> negotiated_operation_;
+ // Ends the move loop if the target is too slow to respond after the mouse is
+ // released.
+ base::OneShotTimer<DesktopDragDropClientAuraX11> end_move_loop_timer_;
+
// We use these cursors while dragging.
gfx::NativeCursor grab_cursor_;
gfx::NativeCursor copy_grab_cursor_;
diff --git a/ui/views/widget/desktop_aura/desktop_drag_drop_client_win.h b/ui/views/widget/desktop_aura/desktop_drag_drop_client_win.h
index eda12e0fe9..a8051ca869 100644
--- a/ui/views/widget/desktop_aura/desktop_drag_drop_client_win.h
+++ b/ui/views/widget/desktop_aura/desktop_drag_drop_client_win.h
@@ -7,8 +7,8 @@
#include "base/compiler_specific.h"
#include "base/memory/ref_counted.h"
-#include "ui/aura/client/drag_drop_client.h"
#include "ui/views/views_export.h"
+#include "ui/wm/public/drag_drop_client.h"
namespace ui {
class DragSourceWin;
diff --git a/ui/views/widget/desktop_aura/desktop_drop_target_win.cc b/ui/views/widget/desktop_aura/desktop_drop_target_win.cc
index f1409f8ad2..1369b62eb7 100644
--- a/ui/views/widget/desktop_aura/desktop_drop_target_win.cc
+++ b/ui/views/widget/desktop_aura/desktop_drop_target_win.cc
@@ -5,14 +5,14 @@
#include "ui/views/widget/desktop_aura/desktop_drop_target_win.h"
#include "base/win/win_util.h"
-#include "ui/aura/client/drag_drop_client.h"
-#include "ui/aura/client/drag_drop_delegate.h"
#include "ui/aura/window.h"
#include "ui/aura/window_tree_host.h"
#include "ui/base/dragdrop/drag_drop_types.h"
#include "ui/base/dragdrop/drop_target_event.h"
#include "ui/base/dragdrop/os_exchange_data_provider_win.h"
#include "ui/events/event_constants.h"
+#include "ui/wm/public/drag_drop_client.h"
+#include "ui/wm/public/drag_drop_delegate.h"
using aura::client::DragDropDelegate;
using ui::OSExchangeData;
diff --git a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc
index 0caeab24f8..8341bce675 100644
--- a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc
+++ b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc
@@ -6,10 +6,8 @@
#include "base/bind.h"
#include "base/debug/trace_event.h"
-#include "ui/aura/client/activation_client.h"
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/client/cursor_client.h"
-#include "ui/aura/client/drag_drop_client.h"
#include "ui/aura/client/focus_client.h"
#include "ui/aura/client/window_tree_client.h"
#include "ui/aura/window.h"
@@ -55,6 +53,8 @@
#include "ui/wm/core/shadow_types.h"
#include "ui/wm/core/visibility_controller.h"
#include "ui/wm/core/window_modality_controller.h"
+#include "ui/wm/public/activation_client.h"
+#include "ui/wm/public/drag_drop_client.h"
#if defined(OS_WIN)
#include "ui/base/win/shell.h"
@@ -983,9 +983,6 @@ void DesktopNativeWidgetAura::GetHitTestMask(gfx::Path* mask) const {
native_widget_delegate_->GetHitTestMask(mask);
}
-void DesktopNativeWidgetAura::DidRecreateLayer(ui::Layer* old_layer,
- ui::Layer* new_layer) {}
-
////////////////////////////////////////////////////////////////////////////////
// DesktopNativeWidgetAura, ui::EventHandler implementation:
@@ -1136,7 +1133,7 @@ int DesktopNativeWidgetAura::OnPerformDrop(const ui::DropTargetEvent& event) {
void DesktopNativeWidgetAura::OnHostCloseRequested(
const aura::WindowTreeHost* host) {
- Close();
+ GetWidget()->Close();
}
void DesktopNativeWidgetAura::OnHostResized(const aura::WindowTreeHost* host) {
@@ -1182,6 +1179,10 @@ void DesktopNativeWidgetAura::InstallInputMethodEventFilter() {
void DesktopNativeWidgetAura::UpdateWindowTransparency() {
content_window_->SetTransparent(
desktop_window_tree_host_->ShouldWindowContentsBeTransparent());
+ // Regardless of transparency or not, this root content window will always
+ // fill its bounds completely, so set this flag to true to avoid an
+ // unecessary clear before update.
+ content_window_->SetFillsBoundsCompletely(true);
}
void DesktopNativeWidgetAura::RootWindowDestroyed() {
diff --git a/ui/views/widget/desktop_aura/desktop_native_widget_aura.h b/ui/views/widget/desktop_aura/desktop_native_widget_aura.h
index 05573b9f8f..c2966d97c9 100644
--- a/ui/views/widget/desktop_aura/desktop_native_widget_aura.h
+++ b/ui/views/widget/desktop_aura/desktop_native_widget_aura.h
@@ -6,9 +6,6 @@
#define UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_NATIVE_WIDGET_AURA_H_
#include "base/memory/weak_ptr.h"
-#include "ui/aura/client/activation_change_observer.h"
-#include "ui/aura/client/activation_delegate.h"
-#include "ui/aura/client/drag_drop_delegate.h"
#include "ui/aura/client/focus_change_observer.h"
#include "ui/aura/window_delegate.h"
#include "ui/aura/window_tree_host_observer.h"
@@ -16,6 +13,9 @@
#include "ui/views/ime/input_method_delegate.h"
#include "ui/views/widget/native_widget_private.h"
#include "ui/wm/core/compound_event_filter.h"
+#include "ui/wm/public/activation_change_observer.h"
+#include "ui/wm/public/activation_delegate.h"
+#include "ui/wm/public/drag_drop_delegate.h"
namespace aura {
class WindowEventDispatcher;
@@ -200,8 +200,6 @@ class VIEWS_EXPORT DesktopNativeWidgetAura
virtual void OnWindowTargetVisibilityChanged(bool visible) OVERRIDE;
virtual bool HasHitTestMask() const OVERRIDE;
virtual void GetHitTestMask(gfx::Path* mask) const OVERRIDE;
- virtual void DidRecreateLayer(ui::Layer* old_layer,
- ui::Layer* new_layer) OVERRIDE;
// Overridden from ui::EventHandler:
virtual void OnKeyEvent(ui::KeyEvent* event) OVERRIDE;
diff --git a/ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc b/ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc
index 6752cfbd1b..30dc551f91 100644
--- a/ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc
+++ b/ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc
@@ -6,12 +6,12 @@
#include "base/bind.h"
#include "ui/aura/client/cursor_client.h"
-#include "ui/aura/client/dispatcher_client.h"
#include "ui/aura/test/test_window_delegate.h"
#include "ui/aura/window.h"
#include "ui/aura/window_tree_host.h"
#include "ui/views/test/views_test_base.h"
#include "ui/views/widget/widget.h"
+#include "ui/wm/public/dispatcher_client.h"
namespace views {
diff --git a/ui/views/widget/desktop_aura/desktop_screen_x11.cc b/ui/views/widget/desktop_aura/desktop_screen_x11.cc
index f5a6a7f209..970d86cbec 100644
--- a/ui/views/widget/desktop_aura/desktop_screen_x11.cc
+++ b/ui/views/widget/desktop_aura/desktop_screen_x11.cc
@@ -12,12 +12,12 @@
#include "base/debug/trace_event.h"
#include "base/logging.h"
-#include "base/x11/edid_parser_x11.h"
#include "ui/aura/window.h"
#include "ui/aura/window_event_dispatcher.h"
#include "ui/aura/window_tree_host.h"
#include "ui/base/layout.h"
#include "ui/base/x/x11_util.h"
+#include "ui/display/x11/edid_parser_x11.h"
#include "ui/gfx/display.h"
#include "ui/gfx/display_observer.h"
#include "ui/gfx/native_widget_types.h"
@@ -376,7 +376,7 @@ std::vector<gfx::Display> DesktopScreenX11::BuildDisplaysFromXRandRInfo() {
output_info->crtc);
int64 display_id = -1;
- if (!base::GetDisplayId(output_id, i, &display_id)) {
+ if (!ui::GetDisplayId(output_id, static_cast<uint8>(i), &display_id)) {
// It isn't ideal, but if we can't parse the EDID data, fallback on the
// display number.
display_id = i;
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
index 47bd6300cb..2fc499bbef 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
@@ -10,7 +10,6 @@
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/client/cursor_client.h"
#include "ui/aura/client/focus_client.h"
-#include "ui/aura/client/scoped_tooltip_disabler.h"
#include "ui/aura/window_event_dispatcher.h"
#include "ui/aura/window_property.h"
#include "ui/base/cursor/cursor_loader_win.h"
@@ -40,6 +39,7 @@
#include "ui/wm/core/compound_event_filter.h"
#include "ui/wm/core/input_method_event_filter.h"
#include "ui/wm/core/window_animations.h"
+#include "ui/wm/public/scoped_tooltip_disabler.h"
namespace views {
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h
index a510ed3f35..dc8a218489 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h
@@ -5,11 +5,11 @@
#ifndef UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_WINDOW_TREE_HOST_WIN_H_
#define UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_WINDOW_TREE_HOST_WIN_H_
-#include "ui/aura/client/animation_host.h"
#include "ui/aura/window_tree_host.h"
#include "ui/views/views_export.h"
#include "ui/views/widget/desktop_aura/desktop_window_tree_host.h"
#include "ui/views/win/hwnd_message_handler_delegate.h"
+#include "ui/wm/public/animation_host.h"
namespace aura {
namespace client {
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
index 41b4b50c55..716fbb95b3 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
@@ -85,6 +85,7 @@ const char* kAtomsToCache[] = {
"_NET_WM_STATE_MAXIMIZED_VERT",
"_NET_WM_STATE_SKIP_TASKBAR",
"_NET_WM_STATE_STICKY",
+ "_NET_WM_USER_TIME",
"_NET_WM_WINDOW_OPACITY",
"_NET_WM_WINDOW_TYPE",
"_NET_WM_WINDOW_TYPE_DND",
@@ -134,7 +135,8 @@ DesktopWindowTreeHostX11::DesktopWindowTreeHostX11(
desktop_native_widget_aura_(desktop_native_widget_aura),
content_window_(NULL),
window_parent_(NULL),
- custom_window_shape_(NULL) {
+ custom_window_shape_(NULL),
+ urgency_hint_set_(false) {
}
DesktopWindowTreeHostX11::~DesktopWindowTreeHostX11() {
@@ -177,6 +179,7 @@ gfx::Rect DesktopWindowTreeHostX11::GetX11RootWindowBounds() const {
void DesktopWindowTreeHostX11::HandleNativeWidgetActivationChanged(
bool active) {
if (active) {
+ FlashFrame(false);
OnHostActivated();
open_windows().remove(xwindow_);
open_windows().insert(open_windows().begin(), xwindow_);
@@ -672,8 +675,24 @@ void DesktopWindowTreeHostX11::InitModalType(ui::ModalType modal_type) {
}
void DesktopWindowTreeHostX11::FlashFrame(bool flash_frame) {
- // TODO(erg):
- NOTIMPLEMENTED();
+ if (urgency_hint_set_ == flash_frame)
+ return;
+
+ XWMHints* hints = XGetWMHints(xdisplay_, xwindow_);
+ if (!hints) {
+ // The window hasn't had its hints set yet.
+ hints = XAllocWMHints();
+ }
+
+ if (flash_frame)
+ hints->flags |= XUrgencyHint;
+ else
+ hints->flags &= ~XUrgencyHint;
+
+ XSetWMHints(xdisplay_, xwindow_, hints);
+ XFree(hints);
+
+ urgency_hint_set_ = flash_frame;
}
void DesktopWindowTreeHostX11::OnRootViewLayout() const {
@@ -1145,6 +1164,11 @@ void DesktopWindowTreeHostX11::DispatchMouseEvent(ui::MouseEvent* event) {
event->set_flags(flags);
}
+ // While we unset the urgency hint when we gain focus, we also must remove it
+ // on mouse clicks because we can call FlashFrame() on an active window.
+ if (event->IsAnyButton() || event->IsMouseWheelEvent())
+ FlashFrame(false);
+
if (!g_current_capture || g_current_capture == this) {
SendEventToProcessor(event);
} else {
@@ -1250,13 +1274,26 @@ void DesktopWindowTreeHostX11::MapWindow(ui::WindowShowState show_state) {
size_hints.y = bounds_.y();
XSetWMNormalHints(xdisplay_, xwindow_, &size_hints);
- XWMHints wm_hints;
- wm_hints.flags = InputHint | StateHint;
- // If SHOW_STATE_INACTIVE, tell the window manager that the window is not
- // focusable. This will make the window inactive upon creation.
- wm_hints.input = show_state != ui::SHOW_STATE_INACTIVE;
- wm_hints.initial_state = NormalState;
- XSetWMHints(xdisplay_, xwindow_, &wm_hints);
+ // If SHOW_STATE_INACTIVE, tell the window manager not to focus the window
+ // when mapping. This is done by setting the _NET_WM_USER_TIME to 0. See e.g.
+ // http://standards.freedesktop.org/wm-spec/latest/ar01s05.html
+ if (show_state == ui::SHOW_STATE_INACTIVE) {
+ unsigned long value = 0;
+ XChangeProperty(xdisplay_,
+ xwindow_,
+ atom_cache_.GetAtom("_NET_WM_USER_TIME"),
+ XA_CARDINAL,
+ 32,
+ PropModeReplace,
+ reinterpret_cast<const unsigned char *>(&value),
+ 1);
+ } else {
+ // TODO(piman): if this window was created in response to an X event, we
+ // should set the time to the server time of the event that caused this.
+ // https://crbug.com/355667
+ XDeleteProperty(
+ xdisplay_, xwindow_, atom_cache_.GetAtom("_NET_WM_USER_TIME"));
+ }
XMapWindow(xdisplay_, xwindow_);
@@ -1265,15 +1302,6 @@ void DesktopWindowTreeHostX11::MapWindow(ui::WindowShowState show_state) {
// asynchronous.
base::MessagePumpX11::Current()->BlockUntilWindowMapped(xwindow_);
window_mapped_ = true;
-
- // The window has been created and mapped. It should now accept input.
- if (show_state == ui::SHOW_STATE_INACTIVE) {
- XWMHints wm_hints;
- wm_hints.flags = InputHint;
- wm_hints.input = true;
- // Tell the window manager that the window is now focusable.
- XSetWMHints(xdisplay_, xwindow_, &wm_hints);
- }
}
////////////////////////////////////////////////////////////////////////////////
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h
index 1537a69798..eb27d7e3f2 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h
@@ -291,6 +291,12 @@ private:
base::string16 window_title_;
+ // Whether we currently are flashing our frame. This feature is implemented
+ // by setting the urgency hint with the window manager, which can draw
+ // attention to the window or completely ignore the hint. We stop flashing
+ // the frame when |xwindow_| gains focus or handles a mouse button event.
+ bool urgency_hint_set_;
+
DISALLOW_COPY_AND_ASSIGN(DesktopWindowTreeHostX11);
};
diff --git a/ui/views/widget/desktop_aura/x11_desktop_handler.cc b/ui/views/widget/desktop_aura/x11_desktop_handler.cc
index 3aa874da62..46aef1728f 100644
--- a/ui/views/widget/desktop_aura/x11_desktop_handler.cc
+++ b/ui/views/widget/desktop_aura/x11_desktop_handler.cc
@@ -10,7 +10,9 @@
#include "base/message_loop/message_loop.h"
#include "ui/aura/env.h"
#include "ui/aura/window_event_dispatcher.h"
+#include "ui/base/x/x11_menu_list.h"
#include "ui/base/x/x11_util.h"
+#include "ui/gfx/x/x11_error_tracker.h"
#if !defined(OS_CHROMEOS)
#include "ui/views/ime/input_method.h"
@@ -138,6 +140,26 @@ uint32_t X11DesktopHandler::Dispatch(const base::NativeEvent& event) {
}
break;
}
+ // Menus created by Chrome can be drag and drop targets. Since they are
+ // direct children of the screen root window and have override_redirect
+ // we cannot use regular _NET_CLIENT_LIST_STACKING property to find them
+ // and use a separate cache to keep track of them.
+ // TODO(varkha): Implement caching of all top level X windows and their
+ // coordinates and stacking order to eliminate repeated calls to X server
+ // during mouse movement, drag and shaping events.
+ case CreateNotify: {
+ // The window might be destroyed if the message pump haven't gotten a
+ // chance to run but we can safely ignore the X error.
+ gfx::X11ErrorTracker error_tracker;
+ XCreateWindowEvent *xcwe = &event->xcreatewindow;
+ ui::XMenuList::GetInstance()->MaybeRegisterMenu(xcwe->window);
+ break;
+ }
+ case DestroyNotify: {
+ XDestroyWindowEvent *xdwe = &event->xdestroywindow;
+ ui::XMenuList::GetInstance()->MaybeUnregisterMenu(xdwe->window);
+ break;
+ }
}
return POST_DISPATCH_NONE;
diff --git a/ui/views/widget/desktop_aura/x11_desktop_window_move_client.h b/ui/views/widget/desktop_aura/x11_desktop_window_move_client.h
index 12e5928c0f..42b7d02e3e 100644
--- a/ui/views/widget/desktop_aura/x11_desktop_window_move_client.h
+++ b/ui/views/widget/desktop_aura/x11_desktop_window_move_client.h
@@ -11,11 +11,11 @@
#include "base/compiler_specific.h"
#include "base/message_loop/message_loop.h"
#include "base/timer/timer.h"
-#include "ui/aura/client/window_move_client.h"
#include "ui/gfx/point.h"
#include "ui/views/views_export.h"
#include "ui/views/widget/desktop_aura/x11_whole_screen_move_loop.h"
#include "ui/views/widget/desktop_aura/x11_whole_screen_move_loop_delegate.h"
+#include "ui/wm/public/window_move_client.h"
namespace aura {
class WindowTreeHost;
diff --git a/ui/views/widget/desktop_aura/x11_whole_screen_move_loop.cc b/ui/views/widget/desktop_aura/x11_whole_screen_move_loop.cc
index 3f48b8993b..09e36dcae7 100644
--- a/ui/views/widget/desktop_aura/x11_whole_screen_move_loop.cc
+++ b/ui/views/widget/desktop_aura/x11_whole_screen_move_loop.cc
@@ -8,6 +8,7 @@
// Get rid of a macro from Xlib.h that conflicts with Aura's RootWindow class.
#undef RootWindow
+#include "base/bind.h"
#include "base/message_loop/message_loop.h"
#include "base/message_loop/message_pump_x11.h"
#include "base/run_loop.h"
@@ -31,6 +32,7 @@ namespace {
// The minimum alpha before we declare a pixel transparent when searching in
// our source image.
const uint32 kMinAlpha = 32;
+const unsigned char kDragWidgetOpacity = 0xc0;
class ScopedCapturer {
public:
@@ -56,7 +58,9 @@ X11WholeScreenMoveLoop::X11WholeScreenMoveLoop(
: delegate_(delegate),
in_move_loop_(false),
should_reset_mouse_flags_(false),
- grab_input_window_(None) {
+ grab_input_window_(None),
+ weak_factory_(this) {
+ last_xmotion_.type = LASTEvent;
}
X11WholeScreenMoveLoop::~X11WholeScreenMoveLoop() {}
@@ -64,6 +68,15 @@ X11WholeScreenMoveLoop::~X11WholeScreenMoveLoop() {}
////////////////////////////////////////////////////////////////////////////////
// DesktopWindowTreeHostLinux, MessagePumpDispatcher implementation:
+void X11WholeScreenMoveLoop::DispatchMouseMovement() {
+ if (!weak_factory_.HasWeakPtrs())
+ return;
+ weak_factory_.InvalidateWeakPtrs();
+ DCHECK_EQ(MotionNotify, last_xmotion_.type);
+ delegate_->OnMouseMovement(&last_xmotion_);
+ last_xmotion_.type = LASTEvent;
+}
+
uint32_t X11WholeScreenMoveLoop::Dispatch(const base::NativeEvent& event) {
XEvent* xev = event;
@@ -76,14 +89,25 @@ uint32_t X11WholeScreenMoveLoop::Dispatch(const base::NativeEvent& event) {
gfx::Point location = gfx::ToFlooredPoint(
screen->GetCursorScreenPoint() - drag_offset_);
drag_widget_->SetBounds(gfx::Rect(location, drag_image_.size()));
+ drag_widget_->StackAtTop();
+ }
+ last_xmotion_ = xev->xmotion;
+ if (!weak_factory_.HasWeakPtrs()) {
+ // Post a task to dispatch mouse movement event when control returns to
+ // the message loop. This allows smoother dragging since the events are
+ // dispatched without waiting for the drag widget updates.
+ base::MessageLoopForUI::current()->PostTask(
+ FROM_HERE,
+ base::Bind(&X11WholeScreenMoveLoop::DispatchMouseMovement,
+ weak_factory_.GetWeakPtr()));
}
- delegate_->OnMouseMovement(&xev->xmotion);
break;
}
case ButtonRelease: {
if (xev->xbutton.button == Button1) {
// Assume that drags are being done with the left mouse button. Only
// break the drag if the left mouse button was released.
+ DispatchMouseMovement();
delegate_->OnMouseReleased();
}
break;
@@ -161,6 +185,10 @@ void X11WholeScreenMoveLoop::EndMoveLoop() {
if (!in_move_loop_)
return;
+ // Prevent DispatchMouseMovement from dispatching any posted motion event.
+ weak_factory_.InvalidateWeakPtrs();
+ last_xmotion_.type = LASTEvent;
+
// We undo our emulated mouse click from RunMoveLoop();
if (should_reset_mouse_flags_) {
aura::Env::GetInstance()->set_mouse_button_flags(0);
@@ -267,6 +295,7 @@ void X11WholeScreenMoveLoop::CreateDragImageWindow() {
widget->set_focus_on_creation(false);
widget->set_frame_type(Widget::FRAME_TYPE_FORCE_NATIVE);
widget->Init(params);
+ widget->SetOpacity(kDragWidgetOpacity);
widget->GetNativeWindow()->SetName("DragWindow");
ImageView* image = new ImageView();
diff --git a/ui/views/widget/desktop_aura/x11_whole_screen_move_loop.h b/ui/views/widget/desktop_aura/x11_whole_screen_move_loop.h
index 9fd51cb3bc..347771efba 100644
--- a/ui/views/widget/desktop_aura/x11_whole_screen_move_loop.h
+++ b/ui/views/widget/desktop_aura/x11_whole_screen_move_loop.h
@@ -7,6 +7,7 @@
#include "base/callback.h"
#include "base/compiler_specific.h"
+#include "base/memory/weak_ptr.h"
#include "base/message_loop/message_pump_dispatcher.h"
#include "ui/gfx/image/image_skia.h"
#include "ui/gfx/native_widget_types.h"
@@ -62,6 +63,9 @@ class X11WholeScreenMoveLoop : public base::MessagePumpDispatcher {
// (defined as having a pixel with alpha > 32). If so, return true.
bool CheckIfIconValid();
+ // Dispatch mouse movement event to |delegate_| in a posted task.
+ void DispatchMouseMovement();
+
X11WholeScreenMoveLoopDelegate* delegate_;
// Are we running a nested message loop from RunMoveLoop()?
@@ -81,6 +85,8 @@ class X11WholeScreenMoveLoop : public base::MessagePumpDispatcher {
scoped_ptr<Widget> drag_widget_;
gfx::ImageSkia drag_image_;
gfx::Vector2dF drag_offset_;
+ XMotionEvent last_xmotion_;
+ base::WeakPtrFactory<X11WholeScreenMoveLoop> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(X11WholeScreenMoveLoop);
};
diff --git a/ui/views/widget/native_widget_aura.cc b/ui/views/widget/native_widget_aura.cc
index 30f2aea3cd..75e78a43b5 100644
--- a/ui/views/widget/native_widget_aura.cc
+++ b/ui/views/widget/native_widget_aura.cc
@@ -7,13 +7,10 @@
#include "base/bind.h"
#include "base/strings/string_util.h"
#include "third_party/skia/include/core/SkRegion.h"
-#include "ui/aura/client/activation_client.h"
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/client/cursor_client.h"
-#include "ui/aura/client/drag_drop_client.h"
#include "ui/aura/client/focus_client.h"
#include "ui/aura/client/screen_position_client.h"
-#include "ui/aura/client/window_move_client.h"
#include "ui/aura/client/window_tree_client.h"
#include "ui/aura/env.h"
#include "ui/aura/window.h"
@@ -30,7 +27,6 @@
#include "ui/views/drag_utils.h"
#include "ui/views/ime/input_method_bridge.h"
#include "ui/views/views_delegate.h"
-#include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
#include "ui/views/widget/drop_helper.h"
#include "ui/views/widget/native_widget_delegate.h"
#include "ui/views/widget/root_view.h"
@@ -39,6 +35,9 @@
#include "ui/views/widget/widget_delegate.h"
#include "ui/views/widget/window_reorderer.h"
#include "ui/wm/core/window_util.h"
+#include "ui/wm/public/activation_client.h"
+#include "ui/wm/public/drag_drop_client.h"
+#include "ui/wm/public/window_move_client.h"
#include "ui/wm/public/window_types.h"
#if defined(OS_WIN)
@@ -53,6 +52,7 @@
#endif
#if !defined(OS_CHROMEOS)
+#include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
#include "ui/views/widget/desktop_aura/desktop_window_tree_host.h"
#endif
@@ -811,10 +811,6 @@ void NativeWidgetAura::GetHitTestMask(gfx::Path* mask) const {
delegate_->GetHitTestMask(mask);
}
-void NativeWidgetAura::DidRecreateLayer(ui::Layer *old_layer,
- ui::Layer *new_layer) {
-}
-
////////////////////////////////////////////////////////////////////////////////
// NativeWidgetAura, ui::EventHandler implementation:
diff --git a/ui/views/widget/native_widget_aura.h b/ui/views/widget/native_widget_aura.h
index f5082f0c2e..6ca1e713a4 100644
--- a/ui/views/widget/native_widget_aura.h
+++ b/ui/views/widget/native_widget_aura.h
@@ -7,9 +7,6 @@
#include "base/memory/scoped_vector.h"
#include "base/memory/weak_ptr.h"
-#include "ui/aura/client/activation_change_observer.h"
-#include "ui/aura/client/activation_delegate.h"
-#include "ui/aura/client/drag_drop_delegate.h"
#include "ui/aura/client/focus_change_observer.h"
#include "ui/aura/window_delegate.h"
#include "ui/base/cursor/cursor.h"
@@ -17,6 +14,9 @@
#include "ui/views/ime/input_method_delegate.h"
#include "ui/views/views_export.h"
#include "ui/views/widget/native_widget_private.h"
+#include "ui/wm/public/activation_change_observer.h"
+#include "ui/wm/public/activation_delegate.h"
+#include "ui/wm/public/drag_drop_delegate.h"
namespace aura {
class Window;
@@ -158,8 +158,6 @@ class VIEWS_EXPORT NativeWidgetAura
virtual void OnWindowTargetVisibilityChanged(bool visible) OVERRIDE;
virtual bool HasHitTestMask() const OVERRIDE;
virtual void GetHitTestMask(gfx::Path* mask) const OVERRIDE;
- virtual void DidRecreateLayer(ui::Layer* old_layer,
- ui::Layer* new_layer) OVERRIDE;
// Overridden from ui::EventHandler:
virtual void OnKeyEvent(ui::KeyEvent* event) OVERRIDE;
diff --git a/ui/views/widget/tooltip_manager_aura.cc b/ui/views/widget/tooltip_manager_aura.cc
index fa04cb0c2e..986ea5d286 100644
--- a/ui/views/widget/tooltip_manager_aura.cc
+++ b/ui/views/widget/tooltip_manager_aura.cc
@@ -6,13 +6,13 @@
#include "base/logging.h"
#include "ui/aura/client/screen_position_client.h"
-#include "ui/aura/client/tooltip_client.h"
#include "ui/aura/window_event_dispatcher.h"
#include "ui/aura/window_tree_host.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/rect.h"
#include "ui/gfx/screen.h"
#include "ui/views/widget/widget.h"
+#include "ui/wm/public/tooltip_client.h"
namespace views {
diff --git a/ui/views/widget/widget_interactive_uitest.cc b/ui/views/widget/widget_interactive_uitest.cc
index 232e88a524..6aa255f71d 100644
--- a/ui/views/widget/widget_interactive_uitest.cc
+++ b/ui/views/widget/widget_interactive_uitest.cc
@@ -6,7 +6,6 @@
#include "base/bind.h"
#include "base/path_service.h"
#include "base/run_loop.h"
-#include "ui/aura/client/activation_client.h"
#include "ui/aura/client/focus_client.h"
#include "ui/aura/env.h"
#include "ui/aura/window.h"
@@ -19,6 +18,7 @@
#include "ui/views/test/widget_test.h"
#include "ui/views/widget/widget.h"
#include "ui/views/window/dialog_delegate.h"
+#include "ui/wm/public/activation_client.h"
#if !defined(OS_CHROMEOS)
#include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
index 41b78202c3..92c8512476 100644
--- a/ui/views/win/hwnd_message_handler.cc
+++ b/ui/views/win/hwnd_message_handler.cc
@@ -1194,7 +1194,7 @@ void HWNDMessageHandler::RedrawLayeredWindowContents() {
return;
// We need to clip to the dirty rect ourselves.
- layered_window_contents_->sk_canvas()->save(SkCanvas::kClip_SaveFlag);
+ layered_window_contents_->sk_canvas()->save();
double scale = gfx::win::GetDeviceScaleFactor();
layered_window_contents_->sk_canvas()->scale(
SkScalar(scale),SkScalar(scale));
diff --git a/ui/webui/resources/js/cr/promise.js b/ui/webui/resources/js/cr/promise.js
deleted file mode 100644
index f0681c123c..0000000000
--- a/ui/webui/resources/js/cr/promise.js
+++ /dev/null
@@ -1,214 +0,0 @@
-// 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.
-
-/**
- * @fileoverview This implementes a future promise class.
- */
-
-cr.define('cr', function() {
-
- /**
- * Sentinel used to mark a value as pending.
- * @const
- */
- var PENDING_VALUE = {};
-
- /**
- * Creates a future promise.
- * @param {*=} opt_value The value to set the promise to. If set completes
- * the promise immediately.
- * @constructor
- */
- function Promise(opt_value) {
- /**
- * An array of the callbacks.
- * @type {!Array.<!Function>}
- * @private
- */
- this.callbacks_ = [];
-
- if (arguments.length > 0)
- this.value = opt_value;
- }
-
- Promise.prototype = {
- /**
- * The current value.
- * @type {*}
- * @private
- */
- value_: PENDING_VALUE,
-
- /**
- * The value of the future promise. Accessing this before the promise has
- * been fulfilled will throw an error. If this is set to an exception
- * accessing this will throw as well.
- * @type {*}
- */
- get value() {
- return this.done ? this.value_ : undefined;
- },
- set value(value) {
- if (!this.done) {
- this.value_ = value;
- for (var i = 0; i < this.callbacks_.length; i++) {
- this.callbacks_[i].call(null, value);
- }
- this.callbacks_.length = 0;
- }
- },
-
- /**
- * Whether the future promise has been fulfilled.
- * @type {boolean}
- */
- get done() {
- return this.value_ !== PENDING_VALUE;
- },
-
- /**
- * Adds a listener to the future promise. The function will be called when
- * the promise is fulfilled. If the promise is already fullfilled this will
- * never call the function.
- * @param {!Function} fun The function to call.
- */
- addListener: function(fun) {
- if (this.done)
- fun(this.value);
- else
- this.callbacks_.push(fun);
- },
-
- /**
- * Removes a previously added listener from the future promise.
- * @param {!Function} fun The function to remove.
- */
- removeListener: function(fun) {
- var i = this.callbacks_.indexOf(fun);
- if (i >= 0)
- this.callbacks_.splice(i, 1);
- },
-
- /**
- * If the promise is done then this returns the string representation of
- * the value.
- * @return {string} The string representation of the promise.
- * @override
- */
- toString: function() {
- if (this.done)
- return String(this.value);
- else
- return '[object Promise]';
- },
-
- /**
- * Override to allow arithmetic.
- * @override
- */
- valueOf: function() {
- return this.value;
- }
- };
-
- /**
- * When a future promise is done call {@code fun}. This also calls the
- * function if the promise has already been fulfilled.
- * @param {!Promise} p The promise.
- * @param {!Function} fun The function to call when the promise is fulfilled.
- */
- Promise.when = function(p, fun) {
- p.addListener(fun);
- };
-
- /**
- * Creates a new promise the will be fulfilled after {@code t} ms.
- * @param {number} t The time to wait before the promise is fulfilled.
- * @param {*=} opt_value The value to return after the wait.
- * @return {!Promise} The new future promise.
- */
- Promise.wait = function(t, opt_value) {
- var p = new Promise;
- window.setTimeout(function() {
- p.value = opt_value;
- }, t);
- return p;
- };
-
- /**
- * Creates a new future promise that is fulfilled when any of the promises are
- * fulfilled. The value of the returned promise will be the value of the first
- * fulfilled promise.
- * @param {...!Promise} var_args The promises used to build up the new
- * promise.
- * @return {!Promise} The new promise that will be fulfilled when any of the
- * passed in promises are fulfilled.
- */
- Promise.any = function(var_args) {
- var p = new Promise;
- function f(v) {
- p.value = v;
- }
- for (var i = 0; i < arguments.length; i++) {
- arguments[i].addListener(f);
- }
- return p;
- };
-
- /**
- * Creates a new future promise that is fulfilled when all of the promises are
- * fulfilled. The value of the returned promise is an array of the values of
- * the promises passed in.
- * @param {...!Promise} var_args The promises used to build up the new
- * promise.
- * @return {!Promise} The promise that wraps all the promises in the array.
- */
- Promise.all = function(var_args) {
- var p = new Promise;
- var args = Array.prototype.slice.call(arguments);
- var count = args.length;
- if (!count) {
- p.value = [];
- return p;
- }
-
- function f(v) {
- count--;
- if (!count) {
- p.value = args.map(function(argP) {
- return argP.value;
- });
- }
- }
-
- // Do not use count here since count may be decremented in the call to
- // addListener if the promise is already done.
- for (var i = 0; i < args.length; i++) {
- args[i].addListener(f);
- }
-
- return p;
- };
-
- /**
- * Wraps an event in a future promise.
- * @param {!EventTarget} target The object that dispatches the event.
- * @param {string} type The type of the event.
- * @param {boolean=} opt_useCapture Whether to listen to the capture phase or
- * the bubble phase.
- * @return {!Promise} The promise that will be fulfilled when the event is
- * dispatched.
- */
- Promise.event = function(target, type, opt_useCapture) {
- var p = new Promise;
- target.addEventListener(type, function(e) {
- p.value = e;
- }, opt_useCapture);
- return p;
- };
-
- return {
- Promise: Promise
- };
-});
diff --git a/ui/webui/resources/js/util.js b/ui/webui/resources/js/util.js
index 56e2d2d283..8bf3059bed 100644
--- a/ui/webui/resources/js/util.js
+++ b/ui/webui/resources/js/util.js
@@ -21,6 +21,25 @@ function $(id) {
}
/**
+ * Add an accessible message to the page that will be announced to
+ * users who have spoken feedback on, but will be invisible to all
+ * other users. It's removed right away so it doesn't clutter the DOM.
+ * @param {string} msg The text to be pronounced.
+ */
+function announceAccessibleMessage(msg) {
+ var element = document.createElement('div');
+ element.setAttribute('aria-live', 'polite');
+ element.style.position = 'relative';
+ element.style.left = '-9999px';
+ element.style.height = '0px';
+ element.innerText = msg;
+ document.body.appendChild(element);
+ window.setTimeout(function() {
+ document.body.removeChild(element);
+ }, 0);
+}
+
+/**
* Calls chrome.send with a callback and restores the original afterwards.
* @param {string} name The name of the message to send.
* @param {!Array} params The parameters to send.
diff --git a/ui/webui/resources/webui_resources.grd b/ui/webui/resources/webui_resources.grd
index 107f7b6285..dba06063db 100644
--- a/ui/webui/resources/webui_resources.grd
+++ b/ui/webui/resources/webui_resources.grd
@@ -253,8 +253,6 @@ without changes to the corresponding grd file. -->
file="js/cr/event_target.js" type="chrome_html" />
<structure name="IDR_WEBUI_JS_CR_LINK_CONTROLLER"
file="js/cr/link_controller.js" type="chrome_html" />
- <structure name="IDR_WEBUI_JS_CR_PROMISE"
- file="js/cr/promise.js" type="chrome_html" />
<structure name="IDR_WEBUI_JS_CR_UI"
file="js/cr/ui.js" type="chrome_html" />
<structure name="IDR_WEBUI_JS_CR_UI_ALERT_OVERLAY"
diff --git a/ui/wm/core/base_focus_rules.cc b/ui/wm/core/base_focus_rules.cc
index bb9094138d..e7160b7b3f 100644
--- a/ui/wm/core/base_focus_rules.cc
+++ b/ui/wm/core/base_focus_rules.cc
@@ -4,12 +4,12 @@
#include "ui/wm/core/base_focus_rules.h"
-#include "ui/aura/client/activation_delegate.h"
#include "ui/aura/client/focus_client.h"
#include "ui/aura/window.h"
#include "ui/aura/window_event_dispatcher.h"
#include "ui/wm/core/window_modality_controller.h"
#include "ui/wm/core/window_util.h"
+#include "ui/wm/public/activation_delegate.h"
namespace wm {
namespace {
diff --git a/ui/wm/core/compound_event_filter.cc b/ui/wm/core/compound_event_filter.cc
index 620babd54a..edb7146eb1 100644
--- a/ui/wm/core/compound_event_filter.cc
+++ b/ui/wm/core/compound_event_filter.cc
@@ -6,9 +6,7 @@
#include "base/containers/hash_tables.h"
#include "base/logging.h"
-#include "ui/aura/client/activation_client.h"
#include "ui/aura/client/cursor_client.h"
-#include "ui/aura/client/drag_drop_client.h"
#include "ui/aura/env.h"
#include "ui/aura/window.h"
#include "ui/aura/window_delegate.h"
@@ -16,6 +14,8 @@
#include "ui/aura/window_tracker.h"
#include "ui/base/hit_test.h"
#include "ui/events/event.h"
+#include "ui/wm/public/activation_client.h"
+#include "ui/wm/public/drag_drop_client.h"
#if defined(OS_CHROMEOS) && defined(USE_X11)
#include "ui/events/x/touch_factory_x11.h"
@@ -291,17 +291,6 @@ void CompoundEventFilter::OnGestureEvent(ui::GestureEvent* event) {
while (!event->stopped_propagation() && (handler = it.GetNext()) != NULL)
handler->OnGestureEvent(event);
}
-
-#if defined(OS_WIN)
- // A Win8 edge swipe event is a special event that does not have location
- // information associated with it, and is not preceeded by an ET_TOUCH_PRESSED
- // event. So we treat it specially here.
- if (!event->handled() && event->type() == ui::ET_GESTURE_WIN8_EDGE_SWIPE &&
- !aura::Env::GetInstance()->IsMouseButtonDown()) {
- SetMouseEventsEnableStateOnEvent(
- static_cast<aura::Window*>(event->target()), event, false);
- }
-#endif
}
} // namespace wm
diff --git a/ui/wm/core/compound_event_filter_unittest.cc b/ui/wm/core/compound_event_filter_unittest.cc
index a0d193ed97..9cc9b60b1c 100644
--- a/ui/wm/core/compound_event_filter_unittest.cc
+++ b/ui/wm/core/compound_event_filter_unittest.cc
@@ -4,7 +4,6 @@
#include "ui/wm/core/compound_event_filter.h"
-#include "ui/aura/client/activation_client.h"
#include "ui/aura/client/cursor_client.h"
#include "ui/aura/env.h"
#include "ui/aura/test/aura_test_base.h"
@@ -15,6 +14,7 @@
#include "ui/aura/window_event_dispatcher.h"
#include "ui/events/event.h"
#include "ui/events/event_utils.h"
+#include "ui/wm/public/activation_client.h"
namespace {
diff --git a/ui/wm/core/easy_resize_window_targeter.cc b/ui/wm/core/easy_resize_window_targeter.cc
index 24d576016d..d352e523b4 100644
--- a/ui/wm/core/easy_resize_window_targeter.cc
+++ b/ui/wm/core/easy_resize_window_targeter.cc
@@ -4,10 +4,10 @@
#include "ui/wm/core/easy_resize_window_targeter.h"
-#include "ui/aura/client/transient_window_client.h"
#include "ui/aura/window.h"
#include "ui/gfx/geometry/insets_f.h"
#include "ui/gfx/geometry/rect.h"
+#include "ui/wm/public/transient_window_client.h"
namespace wm {
diff --git a/ui/wm/core/focus_controller.cc b/ui/wm/core/focus_controller.cc
index 38e8920b47..f4d3f3fb8f 100644
--- a/ui/wm/core/focus_controller.cc
+++ b/ui/wm/core/focus_controller.cc
@@ -5,7 +5,6 @@
#include "ui/wm/core/focus_controller.h"
#include "base/auto_reset.h"
-#include "ui/aura/client/activation_change_observer.h"
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/client/capture_client.h"
#include "ui/aura/client/focus_change_observer.h"
@@ -14,6 +13,7 @@
#include "ui/events/event.h"
#include "ui/wm/core/focus_rules.h"
#include "ui/wm/core/window_util.h"
+#include "ui/wm/public/activation_change_observer.h"
namespace wm {
namespace {
diff --git a/ui/wm/core/focus_controller.h b/ui/wm/core/focus_controller.h
index aa97d4da42..fecdd2e329 100644
--- a/ui/wm/core/focus_controller.h
+++ b/ui/wm/core/focus_controller.h
@@ -9,11 +9,11 @@
#include "base/memory/scoped_ptr.h"
#include "base/observer_list.h"
#include "base/scoped_observer.h"
-#include "ui/aura/client/activation_client.h"
#include "ui/aura/client/focus_client.h"
#include "ui/aura/window_observer.h"
#include "ui/events/event_handler.h"
#include "ui/wm/core/wm_core_export.h"
+#include "ui/wm/public/activation_client.h"
namespace wm {
diff --git a/ui/wm/core/focus_controller_unittest.cc b/ui/wm/core/focus_controller_unittest.cc
index 8a0ba2973a..d4601008c4 100644
--- a/ui/wm/core/focus_controller_unittest.cc
+++ b/ui/wm/core/focus_controller_unittest.cc
@@ -6,8 +6,6 @@
#include <map>
-#include "ui/aura/client/activation_change_observer.h"
-#include "ui/aura/client/activation_client.h"
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/client/default_capture_client.h"
#include "ui/aura/client/focus_change_observer.h"
@@ -21,6 +19,8 @@
#include "ui/events/event_handler.h"
#include "ui/wm/core/base_focus_rules.h"
#include "ui/wm/core/wm_state.h"
+#include "ui/wm/public/activation_change_observer.h"
+#include "ui/wm/public/activation_client.h"
namespace wm {
diff --git a/ui/wm/core/input_method_event_filter_unittest.cc b/ui/wm/core/input_method_event_filter_unittest.cc
index 71dbcced4e..038ec00993 100644
--- a/ui/wm/core/input_method_event_filter_unittest.cc
+++ b/ui/wm/core/input_method_event_filter_unittest.cc
@@ -5,7 +5,6 @@
#include "ui/wm/core/input_method_event_filter.h"
#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/aura/client/activation_client.h"
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/test/aura_test_base.h"
#include "ui/aura/test/event_generator.h"
@@ -13,6 +12,7 @@
#include "ui/aura/window_event_dispatcher.h"
#include "ui/events/test/test_event_handler.h"
#include "ui/wm/core/compound_event_filter.h"
+#include "ui/wm/public/activation_client.h"
#if !defined(OS_WIN) && !defined(USE_X11)
// On platforms except Windows and X11, aura::test::EventGenerator::PressKey
diff --git a/ui/wm/core/shadow_controller.cc b/ui/wm/core/shadow_controller.cc
index 31fb1409dd..c809389fad 100644
--- a/ui/wm/core/shadow_controller.cc
+++ b/ui/wm/core/shadow_controller.cc
@@ -10,7 +10,6 @@
#include "base/logging.h"
#include "base/memory/linked_ptr.h"
#include "base/scoped_observer.h"
-#include "ui/aura/client/activation_client.h"
#include "ui/aura/env.h"
#include "ui/aura/env_observer.h"
#include "ui/aura/window.h"
@@ -20,6 +19,7 @@
#include "ui/wm/core/shadow.h"
#include "ui/wm/core/shadow_types.h"
#include "ui/wm/core/window_util.h"
+#include "ui/wm/public/activation_client.h"
using std::make_pair;
diff --git a/ui/wm/core/shadow_controller.h b/ui/wm/core/shadow_controller.h
index d9451e7f21..47aa7435dc 100644
--- a/ui/wm/core/shadow_controller.h
+++ b/ui/wm/core/shadow_controller.h
@@ -10,8 +10,8 @@
#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/memory/ref_counted.h"
-#include "ui/aura/client/activation_change_observer.h"
#include "ui/wm/core/wm_core_export.h"
+#include "ui/wm/public/activation_change_observer.h"
namespace aura {
class Window;
diff --git a/ui/wm/core/shadow_controller_unittest.cc b/ui/wm/core/shadow_controller_unittest.cc
index 3f31b2ffd5..60d571e0c7 100644
--- a/ui/wm/core/shadow_controller_unittest.cc
+++ b/ui/wm/core/shadow_controller_unittest.cc
@@ -8,7 +8,6 @@
#include <vector>
#include "base/memory/scoped_ptr.h"
-#include "ui/aura/client/activation_client.h"
#include "ui/aura/client/window_tree_client.h"
#include "ui/aura/test/aura_test_base.h"
#include "ui/aura/window.h"
@@ -18,6 +17,7 @@
#include "ui/wm/core/shadow_types.h"
#include "ui/wm/core/window_util.h"
#include "ui/wm/core/wm_state.h"
+#include "ui/wm/public/activation_client.h"
namespace wm {
diff --git a/ui/wm/core/transient_window_controller.h b/ui/wm/core/transient_window_controller.h
index 598904e8f0..125cd28f80 100644
--- a/ui/wm/core/transient_window_controller.h
+++ b/ui/wm/core/transient_window_controller.h
@@ -5,8 +5,8 @@
#ifndef UI_WM_CORE_TRANSIENT_WINDOW_CONTROLLER_H_
#define UI_WM_CORE_TRANSIENT_WINDOW_CONTROLLER_H_
-#include "ui/aura/client/transient_window_client.h"
#include "ui/wm/core/wm_core_export.h"
+#include "ui/wm/public/transient_window_client.h"
namespace wm {
diff --git a/ui/wm/core/window_animations.cc b/ui/wm/core/window_animations.cc
index e0728675d7..c7b9c63b65 100644
--- a/ui/wm/core/window_animations.cc
+++ b/ui/wm/core/window_animations.cc
@@ -15,7 +15,6 @@
#include "base/message_loop/message_loop.h"
#include "base/stl_util.h"
#include "base/time/time.h"
-#include "ui/aura/client/animation_host.h"
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/window.h"
#include "ui/aura/window_delegate.h"
@@ -36,6 +35,7 @@
#include "ui/gfx/vector3d_f.h"
#include "ui/wm/core/window_util.h"
#include "ui/wm/core/wm_core_switches.h"
+#include "ui/wm/public/animation_host.h"
DECLARE_WINDOW_PROPERTY_TYPE(int)
DECLARE_WINDOW_PROPERTY_TYPE(wm::WindowVisibilityAnimationType)
diff --git a/ui/wm/core/window_animations_unittest.cc b/ui/wm/core/window_animations_unittest.cc
index 5ca3e42066..5968bf3244 100644
--- a/ui/wm/core/window_animations_unittest.cc
+++ b/ui/wm/core/window_animations_unittest.cc
@@ -5,7 +5,6 @@
#include "ui/wm/core/window_animations.h"
#include "base/time/time.h"
-#include "ui/aura/client/animation_host.h"
#include "ui/aura/test/aura_test_base.h"
#include "ui/aura/test/test_windows.h"
#include "ui/aura/window.h"
@@ -17,6 +16,7 @@
#include "ui/wm/core/transient_window_manager.h"
#include "ui/wm/core/transient_window_stacking_client.h"
#include "ui/wm/core/window_util.h"
+#include "ui/wm/public/animation_host.h"
using aura::Window;
using ui::Layer;
diff --git a/ui/wm/core/window_util.cc b/ui/wm/core/window_util.cc
index dff83390fd..6d8cdc97ba 100644
--- a/ui/wm/core/window_util.cc
+++ b/ui/wm/core/window_util.cc
@@ -4,12 +4,12 @@
#include "ui/wm/core/window_util.h"
-#include "ui/aura/client/activation_client.h"
#include "ui/aura/window.h"
#include "ui/aura/window_event_dispatcher.h"
#include "ui/compositor/layer.h"
#include "ui/compositor/layer_tree_owner.h"
#include "ui/wm/core/transient_window_manager.h"
+#include "ui/wm/public/activation_client.h"
namespace {
@@ -23,12 +23,12 @@ void CloneChildren(ui::Layer* to_clone, ui::Layer* parent) {
Layers children(to_clone->children());
for (Layers::const_iterator i = children.begin(); i != children.end(); ++i) {
ui::LayerOwner* owner = (*i)->owner();
- ui::Layer* clone = owner ? owner->RecreateLayer().release() : NULL;
- if (clone) {
- parent->Add(clone);
+ ui::Layer* old_layer = owner ? owner->RecreateLayer().release() : NULL;
+ if (old_layer) {
+ parent->Add(old_layer);
// RecreateLayer() moves the existing children to the new layer. Create a
// copy of those.
- CloneChildren(owner->layer(), clone);
+ CloneChildren(owner->layer(), old_layer);
}
}
}
@@ -82,11 +82,11 @@ aura::Window* GetToplevelWindow(aura::Window* window) {
}
scoped_ptr<ui::LayerTreeOwner> RecreateLayers(ui::LayerOwner* root) {
- scoped_ptr<ui::LayerTreeOwner> owner(
+ scoped_ptr<ui::LayerTreeOwner> old_layer(
new ui::LayerTreeOwner(root->RecreateLayer().release()));
- if (owner->root())
- CloneChildren(root->layer(), owner->root());
- return owner.Pass();
+ if (old_layer->root())
+ CloneChildren(root->layer(), old_layer->root());
+ return old_layer.Pass();
}
aura::Window* GetTransientParent(aura::Window* window) {
diff --git a/ui/wm/public/DEPS b/ui/wm/public/DEPS
new file mode 100644
index 0000000000..1e9f2486d3
--- /dev/null
+++ b/ui/wm/public/DEPS
@@ -0,0 +1,9 @@
+include_rules = [
+ "+ui/base/dragdrop/drag_drop_types.h",
+]
+
+specific_include_rules = {
+ "drag_drop_client.h": [
+ "+ui/base/dragdrop/drag_drop_types.h",
+ ],
+}
diff --git a/ui/aura/client/activation_change_observer.cc b/ui/wm/public/activation_change_observer.cc
index db9f332cfa..7fcbb7ae83 100644
--- a/ui/aura/client/activation_change_observer.cc
+++ b/ui/wm/public/activation_change_observer.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "ui/aura/client/activation_change_observer.h"
+#include "ui/wm/public/activation_change_observer.h"
#include "ui/aura/window.h"
#include "ui/aura/window_property.h"
diff --git a/ui/aura/client/activation_change_observer.h b/ui/wm/public/activation_change_observer.h
index 2f247db04b..68d5b8a742 100644
--- a/ui/aura/client/activation_change_observer.h
+++ b/ui/wm/public/activation_change_observer.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef UI_AURA_CLIENT_ACTIVATION_CHANGE_OBSERVER_H_
-#define UI_AURA_CLIENT_ACTIVATION_CHANGE_OBSERVER_H_
+#ifndef UI_WM_PUBLIC_ACTIVATION_CHANGE_OBSERVER_H_
+#define UI_WM_PUBLIC_ACTIVATION_CHANGE_OBSERVER_H_
#include "ui/aura/aura_export.h"
@@ -42,4 +42,4 @@ AURA_EXPORT ActivationChangeObserver* GetActivationChangeObserver(
} // namespace client
} // namespace aura
-#endif // UI_AURA_CLIENT_ACTIVATION_CHANGE_OBSERVER_H_
+#endif // UI_WM_PUBLIC_ACTIVATION_CHANGE_OBSERVER_H_
diff --git a/ui/aura/client/activation_client.cc b/ui/wm/public/activation_client.cc
index 71d079be1e..6a475541e6 100644
--- a/ui/aura/client/activation_client.cc
+++ b/ui/wm/public/activation_client.cc
@@ -2,9 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "ui/aura/client/activation_client.h"
+#include "ui/wm/public/activation_client.h"
-#include "ui/aura/window_event_dispatcher.h"
+#include "ui/aura/window.h"
#include "ui/aura/window_property.h"
DECLARE_EXPORTED_WINDOW_PROPERTY_TYPE(AURA_EXPORT, aura::Window*)
diff --git a/ui/aura/client/activation_client.h b/ui/wm/public/activation_client.h
index 054829ec2a..fc351319bc 100644
--- a/ui/aura/client/activation_client.h
+++ b/ui/wm/public/activation_client.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef UI_AURA_CLIENT_ACTIVATION_CLIENT_H_
-#define UI_AURA_CLIENT_ACTIVATION_CLIENT_H_
+#ifndef UI_WM_PUBLIC_ACTIVATION_CLIENT_H_
+#define UI_WM_PUBLIC_ACTIVATION_CLIENT_H_
#include "ui/aura/aura_export.h"
@@ -74,4 +74,4 @@ AURA_EXPORT bool GetHideOnDeactivate(Window* window);
} // namespace clients
} // namespace aura
-#endif // UI_AURA_CLIENT_ACTIVATION_CLIENT_H_
+#endif // UI_WM_PUBLIC_ACTIVATION_CLIENT_H_
diff --git a/ui/aura/client/activation_delegate.cc b/ui/wm/public/activation_delegate.cc
index 51b22b00a6..2a9bbc951d 100644
--- a/ui/aura/client/activation_delegate.cc
+++ b/ui/wm/public/activation_delegate.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "ui/aura/client/activation_delegate.h"
+#include "ui/wm/public/activation_delegate.h"
#include "ui/aura/window.h"
#include "ui/aura/window_property.h"
diff --git a/ui/aura/client/activation_delegate.h b/ui/wm/public/activation_delegate.h
index 0ce86388f5..3c5b3aeb87 100644
--- a/ui/aura/client/activation_delegate.h
+++ b/ui/wm/public/activation_delegate.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef UI_AURA_CLIENT_ACTIVATION_DELEGATE_H_
-#define UI_AURA_CLIENT_ACTIVATION_DELEGATE_H_
+#ifndef UI_WM_PUBLIC_ACTIVATION_DELEGATE_H_
+#define UI_WM_PUBLIC_ACTIVATION_DELEGATE_H_
#include "ui/aura/aura_export.h"
@@ -34,4 +34,4 @@ AURA_EXPORT ActivationDelegate* GetActivationDelegate(Window* window);
} // namespace client
} // namespace aura
-#endif // UI_AURA_CLIENT_ACTIVATION_DELEGATE_H_
+#endif // UI_WM_PUBLIC_ACTIVATION_DELEGATE_H_
diff --git a/ui/aura/client/animation_host.cc b/ui/wm/public/animation_host.cc
index 0afe58351c..0d90f9c6a6 100644
--- a/ui/aura/client/animation_host.cc
+++ b/ui/wm/public/animation_host.cc
@@ -2,13 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "ui/aura/client/animation_host.h"
+#include "ui/wm/public/animation_host.h"
-#include "base/compiler_specific.h"
-#include "ui/aura/aura_export.h"
-
-#include "ui/aura/env.h"
-#include "ui/aura/window_event_dispatcher.h"
+#include "ui/aura/window.h"
#include "ui/aura/window_property.h"
DECLARE_WINDOW_PROPERTY_TYPE(aura::client::AnimationHost*)
diff --git a/ui/aura/client/animation_host.h b/ui/wm/public/animation_host.h
index c433b6d63d..71f9f4d72b 100644
--- a/ui/aura/client/animation_host.h
+++ b/ui/wm/public/animation_host.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef UI_AURA_CLIENT_ANIMATION_HOST_H_
-#define UI_AURA_CLIENT_ANIMATION_HOST_H_
+#ifndef UI_WM_PUBLIC_ANIMATION_HOST_H_
+#define UI_WM_PUBLIC_ANIMATION_HOST_H_
#include "base/compiler_specific.h"
#include "ui/aura/aura_export.h"
@@ -45,4 +45,4 @@ AURA_EXPORT AnimationHost* GetAnimationHost(Window* window);
} // namespace client
} // namespace aura
-#endif // UI_AURA_CLIENT_ANIMATION_HOST_H_
+#endif // UI_WM_PUBLIC_ANIMATION_HOST_H_
diff --git a/ui/aura/client/dispatcher_client.cc b/ui/wm/public/dispatcher_client.cc
index 55eda0e475..cec4a8ad1d 100644
--- a/ui/aura/client/dispatcher_client.cc
+++ b/ui/wm/public/dispatcher_client.cc
@@ -2,10 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "ui/aura/client/dispatcher_client.h"
+#include "ui/wm/public/dispatcher_client.h"
#include "ui/aura/window.h"
-#include "ui/aura/window_event_dispatcher.h"
#include "ui/aura/window_property.h"
DECLARE_WINDOW_PROPERTY_TYPE(aura::client::DispatcherClient*);
diff --git a/ui/aura/client/dispatcher_client.h b/ui/wm/public/dispatcher_client.h
index 42cb25e62b..9fd9c94326 100644
--- a/ui/aura/client/dispatcher_client.h
+++ b/ui/wm/public/dispatcher_client.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef UI_AURA_CLIENT_DISPATCHER_CLIENT_H_
-#define UI_AURA_CLIENT_DISPATCHER_CLIENT_H_
+#ifndef UI_WM_PUBLIC_DISPATCHER_CLIENT_H_
+#define UI_WM_PUBLIC_DISPATCHER_CLIENT_H_
#include "base/message_loop/message_pump_dispatcher.h"
#include "ui/aura/aura_export.h"
@@ -27,4 +27,4 @@ AURA_EXPORT DispatcherClient* GetDispatcherClient(Window* root_window);
} // namespace client
} // namespace aura
-#endif // UI_AURA_CLIENT_DISPATCHER_CLIENT_H_
+#endif // UI_WM_PUBLIC_DISPATCHER_CLIENT_H_
diff --git a/ui/aura/client/drag_drop_client.cc b/ui/wm/public/drag_drop_client.cc
index 56050e8f66..c452f9e031 100644
--- a/ui/aura/client/drag_drop_client.cc
+++ b/ui/wm/public/drag_drop_client.cc
@@ -2,9 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "ui/aura/client/drag_drop_client.h"
+#include "ui/wm/public/drag_drop_client.h"
-#include "ui/aura/window_event_dispatcher.h"
+#include "ui/aura/window.h"
#include "ui/aura/window_property.h"
DECLARE_WINDOW_PROPERTY_TYPE(aura::client::DragDropClient*)
diff --git a/ui/aura/client/drag_drop_client.h b/ui/wm/public/drag_drop_client.h
index 7277d6b383..62a2355b10 100644
--- a/ui/aura/client/drag_drop_client.h
+++ b/ui/wm/public/drag_drop_client.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef UI_AURA_CLIENT_DRAG_DROP_CLIENT_H_
-#define UI_AURA_CLIENT_DRAG_DROP_CLIENT_H_
+#ifndef UI_WM_PUBLIC_DRAG_DROP_CLIENT_H_
+#define UI_WM_PUBLIC_DRAG_DROP_CLIENT_H_
#include "ui/aura/aura_export.h"
#include "ui/base/dragdrop/drag_drop_types.h"
@@ -59,4 +59,4 @@ AURA_EXPORT DragDropClient* GetDragDropClient(Window* root_window);
} // namespace client
} // namespace aura
-#endif // UI_AURA_CLIENT_DRAG_DROP_CLIENT_H_
+#endif // UI_WM_PUBLIC_DRAG_DROP_CLIENT_H_
diff --git a/ui/aura/client/drag_drop_delegate.cc b/ui/wm/public/drag_drop_delegate.cc
index 92d986be8d..6380f963fb 100644
--- a/ui/aura/client/drag_drop_delegate.cc
+++ b/ui/wm/public/drag_drop_delegate.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "ui/aura/client/drag_drop_delegate.h"
+#include "ui/wm/public/drag_drop_delegate.h"
#include "ui/aura/window.h"
#include "ui/aura/window_property.h"
diff --git a/ui/aura/client/drag_drop_delegate.h b/ui/wm/public/drag_drop_delegate.h
index dde7f32ec7..50f6c26768 100644
--- a/ui/aura/client/drag_drop_delegate.h
+++ b/ui/wm/public/drag_drop_delegate.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef UI_AURA_CLIENT_DRAG_DROP_DELEGATE_H_
-#define UI_AURA_CLIENT_DRAG_DROP_DELEGATE_H_
+#ifndef UI_WM_PUBLIC_DRAG_DROP_DELEGATE_H_
+#define UI_WM_PUBLIC_DRAG_DROP_DELEGATE_H_
#include "ui/aura/aura_export.h"
@@ -48,4 +48,4 @@ AURA_EXPORT DragDropDelegate* GetDragDropDelegate(Window* window);
} // namespace client
} // namespace aura
-#endif // UI_AURA_CLIENT_DRAG_DROP_DELEGATE_H_
+#endif // UI_WM_PUBLIC_DRAG_DROP_DELEGATE_H_
diff --git a/ui/aura/client/scoped_tooltip_disabler.cc b/ui/wm/public/scoped_tooltip_disabler.cc
index d3c1033239..45a39ca6a9 100644
--- a/ui/aura/client/scoped_tooltip_disabler.cc
+++ b/ui/wm/public/scoped_tooltip_disabler.cc
@@ -2,10 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "ui/aura/client/scoped_tooltip_disabler.h"
+#include "ui/wm/public/scoped_tooltip_disabler.h"
-#include "ui/aura/client/tooltip_client.h"
#include "ui/aura/window.h"
+#include "ui/wm/public/tooltip_client.h"
namespace aura {
namespace client {
diff --git a/ui/aura/client/scoped_tooltip_disabler.h b/ui/wm/public/scoped_tooltip_disabler.h
index 5d1b2ea813..0fd3e113ee 100644
--- a/ui/aura/client/scoped_tooltip_disabler.h
+++ b/ui/wm/public/scoped_tooltip_disabler.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef UI_AURA_CLIENT_SCOPED_TOOLTIP_DISABLER_H_
-#define UI_AURA_CLIENT_SCOPED_TOOLTIP_DISABLER_H_
+#ifndef UI_WM_PUBLIC_SCOPED_TOOLTIP_DISABLER_H_
+#define UI_WM_PUBLIC_SCOPED_TOOLTIP_DISABLER_H_
#include "ui/aura/window_observer.h"
@@ -36,4 +36,4 @@ class AURA_EXPORT ScopedTooltipDisabler : aura::WindowObserver {
} // namespace client
} // namespace aura
-#endif // UI_AURA_CLIENT_SCOPED_TOOLTIP_DISABLER_H_
+#endif // UI_WM_PUBLIC_SCOPED_TOOLTIP_DISABLER_H_
diff --git a/ui/aura/client/tooltip_client.cc b/ui/wm/public/tooltip_client.cc
index 770be41072..b47323880e 100644
--- a/ui/aura/client/tooltip_client.cc
+++ b/ui/wm/public/tooltip_client.cc
@@ -2,9 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "ui/aura/client/tooltip_client.h"
+#include "ui/wm/public/tooltip_client.h"
-#include "ui/aura/window_event_dispatcher.h"
+#include "ui/aura/window.h"
#include "ui/aura/window_property.h"
DECLARE_WINDOW_PROPERTY_TYPE(aura::client::TooltipClient*)
diff --git a/ui/aura/client/tooltip_client.h b/ui/wm/public/tooltip_client.h
index 875e0e2df4..f592b21a18 100644
--- a/ui/aura/client/tooltip_client.h
+++ b/ui/wm/public/tooltip_client.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef UI_AURA_CLIENT_TOOLTIP_CLIENT_H_
-#define UI_AURA_CLIENT_TOOLTIP_CLIENT_H_
+#ifndef UI_WM_PUBLIC_TOOLTIP_CLIENT_H_
+#define UI_WM_PUBLIC_TOOLTIP_CLIENT_H_
#include "ui/aura/aura_export.h"
#include "ui/gfx/font.h"
@@ -42,4 +42,4 @@ AURA_EXPORT const base::string16 GetTooltipText(Window* window);
} // namespace client
} // namespace aura
-#endif // UI_AURA_CLIENT_TOOLTIP_CLIENT_H_
+#endif // UI_WM_PUBLIC_TOOLTIP_CLIENT_H_
diff --git a/ui/aura/client/transient_window_client.cc b/ui/wm/public/transient_window_client.cc
index 47b50b9de9..aab8e518c5 100644
--- a/ui/aura/client/transient_window_client.cc
+++ b/ui/wm/public/transient_window_client.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "ui/aura/client/transient_window_client.h"
+#include "ui/wm/public/transient_window_client.h"
namespace aura {
namespace client {
diff --git a/ui/aura/client/transient_window_client.h b/ui/wm/public/transient_window_client.h
index 96434d726a..2086100b88 100644
--- a/ui/aura/client/transient_window_client.h
+++ b/ui/wm/public/transient_window_client.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef UI_AURA_CLIENT_TRANSIENT_WINDOW_CLIENT_H_
-#define UI_AURA_CLIENT_TRANSIENT_WINDOW_CLIENT_H_
+#ifndef UI_WM_PUBLIC_TRANSIENT_WINDOW_CLIENT_H_
+#define UI_WM_PUBLIC_TRANSIENT_WINDOW_CLIENT_H_
#include "base/basictypes.h"
#include "ui/aura/aura_export.h"
@@ -44,4 +44,4 @@ AURA_EXPORT TransientWindowClient* GetTransientWindowClient();
} // namespace client
} // namespace aura
-#endif // UI_AURA_CLIENT_TRANSIENT_WINDOW_CLIENT_H_
+#endif // UI_WM_PUBLIC_TRANSIENT_WINDOW_CLIENT_H_
diff --git a/ui/aura/client/window_move_client.cc b/ui/wm/public/window_move_client.cc
index c65452db60..44ccca965c 100644
--- a/ui/aura/client/window_move_client.cc
+++ b/ui/wm/public/window_move_client.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "ui/aura/client/window_move_client.h"
+#include "ui/wm/public/window_move_client.h"
#include "ui/aura/window.h"
#include "ui/aura/window_property.h"
diff --git a/ui/aura/client/window_move_client.h b/ui/wm/public/window_move_client.h
index 15e4245757..b8943d3eb3 100644
--- a/ui/aura/client/window_move_client.h
+++ b/ui/wm/public/window_move_client.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef UI_AURA_CLIENT_WINDOW_MOVE_CLIENT_H_
-#define UI_AURA_CLIENT_WINDOW_MOVE_CLIENT_H_
+#ifndef UI_WM_PUBLIC_WINDOW_MOVE_CLIENT_H_
+#define UI_WM_PUBLIC_WINDOW_MOVE_CLIENT_H_
#include "ui/aura/aura_export.h"
#include "ui/gfx/vector2d.h"
@@ -53,4 +53,4 @@ AURA_EXPORT WindowMoveClient* GetWindowMoveClient(Window* window);
} // namespace client
} // namespace aura
-#endif // UI_AURA_CLIENT_WINDOW_MOVE_CLIENT_H_
+#endif // UI_WM_PUBLIC_WINDOW_MOVE_CLIENT_H_