diff options
author | Ben Murdoch <benm@google.com> | 2014-03-31 11:51:25 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2014-03-31 11:51:25 +0100 |
commit | effb81e5f8246d0db0270817048dc992db66e9fb (patch) | |
tree | cc45ced7dfde038c8f3d022ee1eeac207a68761e /ui | |
parent | 4d26337013537c1acafbcb63b9b2b7e404c3adc9 (diff) | |
download | chromium_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')
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"> &Undo </message> @@ -1898,6 +1898,66 @@ need to be translated for each locale.--> Select &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, ¶ms) || - !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="" 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="~`|•√Π÷׶Δ"> 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="" 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="�A;">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="" 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="
">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="" 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="
">enter</kb-key> - </kb-row> - </kb-keyset> - - <kb-keyset id="qwerty-more"> - <kb-row class="top"> - <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="tab padded-left-special dark" char="	">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><</kb-key><kb-key>></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="" 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="
">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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 diff --git a/ui/resources/default_100_percent/common/back_arrow.png b/ui/resources/default_100_percent/common/back_arrow.png Binary files differindex 1c92bc5865..0334cafe4f 100644 --- a/ui/resources/default_100_percent/common/back_arrow.png +++ b/ui/resources/default_100_percent/common/back_arrow.png diff --git a/ui/resources/default_100_percent/common/pointers/xterm.png b/ui/resources/default_100_percent/common/pointers/xterm.png Binary files differindex 6f3849f4f1..8c16409986 100644 --- a/ui/resources/default_100_percent/common/pointers/xterm.png +++ b/ui/resources/default_100_percent/common/pointers/xterm.png diff --git a/ui/resources/default_100_percent/common/pointers/xterm_horiz.png b/ui/resources/default_100_percent/common/pointers/xterm_horiz.png Binary files differindex 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 diff --git a/ui/resources/default_100_percent/oak.png b/ui/resources/default_100_percent/oak.png Binary files differdeleted file mode 100644 index 49954798da..0000000000 --- a/ui/resources/default_100_percent/oak.png +++ /dev/null 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 diff --git a/ui/resources/default_200_percent/common/back_arrow.png b/ui/resources/default_200_percent/common/back_arrow.png Binary files differindex d10b993c6f..e1f212f8f3 100644 --- a/ui/resources/default_200_percent/common/back_arrow.png +++ b/ui/resources/default_200_percent/common/back_arrow.png diff --git a/ui/resources/default_200_percent/common/forward_arrow.png b/ui/resources/default_200_percent/common/forward_arrow.png Binary files differindex a8c946763e..85ebf170bb 100644 --- a/ui/resources/default_200_percent/common/forward_arrow.png +++ b/ui/resources/default_200_percent/common/forward_arrow.png diff --git a/ui/resources/default_200_percent/common/pointers/xterm.png b/ui/resources/default_200_percent/common/pointers/xterm.png Binary files differindex 18ed44eefe..ecd9b61462 100644 --- a/ui/resources/default_200_percent/common/pointers/xterm.png +++ b/ui/resources/default_200_percent/common/pointers/xterm.png diff --git a/ui/resources/default_200_percent/common/pointers/xterm_horiz.png b/ui/resources/default_200_percent/common/pointers/xterm_horiz.png Binary files differindex 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 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_ |