summaryrefslogtreecommitdiffstats
path: root/src/render/defaults/qdiffusespecularmapmaterial_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/defaults/qdiffusespecularmapmaterial_p.h')
-rw-r--r--src/render/defaults/qdiffusespecularmapmaterial_p.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/render/defaults/qdiffusespecularmapmaterial_p.h b/src/render/defaults/qdiffusespecularmapmaterial_p.h
index 00d8edc1d..72ab20e83 100644
--- a/src/render/defaults/qdiffusespecularmapmaterial_p.h
+++ b/src/render/defaults/qdiffusespecularmapmaterial_p.h
@@ -56,7 +56,7 @@ class QDiffuseSpecularMapMaterial;
class QDiffuseSpecularMapMaterialPrivate : public QMaterialPrivate
{
public:
- QDiffuseSpecularMapMaterialPrivate(QDiffuseSpecularMapMaterial *qq);
+ QDiffuseSpecularMapMaterialPrivate();
void init();
d' style='width: 2.0%;'/> -rw-r--r--chromium/base/win/iat_patch_function.cc101
-rw-r--r--chromium/base/win/iat_patch_function.h3
-rw-r--r--chromium/build/output_dll_copy.rules2
-rw-r--r--chromium/build/util/LASTCHANGE2
-rw-r--r--chromium/build/util/LASTCHANGE.blink2
-rw-r--r--chromium/build/whitespace_file.txt4
-rw-r--r--chromium/cc/layers/delegated_renderer_layer_impl.cc17
-rw-r--r--chromium/cc/layers/delegated_renderer_layer_impl_unittest.cc27
-rw-r--r--chromium/cc/layers/picture_image_layer.cc13
-rw-r--r--chromium/cc/layers/quad_sink.h2
-rw-r--r--chromium/chrome/VERSION2
-rw-r--r--chromium/chrome/app/resources/chromium_strings_hi.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_am.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_ar.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_da.xtb86
-rw-r--r--chromium/chrome/app/resources/generated_resources_de.xtb12
-rw-r--r--chromium/chrome/app/resources/generated_resources_es-419.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_et.xtb4
-rw-r--r--chromium/chrome/app/resources/generated_resources_fil.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_fr.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_gu.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_hi.xtb6
-rw-r--r--chromium/chrome/app/resources/generated_resources_hr.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_hu.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_id.xtb10
-rw-r--r--chromium/chrome/app/resources/generated_resources_it.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_iw.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_ja.xtb6
-rw-r--r--chromium/chrome/app/resources/generated_resources_kn.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_ko.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_ml.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_nl.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_no.xtb14
-rw-r--r--chromium/chrome/app/resources/generated_resources_ru.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_sr.xtb4
-rw-r--r--chromium/chrome/app/resources/generated_resources_sv.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_sw.xtb6
-rw-r--r--chromium/chrome/app/resources/generated_resources_ta.xtb6
-rw-r--r--chromium/chrome/app/resources/generated_resources_te.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_th.xtb2
-rw-r--r--chromium/chrome/app/resources/generated_resources_zh-CN.xtb10
-rw-r--r--chromium/chrome/app/resources/generated_resources_zh-TW.xtb4
-rw-r--r--chromium/chrome/app/resources/google_chrome_strings_hi.xtb2
-rw-r--r--chromium/chrome/browser/resources/chromeos/chromevox/chromevox/injected/event_watcher.js7
-rw-r--r--chromium/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb12
-rw-r--r--chromium/chrome/browser/resources/chromeos/login/oobe_screen_hid_detection.css15
-rw-r--r--chromium/chrome/browser/resources/gcm_internals.html2
-rw-r--r--chromium/chrome/browser/resources/hotword_helper/manifest.json2
-rw-r--r--chromium/chrome/browser/resources/options/chromeos/bluetooth.css25
-rw-r--r--chromium/chrome/browser/resources/options/search_page.js6
-rw-r--r--chromium/chrome/chrome_tests_unit.gypi1
-rw-r--r--chromium/chrome/third_party/chromevox/chromeVoxChromeBackgroundScript.js2
-rw-r--r--chromium/chrome/third_party/chromevox/chromeVoxChromeOptionsScript.js2
-rw-r--r--chromium/chrome/third_party/chromevox/chromeVoxChromePageScript.js2
-rw-r--r--chromium/chrome_elf/blacklist/blacklist.cc8
-rw-r--r--chromium/codereview.settings3
-rw-r--r--chromium/content/browser/accessibility/dump_accessibility_tree_browsertest.cc80
-rw-r--r--chromium/content/browser/android/content_view_core_impl.cc28
-rw-r--r--chromium/content/browser/android/content_view_core_impl.h11
-rw-r--r--chromium/content/browser/android/devtools_auth.cc8
-rw-r--r--chromium/content/browser/android/in_process/synchronous_compositor_factory_impl.cc9
-rw-r--r--chromium/content/browser/media/android/browser_media_player_manager.cc34
-rw-r--r--chromium/content/browser/media/android/browser_media_player_manager.h6
-rw-r--r--chromium/content/browser/media/android/media_resource_getter_impl.cc52
-rw-r--r--chromium/content/browser/media/android/media_resource_getter_impl.h7
-rw-r--r--chromium/content/browser/renderer_host/input/gesture_text_selector.cc74
-rw-r--r--chromium/content/browser/renderer_host/input/gesture_text_selector.h65
-rw-r--r--chromium/content/browser/renderer_host/input/gesture_text_selector_unittest.cc221
-rw-r--r--chromium/content/browser/renderer_host/input/motion_event_android.cc60
-rw-r--r--chromium/content/browser/renderer_host/input/motion_event_android.h9
-rw-r--r--chromium/content/browser/renderer_host/input/motion_event_web.cc11
-rw-r--r--chromium/content/browser/renderer_host/input/motion_event_web.h2
-rw-r--r--chromium/content/browser/renderer_host/input/touch_emulator.cc5
-rw-r--r--chromium/content/browser/renderer_host/input/touch_emulator_client.h1
-rw-r--r--chromium/content/browser/renderer_host/input/touch_emulator_unittest.cc2
-rw-r--r--chromium/content/browser/renderer_host/render_widget_host_impl.cc18
-rw-r--r--chromium/content/browser/renderer_host/render_widget_host_impl.h4
-rw-r--r--chromium/content/browser/renderer_host/render_widget_host_view_android.cc45
-rw-r--r--chromium/content/browser/renderer_host/render_widget_host_view_android.h17
-rw-r--r--chromium/content/browser/resources/service_worker/serviceworker_internals.html2
-rw-r--r--chromium/content/browser/web_contents/touch_editable_impl_aura.cc3
-rw-r--r--chromium/content/browser/web_contents/web_contents_android.cc6
-rw-r--r--chromium/content/browser/web_contents/web_contents_android.h2
-rw-r--r--chromium/content/common/media/media_player_messages_android.h1
-rw-r--r--chromium/content/common/view_messages.h12
-rw-r--r--chromium/content/content_browser.gypi2
-rw-r--r--chromium/content/content_renderer.gypi6
-rw-r--r--chromium/content/content_tests.gypi1
-rw-r--r--chromium/content/public/OWNERS2
-rw-r--r--chromium/content/public/common/common_param_traits_macros.h1
-rw-r--r--chromium/content/renderer/OWNERS6
-rw-r--r--chromium/content/renderer/accessibility/renderer_accessibility_complete.cc29
-rw-r--r--chromium/content/renderer/media/android/media_info_loader.cc12
-rw-r--r--chromium/content/renderer/media/android/media_info_loader.h14
-rw-r--r--chromium/content/renderer/media/android/media_info_loader_unittest.cc8
-rw-r--r--chromium/content/renderer/media/android/renderer_media_player_manager.cc5
-rw-r--r--chromium/content/renderer/media/android/renderer_media_player_manager.h3
-rw-r--r--chromium/content/renderer/media/android/webmediaplayer_android.cc90
-rw-r--r--chromium/content/renderer/media/android/webmediaplayer_android.h19
-rw-r--r--chromium/content/renderer/media/crypto/key_systems.cc4
-rw-r--r--chromium/content/renderer/media/media_stream_video_track.cc227
-rw-r--r--chromium/content/renderer/media/media_stream_video_track.h14
-rw-r--r--chromium/content/renderer/media/media_stream_video_track_unittest.cc24
-rw-r--r--chromium/content/renderer/media/mock_media_stream_video_sink.cc1
-rw-r--r--chromium/content/renderer/media/mock_media_stream_video_sink.h2
-rw-r--r--chromium/content/renderer/media/rtc_video_renderer.cc8
-rw-r--r--chromium/content/renderer/media/rtc_video_renderer.h1
-rw-r--r--chromium/content/renderer/media/video_frame_deliverer.cc84
-rw-r--r--chromium/content/renderer/media/video_frame_deliverer.h82
-rw-r--r--chromium/content/renderer/render_font_warmup_win.cc204
-rw-r--r--chromium/content/renderer/render_frame_impl.cc8
-rw-r--r--chromium/content/renderer/render_thread_impl.cc9
-rw-r--r--chromium/content/renderer/render_view_impl.cc9
-rw-r--r--chromium/content/renderer/render_view_impl.h3
-rw-r--r--chromium/content/renderer/render_view_impl_android.cc6
-rw-r--r--chromium/content/renderer/render_widget.cc3
-rw-r--r--chromium/content/renderer/render_widget.h13
-rw-r--r--chromium/content/renderer/renderer_font_platform_win.cc305
-rw-r--r--chromium/content/renderer/renderer_font_platform_win.h17
-rw-r--r--chromium/google_apis/gcm/engine/gcm_store_impl.cc3
-rw-r--r--chromium/google_apis/gcm/engine/gcm_store_impl_unittest.cc19
-rw-r--r--chromium/gpu/command_buffer/service/gles2_cmd_decoder.cc6
-rw-r--r--chromium/gpu/config/gpu_driver_bug_list_json.cc18
-rw-r--r--chromium/media/audio/pulse/pulse_output.cc49
-rw-r--r--chromium/media/audio/pulse/pulse_util.cc6
-rw-r--r--chromium/media/audio/win/audio_device_listener_win.cc3
-rw-r--r--chromium/media/base/android/media_player_bridge.cc104
-rw-r--r--chromium/media/base/android/media_player_bridge.h11
-rw-r--r--chromium/media/base/android/media_player_manager.h6
-rw-r--r--chromium/media/base/android/media_resource_getter.h10
-rw-r--r--chromium/media/base/android/media_source_player_unittest.cc4
-rw-r--r--chromium/media/base/android/media_url_interceptor.h36
-rw-r--r--chromium/media/cast/cast_defines.h2
-rw-r--r--chromium/media/media.gyp1
-rw-r--r--chromium/net/base/registry_controlled_domains/OWNERS1
-rw-r--r--chromium/net/base/registry_controlled_domains/effective_tld_names.dat165
-rw-r--r--chromium/net/base/registry_controlled_domains/effective_tld_names.gperf55
-rw-r--r--chromium/net/http/http_network_session.cc1
-rw-r--r--chromium/net/http/http_stream_factory_impl_job.cc15
-rw-r--r--chromium/net/quic/crypto/proof_verifier_chromium.cc80
-rw-r--r--chromium/net/quic/crypto/proof_verifier_chromium.h11
-rw-r--r--chromium/net/quic/quic_client_session.cc9
-rw-r--r--chromium/net/quic/quic_client_session.h1
-rw-r--r--chromium/net/quic/quic_stream_factory.cc4
-rw-r--r--chromium/net/quic/quic_stream_factory.h2
-rw-r--r--chromium/net/quic/quic_stream_factory_test.cc3
-rw-r--r--chromium/net/quic/test_tools/crypto_test_utils_chromium.cc14
-rw-r--r--chromium/sdch/open-vcdiff/vsprojects/open-vcdiff.sln2
-rw-r--r--chromium/sdch/open-vcdiff/vsprojects/vcdcom/vcdcom.vcproj2
-rw-r--r--chromium/sdch/open-vcdiff/vsprojects/vcddec/vcddec.vcproj2
-rw-r--r--chromium/sdch/open-vcdiff/vsprojects/vcdecoder_test_common/vcdecoder_test_common.vcproj2
-rw-r--r--chromium/sdch/open-vcdiff/vsprojects/vcdenc/vcdenc.vcproj2
-rw-r--r--chromium/testing/gmock/msvc/2005/gmock.sln2
-rw-r--r--chromium/testing/gmock/msvc/2010/gmock.sln2
-rw-r--r--chromium/testing/gtest/codegear/gtest.cbproj2
-rw-r--r--chromium/testing/gtest/codegear/gtest.groupproj2
-rw-r--r--chromium/testing/gtest/codegear/gtest_main.cbproj2
-rw-r--r--chromium/testing/gtest/codegear/gtest_unittest.cbproj2
-rw-r--r--chromium/third_party/WebKit/Source/core/css/mediaControls.css2
-rw-r--r--chromium/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp77
-rw-r--r--chromium/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.h1
-rw-r--r--chromium/third_party/WebKit/Source/core/dom/ContainerNode.cpp47
-rw-r--r--chromium/third_party/WebKit/Source/core/dom/ContainerNode.h3
-rw-r--r--chromium/third_party/WebKit/Source/core/dom/Document.cpp20
-rw-r--r--chromium/third_party/WebKit/Source/core/dom/Element.cpp23
-rw-r--r--chromium/third_party/WebKit/Source/core/dom/Element.h1
-rw-r--r--chromium/third_party/WebKit/Source/core/dom/FullscreenElementStack.cpp4
-rw-r--r--chromium/third_party/WebKit/Source/core/dom/ProcessingInstruction.cpp23
-rw-r--r--chromium/third_party/WebKit/Source/core/dom/ProcessingInstruction.h1
-rw-r--r--chromium/third_party/WebKit/Source/core/editing/FrameSelection.cpp24
-rw-r--r--chromium/third_party/WebKit/Source/core/editing/FrameSelection.h2
-rw-r--r--chromium/third_party/WebKit/Source/core/frame/Settings.in4
-rw-r--r--chromium/third_party/WebKit/Source/core/frame/SmartClip.cpp31
-rw-r--r--chromium/third_party/WebKit/Source/core/frame/SmartClip.h3
-rw-r--r--chromium/third_party/WebKit/Source/core/html/HTMLFormElement.cpp23
-rw-r--r--chromium/third_party/WebKit/Source/core/html/HTMLFormElement.h2
-rw-r--r--chromium/third_party/WebKit/Source/core/html/HTMLOptionElement.cpp8
-rw-r--r--chromium/third_party/WebKit/Source/core/html/HTMLOptionElement.h2
-rw-r--r--chromium/third_party/WebKit/Source/core/html/imports/HTMLImportTreeRoot.cpp2
-rw-r--r--chromium/third_party/WebKit/Source/core/html/imports/HTMLImportsController.cpp37
-rw-r--r--chromium/third_party/WebKit/Source/core/html/imports/HTMLImportsController.h8
-rw-r--r--chromium/third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp9
-rw-r--r--chromium/third_party/WebKit/Source/core/html/shadow/SliderThumbElement.cpp5
-rw-r--r--chromium/third_party/WebKit/Source/core/loader/MixedContentChecker.cpp11
-rw-r--r--chromium/third_party/WebKit/Source/core/loader/MixedContentChecker.h6
-rw-r--r--chromium/third_party/WebKit/Source/core/rendering/HitTestResult.cpp12
-rw-r--r--chromium/third_party/WebKit/Source/core/rendering/HitTestResult.h4
-rw-r--r--chromium/third_party/WebKit/Source/core/rendering/RenderBox.cpp17
-rw-r--r--chromium/third_party/WebKit/Source/core/rendering/RenderFullScreen.cpp2
-rw-r--r--chromium/third_party/WebKit/Source/core/rendering/RenderInline.cpp36
-rw-r--r--chromium/third_party/WebKit/Source/core/rendering/RenderObject.cpp4
-rw-r--r--chromium/third_party/WebKit/Source/core/rendering/compositing/RenderLayerCompositor.cpp5
-rw-r--r--chromium/third_party/WebKit/Source/core/rendering/style/RenderStyle.h7
-rw-r--r--chromium/third_party/WebKit/Source/core/rendering/svg/RenderSVGResourceFilter.cpp10
-rw-r--r--chromium/third_party/WebKit/Source/platform/fonts/Character.cpp6
-rw-r--r--chromium/third_party/WebKit/Source/web/WebLocalFrameImpl.h6
-rw-r--r--chromium/third_party/WebKit/Source/web/WebSettingsImpl.cpp5
-rw-r--r--chromium/third_party/WebKit/Source/web/WebSettingsImpl.h1
-rw-r--r--chromium/third_party/WebKit/Source/web/WebViewImpl.cpp49
-rw-r--r--chromium/third_party/WebKit/Source/web/WebViewImpl.h4
-rw-r--r--chromium/third_party/WebKit/public/web/WebSettings.h1
-rw-r--r--chromium/third_party/WebKit/public/web/WebView.h6
-rw-r--r--chromium/third_party/angle/src/compiler/translator/OutputHLSL.cpp6
-rw-r--r--chromium/third_party/angle/src/libGLESv2/renderer/IndexDataManager.cpp59
-rw-r--r--chromium/third_party/angle/src/libGLESv2/renderer/IndexDataManager.h3
-rw-r--r--chromium/third_party/angle/src/libGLESv2/renderer/d3d11/Renderer11.cpp9
-rw-r--r--chromium/third_party/brotli/src/README2
-rw-r--r--chromium/third_party/freetype2/src/builds/wince/vc2005-ce/freetype.sln2
-rw-r--r--chromium/third_party/freetype2/src/builds/wince/vc2008-ce/freetype.sln2
-rw-r--r--chromium/third_party/icu/build/icudt_build.sln2
-rw-r--r--chromium/third_party/icu/source/common/common.vcxproj2
-rw-r--r--chromium/third_party/icu/source/common/common.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/data/brkitr/cjdict.txt2
-rw-r--r--chromium/third_party/icu/source/data/brkitr/el.txt2
-rw-r--r--chromium/third_party/icu/source/data/brkitr/en.txt2
-rw-r--r--chromium/third_party/icu/source/data/brkitr/en_US.txt2
-rw-r--r--chromium/third_party/icu/source/data/brkitr/en_US_POSIX.txt2
-rw-r--r--chromium/third_party/icu/source/data/brkitr/fi.txt2
-rw-r--r--chromium/third_party/icu/source/data/brkitr/he.txt2
-rw-r--r--chromium/third_party/icu/source/data/brkitr/ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/brkitr/root.txt2
-rw-r--r--chromium/third_party/icu/source/data/brkitr/th.txt2
-rw-r--r--chromium/third_party/icu/source/data/brkitr/thaidict.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/af.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/af_NA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/af_ZA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar_AE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar_BH.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar_DZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar_EG.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar_IQ.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar_JO.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar_KW.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar_LB.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar_LY.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar_OM.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar_QA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar_SA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar_SD.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar_SY.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar_TN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ar_YE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/as.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/as_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/az.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/az_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/az_Latn_AZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/be.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/be_BY.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/bg.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/bg_BG.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/bn.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/bn_BD.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/bn_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/bs.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/bs_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ca.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ca_ES.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/chr.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/chr_US.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/cs.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/cs_CZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/cy.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/cy_GB.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/da.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/da_DK.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/de.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/de_.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/de_AT.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/de_BE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/de_CH.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/de_DE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/de_LI.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/de_LU.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/de__PHONEBOOK.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/el.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/el_CY.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/el_GR.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_AS.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_AU.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_BE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_BW.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_BZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_CA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_GB.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_GU.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_HK.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_IE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_JM.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_MH.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_MP.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_MT.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_MU.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_NA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_NZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_PH.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_PK.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_SG.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_TT.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_UM.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_US.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_US_POSIX.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_VI.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_ZA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/en_ZW.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/eo.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_419.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_AR.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_BO.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_CL.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_CO.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_CR.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_DO.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_EC.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_ES.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_GQ.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_GT.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_HN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_MX.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_NI.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_PA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_PE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_PR.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_PY.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_SV.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_US.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_UY.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es_VE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/es__TRADITIONAL.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/et.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/et_EE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fa.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fa_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fa_IR.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fi.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fi_FI.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fil.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fil_PH.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fo.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fo_FO.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_BE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_BF.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_BI.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_BJ.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_BL.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_CA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_CD.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_CF.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_CG.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_CH.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_CI.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_CM.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_DJ.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_FR.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_GA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_GN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_GP.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_GQ.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_KM.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_LU.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_MC.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_MF.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_MG.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_ML.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_MQ.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_NE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_RE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_RW.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_SN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_TD.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/fr_TG.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ga.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ga_IE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/gu.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/gu_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ha.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ha_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ha_Latn_GH.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ha_Latn_NE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ha_Latn_NG.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/haw.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/he.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/he_IL.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/hi.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/hi_.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/hi_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/hi__DIRECT.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/hr.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/hr_HR.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/hu.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/hu_HU.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/hy.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/hy_AM.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/id.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/id_ID.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ig.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ig_NG.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/in.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/in_ID.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/is.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/is_IS.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/it.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/it_CH.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/it_IT.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/iw.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/iw_IL.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ja_JP.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ka.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ka_GE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/kk.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/kk_KZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/kl.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/kl_GL.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/km.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/kn.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/kn_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ko.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ko_KR.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/kok.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/kok_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/lt.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/lt_LT.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/lv.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/lv_LV.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/mk.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/mk_MK.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ml.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ml_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/mo.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/mr.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/mr_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ms.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ms_BN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ms_MY.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/mt.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/mt_MT.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/my.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/my_MM.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/nb.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/nb_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/nl.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/nl_BE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/nl_NL.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/nn.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/nn_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/no.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/no_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/om.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/om_ET.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/om_KE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/or.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/or_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/pa.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/pa_Arab.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/pa_Arab_PK.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/pa_Guru.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/pa_Guru_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/pa_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/pl.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/pl_PL.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ps.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ps_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/pt.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/pt_BR.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/pt_PT.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ro.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ro_MD.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ro_RO.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/root.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ru.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ru_MD.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ru_RU.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ru_UA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sh.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sh_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sh_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/si.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/si_LK.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sk.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sk_SK.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sl.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sl_SI.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sq.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sq_AL.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sr.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sr_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sr_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sr_Cyrl_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sr_Cyrl_ME.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sr_Cyrl_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sr_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sr_Latn_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sr_Latn_ME.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sr_Latn_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sr_ME.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sr_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sv.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sv_FI.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sv_SE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sw.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sw_KE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/sw_TZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ta.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ta_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ta_LK.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/te.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/te_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/th.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/th_TH.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/to.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/tr.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/tr_TR.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/uk.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/uk_UA.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ur.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ur_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/ur_PK.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/vi.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/vi_VN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/yo.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/yo_NG.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zh.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zh_.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zh_CN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zh_HK.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zh_Hans.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zh_Hans_CN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zh_Hans_SG.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zh_Hant.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zh_Hant_HK.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zh_Hant_MO.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zh_Hant_TW.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zh_MO.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zh_SG.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zh_TW.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zh_TW_STROKE.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zh__PINYIN.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zu.txt2
-rw-r--r--chromium/third_party/icu/source/data/coll/zu_ZA.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/af.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ak.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/am.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ar.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/as.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/asa.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/az.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/az_AZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/az_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/az_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/az_Latn_AZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/be.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/bem.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/bez.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/bg.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/bm.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/bn.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/bo.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/bs.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ca.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/cgg.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/chr.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/cs.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/cy.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/da.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/dav.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/de.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/de_BE.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/de_LU.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ebu.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ee.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/el.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/en.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/en_AU.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/en_BE.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/en_BW.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/en_BZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/en_CA.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/en_HK.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/en_JM.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/en_MT.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/en_NA.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/en_NZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/en_PH.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/en_PK.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/en_RH.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/en_SG.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/en_TT.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/en_ZW.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/eo.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/es.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/es_AR.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/es_CL.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/es_CO.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/es_EC.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/es_GT.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/es_HN.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/es_MX.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/es_PR.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/es_US.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/es_UY.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/et.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/eu.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/fa.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/fa_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ff.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/fi.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/fil.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/fil_PH.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/fo.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/fr.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/fr_CA.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/fr_LU.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ga.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/gl.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/gsw.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/gu.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/guz.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/gv.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ha.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ha_GH.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ha_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ha_Latn_GH.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ha_Latn_NE.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ha_Latn_NG.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ha_NE.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ha_NG.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/haw.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/he.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/he_IL.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/hi.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/hr.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/hu.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/hy.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/id.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/id_ID.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ig.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ii.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/in.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/in_ID.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/is.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/it.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/iw.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/iw_IL.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ja_JP.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ja_JP_TRADITIONAL.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/jmc.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ka.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/kab.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/kam.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/kde.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/kea.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/khq.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ki.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/kk.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/kk_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/kk_Cyrl_KZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/kk_KZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/kl.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/kln.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/km.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/kn.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ko.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/kok.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/kw.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/lag.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/lg.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/lt.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/luo.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/luy.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/lv.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/mas.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/mer.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/mfe.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/mg.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/mk.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ml.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/mo.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/mr.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ms.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ms_BN.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/mt.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/my.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/naq.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/nb.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/nb_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/nd.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ne.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ne_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/nl.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/nn.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/nn_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/no.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/no_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/no_NO_NY.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/nyn.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/om.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/or.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/pa.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/pa_Arab.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/pa_Arab_PK.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/pa_Guru.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/pa_Guru_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/pa_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/pa_PK.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/pl.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ps.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/pt.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/pt_PT.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/rm.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ro.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ro_MD.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/rof.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/root.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ru.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/rw.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/rwk.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/saq.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/seh.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ses.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sg.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sh.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sh_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sh_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sh_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/shi.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/shi_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/shi_Latn_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/shi_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/shi_Tfng.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/si.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sk.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sl.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sn.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/so.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sq.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sr.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sr_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sr_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sr_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sr_Cyrl_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sr_Cyrl_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sr_Cyrl_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sr_Cyrl_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sr_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sr_Latn_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sr_Latn_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sr_Latn_ME.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sr_Latn_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sr_Latn_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sr_ME.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sr_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sr_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/supplementalData.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sv.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/sw.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ta.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/te.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/teo.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/th.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/th_TH.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/th_TH_TRADITIONAL.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ti.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/tl.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/tl_PH.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/to.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/tr.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/tzm.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/tzm_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/tzm_Latn_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/tzm_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/uk.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/ur.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/uz.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/uz_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/uz_Arab.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/uz_Arab_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/uz_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/uz_Cyrl_UZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/uz_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/uz_UZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/vi.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/vun.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/xog.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/yo.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/zh.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/zh_CN.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/zh_HK.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/zh_Hans.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/zh_Hans_CN.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/zh_Hans_HK.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/zh_Hans_SG.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/zh_Hant.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/zh_Hant_HK.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/zh_Hant_MO.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/zh_Hant_TW.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/zh_MO.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/zh_SG.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/zh_TW.txt2
-rw-r--r--chromium/third_party/icu/source/data/curr/zu.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/af.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ak.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/am.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ar.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/as.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/asa.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/az.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/az_AZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/az_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/az_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/az_Latn_AZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/be.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/bem.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/bez.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/bg.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/bm.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/bn.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/bn_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/bo.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/bs.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ca.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/cgg.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/chr.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/cs.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/cy.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/da.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/dav.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/de.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/de_CH.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ebu.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ee.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/el.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/en.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/en_RH.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/en_ZW.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/eo.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/es.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/es_AR.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/es_CL.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/et.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/eu.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/fa.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/fa_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ff.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/fi.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/fil.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/fil_PH.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/fo.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/fr.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ga.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/gl.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/gsw.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/gu.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/guz.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/gv.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ha.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ha_GH.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ha_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ha_Latn_GH.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ha_Latn_NE.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ha_Latn_NG.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ha_NE.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ha_NG.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/haw.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/he.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/he_IL.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/hi.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/hr.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/hu.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/hy.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/id.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/id_ID.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ig.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ii.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/in.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/in_ID.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/is.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/it.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/iw.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/iw_IL.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ja_JP.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ja_JP_TRADITIONAL.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/jmc.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ka.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/kab.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/kam.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/kde.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/kea.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/khq.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ki.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/kk.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/kk_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/kk_Cyrl_KZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/kk_KZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/kl.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/kln.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/km.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/kn.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ko.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/kok.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/kw.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/lag.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/lg.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/lt.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/luo.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/luy.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/lv.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/mas.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/mer.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/mfe.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/mg.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/mk.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ml.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/mo.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/mr.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ms.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/mt.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/my.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/naq.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/nb.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/nb_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/nd.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ne.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/nl.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/nl_BE.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/nn.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/nn_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/no.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/no_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/no_NO_NY.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/nyn.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/om.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/or.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/pa.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/pa_Arab.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/pa_Arab_PK.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/pa_Guru.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/pa_Guru_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/pa_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/pa_PK.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/pl.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ps.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/pt.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/pt_PT.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/rm.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ro.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ro_MD.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/rof.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/root.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ru.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ru_UA.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/rw.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/rwk.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/saq.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/seh.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ses.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sg.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sh.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sh_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sh_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sh_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/shi.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/shi_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/shi_Latn_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/shi_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/shi_Tfng.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/si.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sk.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sl.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sn.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/so.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sq.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sr.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sr_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sr_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sr_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sr_Cyrl_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sr_Cyrl_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sr_Cyrl_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sr_Cyrl_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sr_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sr_Latn_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sr_Latn_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sr_Latn_ME.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sr_Latn_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sr_Latn_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sr_ME.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sr_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sr_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sv.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sv_FI.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/sw.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ta.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/te.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/teo.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/tg.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/th.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/th_TH.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/th_TH_TRADITIONAL.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ti.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/tl.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/tl_PH.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/to.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/tr.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/tzm.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/tzm_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/tzm_Latn_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/tzm_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/uk.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/ur.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/uz.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/uz_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/uz_Arab.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/uz_Arab_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/uz_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/uz_Cyrl_UZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/uz_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/uz_UZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/vi.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/vun.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/xog.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/yo.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/zh.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/zh_CN.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/zh_HK.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/zh_Hans.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/zh_Hans_CN.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/zh_Hans_SG.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/zh_Hant.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/zh_Hant_HK.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/zh_Hant_MO.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/zh_Hant_TW.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/zh_MO.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/zh_SG.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/zh_TW.txt2
-rw-r--r--chromium/third_party/icu/source/data/lang/zu.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/af.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/af_NA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/af_ZA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ak.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ak_GH.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/am.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/am_ET.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar_AE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar_BH.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar_DZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar_EG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar_IQ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar_JO.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar_KW.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar_LB.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar_LY.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar_OM.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar_QA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar_SA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar_SD.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar_SY.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar_TN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ar_YE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/as.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/as_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/asa.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/asa_TZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/az.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/az_AZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/az_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/az_Cyrl_AZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/az_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/az_Latn_AZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/be.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/be_BY.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/bem.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/bem_ZM.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/bez.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/bez_TZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/bg.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/bg_BG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/bm.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/bm_ML.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/bn.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/bn_BD.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/bn_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/bo.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/bo_CN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/bo_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/bs.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/bs_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ca.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ca_ES.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/cgg.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/cgg_UG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/chr.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/chr_US.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/cs.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/cs_CZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/cy.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/cy_GB.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/da.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/da_DK.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/dav.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/dav_KE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/de.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/de_AT.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/de_BE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/de_CH.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/de_DE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/de_LI.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/de_LU.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ebu.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ebu_KE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ee.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ee_GH.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ee_TG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/el.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/el_CY.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/el_GR.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_AS.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_AU.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_BE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_BW.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_BZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_CA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_GB.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_GU.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_HK.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_IE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_JM.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_MH.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_MP.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_MT.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_MU.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_NA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_NZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_PH.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_PK.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_RH.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_SG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_TT.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_UM.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_US.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_US_POSIX.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_VI.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_ZA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/en_ZW.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/eo.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_419.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_AR.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_BO.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_CL.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_CO.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_CR.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_DO.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_EC.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_ES.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_GQ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_GT.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_HN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_MX.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_NI.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_PA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_PE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_PR.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_PY.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_SV.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_US.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_UY.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/es_VE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/et.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/et_EE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/eu.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/eu_ES.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fa.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fa_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fa_IR.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ff.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ff_SN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fi.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fi_FI.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fil.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fil_PH.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fo.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fo_FO.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_BE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_BF.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_BI.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_BJ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_BL.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_CA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_CD.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_CF.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_CG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_CH.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_CI.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_CM.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_DJ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_FR.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_GA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_GN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_GP.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_GQ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_KM.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_LU.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_MC.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_MF.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_MG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_ML.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_MQ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_NE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_RE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_RW.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_SN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_TD.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/fr_TG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ga.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ga_IE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/gl.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/gl_ES.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/gsw.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/gsw_CH.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/gu.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/gu_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/guz.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/guz_KE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/gv.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/gv_GB.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ha.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ha_GH.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ha_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ha_Latn_GH.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ha_Latn_NE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ha_Latn_NG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ha_NE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ha_NG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/haw.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/haw_US.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/he.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/he_IL.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/hi.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/hi_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/hr.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/hr_HR.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/hu.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/hu_HU.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/hy.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/hy_AM.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/id.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/id_ID.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ig.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ig_NG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ii.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ii_CN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/in.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/in_ID.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/is.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/is_IS.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/it.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/it_CH.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/it_IT.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/iw.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/iw_IL.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ja_JP.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ja_JP_TRADITIONAL.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/jmc.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/jmc_TZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ka.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ka_GE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kab.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kab_DZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kam.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kam_KE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kde.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kde_TZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kea.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kea_CV.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/khq.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/khq_ML.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ki.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ki_KE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kk.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kk_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kk_Cyrl_KZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kk_KZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kl.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kl_GL.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kln.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kln_KE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/km.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/km_KH.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kn.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kn_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ko.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ko_KR.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kok.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kok_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kw.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/kw_GB.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/lag.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/lag_TZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/lg.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/lg_UG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/lt.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/lt_LT.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/luo.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/luo_KE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/luy.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/luy_KE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/lv.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/lv_LV.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/mas.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/mas_KE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/mas_TZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/mer.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/mer_KE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/mfe.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/mfe_MU.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/mg.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/mg_MG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/mk.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/mk_MK.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ml.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ml_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/mo.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/mr.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/mr_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ms.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ms_BN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ms_MY.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/mt.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/mt_MT.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/my.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/my_MM.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/naq.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/naq_NA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/nb.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/nb_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/nd.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/nd_ZW.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ne.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ne_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ne_NP.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/nl.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/nl_BE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/nl_NL.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/nn.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/nn_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/no.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/no_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/no_NO_NY.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/nyn.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/nyn_UG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/om.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/om_ET.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/om_KE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/or.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/or_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/pa.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/pa_Arab.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/pa_Arab_PK.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/pa_Guru.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/pa_Guru_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/pa_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/pa_PK.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/pl.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/pl_PL.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ps.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ps_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/pt.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/pt_BR.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/pt_GW.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/pt_MZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/pt_PT.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/rm.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/rm_CH.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ro.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ro_MD.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ro_RO.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/rof.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/rof_TZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/root.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ru.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ru_MD.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ru_RU.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ru_UA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/rw.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/rw_RW.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/rwk.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/rwk_TZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/saq.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/saq_KE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/seh.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/seh_MZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ses.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ses_ML.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sg.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sg_CF.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sh.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sh_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sh_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sh_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/shi.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/shi_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/shi_Latn_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/shi_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/shi_Tfng.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/shi_Tfng_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/si.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/si_LK.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sk.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sk_SK.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sl.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sl_SI.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sn.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sn_ZW.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/so.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/so_DJ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/so_ET.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/so_KE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/so_SO.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sq.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sq_AL.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr_Cyrl_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr_Cyrl_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr_Cyrl_ME.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr_Cyrl_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr_Cyrl_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr_Latn_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr_Latn_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr_Latn_ME.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr_Latn_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr_Latn_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr_ME.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sr_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sv.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sv_FI.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sv_SE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sw.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sw_KE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/sw_TZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ta.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ta_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ta_LK.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/te.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/te_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/teo.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/teo_KE.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/teo_UG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/th.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/th_TH.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/th_TH_TRADITIONAL.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ti.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ti_ER.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ti_ET.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/tl.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/tl_PH.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/to.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/to_TO.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/tr.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/tr_TR.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/tzm.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/tzm_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/tzm_Latn_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/tzm_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/uk.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/uk_UA.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ur.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ur_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/ur_PK.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/uz.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/uz_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/uz_Arab.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/uz_Arab_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/uz_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/uz_Cyrl_UZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/uz_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/uz_Latn_UZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/uz_UZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/vi.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/vi_VN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/vun.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/vun_TZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/xog.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/xog_UG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/yo.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/yo_NG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/zh.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/zh_CN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/zh_HK.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/zh_Hans.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/zh_Hans_CN.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/zh_Hans_HK.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/zh_Hans_MO.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/zh_Hans_SG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/zh_Hant.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/zh_Hant_HK.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/zh_Hant_MO.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/zh_Hant_TW.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/zh_MO.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/zh_SG.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/zh_TW.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/zu.txt2
-rw-r--r--chromium/third_party/icu/source/data/locales/zu_ZA.txt2
-rw-r--r--chromium/third_party/icu/source/data/makedata.vcxproj2
-rw-r--r--chromium/third_party/icu/source/data/makedata.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/data/misc/keyTypeData.txt2
-rw-r--r--chromium/third_party/icu/source/data/misc/likelySubtags.txt2
-rw-r--r--chromium/third_party/icu/source/data/misc/metaZones.txt2
-rw-r--r--chromium/third_party/icu/source/data/misc/numberingSystems.txt2
-rw-r--r--chromium/third_party/icu/source/data/misc/plurals.txt2
-rw-r--r--chromium/third_party/icu/source/data/misc/supplementalData.txt2
-rw-r--r--chromium/third_party/icu/source/data/misc/timezoneTypes.txt2
-rw-r--r--chromium/third_party/icu/source/data/misc/windowsZones.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/af.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/am.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/ar.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/az.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/be.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/bg.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/bs.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/ca.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/cs.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/cy.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/da.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/de.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/el.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/en.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/eo.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/es.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/et.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/fa.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/fa_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/fi.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/fil.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/fo.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/fr.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/fr_BE.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/fr_CH.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/ga.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/he.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/hi.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/hr.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/hu.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/hy.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/id.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/is.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/it.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/ka.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/kl.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/ko.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/lt.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/lv.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/mk.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/ms.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/mt.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/nb.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/nl.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/nn.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/pl.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/pt.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/pt_PT.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/ro.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/root.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/ru.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/sk.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/sl.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/sq.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/sr.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/sr_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/sv.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/ta.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/th.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/tr.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/uk.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/vi.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/zh.txt2
-rw-r--r--chromium/third_party/icu/source/data/rbnf/zh_Hant.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/af.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ak.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/am.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ar.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/as.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/asa.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/az.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/az_AZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/az_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/az_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/az_Latn_AZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/be.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/bem.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/bez.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/bg.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/bm.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/bn.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/bo.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/bs.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ca.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/cgg.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/chr.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/cs.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/cy.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/da.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/dav.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/de.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/de_CH.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ebu.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ee.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/el.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/en.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/en_RH.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/en_ZW.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/eo.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/es.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/es_CL.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/et.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/eu.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/fa.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/fa_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ff.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/fi.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/fil.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/fil_PH.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/fo.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/fr.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ga.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/gl.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/gsw.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/gu.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/guz.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/gv.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ha.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ha_GH.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ha_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ha_Latn_GH.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ha_Latn_NE.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ha_Latn_NG.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ha_NE.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ha_NG.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/haw.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/he.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/he_IL.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/hi.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/hr.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/hu.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/hy.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/id.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/id_ID.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ig.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ii.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/in.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/in_ID.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/is.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/it.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/iw.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/iw_IL.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ja_JP.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ja_JP_TRADITIONAL.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/jmc.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ka.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/kab.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/kam.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/kde.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/kea.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/khq.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ki.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/kk.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/kk_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/kk_Cyrl_KZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/kk_KZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/kl.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/kln.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/km.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/kn.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ko.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/kok.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/kw.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/lag.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/lg.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/lt.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/luo.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/luy.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/lv.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/mas.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/mer.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/mfe.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/mg.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/mk.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ml.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/mo.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/mr.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ms.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/mt.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/my.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/naq.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/nb.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/nb_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/nd.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ne.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/nl.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/nl_BE.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/nn.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/nn_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/no.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/no_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/no_NO_NY.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/nyn.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/om.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/or.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/pa.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/pa_Arab.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/pa_Arab_PK.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/pa_Guru.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/pa_Guru_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/pa_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/pa_PK.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/pl.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ps.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/pt.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/pt_PT.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/rm.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ro.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ro_MD.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/rof.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/root.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ru.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/rw.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/rwk.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/saq.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/seh.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ses.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sg.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sh.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sh_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sh_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sh_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/shi.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/shi_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/shi_Latn_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/shi_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/shi_Tfng.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/si.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sk.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sl.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sn.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/so.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sq.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sr.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sr_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sr_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sr_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sr_Cyrl_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sr_Cyrl_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sr_Cyrl_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sr_Cyrl_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sr_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sr_Latn_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sr_Latn_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sr_Latn_ME.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sr_Latn_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sr_Latn_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sr_ME.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sr_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sr_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sv.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sv_FI.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/sw.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ta.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/te.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/teo.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/th.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/th_TH.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/th_TH_TRADITIONAL.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ti.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/tl.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/tl_PH.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/to.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/tr.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/tzm.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/tzm_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/tzm_Latn_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/tzm_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/uk.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/ur.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/uz.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/uz_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/uz_Arab.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/uz_Arab_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/uz_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/uz_Cyrl_UZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/uz_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/uz_UZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/vi.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/vun.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/xog.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/yo.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/zh.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/zh_CN.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/zh_HK.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/zh_Hans.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/zh_Hans_CN.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/zh_Hans_SG.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/zh_Hant.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/zh_Hant_HK.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/zh_Hant_MO.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/zh_Hant_TW.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/zh_MO.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/zh_SG.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/zh_TW.txt2
-rw-r--r--chromium/third_party/icu/source/data/region/zu.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Amharic_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Any_Accents.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Any_Publishing.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Arabic_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Arabic_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Armenian_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Azerbaijani_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Belarusian_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Bengali_Devanagari.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Bengali_Gujarati.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Bengali_Gurmukhi.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Bengali_InterIndic.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Bengali_Kannada.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Bengali_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Bengali_Malayalam.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Bengali_Oriya.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Bengali_Tamil.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Bengali_Telugu.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Bulgarian_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Cyrillic_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Devanagari_Bengali.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Devanagari_Gujarati.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Devanagari_Gurmukhi.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Devanagari_InterIndic.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Devanagari_Kannada.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Devanagari_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Devanagari_Malayalam.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Devanagari_Oriya.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Devanagari_Tamil.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Devanagari_Telugu.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Fullwidth_Halfwidth.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Georgian_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Georgian_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Greek_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Greek_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Greek_Latin_UNGEGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gujarati_Bengali.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gujarati_Devanagari.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gujarati_Gurmukhi.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gujarati_InterIndic.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gujarati_Kannada.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gujarati_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gujarati_Malayalam.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gujarati_Oriya.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gujarati_Tamil.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gujarati_Telugu.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gurmukhi_Bengali.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gurmukhi_Devanagari.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gurmukhi_Gujarati.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gurmukhi_InterIndic.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gurmukhi_Kannada.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gurmukhi_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gurmukhi_Malayalam.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gurmukhi_Oriya.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gurmukhi_Tamil.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Gurmukhi_Telugu.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Han_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Han_Latin_Names.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Han_Spacedhan.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Hangul_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Hebrew_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Hebrew_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Hiragana_Katakana.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Hiragana_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/IPA_XSampa.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/InterIndic_Bengali.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/InterIndic_Devanagari.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/InterIndic_Gujarati.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/InterIndic_Gurmukhi.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/InterIndic_Kannada.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/InterIndic_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/InterIndic_Malayalam.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/InterIndic_Oriya.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/InterIndic_Tamil.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/InterIndic_Telugu.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Jamo_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/JapaneseKana_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Kannada_Bengali.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Kannada_Devanagari.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Kannada_Gujarati.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Kannada_Gurmukhi.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Kannada_InterIndic.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Kannada_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Kannada_Malayalam.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Kannada_Oriya.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Kannada_Tamil.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Kannada_Telugu.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Kazakh_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Kirghiz_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Korean_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_ASCII.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_Armenian.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_Bengali.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_ConjoiningJamo.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_Devanagari.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_Gujarati.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_Gurmukhi.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_Hangul.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_InterIndic.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_Jamo.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_Kannada.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_Katakana.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_Malayalam.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_NumericPinyin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_Oriya.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_Tamil.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_Telugu.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_Thaana.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Latin_Thai.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Macedonian_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Malayalam_Bengali.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Malayalam_Devanagari.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Malayalam_Gujarati.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Malayalam_Gurmukhi.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Malayalam_InterIndic.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Malayalam_Kannada.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Malayalam_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Malayalam_Oriya.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Malayalam_Tamil.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Malayalam_Telugu.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Maldivian_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Mongolian_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Oriya_Bengali.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Oriya_Devanagari.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Oriya_Gujarati.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Oriya_Gurmukhi.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Oriya_InterIndic.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Oriya_Kannada.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Oriya_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Oriya_Malayalam.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Oriya_Tamil.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Oriya_Telugu.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Pashto_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Persian_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Pinyin_NumericPinyin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Russian_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Serbian_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Simplified_Traditional.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Syriac_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Tamil_Bengali.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Tamil_Devanagari.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Tamil_Gujarati.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Tamil_Gurmukhi.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Tamil_InterIndic.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Tamil_Kannada.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Tamil_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Tamil_Malayalam.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Tamil_Oriya.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Tamil_Telugu.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Telugu_Bengali.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Telugu_Devanagari.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Telugu_Gujarati.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Telugu_Gurmukhi.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Telugu_InterIndic.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Telugu_Kannada.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Telugu_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Telugu_Malayalam.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Telugu_Oriya.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Telugu_Tamil.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/ThaiLogical_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Thai_Latin.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Thai_ThaiLogical.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Thai_ThaiSemi.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Turkmen_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Ukrainian_Latin_BGN.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/Uzbek_Latin_BGN.txt2
-rwxr-xr-xchromium/third_party/icu/source/data/translit/az_Lower.txt2
-rwxr-xr-xchromium/third_party/icu/source/data/translit/az_Title.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/az_Upper.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/cs_FONIPA_ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/cs_FONIPA_ko.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/cs_cs_FONIPA.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/cs_ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/cs_ko.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/css3transform.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/el_Lower.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/el_Title.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/el_Upper.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/es_419_ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/es_419_zh.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/es_FONIPA_am.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/es_FONIPA_es_419_FONIPA.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/es_FONIPA_ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/es_FONIPA_zh.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/es_am.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/es_es_FONIPA.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/es_ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/es_zh.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/it_am.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/it_ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/ja_Latn_ko.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/ja_Latn_ru.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/pl_FONIPA_ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/pl_ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/pl_pl_FONIPA.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/ro_FONIPA_ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/ro_ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/ro_ro_FONIPA.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/root.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/ru_ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/ru_zh.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/sk_FONIPA_ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/sk_ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/sk_sk_FONIPA.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/tr_Lower.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/tr_Title.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/tr_Upper.txt2
-rw-r--r--chromium/third_party/icu/source/data/translit/zh_Latn_PINYIN_ru.txt2
-rw-r--r--chromium/third_party/icu/source/data/unidata/UCARules.txt2
-rw-r--r--chromium/third_party/icu/source/data/unidata/confusables.txt2
-rw-r--r--chromium/third_party/icu/source/data/unidata/confusablesWholeScript.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/af.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ak.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/am.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ar.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/as.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/asa.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/az.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/az_AZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/az_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/az_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/az_Latn_AZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/be.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/bem.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/bez.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/bg.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/bm.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/bn.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/bo.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/bs.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ca.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/cgg.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/chr.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/cs.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/cy.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/da.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/dav.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/de.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ebu.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ee.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/el.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/en.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/en_AU.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/en_CA.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/en_GB.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/en_NZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/en_RH.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/en_ZA.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/en_ZW.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/eo.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/es.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/et.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/eu.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/fa.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ff.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/fi.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/fil.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/fil_PH.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/fo.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/fr.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/fr_CA.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ga.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/gl.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/gsw.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/gu.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/guz.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/gv.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ha.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ha_GH.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ha_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ha_Latn_GH.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ha_Latn_NE.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ha_Latn_NG.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ha_NE.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ha_NG.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/haw.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/he.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/he_IL.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/hi.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/hr.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/hu.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/hy.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/id.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/id_ID.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ig.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ii.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/in.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/in_ID.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/is.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/it.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/iw.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/iw_IL.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ja.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ja_JP.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ja_JP_TRADITIONAL.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/jmc.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ka.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/kab.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/kam.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/kde.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/kea.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/khq.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ki.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/kk.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/kk_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/kk_Cyrl_KZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/kk_KZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/kl.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/kln.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/km.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/kn.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ko.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/kok.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/kw.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/lag.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/lg.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/lt.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/luo.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/luy.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/lv.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/mas.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/mer.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/mfe.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/mg.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/mk.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ml.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/mo.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/mr.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ms.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/mt.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/my.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/naq.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/nb.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/nb_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/nd.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ne.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/nl.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/nn.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/nn_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/no.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/no_NO.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/no_NO_NY.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/nyn.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/om.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/or.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/pa.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/pa_Arab.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/pa_Arab_PK.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/pa_Guru.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/pa_Guru_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/pa_IN.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/pa_PK.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/pl.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ps.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/pt.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/pt_PT.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/rm.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ro.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ro_MD.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/rof.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/root.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ru.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/rw.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/rwk.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/saq.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/seh.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ses.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sg.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sh.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sh_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sh_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sh_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/shi.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/shi_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/shi_Latn_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/shi_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/shi_Tfng.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/si.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sk.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sl.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sn.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/so.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sq.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sr.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sr_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sr_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sr_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sr_Cyrl_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sr_Cyrl_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sr_Cyrl_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sr_Cyrl_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sr_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sr_Latn_BA.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sr_Latn_CS.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sr_Latn_ME.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sr_Latn_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sr_Latn_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sr_ME.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sr_RS.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sr_YU.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sv.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/sw.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ta.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/te.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/teo.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/th.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/th_TH.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/th_TH_TRADITIONAL.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ti.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/tl.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/tl_PH.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/to.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/tr.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/tzm.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/tzm_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/tzm_Latn_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/tzm_MA.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/uk.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/ur.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/uz.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/uz_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/uz_Arab.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/uz_Arab_AF.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/uz_Cyrl.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/uz_Cyrl_UZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/uz_Latn.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/uz_UZ.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/vi.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/vun.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/xog.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/yo.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/zh.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/zh_CN.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/zh_HK.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/zh_Hans.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/zh_Hans_CN.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/zh_Hans_SG.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/zh_Hant.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/zh_Hant_HK.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/zh_Hant_MO.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/zh_Hant_TW.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/zh_MO.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/zh_SG.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/zh_TW.txt2
-rw-r--r--chromium/third_party/icu/source/data/zone/zu.txt2
-rw-r--r--chromium/third_party/icu/source/i18n/i18n.vcxproj2
-rw-r--r--chromium/third_party/icu/source/i18n/i18n.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/io/io.vcxproj2
-rw-r--r--chromium/third_party/icu/source/io/io.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/stubdata/stubdata.vcxproj2
-rw-r--r--chromium/third_party/icu/source/stubdata/stubdata.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/tools/ctestfw/ctestfw.vcxproj2
-rw-r--r--chromium/third_party/icu/source/tools/ctestfw/ctestfw.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/tools/genbrk/genbrk.vcxproj2
-rw-r--r--chromium/third_party/icu/source/tools/genbrk/genbrk.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/tools/genccode/genccode.vcxproj2
-rw-r--r--chromium/third_party/icu/source/tools/genccode/genccode.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/tools/gencfu/gencfu.vcxproj2
-rw-r--r--chromium/third_party/icu/source/tools/gencfu/gencfu.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/tools/gencmn/gencmn.vcxproj2
-rw-r--r--chromium/third_party/icu/source/tools/gencmn/gencmn.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/tools/gencnval/gencnval.vcxproj2
-rw-r--r--chromium/third_party/icu/source/tools/gencnval/gencnval.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/tools/genctd/genctd.vcxproj2
-rw-r--r--chromium/third_party/icu/source/tools/genctd/genctd.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/tools/gennorm2/gennorm2.vcxproj2
-rw-r--r--chromium/third_party/icu/source/tools/genrb/derb.vcxproj2
-rw-r--r--chromium/third_party/icu/source/tools/genrb/derb.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/tools/genrb/genrb.vcxproj2
-rw-r--r--chromium/third_party/icu/source/tools/genrb/genrb.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/tools/gensprep/gensprep.vcxproj2
-rw-r--r--chromium/third_party/icu/source/tools/gensprep/gensprep.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/tools/gentest/gentest.vcxproj2
-rw-r--r--chromium/third_party/icu/source/tools/gentest/gentest.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/tools/icuinfo/icuinfo.vcxproj2
-rw-r--r--chromium/third_party/icu/source/tools/icuinfo/testplug.vcxproj2
-rw-r--r--chromium/third_party/icu/source/tools/icuinfo/testplug.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/tools/icupkg/icupkg.vcxproj2
-rw-r--r--chromium/third_party/icu/source/tools/makeconv/makeconv.vcxproj2
-rw-r--r--chromium/third_party/icu/source/tools/makeconv/makeconv.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/tools/pkgdata/pkgdata.vcxproj2
-rw-r--r--chromium/third_party/icu/source/tools/pkgdata/pkgdata.vcxproj.filters2
-rw-r--r--chromium/third_party/icu/source/tools/toolutil/toolutil.vcxproj2
-rw-r--r--chromium/third_party/libaddressinput/src/cpp/grit.gyp55
-rw-r--r--chromium/third_party/libaddressinput/src/cpp/gtest.gyp58
-rw-r--r--chromium/third_party/libaddressinput/src/cpp/libaddressinput.gyp82
-rw-r--r--chromium/third_party/libaddressinput/src/cpp/libaddressinput.gypi95
-rw-r--r--chromium/third_party/libaddressinput/src/cpp/rapidjson.gyp29
-rw-r--r--chromium/third_party/libaddressinput/src/cpp/re2.gyp33
-rw-r--r--chromium/third_party/libwebm/source/libwebm_2008.sln2
-rw-r--r--chromium/third_party/libwebm/source/libwebm_2010.sln2
-rw-r--r--chromium/third_party/libwebm/source/libwebm_2010.vcxproj2
-rw-r--r--chromium/third_party/libwebm/source/libwebm_2010.vcxproj.filters2
-rw-r--r--chromium/third_party/libwebm/source/libwebm_2013.filters2
-rw-r--r--chromium/third_party/libwebm/source/libwebm_2013.sln2
-rw-r--r--chromium/third_party/libwebm/source/libwebm_2013.vcxproj2
-rw-r--r--chromium/third_party/libwebm/source/sample_2010.vcxproj2
-rw-r--r--chromium/third_party/libwebm/source/sample_2010.vcxproj.filters2
-rw-r--r--chromium/third_party/libwebm/source/sample_2013.filters2
-rw-r--r--chromium/third_party/libwebm/source/sample_2013.vcxproj2
-rw-r--r--chromium/third_party/libwebm/source/sample_muxer_2010.vcxproj2
-rw-r--r--chromium/third_party/libwebm/source/sample_muxer_2010.vcxproj.filters2
-rw-r--r--chromium/third_party/libwebm/source/sample_muxer_2013.filters2
-rw-r--r--chromium/third_party/libwebm/source/sample_muxer_2013.vcxproj2
-rw-r--r--chromium/third_party/libwebm/source/vttdemux_2010.vcxproj2
-rw-r--r--chromium/third_party/libwebm/source/vttdemux_2010.vcxproj.filters2
-rw-r--r--chromium/third_party/libwebm/source/vttdemux_2013.vcxproj2
-rw-r--r--chromium/third_party/libwebm/source/vttdemux_2013.vcxproj.filters2
-rw-r--r--chromium/third_party/npapi/npspy/windows/npspy.sln2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/celt.vcxproj2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/celt.vcxproj.filters2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/opus.sln2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/opus.vcxproj2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/opus.vcxproj.filters2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/opus_demo.vcxproj2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/opus_demo.vcxproj.filters2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/silk_common.vcxproj2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/silk_common.vcxproj.filters2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/silk_fixed.vcxproj2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/silk_fixed.vcxproj.filters2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/silk_float.vcxproj2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/silk_float.vcxproj.filters2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/test_opus_api.vcxproj2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/test_opus_api.vcxproj.filters2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/test_opus_decode.vcxproj2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/test_opus_decode.vcxproj.filters2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/test_opus_encode.vcxproj2
-rw-r--r--chromium/third_party/opus/src/win32/VS2010/test_opus_encode.vcxproj.filters2
-rw-r--r--chromium/third_party/skia/animations/text#1.xml2
-rw-r--r--chromium/third_party/skia/bench/ImageCacheBench.cpp2
-rw-r--r--chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker.sln2
-rw-r--r--chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.vcxproj2
-rw-r--r--chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.vcxproj.filters2
-rw-r--r--chromium/third_party/skia/experimental/LightSymbolsUtil/Callstacker/Callstacker/Callstacker.vcxproj.user2
-rw-r--r--chromium/third_party/skia/gyp/tests.gypi1
-rw-r--r--chromium/third_party/skia/include/core/SkGraphics.h44
-rw-r--r--chromium/third_party/skia/src/core/SkBitmapProcState.cpp19
-rw-r--r--chromium/third_party/skia/src/core/SkGlyph.h2
-rw-r--r--chromium/third_party/skia/src/core/SkScaledImageCache.cpp82
-rw-r--r--chromium/third_party/skia/src/core/SkScaledImageCache.h35
-rw-r--r--chromium/third_party/skia/src/ports/SkScalerContext_win_dw.cpp62
-rw-r--r--chromium/third_party/skia/src/ports/SkScalerContext_win_dw.h9
-rw-r--r--chromium/third_party/skia/tools/pathops_sorter.htm2
-rw-r--r--chromium/third_party/webdriver/test_data/deletingFrame.htm2
-rw-r--r--chromium/third_party/webdriver/test_data/sessionCookie.html2
-rw-r--r--chromium/third_party/webdriver/test_data/sessionCookieDest.html2
-rw-r--r--chromium/third_party/yasm/source/patched-yasm/Mkfiles/vc9/yasm.rules2
-rw-r--r--chromium/ui/aura/window_event_dispatcher.cc3
-rw-r--r--chromium/ui/aura/window_event_dispatcher_unittest.cc13
-rw-r--r--chromium/ui/base/ime/chromeos/ime_keymap.cc27
-rw-r--r--chromium/ui/base/ime/chromeos/ime_keymap.h3
-rw-r--r--chromium/ui/events/BUILD.gn4
-rw-r--r--chromium/ui/events/events.gyp4
-rw-r--r--chromium/ui/events/gesture_detection/gesture_provider_unittest.cc3
-rw-r--r--chromium/ui/events/gesture_detection/mock_motion_event.cc204
-rw-r--r--chromium/ui/events/gesture_detection/mock_motion_event.h86
-rw-r--r--chromium/ui/events/gesture_detection/motion_event.h17
-rw-r--r--chromium/ui/events/gesture_detection/touch_disposition_gesture_filter_unittest.cc4
-rw-r--r--chromium/ui/events/gesture_detection/velocity_tracker_unittest.cc3
-rw-r--r--chromium/ui/events/gestures/motion_event_aura.cc10
-rw-r--r--chromium/ui/events/gestures/motion_event_aura.h2
-rw-r--r--chromium/ui/gfx/win/dpi.cc5
-rw-r--r--chromium/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc6
-rw-r--r--chromium/v8/src/arm/code-stubs-arm.cc17
-rw-r--r--chromium/v8/src/arm64/code-stubs-arm64.cc17
-rw-r--r--chromium/v8/src/ia32/code-stubs-ia32.cc16
-rw-r--r--chromium/v8/src/ic.cc23
-rw-r--r--chromium/v8/src/mark-compact.cc15
-rw-r--r--chromium/v8/src/mips/code-stubs-mips.cc17
-rw-r--r--chromium/v8/src/objects.cc4
-rw-r--r--chromium/v8/src/version.cc2
-rw-r--r--chromium/v8/src/x64/code-stubs-x64.cc18
-rw-r--r--chromium/v8/src/x87/code-stubs-x87.cc16
-rw-r--r--chromium/webkit/common/webpreferences.cc1
-rw-r--r--chromium/webkit/common/webpreferences.h1
-rw-r--r--chromium/webkit/glue/resources/webkit_strings_sr.xtb2
2411 files changed, 5838 insertions, 3539 deletions
diff --git a/chromium/DEPS b/chromium/DEPS
index 2cd97e7dd8e..fb6ca7ffabe 100644
--- a/chromium/DEPS
+++ b/chromium/DEPS
@@ -165,19 +165,20 @@ deps_os = {
'src/third_party/hunspell_dictionaries': None,
'src/third_party/brotli/src': None,
'src/third_party/webgl': None,
+ 'src/third_party/hunspell': None,
'src/third_party/scons-2.0.1': None,
'src/third_party/webdriver/pylib': None,
'src/chrome/test/data/perf/canvas_bench': None,
'src/third_party/libexif/sources': None,
'src/third_party/safe_browsing/testing': None,
'src/third_party/libyuv': None,
- 'src/third_party/usrsctp/usrsctplib': None,
+ 'src/third_party/WebKit': None,
'src/third_party/webrtc': None,
'src/third_party/libjpeg_turbo': None,
'src/third_party/nss':
'/trunk/deps/third_party/nss@277057',
'src/third_party/bidichecker': None,
- 'src/third_party/WebKit': None,
+ 'src/third_party/usrsctp/usrsctplib': None,
'src/third_party/openmax_dl': None,
'src/third_party/WebKit/LayoutTests/w3c/csswg-test': None,
'src/third_party/google_toolbox_for_mac/src':
@@ -185,8 +186,7 @@ deps_os = {
'src/third_party/WebKit/LayoutTests/w3c/web-platform-tests': None,
'src/chrome/test/data/extensions/api_test/permissions/nacl_enabled/bin': None,
'src/third_party/WebKit/public':
- (Var("blink")) + '/branches/chromium/2062/public@179513',
- 'src/native_client': None,
+ (Var("blink")) + '/branches/chromium/2062/public@180557',
'src/tools/page_cycler/acid3': None,
'src/testing/iossim/third_party/class-dump':
'/trunk/deps/third_party/class-dump@199203',
@@ -194,15 +194,15 @@ deps_os = {
'src/third_party/libsrtp': None,
'src/third_party/ffmpeg': None,
'src/native_client/src/third_party/ppapi': None,
+ 'src/native_client': None,
'src/third_party/pdfium': None,
'src/build/util/support': None,
'src/pdf': None,
'src/third_party/pymox/src': None,
- 'src/third_party/yasm/source/patched-yasm': None,
'src/third_party/speex': None,
'src/third_party/colorama/src': None,
'src/third_party/webpagereplay': None,
- 'src/third_party/hunspell': None,
+ 'src/third_party/yasm/source/patched-yasm': None,
'src/third_party/angle': None,
'src/v8': None,
'src/third_party/libvpx': None,
@@ -211,10 +211,8 @@ deps_os = {
'unix': {
'src/third_party/fontconfig/src':
(Var("git.chromium.org")) + '/external/fontconfig.git@f16c3118e25546c1b749f9823c51827a60aeb5c1',
- 'build/third_party/cbuildbot_chromite':
- (Var("git.chromium.org")) + '/chromiumos/chromite.git@ff6389dc2361455d2072625a91e18672bdf03547',
- 'src/third_party/cros_system_api':
- (Var("git.chromium.org")) + '/chromiumos/platform/system_api.git@ba73627b396a7773203a6c554ae2cc759d52eb2b',
+ 'src/third_party/freetype2/src':
+ (Var("git.chromium.org")) + '/chromium/src/third_party/freetype2.git@d699c2994ecc178c4ed05ac2086061b2034c2178',
'src/third_party/pyelftools':
(Var("git.chromium.org")) + '/chromiumos/third_party/pyelftools.git@bdc1d380acd88d4bfaf47265008091483b0d614e',
'src/third_party/chromite':
@@ -225,14 +223,16 @@ deps_os = {
'/trunk/deps/third_party/xdg-utils@203785',
'src/third_party/undoview':
'/trunk/deps/third_party/undoview@119694',
+ 'src/third_party/cros_system_api':
+ (Var("git.chromium.org")) + '/chromiumos/platform/system_api.git@ba73627b396a7773203a6c554ae2cc759d52eb2b',
'src/chrome/tools/test/reference_build/chrome_linux':
'/trunk/deps/reference_builds/chrome_linux64@273882',
'src/third_party/swig/linux':
'/trunk/deps/third_party/swig/linux@230490',
'src/third_party/liblouis/src':
(Var("git.chromium.org")) + '/external/liblouis.git@3c2daee56250162e5a75830871601d74328d39f5',
- 'src/third_party/freetype2/src':
- (Var("git.chromium.org")) + '/chromium/src/third_party/freetype2.git@d699c2994ecc178c4ed05ac2086061b2034c2178',
+ 'build/third_party/cbuildbot_chromite':
+ (Var("git.chromium.org")) + '/chromiumos/chromite.git@ff6389dc2361455d2072625a91e18672bdf03547',
'src/third_party/lss':
(Var("linux-syscall-support")) + '/trunk/lss@26'
},
@@ -241,15 +241,15 @@ deps_os = {
(Var("git.chromium.org")) + '/external/guava-libraries.git@c523556ab7d0f05afadebd20e7768d4c16af8771',
'src/third_party/eyesfree/src/android/java/src/com/googlecode/eyesfree/braille':
(Var("eyes-free")) + '/trunk/braille/client/src/com/googlecode/eyesfree/braille@797',
- 'src/pdf': None,
+ 'src/third_party/freetype':
+ (Var("git.chromium.org")) + '/chromium/src/third_party/freetype.git@a2b9955b49034a51dfbc8bf9f4e9d312149cecac',
'src/third_party/apache-mime4j':
'/trunk/deps/third_party/apache-mime4j@170888',
- 'src/third_party/elfutils/src':
- (Var("git.chromium.org")) + '/external/elfutils.git@43a97297be82feab4b3176a094ed701ad3ccb308',
'src/breakpad/src':
(Var("google-breakpad")) + '/branches/chrome_37/src@1357',
- 'src/third_party/freetype':
- (Var("git.chromium.org")) + '/chromium/src/third_party/freetype.git@a2b9955b49034a51dfbc8bf9f4e9d312149cecac',
+ 'src/third_party/elfutils/src':
+ (Var("git.chromium.org")) + '/external/elfutils.git@43a97297be82feab4b3176a094ed701ad3ccb308',
+ 'src/pdf': None,
'src/third_party/jarjar':
'/trunk/deps/third_party/jarjar@170888',
'src/third_party/aosp':
@@ -281,7 +281,9 @@ deps = {
'src/third_party/libwebm/source':
(Var("git.chromium.org")) + '/webm/libwebm.git@8be63972fdd7ae8c041778f8ba674ade903395c9',
'src/third_party/WebKit':
- (Var("blink")) + '/branches/chromium/2062@179513',
+ (Var("blink")) + '/branches/chromium/2062@180557',
+ 'src/third_party/openssl':
+ '/trunk/deps/third_party/openssl@275836',
'src/third_party/openmax_dl':
(Var("webrtc")) + '/deps/third_party/openmax@6483',
'src/third_party/libc++abi/trunk':
@@ -295,7 +297,7 @@ deps = {
'src/media/cdm/ppapi/api':
'/trunk/deps/cdm@273356',
'src/third_party/skia':
- (Var("git.chromium.org")) + '/skia.git@0c1c911ff19894031cd1b8acef3b597e26a85334',
+ (Var("git.chromium.org")) + '/skia.git@9112a5fed24da8442a5d263c634adbbf6b57862c',
'src/tools/swarming_client':
(Var("git.chromium.org")) + '/external/swarming.client.git@c333224ef8cf5cc41ab91f6ee9cb1fdbe3689f19',
'src/chrome/test/data/perf/frame_rate/content':
@@ -304,28 +306,32 @@ deps = {
(Var("ots")) + '/trunk@113',
'src/third_party/jsoncpp/source/src/lib_json':
(Var("jsoncpp")) + '/trunk/jsoncpp/src/lib_json@248',
+ 'build/scripts/tools/deps2git':
+ '/trunk/tools/deps2git@276439',
'src/third_party/clang_format/script':
'http://src.chromium.org/llvm-project/cfe/trunk/tools/clang-format@206068',
+ 'src/third_party/cld_2/src':
+ (Var("cld2")) + '/trunk@161',
'src/third_party/WebKit/LayoutTests/w3c/web-platform-tests':
(Var("git.chromium.org")) + '/external/w3c/web-platform-tests.git@6bed4516fe8522d65512c76ef02e4f0ae8234395',
'src/third_party/libaddressinput/src/testdata':
(Var("libaddressinput")) + '/trunk/testdata@293',
'src/testing/gmock':
(Var("googlemock")) + '/trunk@410',
- 'src/tools/grit':
- (Var("grit-i18n")) + '/trunk@169',
+ 'src/third_party/libsrtp':
+ '/trunk/deps/third_party/libsrtp@261337',
'src/third_party/mesa/src':
'/trunk/deps/third_party/mesa@265279',
'src/third_party/smhasher/src':
(Var("smhasher")) + '/trunk@152',
- 'src/third_party/webrtc':
- (Var("webrtc")) + '/branches/3.55/webrtc@6796',
- 'build/scripts/tools/deps2git':
- '/trunk/tools/deps2git@276439',
+ 'src/third_party/webpagereplay':
+ (Var("git.chromium.org")) + '/external/web-page-replay.git@b62c02d3b64cf00a2f65a82cca0721aa42c3d6ad',
+ 'src/chrome/browser/resources/pdf/html_office':
+ (Var("git.chromium.org")) + '/chromium/html-office-public.git@eeff97614f65e0578529490d44d412032c3d7359',
'src/third_party/hunspell_dictionaries':
'/trunk/deps/third_party/hunspell_dictionaries@255132',
'src/native_client':
- (Var("native_client")) + '/branches/2062/src/native_client@13567',
+ (Var("native_client")) + '/branches/2062/src/native_client@13585',
'src/third_party/brotli/src':
(Var("git.chromium.org")) + '/external/font-compression-reference.git@6cef49677dc4c650ef6e3f56041e0a41803afa8c',
'src/tools/page_cycler/acid3':
@@ -333,21 +339,19 @@ deps = {
'src/third_party/cacheinvalidation/src':
(Var("google-cache-invalidation-api")) + '/trunk/src@331',
'src/chrome/test/data/extensions/api_test/permissions/nacl_enabled/bin':
- (Var("native_client")) + '/branches/2062/src/native_client/tests/prebuilt@13567',
+ (Var("native_client")) + '/branches/2062/src/native_client/tests/prebuilt@13585',
'src/third_party/leveldatabase/src':
(Var("leveldb")) + '/trunk@80',
- 'src/third_party/webpagereplay':
- (Var("git.chromium.org")) + '/external/web-page-replay.git@b62c02d3b64cf00a2f65a82cca0721aa42c3d6ad',
- 'src/third_party/cld_2/src':
- (Var("cld2")) + '/trunk@161',
+ 'build':
+ '/trunk/tools/build@278895',
+ 'src/tools/gyp':
+ (Var("gyp")) + '/trunk@1944',
'src/chrome/test/data/perf/canvas_bench':
'/trunk/deps/canvas_bench@122605',
- 'src/sdch/open-vcdiff':
- (Var("open-vcdiff")) + '/trunk@42',
- 'src/third_party/angle':
- (Var("git.chromium.org")) + '/angle/angle.git@c333af9c8e6b776363b722d9e9c4fed0b597f984',
- 'build/third_party/lighttpd':
- '/trunk/deps/third_party/lighttpd@58968',
+ 'src/third_party/ffmpeg':
+ (Var("git.chromium.org")) + '/chromium/third_party/ffmpeg.git@5c3de8094903dd2162232b8f1be916c46acdd8f5',
+ 'src/third_party/hunspell':
+ '/trunk/deps/third_party/hunspell@256272',
'src/buildtools':
(Var("git.chromium.org")) + '/chromium/buildtools.git@10a5251e71445a832953f1374bbbbe60ad019144',
'src/third_party/scons-2.0.1':
@@ -358,10 +362,8 @@ deps = {
(Var("sctp-refimpl")) + '/trunk/KERN/usrsctp/usrsctplib@8875',
'build/scripts/gsd_generate_index':
'/trunk/tools/gsd_generate_index@164784',
- 'src/chrome/browser/resources/pdf/html_office':
- (Var("git.chromium.org")) + '/chromium/html-office-public.git@eeff97614f65e0578529490d44d412032c3d7359',
- 'src/third_party/webgl/src':
- (Var("git.chromium.org")) + '/external/khronosgroup/webgl.git@0475a2763fc30cbed22740f8a9ef53a82f03b4ac',
+ 'build/third_party/lighttpd':
+ '/trunk/deps/third_party/lighttpd@58968',
'src/third_party/libyuv':
(Var("libyuv")) + '/trunk@1007',
'src/third_party/libjingle/source/talk':
@@ -376,18 +378,16 @@ deps = {
'https://pdfium.googlesource.com/pdfium.git@a2dfb95353c8e4851300f8d53d4659e1b764c31d',
'src/third_party/libphonenumber/src/phonenumbers':
(Var("libphonenumber")) + '/trunk/cpp/src/phonenumbers@621',
- 'src/third_party/openssl':
- '/trunk/deps/third_party/openssl@275836',
+ 'src/third_party/libphonenumber/src/resources':
+ (Var("libphonenumber")) + '/trunk/resources@621',
'src/third_party/trace-viewer':
(Var("trace-viewer")) + '/trunk@1281',
'src/third_party/yasm/source/patched-yasm':
'/trunk/deps/third_party/yasm/patched-yasm@167605',
'src/third_party/safe_browsing/testing':
(Var("google-safe-browsing")) + '/trunk/testing@112',
- 'src/third_party/ffmpeg':
- (Var("git.chromium.org")) + '/chromium/third_party/ffmpeg.git@5c3de8094903dd2162232b8f1be916c46acdd8f5',
- 'build':
- '/trunk/tools/build@278895',
+ 'src/sdch/open-vcdiff':
+ (Var("open-vcdiff")) + '/trunk@42',
'build/scripts/command_wrapper/bin':
'/trunk/tools/command_wrapper/bin@135178',
'src/testing/gtest':
@@ -402,32 +402,32 @@ deps = {
'/trunk/deps/third_party/speex@272757',
'src/third_party/opus/src':
'/trunk/deps/third_party/opus@256783',
- 'src/third_party/libphonenumber/src/resources':
- (Var("libphonenumber")) + '/trunk/resources@621',
+ 'src/tools/grit':
+ (Var("grit-i18n")) + '/trunk@169',
'src/third_party/colorama/src':
(Var("git.chromium.org")) + '/external/colorama.git@799604a1041e9b3bc5d2789ecbd7e8db2e18e6b8',
'src/third_party/snappy/src':
(Var("snappy")) + '/trunk@80',
'src/breakpad/src':
(Var("google-breakpad")) + '/trunk/src@1338',
- 'src/third_party/hunspell':
- '/trunk/deps/third_party/hunspell@256272',
+ 'src/third_party/webrtc':
+ (Var("webrtc")) + '/branches/3.55/webrtc@6796',
'src/tools/deps2git':
'/trunk/tools/deps2git@276439',
'src/third_party/libjpeg_turbo':
'/trunk/deps/third_party/libjpeg_turbo@272637',
- 'src/third_party/libsrtp':
- '/trunk/deps/third_party/libsrtp@261337',
+ 'src/third_party/angle':
+ (Var("git.chromium.org")) + '/angle/angle.git@f4126d2b9eb008d4e792fff2592f338e19c68569',
'src/v8':
- (Var("v8")) + '/branches/3.27@22822',
+ (Var("v8")) + '/branches/3.27@23158',
'src/third_party/pywebsocket/src':
(Var("pywebsocket")) + '/trunk/src@790',
'src/third_party/libvpx':
'/trunk/deps/third_party/libvpx@278497',
'src/third_party/swig/Lib':
'/trunk/deps/third_party/swig/Lib@230490',
- 'src/tools/gyp':
- (Var("gyp")) + '/trunk@1944'
+ 'src/third_party/webgl/src':
+ (Var("git.chromium.org")) + '/external/khronosgroup/webgl.git@0475a2763fc30cbed22740f8a9ef53a82f03b4ac'
}
skip_child_includes = [
diff --git a/chromium/android_webview/android_webview.gyp b/chromium/android_webview/android_webview.gyp
index 2efc46c1b57..1a043657fec 100644
--- a/chromium/android_webview/android_webview.gyp
+++ b/chromium/android_webview/android_webview.gyp
@@ -99,6 +99,7 @@
'../components/components.gyp:visitedlink_renderer',
'../components/components.gyp:web_contents_delegate_android',
'../content/content.gyp:content_app_both',
+ '../content/content.gyp:content_browser',
'../gpu/gpu.gyp:command_buffer_service',
'../gpu/gpu.gyp:gles2_implementation',
'../gpu/gpu.gyp:gl_in_process_context',
@@ -268,7 +269,7 @@
'includes': [ '../build/java.gypi' ],
},
],
- }, { # android_webview_build==1
+ }, { # android_webview_build==1
'targets': [
{
'target_name': 'android_webview_jarjar_ui_resources',
diff --git a/chromium/android_webview/android_webview_tests.gypi b/chromium/android_webview/android_webview_tests.gypi
index 390732ad202..1639e6012a0 100644
--- a/chromium/android_webview/android_webview_tests.gypi
+++ b/chromium/android_webview/android_webview_tests.gypi
@@ -105,6 +105,7 @@
'browser/net/input_stream_reader_unittest.cc',
'lib/main/webview_tests.cc',
'native/aw_contents_client_bridge_unittest.cc',
+ 'native/aw_media_url_interceptor_unittest.cc',
'native/input_stream_unittest.cc',
'native/permission/media_access_permission_request_unittest.cc',
'native/permission/permission_request_handler_unittest.cc',
@@ -145,7 +146,18 @@
],
'variables': {
'test_suite_name': 'android_webview_unittests',
+ 'additional_input_paths': [
+ '<(PRODUCT_DIR)/android_webview_unittests_apk/assets/asset_file.ogg',
+ ],
},
+ 'copies': [
+ {
+ 'destination': '<(PRODUCT_DIR)/android_webview_unittests_apk/assets',
+ 'files': [
+ 'test/unittest/assets/asset_file.ogg',
+ ],
+ },
+ ],
'includes': [ '../build/apk_test.gypi' ],
},
],
diff --git a/chromium/android_webview/native/webview_native.gyp b/chromium/android_webview/native/webview_native.gyp
index f8c70d98806..cdd6f1f540d 100644
--- a/chromium/android_webview/native/webview_native.gyp
+++ b/chromium/android_webview/native/webview_native.gyp
@@ -16,6 +16,7 @@
'../../components/components.gyp:autofill_content_browser',
'../../components/components.gyp:web_contents_delegate_android',
'../../content/content.gyp:content_common',
+ '../../media/media.gyp:player_android',
'../../net/net.gyp:net',
'../../skia/skia.gyp:skia',
'../../ui/base/ui_base.gyp:ui_base',
@@ -36,6 +37,8 @@
'android_protocol_handler.h',
'android_webview_jni_registrar.cc',
'android_webview_jni_registrar.h',
+ 'aw_assets.cc',
+ 'aw_assets.h',
'aw_autofill_client.cc',
'aw_autofill_client.h',
'aw_browser_dependency_factory.cc',
@@ -54,6 +57,8 @@
'aw_form_database.h',
'aw_http_auth_handler.cc',
'aw_http_auth_handler.h',
+ 'aw_media_url_interceptor.cc',
+ 'aw_media_url_interceptor.h',
'aw_pdf_exporter.cc',
'aw_pdf_exporter.h',
'aw_picture.cc',
@@ -117,6 +122,7 @@
'type': 'none',
'sources': [
'../java/src/org/chromium/android_webview/AndroidProtocolHandler.java',
+ '../java/src/org/chromium/android_webview/AwAssets.java',
'../java/src/org/chromium/android_webview/AwAutofillClient.java',
'../java/src/org/chromium/android_webview/AwContents.java',
'../java/src/org/chromium/android_webview/AwContentsClientBridge.java',
diff --git a/chromium/base/win/iat_patch_function.cc b/chromium/base/win/iat_patch_function.cc
index 21c39950cc3..765592782fd 100644
--- a/chromium/base/win/iat_patch_function.cc
+++ b/chromium/base/win/iat_patch_function.cc
@@ -40,56 +40,6 @@ void* GetIATFunction(IMAGE_THUNK_DATA* iat_thunk) {
iat_function.thunk = *iat_thunk;
return iat_function.pointer;
}
-// Change the page protection (of code pages) to writable and copy
-// the data at the specified location
-//
-// Arguments:
-// old_code Target location to copy
-// new_code Source
-// length Number of bytes to copy
-//
-// Returns: Windows error code (winerror.h). NO_ERROR if successful
-DWORD ModifyCode(void* old_code, void* new_code, int length) {
- if ((NULL == old_code) || (NULL == new_code) || (0 == length)) {
- NOTREACHED();
- return ERROR_INVALID_PARAMETER;
- }
-
- // Change the page protection so that we can write.
- MEMORY_BASIC_INFORMATION memory_info;
- DWORD error = NO_ERROR;
- DWORD old_page_protection = 0;
-
- if (!VirtualQuery(old_code, &memory_info, sizeof(memory_info))) {
- error = GetLastError();
- return error;
- }
-
- DWORD is_executable = (PAGE_EXECUTE | PAGE_EXECUTE_READ |
- PAGE_EXECUTE_READWRITE | PAGE_EXECUTE_WRITECOPY) &
- memory_info.Protect;
-
- if (VirtualProtect(old_code,
- length,
- is_executable ? PAGE_EXECUTE_READWRITE :
- PAGE_READWRITE,
- &old_page_protection)) {
-
- // Write the data.
- CopyMemory(old_code, new_code, length);
-
- // Restore the old page protection.
- error = ERROR_SUCCESS;
- VirtualProtect(old_code,
- length,
- old_page_protection,
- &old_page_protection);
- } else {
- error = GetLastError();
- }
-
- return error;
-}
bool InterceptEnumCallback(const base::win::PEImage& image, const char* module,
DWORD ordinal, const char* name, DWORD hint,
@@ -216,6 +166,57 @@ DWORD RestoreImportedFunction(void* intercept_function,
} // namespace
+// Change the page protection (of code pages) to writable and copy
+// the data at the specified location
+//
+// Arguments:
+// old_code Target location to copy
+// new_code Source
+// length Number of bytes to copy
+//
+// Returns: Windows error code (winerror.h). NO_ERROR if successful
+DWORD ModifyCode(void* old_code, void* new_code, int length) {
+ if ((NULL == old_code) || (NULL == new_code) || (0 == length)) {
+ NOTREACHED();
+ return ERROR_INVALID_PARAMETER;
+ }
+
+ // Change the page protection so that we can write.
+ MEMORY_BASIC_INFORMATION memory_info;
+ DWORD error = NO_ERROR;
+ DWORD old_page_protection = 0;
+
+ if (!VirtualQuery(old_code, &memory_info, sizeof(memory_info))) {
+ error = GetLastError();
+ return error;
+ }
+
+ DWORD is_executable = (PAGE_EXECUTE | PAGE_EXECUTE_READ |
+ PAGE_EXECUTE_READWRITE | PAGE_EXECUTE_WRITECOPY) &
+ memory_info.Protect;
+
+ if (VirtualProtect(old_code,
+ length,
+ is_executable ? PAGE_EXECUTE_READWRITE :
+ PAGE_READWRITE,
+ &old_page_protection)) {
+
+ // Write the data.
+ CopyMemory(old_code, new_code, length);
+
+ // Restore the old page protection.
+ error = ERROR_SUCCESS;
+ VirtualProtect(old_code,
+ length,
+ old_page_protection,
+ &old_page_protection);
+ } else {
+ error = GetLastError();
+ }
+
+ return error;
+}
+
IATPatchFunction::IATPatchFunction()
: module_handle_(NULL),
original_function_(NULL),
diff --git a/chromium/base/win/iat_patch_function.h b/chromium/base/win/iat_patch_function.h
index 5026e0eb954..b4008414750 100644
--- a/chromium/base/win/iat_patch_function.h
+++ b/chromium/base/win/iat_patch_function.h
@@ -59,6 +59,7 @@ class BASE_EXPORT IATPatchFunction {
void* original_function() const;
+
private:
HMODULE module_handle_;
void* intercept_function_;
@@ -68,6 +69,8 @@ class BASE_EXPORT IATPatchFunction {
DISALLOW_COPY_AND_ASSIGN(IATPatchFunction);
};
+BASE_EXPORT DWORD ModifyCode(void* old_code, void* new_code, int length);
+
} // namespace win
} // namespace base
diff --git a/chromium/build/output_dll_copy.rules b/chromium/build/output_dll_copy.rules
index a0de2ff57f9..c6e905131d4 100644
--- a/chromium/build/output_dll_copy.rules
+++ b/chromium/build/output_dll_copy.rules
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<VisualStudioToolFile
Name="Output DLL copy"
Version="8.00"
diff --git a/chromium/build/util/LASTCHANGE b/chromium/build/util/LASTCHANGE
index 129bedbf753..cfddbde64d0 100644
--- a/chromium/build/util/LASTCHANGE
+++ b/chromium/build/util/LASTCHANGE
@@ -1 +1 @@
-LASTCHANGE=287650
+LASTCHANGE=291558
diff --git a/chromium/build/util/LASTCHANGE.blink b/chromium/build/util/LASTCHANGE.blink
index 8755db11438..ddd8173d5eb 100644
--- a/chromium/build/util/LASTCHANGE.blink
+++ b/chromium/build/util/LASTCHANGE.blink
@@ -1 +1 @@
-LASTCHANGE=179513
+LASTCHANGE=180557
diff --git a/chromium/build/whitespace_file.txt b/chromium/build/whitespace_file.txt
index a572ea5c186..5b840efbc11 100644
--- a/chromium/build/whitespace_file.txt
+++ b/chromium/build/whitespace_file.txt
@@ -112,7 +112,7 @@ still higher than other birds upon the plain, even though they soar.
I'm here to commit lines and drop rhymes
*
-This is a line to test and try uploading a cl.
+This is a line to test and try uploading a cl.
And lo, in the year 2014, there was verily an attempt to upgrade to GCC 4.8 on
the Android bots, and it was good. Except on one bot, where it was bad. And
@@ -125,3 +125,5 @@ bot, and perhaps it will rebuild with GCC 4.6, which hath worked for many many
seasons. And so they modified the whitespace file with these immortal lines,
and visited it upon the bots, that great destruction might be wrought upon
their outdated binaries. In clobberus, veritas.
+
+Whitespace change to ensure numbering daemon is working.
diff --git a/chromium/cc/layers/delegated_renderer_layer_impl.cc b/chromium/cc/layers/delegated_renderer_layer_impl.cc
index a233673263a..e94fd2a1b24 100644
--- a/chromium/cc/layers/delegated_renderer_layer_impl.cc
+++ b/chromium/cc/layers/delegated_renderer_layer_impl.cc
@@ -389,13 +389,14 @@ void DelegatedRendererLayerImpl::AppendRenderPassQuads(
for (size_t i = 0; i < delegated_render_pass->quad_list.size(); ++i) {
const DrawQuad* delegated_quad = delegated_render_pass->quad_list[i];
+ bool is_root_delegated_render_pass =
+ delegated_render_pass == render_passes_in_draw_order_.back();
+
if (delegated_quad->shared_quad_state != delegated_shared_quad_state) {
delegated_shared_quad_state = delegated_quad->shared_quad_state;
output_shared_quad_state = quad_sink->CreateSharedQuadState();
output_shared_quad_state->CopyFrom(delegated_shared_quad_state);
- bool is_root_delegated_render_pass =
- delegated_render_pass == render_passes_in_draw_order_.back();
if (is_root_delegated_render_pass) {
gfx::Transform delegated_frame_to_target_transform = draw_transform();
delegated_frame_to_target_transform.Scale(inverse_device_scale_factor_,
@@ -428,9 +429,17 @@ void DelegatedRendererLayerImpl::AppendRenderPassQuads(
}
DCHECK(output_shared_quad_state);
+ gfx::Transform quad_content_to_delegated_target_space =
+ output_shared_quad_state->content_to_target_transform;
+ if (!is_root_delegated_render_pass) {
+ quad_content_to_delegated_target_space.ConcatTransform(
+ quad_sink->render_pass()->transform_to_root_target);
+ quad_content_to_delegated_target_space.ConcatTransform(draw_transform());
+ }
+
gfx::Rect quad_visible_rect = quad_sink->UnoccludedContentRect(
- delegated_quad->visible_rect,
- output_shared_quad_state->content_to_target_transform);
+ delegated_quad->visible_rect, quad_content_to_delegated_target_space);
+
if (quad_visible_rect.IsEmpty())
continue;
diff --git a/chromium/cc/layers/delegated_renderer_layer_impl_unittest.cc b/chromium/cc/layers/delegated_renderer_layer_impl_unittest.cc
index c4bedddd926..9556190df35 100644
--- a/chromium/cc/layers/delegated_renderer_layer_impl_unittest.cc
+++ b/chromium/cc/layers/delegated_renderer_layer_impl_unittest.cc
@@ -1522,6 +1522,33 @@ TEST_F(DelegatedRendererLayerImplTest, Occlusion) {
impl.quad_list()[0]->visible_rect.ToString());
}
}
+ {
+ gfx::Rect occluded(0, 0, 500, 1000);
+ // Move the occlusion to where it is in the contributing surface.
+ occluded -= quad_rect.OffsetFromOrigin() + gfx::Vector2d(11, 0);
+
+ SCOPED_TRACE("Contributing render pass with transformed root");
+
+ delegated_renderer_layer_impl->SetTransform(transform);
+ impl.CalcDrawProps(viewport_size);
+
+ impl.AppendQuadsForPassWithOcclusion(
+ delegated_renderer_layer_impl, pass2_id, occluded);
+ size_t partially_occluded_count = 0;
+ LayerTestCommon::VerifyQuadsCoverRectWithOcclusion(
+ impl.quad_list(),
+ gfx::Rect(quad_rect.size()),
+ occluded,
+ &partially_occluded_count);
+ // The layer outputs one quad, which is partially occluded.
+ EXPECT_EQ(1u, impl.quad_list().size());
+ EXPECT_EQ(1u, partially_occluded_count);
+ // The quad in the contributing surface is at (222,300) in the transformed
+ // root. The occlusion extends to 500 in the x-axis, pushing the left of the
+ // visible part of the quad to 500 - 222 = 300 - 22 inside the quad.
+ EXPECT_EQ(gfx::Rect(300 - 22, 0, 100 + 22, 500).ToString(),
+ impl.quad_list()[0]->visible_rect.ToString());
+ }
}
TEST_F(DelegatedRendererLayerImplTest, PushPropertiesTo) {
diff --git a/chromium/cc/layers/picture_image_layer.cc b/chromium/cc/layers/picture_image_layer.cc
index a65ac8c9318..7031ec0913f 100644
--- a/chromium/cc/layers/picture_image_layer.cc
+++ b/chromium/cc/layers/picture_image_layer.cc
@@ -54,17 +54,14 @@ void PictureImageLayer::PaintContents(
SkFloatToScalar(static_cast<float>(bounds().height()) / bitmap_.height());
canvas->scale(content_to_layer_scale_x, content_to_layer_scale_y);
- // Because PictureImageLayer always FillsBoundsCompletely it will not clear
- // before painting on playback. As a result we must configure the paint to
- // copy over the uncleared destination, rather than blending with it.
- SkPaint paint;
- paint.setXfermodeMode(SkXfermode::kSrc_Mode);
- canvas->drawBitmap(bitmap_, 0, 0, &paint);
+ // Because Android WebView resourceless software draw mode rasters directly
+ // to the root canvas, this draw must use the kSrcOver_Mode so that
+ // transparent images blend correctly.
+ canvas->drawBitmap(bitmap_, 0, 0);
}
bool PictureImageLayer::FillsBoundsCompletely() const {
- // PictureImageLayer will always paint to the entire layer bounds.
- return true;
+ return false;
}
} // namespace cc
diff --git a/chromium/cc/layers/quad_sink.h b/chromium/cc/layers/quad_sink.h
index c033bfb489e..bf82d046d82 100644
--- a/chromium/cc/layers/quad_sink.h
+++ b/chromium/cc/layers/quad_sink.h
@@ -43,6 +43,8 @@ class CC_EXPORT QuadSink {
virtual void Append(scoped_ptr<DrawQuad> draw_quad);
+ const RenderPass* render_pass() const { return render_pass_; }
+
protected:
RenderPass* render_pass_;
diff --git a/chromium/chrome/VERSION b/chromium/chrome/VERSION
index 63cdcefffe7..97c5543762e 100644
--- a/chromium/chrome/VERSION
+++ b/chromium/chrome/VERSION
@@ -1,4 +1,4 @@
MAJOR=37
MINOR=0
BUILD=2062
-PATCH=68
+PATCH=103
diff --git a/chromium/chrome/app/resources/chromium_strings_hi.xtb b/chromium/chrome/app/resources/chromium_strings_hi.xtb
index 6f2b96099ec..64874172950 100644
--- a/chromium/chrome/app/resources/chromium_strings_hi.xtb
+++ b/chromium/chrome/app/resources/chromium_strings_hi.xtb
@@ -77,7 +77,7 @@
<ph name="ADVANCED_TITLE"/>
पर जाएं और का &quot;<ph name="NO_PREFETCH_DESCRIPTION"/>&quot; चयन रद्द करें.
यदि इससे समस्या का समाधान नहीं होता, तो बेहतर प्रदर्शन के लिए हम इस
- विकल्प को पुन: चुनने की अनुशंसा करते हैं.</translation>
+ विकल्प को पुन: चुनने की सुझाव देते हैं.</translation>
<translation id="7463979740390522693">Chromium - सूचनाएं (<ph name="QUANTITY"/> अपठित)</translation>
<translation id="225614027745146050">आपका स्वागत है</translation>
<translation id="5823381412099532241">क्रोमियम स्वयं को नवीनतम संस्करण में अपडेट नहीं कर सका, इसलिए आप शानदार नई सुविधाओं और सुरक्षा समाधानों का लाभ नहीं ले पा रहे हैं. आपको क्रोमियम को अपडेट करना होगा.</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_am.xtb b/chromium/chrome/app/resources/generated_resources_am.xtb
index 3731b183ef2..58c4fd49ce2 100644
--- a/chromium/chrome/app/resources/generated_resources_am.xtb
+++ b/chromium/chrome/app/resources/generated_resources_am.xtb
@@ -2937,7 +2937,7 @@ nil</translation>
<translation id="7347751611463936647">ይህንን ቅጥያ ለመጠቀም «<ph name="EXTENSION_KEYWORD"/>» ብለው፣ ከዚያ TAB፣ ከዚያ ትዕዛዝዎን ወይም ፍለጋዎን ይተይቡ።</translation>
<translation id="878431691778285679">አስቀድመው በዚያ ስም ያለ ተጠቃሚ እያስተዳደሩ ያሉ ይመስላል። <ph name="LINE_BREAK"/><ph name="BEGIN_LINK"/><ph name="PROFILE_NAME"/>ን ወደዚህ መሳሪያ ማስመጣት<ph name="END_LINK"/> ፈልገው ነበር?</translation>
<translation id="2912905526406334195"><ph name="HOST"/> ማይክሮፎንዎን መጠቀም ይፈልጋል።</translation>
-<translation id="2805756323405976993">ትግበራዎች </translation>
+<translation id="2805756323405976993">መተግበሪያዎች</translation>
<translation id="5151511998946489774">የዚህ ድር ጣቢያ ማንነት በ<ph name="ISSUER"/> የተረጋገጠ ሲሆን በይፋ ኦዲት መደረግ የሚችል ነው።</translation>
<translation id="1608626060424371292">ይህን ተጠቃሚ አስወግድ</translation>
<translation id="2779552785085366231">ይህ ገጽ ወደ የመተግበሪያ አስጀማሪ ሊታከል ይችላል።</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_ar.xtb b/chromium/chrome/app/resources/generated_resources_ar.xtb
index 671c166f6c6..ba863fbc37a 100644
--- a/chromium/chrome/app/resources/generated_resources_ar.xtb
+++ b/chromium/chrome/app/resources/generated_resources_ar.xtb
@@ -2885,7 +2885,7 @@
<translation id="7347751611463936647">‏لاستخدام هذه الإضافة، اكتب &quot;<ph name="EXTENSION_KEYWORD"/>&quot;، ثم TAB، ثم الأمر أو البحث.</translation>
<translation id="878431691778285679">يبدو أنك تدير مستخدمًا من خلال هذا الاسم فعلاً.<ph name="LINE_BREAK"/>هل كنت تريد <ph name="BEGIN_LINK"/>الاستيراد <ph name="PROFILE_NAME"/> إلى هذا الجهاز<ph name="END_LINK"/>؟</translation>
<translation id="2912905526406334195">يريد <ph name="HOST"/> استخدام الميكروفون.</translation>
-<translation id="2805756323405976993">التطبيقات</translation>
+<translation id="2805756323405976993">تطبيقات</translation>
<translation id="5151511998946489774">تم التحقق من هوية موقع الويب هذا بواسطة <ph name="ISSUER"/> وهو قابل للتدقيق بشكل عام.</translation>
<translation id="1608626060424371292">إزالة هذا المستخدم</translation>
<translation id="2779552785085366231">‏يمكن إضافة هذه الصفحة إلى تطبيقات Launcher</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_da.xtb b/chromium/chrome/app/resources/generated_resources_da.xtb
index 88f3f76f285..abf291bb1f0 100644
--- a/chromium/chrome/app/resources/generated_resources_da.xtb
+++ b/chromium/chrome/app/resources/generated_resources_da.xtb
@@ -129,7 +129,7 @@
<translation id="2972581237482394796">&amp;Annuller fortryd</translation>
<translation id="5895138241574237353">Genstart</translation>
<translation id="7012312584667795941">Identiteten af <ph name="ORGANIZATION"/> beliggende i <ph name="LOCALITY"/> er bekræftet af <ph name="ISSUER"/>, men virksomhedens dokumenter til offentlig revision kunne ikke bekræftes.</translation>
-<translation id="7113502843173351041">Kend din e-mailadresse</translation>
+<translation id="7113502843173351041">Kende din e-mailadresse</translation>
<translation id="3726463242007121105">Denne enhed kan ikke åbnes, fordi dens filsystem ikke understøttes.</translation>
<translation id="5606674617204776232"><ph name="PEPPER_PLUGIN_NAME"/> på <ph name="PEPPER_PLUGIN_DOMAIN"/> vil gerne have adgang til din enhed.</translation>
<translation id="9008201768610948239">Ignorer</translation>
@@ -176,7 +176,7 @@
<translation id="8804398419035066391">Kommunikere med andre websites</translation>
<translation id="6023914116273780353">Tilpassede</translation>
<translation id="7082055294850503883">Ignorer som standard CapsLock og indtastning af små bogstaver</translation>
-<translation id="4989966318180235467">Inspicer &amp;baggrundsside</translation>
+<translation id="4989966318180235467">Undersøg &amp;baggrundsside</translation>
<translation id="4744603770635761495">Eksekverbar sti</translation>
<translation id="3719826155360621982">Startside</translation>
<translation id="5376169624176189338">Klik for at gå tilbage. Hold knappen inde for at se historikken.</translation>
@@ -260,7 +260,7 @@
<translation id="7982789257301363584">Netværk</translation>
<translation id="2271281383664374369">Udvidelsesanmodninger til denne webadresse er blevet midlertidigt tilbageholdt.</translation>
<translation id="8528962588711550376">Logger ind...</translation>
-<translation id="2336228925368920074">Føj alle faner til Bogmærker...</translation>
+<translation id="2336228925368920074">Tilføj alle faner som bogmærker...</translation>
<translation id="8774934320277480003">Topmargen</translation>
<translation id="1390548061267426325">Åbn som almindelig fane</translation>
<translation id="8821003679187790298">Aktivér en forenklet og forbedret oplevelse i fuld skærm på Mac.</translation>
@@ -592,7 +592,7 @@
<translation id="5707185214361380026">Det var ikke muligt at indlæse udvidelsen fra:</translation>
<translation id="7331786426925973633">En webbrowser, som er skabt til hurtighed, enkelhed og sikkerhed</translation>
<translation id="5584537427775243893">Importerer</translation>
-<translation id="4779735050989188948">Manipuler de indstillinger, som styrer websites' adgang til cookies, JavaScript og plug-ins</translation>
+<translation id="4779735050989188948">Manipulere de indstillinger, som styrer websites' adgang til cookies, JavaScript og plug-ins</translation>
<translation id="168841957122794586">Servercertifikatet indeholder en svag kryptografisk nøgle.</translation>
<translation id="4181841719683918333">Sprog</translation>
<translation id="1758831820837444715">Konfigurer Ethernet-netværk</translation>
@@ -651,7 +651,7 @@
<translation id="2152580633399033274">Vis alle billeder (anbefales)</translation>
<translation id="5618075537869101857">Kioskapplikationen kunne desværre ikke startes.</translation>
<translation id="6196041699996825846">Få flere oplysninger om gæstesession</translation>
-<translation id="337286756654493126">Læs mapper, som du åbner i applikationen</translation>
+<translation id="337286756654493126">Læse mapper, som du åbner i applikationen</translation>
<translation id="2783661497142353826">Administrer kioskapplikationer</translation>
<translation id="5701101281789450335">Indstillinger for sprog og indtastning...</translation>
<translation id="5483838506518938965">Så er du klar</translation>
@@ -739,7 +739,7 @@
<translation id="7968833647796919681">Aktivér registrering af data om ydeevne</translation>
<translation id="7645176681409127223"><ph name="USER_NAME"/> (ejer)</translation>
<translation id="8427933533533814946">Foto af</translation>
-<translation id="5078638979202084724">Føj alle faner til Bogmærker</translation>
+<translation id="5078638979202084724">Tilføj alle faner som bogmærker</translation>
<translation id="5585118885427931890">Bogmærkemappen blev ikke oprettet.</translation>
<translation id="2553100941515833716">Gendan installationstilstanden for applisten ved genstart.</translation>
<translation id="6019169947004469866">Beskær</translation>
@@ -837,7 +837,7 @@
<translation id="2192280117622171197">En udvidelse har ændret, hvilken side der vises, når du søger via omnifeltet.</translation>
<translation id="2731700343119398978">Vent et øjeblik...</translation>
<translation id="5731751937436428514">Vietnamesisk indtastningsmetode (VIQR)</translation>
-<translation id="8412144371993786373">Føj den aktuelle side til Bogmærker</translation>
+<translation id="8412144371993786373">Tilføj den aktuelle side som bogmærke</translation>
<translation id="1151169732719877940">Aktivér overenstemmende identitet mellem browser og cookie jar</translation>
<translation id="7615851733760445951">&lt;ingen cookie er valgt&gt;</translation>
<translation id="2493021387995458222">Vælg &quot;ord ad gangen&quot;</translation>
@@ -1147,7 +1147,7 @@ Beregner resterende tid</translation>
<translation id="1849186935225320012">Denne side har fuld kontrol over MIDI-enheder.</translation>
<translation id="7309416673261215716">Udvidelsens version</translation>
<translation id="6840313690797192085">$1 PB</translation>
-<translation id="5971037678316050792">Kontrollér tilstand og parring af Bluetooth-adaptere</translation>
+<translation id="5971037678316050792">Kontrollere tilstand og parring af Bluetooth-adaptere</translation>
<translation id="3313590242757056087">Du kan angive, hvilke websites den administrerede bruger skal kunne se, ved at konfigurere begrænsninger
og indstillinger på <ph name="MANAGEMENT_URL"/>.
Hvis du ikke ændrer standardindstillingerne, kan <ph name="USER_DISPLAY_NAME"/>
@@ -1364,7 +1364,7 @@ Beregner resterende tid</translation>
<translation id="5380103295189760361">Hold Ctrl, Alt, Shift eller Søg nede for at se tastaturgenveje for disse ændringstaster.</translation>
<translation id="7791543448312431591">Tilføj</translation>
<translation id="8569764466147087991">Vælg den fil, der skal åbnes</translation>
-<translation id="9131487537093447019">Send beskeder til og modtag beskeder fra Bluetooth-enheder.</translation>
+<translation id="9131487537093447019">Sende beskeder til og modtage beskeder fra Bluetooth-enheder.</translation>
<translation id="3010279545267083280">Adgangskoden er slettet</translation>
<translation id="4275663329226226506">Medier</translation>
<translation id="3629630062892748850">Relaterede webadresser og søgninger på Google.com</translation>
@@ -1737,7 +1737,7 @@ Når du har oprettet en ny administreret bruger, kan du til enhver tid administr
<translation id="4776917500594043016">Adgangskode for <ph name="USER_EMAIL_ADDRESS"/></translation>
<translation id="7792012425874949788">Der opstod en fejl under login</translation>
<translation id="4105563239298244027">Få 1 TB gratis plads med Google Drev</translation>
-<translation id="8889883017054825362">Læs og rediger din browserhistorik</translation>
+<translation id="8889883017054825362">Læse og redigere din browserhistorik</translation>
<translation id="7724603315864178912">Klip</translation>
<translation id="8456681095658380701">Ugyldigt navn</translation>
<translation id="3518086201899641494">Underretninger om captive portals</translation>
@@ -1805,7 +1805,7 @@ Når du har oprettet en ny administreret bruger, kan du til enhver tid administr
<translation id="3810973564298564668">Valgmuligheder</translation>
<translation id="254416073296957292">&amp;Sprogindstillinger...</translation>
<translation id="6652975592920847366">Opret et genoprettelsesmedie til operativsystemet</translation>
-<translation id="3759933321830434300">Bloker dele af websiderne</translation>
+<translation id="3759933321830434300">Blokere dele af websiderne</translation>
<translation id="52912272896845572">Den private nøglefil er ugyldig.</translation>
<translation id="3232318083971127729">Værdi:</translation>
<translation id="8807632654848257479">Stabil</translation>
@@ -1835,7 +1835,7 @@ Når du har oprettet en ny administreret bruger, kan du til enhver tid administr
<translation id="2902382079633781842">Bogmærket blev tilføjet.</translation>
<translation id="5436510242972373446">Søg på <ph name="SITE_NAME"/>:</translation>
<translation id="3800764353337460026">Symboltypografi</translation>
-<translation id="1278049586634282054">Se visninger:</translation>
+<translation id="1278049586634282054">Undersøg visninger:</translation>
<translation id="3254434849914415189">Vælg standardappen for <ph name="FILE_TYPE"/>-filer:</translation>
<translation id="4991420928586866460">Brug tasterne på øverste række som funktionstaster</translation>
<translation id="4350019051035968019">Denne enhed kan ikke tilmeldes det domæne, som din konto hører under, da enheden er markeret til administration på et andet domæne.</translation>
@@ -1879,7 +1879,7 @@ Når du har oprettet en ny administreret bruger, kan du til enhver tid administr
<translation id="473775607612524610">Opdater</translation>
<translation id="6122081475643980456">Din internetforbindelse bliver kontrolleret</translation>
<translation id="8812403718714328880"><ph name="PRODUCT_NAME"/> har blokeret adgangen til <ph name="HOST_NAME"/> indtil videre.</translation>
-<translation id="2773013129377709345">Tilsidesæt brugergrænsefladen for bogmærker</translation>
+<translation id="2773013129377709345">Tilsidesætte brugergrænsefladen for bogmærker</translation>
<translation id="1448389461181544401">Vil du gemme denne adgangskode?</translation>
<translation id="148466539719134488">Schweizisk</translation>
<translation id="8022523925619404071">Aktivér autoopdatering</translation>
@@ -1916,7 +1916,7 @@ Når du har oprettet en ny administreret bruger, kan du til enhver tid administr
<translation id="3481915276125965083">Følgende pop op-vinduer blev blokeret på denne side:</translation>
<translation id="2030481566774242610">Mente du <ph name="LINK"/>?</translation>
<translation id="3090871774332213558">&quot;<ph name="DEVICE_NAME"/>&quot; er parret</translation>
-<translation id="7705276765467986571">Bogmærkemodellen blev ikke indlæst</translation>
+<translation id="7705276765467986571">Bogmærkemodellen blev ikke indlæst.</translation>
<translation id="750413812607578381">Du skal genstarte <ph name="PRODUCT_NAME"/> nu.</translation>
<translation id="2638286699381354126">Opdater...</translation>
<translation id="1196338895211115272">Den personlige nøgle kunne ikke eksporteres.</translation>
@@ -1980,7 +1980,7 @@ Når du har oprettet en ny administreret bruger, kan du til enhver tid administr
<translation id="5486561344817861625">Simuler genstart af browser</translation>
<translation id="2367972762794486313">Vis apps</translation>
<translation id="5602600725402519729">Gen&amp;indlæs</translation>
-<translation id="6955446738988643816">Inspicer pop op-vindue</translation>
+<translation id="6955446738988643816">Undersøg pop op-vindue</translation>
<translation id="172612876728038702">TPM konfigureres. Vær tålmodig, det kan tage et par minutter.</translation>
<translation id="6748140994595080445">Angiv, hvordan <ph name="APP_NAME"/> skal håndtere og vise sprog</translation>
<translation id="2836635946302913370">Login med dette brugernavn er blevet deaktiveret af din administrator.</translation>
@@ -2178,7 +2178,7 @@ Når du har oprettet en ny administreret bruger, kan du til enhver tid administr
<translation id="7461924472993315131">Fastgør</translation>
<translation id="7279701417129455881">Administrer blokering af cookies...</translation>
<translation id="665061930738760572">Åbn i &amp;nyt vindue</translation>
-<translation id="4876895919560854374">Lås skærmen/lås skærmen op</translation>
+<translation id="4876895919560854374">Låse skærmen/låse skærmen op</translation>
<translation id="1166359541137214543">ABC</translation>
<translation id="3227137524299004712">Mikrofon</translation>
<translation id="5528368756083817449">Bogmærkeadministrator</translation>
@@ -2186,7 +2186,7 @@ Når du har oprettet en ny administreret bruger, kan du til enhver tid administr
<translation id="2826760142808435982">Forbindelsen er krypteret og godkendt ved hjælp af <ph name="CIPHER"/>, og den anvender <ph name="KX"/> som primær udvekslingsmekanisme.</translation>
<translation id="215753907730220065">Afslut fuld skærm</translation>
<translation id="7849264908733290972">Åbn &amp;billede på ny fane</translation>
-<translation id="1560991001553749272">Bogmærke tilføjet!</translation>
+<translation id="1560991001553749272">Bogmærket er tilføjet!</translation>
<translation id="3966072572894326936">Vælg en anden mappe...</translation>
<translation id="8758455334359714415">Indbygget asynkron DNS</translation>
<translation id="5585912436068747822">Formatering mislykkedes</translation>
@@ -2231,7 +2231,7 @@ Når du har oprettet en ny administreret bruger, kan du til enhver tid administr
<translation id="388442998277590542">Siden med valgmuligheder '<ph name="OPTIONS_PAGE"/>' kunne ikke indlæses.</translation>
<translation id="8449008133205184768">Sæt ind og match stil</translation>
<translation id="5258266922137542658">PPAPI (i gang)</translation>
-<translation id="5127881134400491887">Administrer netværksforbindelser</translation>
+<translation id="5127881134400491887">Administrere netværksforbindelser</translation>
<translation id="8028993641010258682">Størrelse</translation>
<translation id="8329978297633540474">Almindelig tekst</translation>
<translation id="7704305437604973648">Opgave</translation>
@@ -2324,7 +2324,7 @@ Når du har oprettet en ny administreret bruger, kan du til enhver tid administr
<translation id="8300259894948942413">Træk og slip ved berøring kan initieres via et langt tryk på et element, der kan trækkes.</translation>
<translation id="1240892293903523606">DOM Inspector</translation>
<translation id="5249624017678798539">Browseren lukkede ned, før overførslen var fuldført.</translation>
-<translation id="4474155171896946103">Føj alle faner til Bogmærker...</translation>
+<translation id="4474155171896946103">Tilføj alle faner som bogmærker...</translation>
<translation id="5895187275912066135">Udstedt den</translation>
<translation id="9100825730060086615">Tastaturtype</translation>
<translation id="5197680270886368025">Synkroniseringen er fuldført.</translation>
@@ -2430,7 +2430,7 @@ Når du har oprettet en ny administreret bruger, kan du til enhver tid administr
<translation id="7222232353993864120">E-mailadresse</translation>
<translation id="2128531968068887769">Native Client</translation>
<translation id="7175353351958621980">Indlæst fra:</translation>
-<translation id="3489785055052024984">Læs og rediger din browserhistorik på alle enheder, hvor du er logget ind</translation>
+<translation id="3489785055052024984">Læse og redigere din browserhistorik på alle enheder, hvor du er logget ind</translation>
<translation id="8248050856337841185">&amp;Indsæt</translation>
<translation id="347785443197175480">Tillad fortsat, at <ph name="HOST"/> har adgang til dit kamera og din mikrofon</translation>
<translation id="6052976518993719690">SSL-certificeringsautoritet</translation>
@@ -2577,7 +2577,7 @@ Når du har oprettet en ny administreret bruger, kan du til enhver tid administr
<translation id="7595321929944401166">Dette plugin er ikke understøttet.</translation>
<translation id="2580093683987647761">Ring på (866) 628-1371 (USA), (866) 628-1372 (Canada) eller 0800 026 0613 (Storbritannien) for at anmode om en ny gratis oplader.</translation>
<translation id="3996912167543967198">Nulstiller...</translation>
-<translation id="7509822997156351101">Rediger dine tilgængelighedsindstillinger</translation>
+<translation id="7509822997156351101">Redigere dine indstillinger for hjælpefunktioner</translation>
<translation id="4479639480957787382">Ethernet</translation>
<translation id="1541724327541608484">Kontrollér stavning i ​​tekstfelter</translation>
<translation id="8637688295594795546">Der findes en tilgængelig opdatering til systemet. Forbereder download...</translation>
@@ -2597,7 +2597,7 @@ Når du har oprettet en ny administreret bruger, kan du til enhver tid administr
<translation id="3714633008798122362">webkalender</translation>
<translation id="3251759466064201842">&lt;Ikke en del af certifikatet&gt;</translation>
<translation id="6186096729871643580">Antialias for LCD-tekst</translation>
-<translation id="3882882270042324158">Aktivér tilføjelse af scripts for tilgængelighed.</translation>
+<translation id="3882882270042324158">Aktivér tilføjelse af scripts for hjælpefunktioner.</translation>
<translation id="7303492016543161086">Vis indstillinger for hjælpefunktioner i systemmenuen</translation>
<translation id="6410257289063177456">Billedfiler</translation>
<translation id="6419902127459849040">Centraleuropæisk</translation>
@@ -2616,7 +2616,7 @@ Når du har oprettet en ny administreret bruger, kan du til enhver tid administr
<translation id="5298219193514155779">Tema oprettet af</translation>
<translation id="6307722552931206656">Googles navneservere – <ph name="BEGIN_LINK"/>Få flere oplysninger<ph name="END_LINK"/></translation>
<translation id="6628328486509726751">Uploadet <ph name="WEBRTC_LOG_UPLOAD_TIME"/></translation>
-<translation id="1047726139967079566">Indsæt bogmærke for denne side...</translation>
+<translation id="1047726139967079566">Tilføj denne side som bogmærke...</translation>
<translation id="151279668805528202">Aktivér den nye lydafspiller</translation>
<translation id="9020142588544155172">Serveren afviste forbindelsen.</translation>
<translation id="5234320766290789922">Tillad ikke, at hylden minimerer vinduet, hvis der kun findes ét aktivt vindue, der er knyttet til det element på hylden, der klikkes på.</translation>
@@ -2813,7 +2813,7 @@ Når du har oprettet en ny administreret bruger, kan du til enhver tid administr
<translation id="942954117721265519">Ingen billeder i denne mappe.</translation>
<translation id="671928215901716392">Lås skærmen</translation>
<translation id="2241468422635044128">Tilladt af udvidelse</translation>
-<translation id="3727187387656390258">Inspicer popupvindue</translation>
+<translation id="3727187387656390258">Undersøg pop op-vindue</translation>
<translation id="361106536627977100">Flash-data</translation>
<translation id="569068482611873351">Importer...</translation>
<translation id="6571070086367343653">Rediger kreditkort</translation>
@@ -2826,7 +2826,7 @@ Når du har oprettet en ny administreret bruger, kan du til enhver tid administr
<translation id="5622158329259661758">Deaktiverer brugen af GPU'en for at udføre lærredgengivelse i 2D og bruger softwaregengivelse i stedet.</translation>
<translation id="8670869118777164560">Denne udvidelse kunne ikke omdirigere en netværksanmodning til <ph name="ATTEMPTED_REDIRECT_DESTINATION"/>, fordi en anden udvidelse (<ph name="EXTENSION_NAME"/>) omdirigerede den til <ph name="ACTUAL_REDIRECT_DESTINATION"/>.</translation>
<translation id="3654092442379740616">Synkroniseringsfejl: <ph name="PRODUCT_NAME"/> er forældet og skal opdateres.</translation>
-<translation id="790040513076446191">Manipuler indstillinger til beskyttelse af personlige oplysninger</translation>
+<translation id="790040513076446191">Manipulere indstillinger til beskyttelse af personlige oplysninger</translation>
<translation id="7260002739296185724">Aktivér brug af AVFoundation til optagelse af video og overvågning af videoenheder i OS X &gt;= 10.7. Hvis AVFoundation ikke aktiveres, bruges QTKit i stedet.</translation>
<translation id="1463985642028688653">bloker</translation>
<translation id="1715941336038158809">Ugyldigt brugernavn eller ugyldig adgangskode.</translation>
@@ -2993,7 +2993,7 @@ slettes permanent, når den administrerede bruger fjernes. Besøgte websites og
<translation id="3972425373133383637">Hold dig ajour med det, du har brug for at vide, på alle dine enheder.</translation>
<translation id="8493236660459102203">Mikrofon:</translation>
<translation id="4788968718241181184">Vietnamesisk indtastningsmetode (TCVN6064)</translation>
-<translation id="3254409185687681395">Gem denne side som bogmærke</translation>
+<translation id="3254409185687681395">Tilføj denne side som bogmærke</translation>
<translation id="5694501201003948907">Komprimerer $1 elementer...</translation>
<translation id="2677924368525077324">Aktivér tekstredigering ved tryk</translation>
<translation id="283669119850230892">Hvis du vil bruge netværket <ph name="NETWORK_ID"/>, skal du først oprette forbindelse til internettet nedenfor.</translation>
@@ -3046,7 +3046,7 @@ slettes permanent, når den administrerede bruger fjernes. Besøgte websites og
<translation id="2386171414103162062">Forekomster, hvor en fane gik ned (&quot;<ph name="IDS_SAD_TAB_TITLE"/>&quot;)</translation>
<translation id="761779991806306006">Der er ikke gemt nogen adgangskoder.</translation>
<translation id="1692602667007917253">Hov! Der opstod en fejl</translation>
-<translation id="3922476559105512920">bruge serieforbundne enheder, der er sluttet til din computer</translation>
+<translation id="3922476559105512920">Bruge serieforbundne enheder, der er sluttet til din computer</translation>
<translation id="1415990189994829608"><ph name="EXTENSION_NAME"/> (udvidelses-id'et &quot;<ph name="EXTENSION_ID"/>&quot;) er ikke tilladt i denne sessionstype.</translation>
<translation id="7062080924541270064"><ph name="BEGIN_LINK"/>Pluginnet Native Client<ph name="END_LINK"/> skal være aktiveret for at bruge denne funktion.</translation>
<translation id="3613796918523876348">Gendan alligevel</translation>
@@ -3090,8 +3090,8 @@ slettes permanent, når den administrerede bruger fjernes. Besøgte websites og
<translation id="3700834376805760154">Identiteten af <ph name="ORGANIZATION"/> beliggende i <ph name="LOCALITY"/> er bekræftet af <ph name="ISSUER"/>, og der kan foretages en offentlig revision af den.</translation>
<translation id="436701661737309601">Ved et certifikat, der ikke er udløbet, gælder det, at udstederen af certifikatet er ansvarlig for at vedligeholde en &quot;tilbagekaldelsesliste&quot;. Hvis et certifikat på et tidspunkt kompromitteres, kan udstederen tilbagekalde det ved at føje det til tilbagekaldelseslisten, og derefter vil din browser ikke længere anse dette certifikat som pålideligt. Tilbagekaldelsesstatus kræves ikke for forældede certifikater, så selvom dette certifikat engang var gyldigt på det aktuelle website, er det ikke muligt at afgøre, om certifikatet er blevet kompromitteret og efterfølgende tilbagekaldt, eller om det stadigvæk er sikkert, på nuværende tidspunkt. Derfor er det umuligt at vide, om du kommunikerer med et troværdigt website, eller om certifikatet er blevet kompromitteret og nu styres af en hacker, som du kommunikerer med.</translation>
<translation id="4342311272543222243">Hov! Der opstod en TPM-fejl.</translation>
-<translation id="3727884750434605207">Aktivér tilføjelse af scripts i stedet for den indbyggede tilgængelighed i Android.</translation>
-<translation id="1285484354230578868">Gem data i din Google Drev-konto</translation>
+<translation id="3727884750434605207">Aktivér tilføjelse af scripts i stedet for de indbyggede hjælpefunktioner i Android.</translation>
+<translation id="1285484354230578868">Gemme data på din Google Drev-konto</translation>
<translation id="7106346894903675391">Køb mere lagerplads...</translation>
<translation id="994289308992179865">&amp;Sløjfe</translation>
<translation id="7596831438341298034">OK, start import</translation>
@@ -3227,7 +3227,7 @@ slettes permanent, når den administrerede bruger fjernes. Besøgte websites og
<translation id="889901481107108152">Dette eksperiment er ikke tilgængeligt på din platform.</translation>
<translation id="8238191901674777266">USA</translation>
<translation id="1873879463550486830">SUID-sandkasse</translation>
-<translation id="8118860139461251237">Administrer dine downloads</translation>
+<translation id="8118860139461251237">Administrere dine downloads</translation>
<translation id="5111852801054039429">Deaktiver WebRTC</translation>
<translation id="2190355936436201913">(tom)</translation>
<translation id="8515737884867295000">Den certifikatbaserede godkendelse mislykkedes</translation>
@@ -3585,7 +3585,7 @@ slettes permanent, når den administrerede bruger fjernes. Besøgte websites og
<translation id="9026731007018893674">download</translation>
<translation id="3212792897911394068">Deaktiver den eksperimenterende version af Encrypted Media Extensions på video- og lydelementer.</translation>
<translation id="6199775032047436064">Genindlæs den aktuelle side</translation>
-<translation id="6981982820502123353">Hjælpemidler</translation>
+<translation id="6981982820502123353">Hjælpefunktioner</translation>
<translation id="7210998213739223319">Brugernavn.</translation>
<translation id="4523336217659634227">Der opstod en fejl (<ph name="ERROR"/>) under download af pluginnet.</translation>
<translation id="4478664379124702289">Gem lin&amp;k som...</translation>
@@ -3903,7 +3903,7 @@ slettes permanent, når den administrerede bruger fjernes. Besøgte websites og
<translation id="3092544800441494315">Inkluder dette skærmbillede:</translation>
<translation id="2633199387167390344"><ph name="NAME"/> bruger <ph name="USAGE"/> MB diskplads.</translation>
<translation id="472177018469288237">Google Wallet er deaktiveret</translation>
-<translation id="7730449930968088409">Tag et skærmbillede af dit indhold</translation>
+<translation id="7730449930968088409">Tage et skærmbillede af dit indhold</translation>
<translation id="1431605150566631089">Kontrollér oplader</translation>
<translation id="5330145655348521461">Disse filer blev åbnet på en anden computer. Skift til <ph name="USER_NAME"/> (<ph name="MAIL_ADDRESS"/>) for at se dem.</translation>
<translation id="7714464543167945231">Certifikat</translation>
@@ -4066,7 +4066,7 @@ Vil du starte <ph name="CONTROL_PANEL_APPLET_NAME"/>?</translation>
<translation id="8948393169621400698">Tillad altid plugins på <ph name="HOST"/></translation>
<translation id="6527303717912515753">Del</translation>
<translation id="8211154138148153396">Underretninger om enhedsregistrering på lokalt netværk.</translation>
-<translation id="3893536212201235195">Læs og rediger dine tilgængelighedsindstillinger</translation>
+<translation id="3893536212201235195">Læse og redigere dine indstillinger for hjælpefunktioner</translation>
<translation id="5039512255859636053">$1 TB</translation>
<translation id="4285498937028063278">Frigør</translation>
<translation id="8734073480934656039">Ved at aktivere denne indstilling tillader du, at terminalapplikationer åbnes automatisk under opstart.</translation>
@@ -4139,7 +4139,7 @@ Vil du starte <ph name="CONTROL_PANEL_APPLET_NAME"/>?</translation>
<translation id="2137808486242513288">Tilføj en bruger</translation>
<translation id="129553762522093515">Senest lukkede</translation>
<translation id="1588870296199743671">Åbn link med...</translation>
-<translation id="4761104368405085019">Brug din mikrofon</translation>
+<translation id="4761104368405085019">Bruge din mikrofon</translation>
<translation id="4287167099933143704">Angiv nøgle til oplåsning af pinkode</translation>
<translation id="3936418843437416078">Installationer</translation>
<translation id="3129140854689651517">Find tekst</translation>
@@ -4214,14 +4214,14 @@ Vil du starte <ph name="CONTROL_PANEL_APPLET_NAME"/>?</translation>
<translation id="6680028776254050810">Skift bruger</translation>
<translation id="2908789530129661844">Zoom ud på skærmen</translation>
<translation id="212464871579942993">Websitet på <ph name="HOST_NAME"/> indeholder elementer fra websites, som ser ud til at hoste malware, dvs. software, som kan beskadige din computer, eller på anden måde foretage handlinger, du ikke har accepteret. Alene det, at du besøger et website, der indeholder malware, kan inficere din computer. Websitet hoster også indhold fra websites, der er blevet rapporteret som &quot;phishingwebsites&quot;. Phishingwebsites narrer brugere til at opgive personlige eller finansielle oplysninger. Det foregår gerne ved, at man udgiver sig for at repræsentere velkendte institutioner, som f.eks. banker.</translation>
-<translation id="2673135533890720193">Læs din browserhistorik</translation>
+<translation id="2673135533890720193">Læse din browserhistorik</translation>
<translation id="6860427144121307915">Åbn på en fane</translation>
<translation id="887692350334376364">Undtagelser for medier</translation>
<translation id="8156020606310233796">Listevisning</translation>
<translation id="146000042969587795">Denne ramme blev blokeret, da den indeholder usikkert indhold.</translation>
<translation id="3258924582848461629">Inputmetode med håndskrift til japansk</translation>
<translation id="8426564434439698958">&amp;Søg efter dette billede på <ph name="SEARCH_ENGINE"/></translation>
-<translation id="4375035964737468845">Åbn downloadede filer</translation>
+<translation id="4375035964737468845">Åbne downloadede filer</translation>
<translation id="3968739731834770921">Kana</translation>
<translation id="7387829944233909572">Dialogboksen &quot;Ryd browserdata&quot;</translation>
<translation id="8023801379949507775">Opdater udvidelser nu</translation>
@@ -4239,7 +4239,7 @@ Vil du starte <ph name="CONTROL_PANEL_APPLET_NAME"/>?</translation>
<translation id="4104163789986725820">E&amp;ksporter...</translation>
<translation id="9022026332614591902">Blokerede pop op-vinduer (<ph name="POP_UP_COUNT"/>)</translation>
<translation id="380408572480438692">Aktiverer registrering af ydelsesdata, der hjælper Google med at forbedre systemet med tiden. Der sendes ingen data, før du indgiver en feedbackrapport (Alt-Shift-I) og medtager ydelsesdata. Du kan altid vende tilbage til dette skærmbillede for at deaktivere registreringen.</translation>
-<translation id="3654045516529121250">Læs dine tilgængelighedsindstillinger</translation>
+<translation id="3654045516529121250">Læse dine indstillinger for hjælpefunktioner</translation>
<translation id="2113479184312716848">Åbn &amp;fil...</translation>
<translation id="884264119367021077">Leveringsadresse</translation>
<translation id="634208815998129842">Jobliste</translation>
@@ -4544,7 +4544,7 @@ Vil du starte <ph name="CONTROL_PANEL_APPLET_NAME"/>?</translation>
<translation id="169515659049020177">Shift</translation>
<translation id="3551117997325569860">Skift proxy ved at aktivere indstillingen &quot;<ph name="USE_SHARED_PROXIES"/>&quot;.</translation>
<translation id="8906421963862390172">&amp;Indstillinger for stavekontrol</translation>
-<translation id="193971656137910869">Læs og rediger dine bogmærker</translation>
+<translation id="193971656137910869">Læse og redigere dine bogmærker</translation>
<translation id="6268747994388690914">Importér bogmærker fra HTML-fil...</translation>
<translation id="6096047740730590436">Åbn maksimeret</translation>
<translation id="3924145049010392604">Meta</translation>
@@ -4610,7 +4610,7 @@ Vil du starte <ph name="CONTROL_PANEL_APPLET_NAME"/>?</translation>
<translation id="4771973620359291008">Der er opstået en ukendt fejl.</translation>
<translation id="5509914365760201064">Udsteder: <ph name="CERTIFICATE_AUTHORITY"/></translation>
<translation id="4941246025622441835">Anvend denne enhedsrekvisition, når du tilmelder enheden til virksomhedsadministration.</translation>
-<translation id="5449588825071916739">Gem alle faner som bogmærker</translation>
+<translation id="5449588825071916739">Tilføj alle faner som bogmærker</translation>
<translation id="7073385929680664879">Gennemgå indtastningsmetoderne</translation>
<translation id="7842062217214609161">Ingen genvej</translation>
<translation id="6898699227549475383">Organisation (O)</translation>
@@ -4635,7 +4635,7 @@ Vil du starte <ph name="CONTROL_PANEL_APPLET_NAME"/>?</translation>
<translation id="2509857212037838238">Installer <ph name="PLUGIN_NAME"/></translation>
<translation id="2943400156390503548">Slides</translation>
<translation id="3790146417033334899"><ph name="PLUGIN_NAME"/> fungerer kun på skrivebordet.</translation>
-<translation id="5117930984404104619">Overvåg adfærden for andre udvidelser, herunder de webadresser, du har besøgt.</translation>
+<translation id="5117930984404104619">Overvåge adfærden for andre udvidelser, herunder de webadresser, du har besøgt.</translation>
<translation id="33022249435934718">GDI-håndtag</translation>
<translation id="6308937455967653460">Gem lin&amp;k som...</translation>
<translation id="741689768643916402">Google Wallet kan desværre kun bruges af købere med en amerikansk adresse hos denne sælger. Hvis du er amerikansk statsborger, skal du |ændre din privatadresse med Wallet| eller betale uden at bruge Google Wallet.</translation>
@@ -4737,7 +4737,7 @@ Vil du starte <ph name="CONTROL_PANEL_APPLET_NAME"/>?</translation>
<translation id="2665394472441560184">Tilføj et nyt ord</translation>
<translation id="6095984072944024315">−</translation>
<translation id="3653999333232393305">Tillad fortsat, at <ph name="HOST"/> har adgang til din mikrofon</translation>
-<translation id="3760460896538743390">Inspicer &amp;baggrundsside</translation>
+<translation id="3760460896538743390">Undersøg &amp;baggrundsside</translation>
<translation id="5567989639534621706">Applikationscaches</translation>
<translation id="9141716082071217089">Kan ikke kontrollere, om serverens certifikat er tilbagekaldt.</translation>
<translation id="2436186046335138073">Vil du tillade, at <ph name="HANDLER_HOSTNAME"/> åbner alle <ph name="PROTOCOL"/>-links?</translation>
@@ -4778,7 +4778,7 @@ Vil du starte <ph name="CONTROL_PANEL_APPLET_NAME"/>?</translation>
<translation id="7549053541268690807">Søg i ordbog</translation>
<translation id="8911079125461595075">Google har markeret <ph name="EXTENSION_NAME"/> som ondsindet, og installationen er blevet forhindret.</translation>
<translation id="4347595254852029221">Aktivér hurtigt brugerskifte i avatarmenuen</translation>
-<translation id="5870086504539785141">Luk menuen for tilgængelighed</translation>
+<translation id="5870086504539785141">Luk menuen for hjælpefunktioner</translation>
<translation id="9102800320402283920">Google Wallet kræver som minimum et fornavn og et efternavn.</translation>
<translation id="7005848115657603926">Ugyldigt sideinterval, brug <ph name="EXAMPLE_PAGE_RANGE"/></translation>
<translation id="3705722231355495246">-</translation>
@@ -4982,7 +4982,7 @@ Tryk på en vilkårlig tast for at fortsætte udforskningen.</translation>
<translation id="385051799172605136">Tilbage</translation>
<translation id="4196861286325780578">&amp;Annuller fortryd flytning</translation>
<translation id="5075306601479391924">Deaktiver påkrævede bevægelser for brugeren ved afspilning af medieelementer. Hvis du aktiverer dette, tillader du automatisk afspilning.</translation>
-<translation id="9112748030372401671">Skift baggrund</translation>
+<translation id="9112748030372401671">Skifte baggrund</translation>
<translation id="8938356204940892126">Jeg giver op</translation>
<translation id="2670965183549957348">Chewing indtastningsmetode</translation>
<translation id="7839804798877833423">Hvis du henter disse filer, bruge du ca. <ph name="FILE_SIZE"/> mobildata.</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_de.xtb b/chromium/chrome/app/resources/generated_resources_de.xtb
index 4f3e4346a80..4aed0adfd8b 100644
--- a/chromium/chrome/app/resources/generated_resources_de.xtb
+++ b/chromium/chrome/app/resources/generated_resources_de.xtb
@@ -1167,7 +1167,7 @@ Geheimtipp: Verwenden Sie nächstes Mal den Inkognito-Modus (<ph name="SHORTCUT_
<translation id="3791151686802386313">Erste Unternehmensanmeldung wird vorbereitet...</translation>
<translation id="3393716657345709557">Angeforderter Eintrag wurde nicht im Cache gefunden.</translation>
<translation id="7191454237977785534">Datei speichern unter</translation>
-<translation id="7241389281993241388">Melden Sie sich in <ph name="TOKEN_NAME"/> an, um das Client-Zertifikat zu importieren.</translation>
+<translation id="7241389281993241388">Melden Sie sich in <ph name="TOKEN_NAME"/> an, um das Clientzertifikat zu importieren.</translation>
<translation id="8996526648899750015">Konto hinzufügen...</translation>
<translation id="1773292249699193156">Für Ihr <ph name="ACCOUNT_EMAIL"/>-Konto verfügt die Erweiterung optional über folgende Berechtigungen:</translation>
<translation id="7206693748120342859"><ph name="PLUGIN_NAME"/> wird heruntergeladen...</translation>
@@ -2592,7 +2592,7 @@ Achten Sie darauf, dass dadurch keine vertraulichen Informationen offengelegt we
<translation id="7303492016543161086">Optionen für Bedienungshilfen im Systemmenü anzeigen</translation>
<translation id="6410257289063177456">Bilddateien</translation>
<translation id="6419902127459849040">Mitteleuropäisch</translation>
-<translation id="6707389671160270963">SSL-Client-Zertifikat</translation>
+<translation id="6707389671160270963">SSL-Clientzertifikat</translation>
<translation id="6083557600037991373">Zur Beschleunigung von Webseiten speichert <ph name="PRODUCT_NAME"/> heruntergeladene Dateien vorübergehend auf einem Laufwerk. Wenn <ph name="PRODUCT_NAME"/> nicht richtig beendet wird, können diese Dateien beschädigt werden, was schließlich zu einem Fehler führt. Das Problem kann gelöst werden, indem die Seite neu geladen wird, und ein richtiges Beenden sollte solchen Problemen in Zukunft vorbeugen.<ph name="LINE_BREAK"/>Sollte das Problem aber weiterhin auftreten, so versuchen Sie, den Cache zu leeren. In einigen Fällen kann dies auch auf Hardwareprobleme hinweisen.</translation>
<translation id="5154176924561037127">F8</translation>
<translation id="5298219193514155779">Design von</translation>
@@ -3476,7 +3476,7 @@ Achten Sie darauf, dass dadurch keine vertraulichen Informationen offengelegt we
<translation id="1425734930786274278">Die folgenden Cookies wurden blockiert (Cookies von Drittanbietern werden ausnahmslos blockiert):</translation>
<translation id="3290704484208221223">Prozent</translation>
<translation id="5265562206369321422">Seit über einer Woche offline</translation>
-<translation id="6805647936811177813">Melden Sie sich in <ph name="TOKEN_NAME"/> an, um das Client-Zertifikat von <ph name="HOST_NAME"/> herunterzuladen.</translation>
+<translation id="6805647936811177813">Melden Sie sich in <ph name="TOKEN_NAME"/> an, um das Clientzertifikat von <ph name="HOST_NAME"/> herunterzuladen.</translation>
<translation id="6412931879992742813">Neues Inkognitofenster</translation>
<translation id="1105117579475534983">Webseite blockiert</translation>
<translation id="1673103856845176271">Auf die Datei konnte aus Sicherheitsgründen nicht zugegriffen werden.</translation>
@@ -5060,7 +5060,7 @@ Sind Sie einverstanden?</translation>
<translation id="4912643508233590958">Inaktive Weckbefehle</translation>
<translation id="7839192898639727867">Schlüssel-ID für Antragsteller des Zertifikats</translation>
<translation id="4759238208242260848">Downloads</translation>
-<translation id="2879560882721503072">Das von <ph name="ISSUER"/> ausgestellte Client-Zertifikat wurde erfolgreich gespeichert.</translation>
+<translation id="2879560882721503072">Das von <ph name="ISSUER"/> ausgestellte Clientzertifikat wurde erfolgreich gespeichert.</translation>
<translation id="1275718070701477396">Ausgewählt</translation>
<translation id="1178581264944972037">Anhalten</translation>
<translation id="3948633535993872459"><ph name="PROTOCOL"/>-Links</translation>
@@ -5092,7 +5092,7 @@ Sind Sie einverstanden?</translation>
<translation id="7427348830195639090">Hintergrundseite: <ph name="BACKGROUND_PAGE_URL"/></translation>
<translation id="8390029840652165810">Überprüfen Sie, ob Ihre Netzwerkverbindung funktioniert. Falls das Problem weiterhin besteht, melden Sie sich ab und wieder an, um Ihre Anmeldedaten neu zu laden.</translation>
<translation id="4034042927394659004">Tastenhelligkeit verringern</translation>
-<translation id="5898154795085152510">Der Server hat ein ungültiges Client-Zertifikat zurückgegeben. Fehler <ph name="ERROR_NUMBER"/> (<ph name="ERROR_NAME"/>).</translation>
+<translation id="5898154795085152510">Der Server hat ein ungültiges Clientzertifikat zurückgegeben. Fehler <ph name="ERROR_NUMBER"/> (<ph name="ERROR_NAME"/>).</translation>
<translation id="2704184184447774363">Microsoft-Dokumentsignatur</translation>
<translation id="5677928146339483299">Blockiert</translation>
<translation id="4645676300727003670">&amp;Beibehalten</translation>
@@ -5127,7 +5127,7 @@ Sind Sie einverstanden?</translation>
<translation id="2669198762040460457">Sie haben einen falschen Nutzernamen oder ein falsches Passwort eingegeben.</translation>
<translation id="5849626805825065073">Bei deaktivierter Option wird der Text bei beschleunigtem Aufbau mit Graustufen-Antialiasing anstelle von LCD-Subpixeln gerendert.</translation>
<translation id="8509646642152301857">Beim Herunterladen des Wörterbuchs für die Rechtschreibprüfung ist ein Fehler aufgetreten.</translation>
-<translation id="1161575384898972166">Melden Sie sich in <ph name="TOKEN_NAME"/> an, um das Client-Zertifikat zu exportieren.</translation>
+<translation id="1161575384898972166">Melden Sie sich in <ph name="TOKEN_NAME"/> an, um das Clientzertifikat zu exportieren.</translation>
<translation id="7056526158851679338">&amp;Geräte untersuchen</translation>
<translation id="1718559768876751602">Jetzt ein Google-Konto erstellen</translation>
<translation id="7408287099496324465">Wenn diese Option aktiviert ist, wird die EmbeddedSearch API zur Übermittlung von Suchanfragen auf der Suchergebnisseite verwendet.</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_es-419.xtb b/chromium/chrome/app/resources/generated_resources_es-419.xtb
index 32c5c57babc..4a77266d0b4 100644
--- a/chromium/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chromium/chrome/app/resources/generated_resources_es-419.xtb
@@ -2894,7 +2894,7 @@ Asegúrate de no revelar información confidencial.</translation>
<translation id="7347751611463936647">Para usar esta extensión, escribe &quot;<ph name="EXTENSION_KEYWORD"/>&quot;, luego PESTAÑA, luego tu comando o búsqueda.</translation>
<translation id="878431691778285679">Parece que ya administras un usuario que tiene ese nombre.<ph name="LINE_BREAK"/>¿Quieres <ph name="BEGIN_LINK"/>importar a <ph name="PROFILE_NAME"/> a este dispositivo<ph name="END_LINK"/>?</translation>
<translation id="2912905526406334195"><ph name="HOST"/> desea usar tu micrófono.</translation>
-<translation id="2805756323405976993">Google Apps</translation>
+<translation id="2805756323405976993">Aplicaciones</translation>
<translation id="5151511998946489774"><ph name="ISSUER"/> verificó la identidad de este sitio web, y se pudo confirmar su transparencia.</translation>
<translation id="1608626060424371292">Eliminar este usuario</translation>
<translation id="2779552785085366231">Esta página se puede agregar al Selector de aplicaciones.</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_et.xtb b/chromium/chrome/app/resources/generated_resources_et.xtb
index 204c8f2087a..ee9ef5e15c6 100644
--- a/chromium/chrome/app/resources/generated_resources_et.xtb
+++ b/chromium/chrome/app/resources/generated_resources_et.xtb
@@ -15,7 +15,7 @@
<translation id="166179487779922818">Parool on liiga lühike.</translation>
<translation id="9048642391959913289">Teksti suuruse automaatse muutmise kiirem rakendamine.</translation>
<translation id="2345460471437425338">Hosti vale sertifikaat.</translation>
-<translation id="3688507211863392146">Kirjutage failidesse ja kaustadesse, mille rakenduses avate</translation>
+<translation id="3688507211863392146">Failidesse ja kaustadesse kirjutamine, mille rakenduses avate</translation>
<translation id="3595596368722241419">Aku on täis</translation>
<translation id="8098352321677019742">Toote <ph name="PRODUCT_NAME"/> märguanded</translation>
<translation id="3566021033012934673">Teie ühendus ei ole privaatne</translation>
@@ -3466,7 +3466,7 @@ Veenduge, et te ei avalikustaks tundlikke andmeid.</translation>
<translation id="1834560242799653253">Suund:</translation>
<translation id="6440616190620341629">Lubab krüpteeritud meediumilaiendustele vaikimisi mittekoostava dekodeerimise rakenduses MediaDrm.</translation>
<translation id="7185025270390719314">Vaadake ja muutke oma arvutis ja külastatavatel veebisaitidel kõiki oma andmeid</translation>
-<translation id="8353683614194668312">See võib:</translation>
+<translation id="8353683614194668312">Rakendus saab teha järgmist.</translation>
<translation id="1047956942837015229"><ph name="COUNT"/> üksuse kustutamine ...</translation>
<translation id="1531961661616401172">Luba katselised sünkroonitud märguanded.</translation>
<translation id="7361039089383199231">$1 baiti</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_fil.xtb b/chromium/chrome/app/resources/generated_resources_fil.xtb
index 071dbf0fb50..41110fa6c0b 100644
--- a/chromium/chrome/app/resources/generated_resources_fil.xtb
+++ b/chromium/chrome/app/resources/generated_resources_fil.xtb
@@ -2917,7 +2917,7 @@ Tiyaking hindi ka maglalantad ng anumang sensitibong impormasyon.</translation>
<translation id="7347751611463936647">Upang gamitin ang extension na ito, i-type ang &quot;<ph name="EXTENSION_KEYWORD"/>&quot;, pagkatapos ay ang TAB, pagkatapos ay ang iyong command o paghahanap.</translation>
<translation id="878431691778285679">Mukhang pinamamahalaan mo na ang isang user sa pangalang iyan.<ph name="LINE_BREAK"/>Gusto mo bang <ph name="BEGIN_LINK"/>i-import si <ph name="PROFILE_NAME"/> sa device na ito<ph name="END_LINK"/>?</translation>
<translation id="2912905526406334195">Gustong gamitin ng <ph name="HOST"/> ang iyong microphone.</translation>
-<translation id="2805756323405976993">Apps</translation>
+<translation id="2805756323405976993">Mga App</translation>
<translation id="5151511998946489774">Ang pagkakakilanlan ng website na ito ay na-verify ni <ph name="ISSUER"/> at na-o-audit ng publiko.</translation>
<translation id="1608626060424371292">Alisin ang user na ito</translation>
<translation id="2779552785085366231">Maaaring idagdag ang page na ito sa App Launcher</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_fr.xtb b/chromium/chrome/app/resources/generated_resources_fr.xtb
index 7db02c49d71..11715bf5c64 100644
--- a/chromium/chrome/app/resources/generated_resources_fr.xtb
+++ b/chromium/chrome/app/resources/generated_resources_fr.xtb
@@ -2920,7 +2920,7 @@ Assurez-vous de ne pas dévoiler d'informations sensibles.</translation>
<translation id="7347751611463936647">Pour utiliser cette extension, saisissez &quot;<ph name="EXTENSION_KEYWORD"/>&quot;, TAB, puis votre commande ou votre recherche.</translation>
<translation id="878431691778285679">Il semble que vous gérez déjà un utilisateur portant ce nom.<ph name="LINE_BREAK"/>Voulez-vous <ph name="BEGIN_LINK"/>importer <ph name="PROFILE_NAME"/> sur cet appareil<ph name="END_LINK"/> ?</translation>
<translation id="2912905526406334195"><ph name="HOST"/> veut utiliser votre micro.</translation>
-<translation id="2805756323405976993">Google Apps</translation>
+<translation id="2805756323405976993">Applications</translation>
<translation id="5151511998946489774">L'identité de ce site Web a été validée par <ph name="ISSUER"/>, et elle est vérifiable publiquement.</translation>
<translation id="1608626060424371292">Supprimer cet utilisateur</translation>
<translation id="2779552785085366231">Cette page peut être ajoutée au lanceur d'applications.</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_gu.xtb b/chromium/chrome/app/resources/generated_resources_gu.xtb
index 933e8eb27e7..2d9dc8be3f4 100644
--- a/chromium/chrome/app/resources/generated_resources_gu.xtb
+++ b/chromium/chrome/app/resources/generated_resources_gu.xtb
@@ -2921,7 +2921,7 @@
<translation id="7347751611463936647">આ એક્સ્ટેંશનનો ઉપયોગ કરવા, &quot;<ph name="EXTENSION_KEYWORD"/>&quot; ટાઇપ કરો, તે પછી TAB, તે પછી તમારો આદેશ અથવા શોધ.</translation>
<translation id="878431691778285679">એવું લાગે છે કે તમે પહેલાંથી જ તે નામના વપરાશકર્તાનું સંચાલન કરી રહ્યાં છો.<ph name="LINE_BREAK"/>શું તમે <ph name="BEGIN_LINK"/>આ ઉપકરણ પર <ph name="PROFILE_NAME"/> આયાત કરવા માંગો છો<ph name="END_LINK"/>?</translation>
<translation id="2912905526406334195"><ph name="HOST"/> તમારા માઇક્રોફોનનો ઉપયોગ કરવા માગે છે.</translation>
-<translation id="2805756323405976993">એપ્લિકેશન્સ</translation>
+<translation id="2805756323405976993">એપ્સ</translation>
<translation id="5151511998946489774"><ph name="ISSUER"/> દ્વારા આ વેબસાઇટની ઓળખ ચકાસવામાં આવી છે અને તે સાર્વજનિક રૂપે ઓડિટેબલ છે.</translation>
<translation id="1608626060424371292">આ વપરાશકર્તાને દૂર કરો</translation>
<translation id="2779552785085366231">આ પૃષ્ઠ એપ લૉન્ચરમાં ઉમેરી શકાય છે</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_hi.xtb b/chromium/chrome/app/resources/generated_resources_hi.xtb
index d171702c612..5fd2ec2eae0 100644
--- a/chromium/chrome/app/resources/generated_resources_hi.xtb
+++ b/chromium/chrome/app/resources/generated_resources_hi.xtb
@@ -7,7 +7,7 @@
<translation id="9056953843249698117">Store</translation>
<translation id="6431217872648827691">आपके Google पासवर्ड के द्वारा
<ph name="TIME"/> तक का सभी डेटा एन्क्रिप्ट किया गया था</translation>
-<translation id="335581015389089642">वाक्</translation>
+<translation id="335581015389089642">बोली</translation>
<translation id="1890570400853666479">स्थिर गैलरी के बजाय प्रयोगात्मक नई गैलरी का उपयोग करें.</translation>
<translation id="8206745257863499010">ब्‍लुसी</translation>
<translation id="3314762460582564620">प्लेन झुयिन मोड. स्वचालित उम्मीदवार चयन और संबंधित विकल्प
@@ -1444,7 +1444,7 @@
<translation id="6051086608691487286">ओवरले स्क्रॉलबार</translation>
<translation id="6132509723755265994">Google वॉलेट इस व्यापारी के साथ समर्थित नहीं है.</translation>
<translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT"/> फ़ाइलें चयनित</translation>
-<translation id="4498419978438799658">संश्लेषि‍त वाक् का उपयोग करके बोले गए सभी टेक्स्ट तक पहुंचें</translation>
+<translation id="4498419978438799658">संश्लेषि‍त बोली का उपयोग करके बोले गए सभी टेक्स्ट तक पहुंचें</translation>
<translation id="7339898014177206373">नई विंडो</translation>
<translation id="8362900609631365882">पहुंच-योग्यता टैब स्विचर सक्षम करें.</translation>
<translation id="1895215930471128025">सैंडबॉक्स न किए गए प्लग-इन को कभी भी <ph name="HOST"/> पर अनुमति न दें</translation>
@@ -2933,7 +2933,7 @@
<translation id="7347751611463936647">इस एक्सटेंशन का उपयोग करने के लिए, &quot;<ph name="EXTENSION_KEYWORD"/>&quot; लिखें, फिर टैब लगाएं, फिर अपना आदेश या खोज लिखें.</translation>
<translation id="878431691778285679">ऐसा लगता है आप पहले से ही उस नाम से किसी उपयोगकर्ता को प्रबंधित कर रहे हैं.<ph name="LINE_BREAK"/>क्या आप<ph name="BEGIN_LINK"/> <ph name="PROFILE_NAME"/> को इस उपकरण में निर्यात करना चाहते थे<ph name="END_LINK"/>?</translation>
<translation id="2912905526406334195"><ph name="HOST"/> आपके माइक्रोफ़ोन का उपयोग करना चाहता है.</translation>
-<translation id="2805756323405976993">Apps</translation>
+<translation id="2805756323405976993">ऐप्स</translation>
<translation id="5151511998946489774">इस वेबसाइट की पहचान को <ph name="ISSUER"/> द्वारा सत्यापित किया गया है और यह सार्वजनिक रूप से ऑडिट किए जाने योग्य है.</translation>
<translation id="1608626060424371292">इस उपयोगकर्ता को निकालें</translation>
<translation id="2779552785085366231">इस पृष्ठ को ऐप्स लॉन्चर में जोड़ा जा सकता है</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_hr.xtb b/chromium/chrome/app/resources/generated_resources_hr.xtb
index 8279b6cd7dd..ac58918a1bd 100644
--- a/chromium/chrome/app/resources/generated_resources_hr.xtb
+++ b/chromium/chrome/app/resources/generated_resources_hr.xtb
@@ -2884,7 +2884,7 @@ Ne otkrivajte nikakve osjetljive podatke.</translation>
<translation id="7347751611463936647">Da biste upotrijebili to proširenje, upišite &quot;<ph name="EXTENSION_KEYWORD"/>&quot;, zatim pritisnite TAB, a zatim svoju naredbu ili pretraživanje.</translation>
<translation id="878431691778285679">Izgleda da već upravljate korisnikom pod tim imenom.<ph name="LINE_BREAK"/>Jeste li htjeli <ph name="BEGIN_LINK"/>uvesti korisnika <ph name="PROFILE_NAME"/> na ovaj uređaj<ph name="END_LINK"/>?</translation>
<translation id="2912905526406334195">Host <ph name="HOST"/> želi upotrijebiti vaš mikrofon.</translation>
-<translation id="2805756323405976993">Apps</translation>
+<translation id="2805756323405976993">Aplikacije</translation>
<translation id="5151511998946489774">Identitet te web-lokacije potvrdio je izdavač <ph name="ISSUER"/> i može se javno nadzirati.</translation>
<translation id="1608626060424371292">Ukloni tog korisnika</translation>
<translation id="2779552785085366231">Tu stranicu možete dodati u Pokretač aplikacija</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_hu.xtb b/chromium/chrome/app/resources/generated_resources_hu.xtb
index 056e4372ea5..9abb89052bd 100644
--- a/chromium/chrome/app/resources/generated_resources_hu.xtb
+++ b/chromium/chrome/app/resources/generated_resources_hu.xtb
@@ -2890,7 +2890,7 @@ Győződjön meg arról, hogy nem ad ki bizalmas adatokat.</translation>
<translation id="7347751611463936647">A kifejezés használatához írja be a következőt: &quot;<ph name="EXTENSION_KEYWORD"/>&quot;, ezután nyomja meg a TAB-ot, majd parancsát vagy keresését.</translation>
<translation id="878431691778285679">Úgy tűnik, Ön már kezel egy ilyen nevű felhasználót.<ph name="LINE_BREAK"/>Inkább <ph name="BEGIN_LINK"/>importálni szeretné <ph name="PROFILE_NAME"/> felhasználót erre az eszközre<ph name="END_LINK"/>?</translation>
<translation id="2912905526406334195">A(z) <ph name="HOST"/> a mikrofont kívánja használni.</translation>
-<translation id="2805756323405976993">Google Alkalmazások</translation>
+<translation id="2805756323405976993">Alkalmazások</translation>
<translation id="5151511998946489774">A(z) <ph name="ISSUER"/> igazolta ennek a webhelynek az identitását, és az nyilvánosan megtekinthető.</translation>
<translation id="1608626060424371292">Felhasználó eltávolítása</translation>
<translation id="2779552785085366231">Az oldal nem adható hozzá az Alkalmazásindítóhoz</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_id.xtb b/chromium/chrome/app/resources/generated_resources_id.xtb
index 51d07d2b477..60b68a43a0b 100644
--- a/chromium/chrome/app/resources/generated_resources_id.xtb
+++ b/chromium/chrome/app/resources/generated_resources_id.xtb
@@ -2894,7 +2894,7 @@ Pastikan Anda tidak mengekspos informasi penting apa pun.</translation>
<translation id="7347751611463936647">Untuk menggunakan ekstensi ini, ketik &quot;<ph name="EXTENSION_KEYWORD"/>&quot;, lalu TAB, kemudian perintah atau penelusuran Anda.</translation>
<translation id="878431691778285679">Tampaknya Anda telah mengelola pengguna dengan nama tersebut.<ph name="LINE_BREAK"/>Apakah Anda ingin <ph name="BEGIN_LINK"/>mengimpor <ph name="PROFILE_NAME"/> ke perangkat ini<ph name="END_LINK"/>?</translation>
<translation id="2912905526406334195"><ph name="HOST"/> ingin menggunakan mikrofon Anda.</translation>
-<translation id="2805756323405976993">Apps</translation>
+<translation id="2805756323405976993">Apl</translation>
<translation id="5151511998946489774">Identitas situs web ini telah diverifikasi oleh <ph name="ISSUER"/> dan dapat diaudit secara publik.</translation>
<translation id="1608626060424371292">Hapus pengguna ini</translation>
<translation id="2779552785085366231">Laman ini dapat ditambahkan ke Peluncur Aplikasi</translation>
@@ -3459,7 +3459,7 @@ dan tidak biasa. Bisa jadi penyerang berpura-pura menjadi <ph name="SITE"/>, ata
<translation id="8353683614194668312">Aplikasi/ekstensi dapat:</translation>
<translation id="1047956942837015229">Menghapus <ph name="COUNT"/> item...</translation>
<translation id="1531961661616401172">Aktifkan Pemberitahuan Tersinkron eksperimental.</translation>
-<translation id="7361039089383199231">$1 byte</translation>
+<translation id="7361039089383199231">$1 bita</translation>
<translation id="191688485499383649">Terjadi kesalahan tidak dikenal saat mencoba menyambung ke &quot;<ph name="DEVICE_NAME"/>&quot;.</translation>
<translation id="7208594729785140450">Google Wallet tidak mendukung versi Chrome ini atau tidak mengenali kunci API Google Anda.</translation>
<translation id="6874681241562738119">Kesalahan Masuk</translation>
@@ -4601,7 +4601,7 @@ dan tidak biasa. Bisa jadi penyerang berpura-pura menjadi <ph name="SITE"/>, ata
<translation id="2089090684895656482">Lebih Sedikit</translation>
<translation id="6656103420185847513">Edit Folder</translation>
<translation id="4918241738772068049">Tindakan yang diperlukan untuk menyambung</translation>
-<translation id="1949433054743893124">Menggunakan mode penyamaran tidak menyembunyikan penjelajahan dari pimpinan atau penyedia layanan internet Anda, maupun situs web yang dikunjungi.</translation>
+<translation id="1949433054743893124">Menggunakan mode penyamaran tidak menyembunyikan penjelajahan dari perusahaan Anda, penyedia layanan internet Anda, maupun situs web yang dikunjungi.</translation>
<translation id="1132391573698572126">Subjek: <ph name="SUBJECT"/></translation>
<translation id="4193154014135846272">Dokumen Google</translation>
<translation id="4771973620359291008">Terjadi kesalahan yang tidak diketahui.</translation>
@@ -4812,7 +4812,7 @@ Tekan sembarang tombol untuk melanjutkan penjelajahan.</translation>
<translation id="4084682180776658562">Bookmark</translation>
<translation id="8859057652521303089">Pilih bahasa Anda:</translation>
<translation id="2632795170092344386">Hapus cookies serta data situs dan plugin lainnya saat Anda menutup browser</translation>
-<translation id="5941864346249299673">Jumlah byte yang terbaca di seluruh jaringan</translation>
+<translation id="5941864346249299673">Jumlah bita yang terbaca di seluruh jaringan</translation>
<translation id="3030138564564344289">Coba ulang unduhan</translation>
<translation id="2603463522847370204">Buka di &amp;jendela penyamaran</translation>
<translation id="2951236788251446349">Ubur-ubur</translation>
@@ -5033,7 +5033,7 @@ Tekan sembarang tombol untuk melanjutkan penjelajahan.</translation>
• Anda dapat mengakhirinya kapan saja
Terima?</translation>
-<translation id="8251578425305135684">Thumbnail dihapus.</translation>
+<translation id="8251578425305135684">Gambar kecil dihapus.</translation>
<translation id="6163522313638838258">Luaskan semua...</translation>
<translation id="31454997771848827">Domain grup</translation>
<translation id="3188465121994729530">Rata-rata Perpindahan</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_it.xtb b/chromium/chrome/app/resources/generated_resources_it.xtb
index 2f827815441..1676247f783 100644
--- a/chromium/chrome/app/resources/generated_resources_it.xtb
+++ b/chromium/chrome/app/resources/generated_resources_it.xtb
@@ -2875,7 +2875,7 @@ Assicurati di non mostrare informazioni riservate.</translation>
<translation id="7347751611463936647">Per utilizzare questa estensione, digita &quot;<ph name="EXTENSION_KEYWORD"/>&quot;, quindi TAB, poi il tuo comando o la tua ricerca.</translation>
<translation id="878431691778285679">Sembra che tu gestisca già un utente con il nome indicato.<ph name="LINE_BREAK"/>Volevi <ph name="BEGIN_LINK"/>importarlo<ph name="PROFILE_NAME"/> in questo dispositivo<ph name="END_LINK"/>?</translation>
<translation id="2912905526406334195"><ph name="HOST"/> vuole utilizzare il microfono.</translation>
-<translation id="2805756323405976993">Google Apps</translation>
+<translation id="2805756323405976993">App</translation>
<translation id="5151511998946489774">L'identità di questo sito web è stata verificata da <ph name="ISSUER"/> e può essere controllata pubblicamente.</translation>
<translation id="1608626060424371292">Rimuovi questo utente</translation>
<translation id="2779552785085366231">Questa pagina può essere aggiunta ad Avvio applicazioni</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_iw.xtb b/chromium/chrome/app/resources/generated_resources_iw.xtb
index 36c1f742c3e..342b5f8dbca 100644
--- a/chromium/chrome/app/resources/generated_resources_iw.xtb
+++ b/chromium/chrome/app/resources/generated_resources_iw.xtb
@@ -2882,7 +2882,7 @@ JavaScript ויישומי פלאגין.</translation>
<translation id="7347751611463936647">‏כדי להשתמש בתוסף זה, הקלד &quot;<ph name="EXTENSION_KEYWORD"/>&quot;, לאחר מכן הקש TAB ולאחר מכן הקלד את הפקודה או מונח החיפוש.</translation>
<translation id="878431691778285679">נראה שאתה כבר מנהל משתמש עם השם הזה.<ph name="LINE_BREAK"/>האם רצית <ph name="BEGIN_LINK"/>לייבא את <ph name="PROFILE_NAME"/> אל המכשיר הזה<ph name="END_LINK"/>?</translation>
<translation id="2912905526406334195"><ph name="HOST"/> מעוניין להשתמש במיקרופון שלך.</translation>
-<translation id="2805756323405976993">Apps</translation>
+<translation id="2805756323405976993">אפליקציות</translation>
<translation id="5151511998946489774">הזהות של האתר הזה אומתה על ידי <ph name="ISSUER"/>, והוא זמין לביקורת ציבורית.</translation>
<translation id="1608626060424371292">הסר את המשתמש הזה</translation>
<translation id="2779552785085366231">ניתן להוסיף דף זה למפעיל היישומים</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_ja.xtb b/chromium/chrome/app/resources/generated_resources_ja.xtb
index c3ecb9cfc70..b589ef492d0 100644
--- a/chromium/chrome/app/resources/generated_resources_ja.xtb
+++ b/chromium/chrome/app/resources/generated_resources_ja.xtb
@@ -93,7 +93,7 @@
<translation id="5437452584883783369">プレビューを終了して再起動</translation>
<translation id="7392118418926456391">ウイルス スキャンに失敗しました</translation>
<translation id="1156689104822061371">キーボード レイアウト:</translation>
-<translation id="4764776831041365478"><ph name="URL"/> のウェブページは一時的に停止しているか、新しい URL に移動した可能性があります。</translation>
+<translation id="4764776831041365478"><ph name="URL"/> のウェブページは一時的に停止しているか、新しいウェブアドレスに移動した可能性があります。</translation>
<translation id="6156863943908443225">スクリプト キャッシュ</translation>
<translation id="4274187853770964845">同期エラー: 同期を停止してからもう一度開始してください。</translation>
<translation id="6499114579475440437">ログインして Google ウォレットで支払う</translation>
@@ -1841,7 +1841,7 @@
<translation id="2902382079633781842">ブックマークが追加されました</translation>
<translation id="5436510242972373446"><ph name="SITE_NAME"/> を検索:</translation>
<translation id="3800764353337460026">記号のスタイル</translation>
-<translation id="1278049586634282054">ビューを調査:</translation>
+<translation id="1278049586634282054">ビューを検証:</translation>
<translation id="3254434849914415189"><ph name="FILE_TYPE"/> ファイルのデフォルト アプリを選択:</translation>
<translation id="4991420928586866460">キーボードの最上段のキーをファンクション キーとして使用する</translation>
<translation id="4350019051035968019">このデバイスは、別のドメインの管理対象として指定されているため、現在のアカウントの所属先ドメインに登録することはできません。</translation>
@@ -2912,7 +2912,7 @@
<translation id="7347751611463936647">この拡張機能を使用するには、「<ph name="EXTENSION_KEYWORD"/>」と入力して Tab キーを押してからコマンドまたは検索キーワードを入力してください。</translation>
<translation id="878431691778285679">この名前でユーザーを既に管理しているようです。<ph name="LINE_BREAK"/><ph name="BEGIN_LINK"/>このデバイスに <ph name="PROFILE_NAME"/> をインポート<ph name="END_LINK"/>しますか?</translation>
<translation id="2912905526406334195"><ph name="HOST"/> がマイクへのアクセスを求めています。</translation>
-<translation id="2805756323405976993">Apps</translation>
+<translation id="2805756323405976993">アプリ</translation>
<translation id="5151511998946489774">このウェブサイトの識別情報は <ph name="ISSUER"/> により確認済みで、公開監査が可能です。</translation>
<translation id="1608626060424371292">このユーザーを削除</translation>
<translation id="2779552785085366231">このページをアプリ ランチャーに追加できます</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_kn.xtb b/chromium/chrome/app/resources/generated_resources_kn.xtb
index f7158b22da9..26ad58c5856 100644
--- a/chromium/chrome/app/resources/generated_resources_kn.xtb
+++ b/chromium/chrome/app/resources/generated_resources_kn.xtb
@@ -2900,7 +2900,7 @@
<translation id="7347751611463936647">ಈ ವಿಸ್ತರಣೆಯನ್ನು ಬಳಸಲು, &quot;<ph name="EXTENSION_KEYWORD"/>&quot; ಅನ್ನು ಟೈಪ್ ಮಾಡಿ, ನಂತರ TAB, ನಂತರ ನಿಮ್ಮ ಆದೇಶ ಅಥವಾ ಹುಡುಕಾಟ‌ವನ್ನು ಟೈಪ್ ಮಾಡಿ.</translation>
<translation id="878431691778285679">ಆ ಹೆಸರಿನ ಮೂಲಕ ನೀವು ಈಗಾಗಲೇ ಬಳಕೆದಾರರನ್ನು ನಿರ್ವಹಿಸುತ್ತಿರುವಂತೆ ತೋರುತ್ತಿದೆ.<ph name="LINE_BREAK"/>ನೀವು ಈ ಸಾಧನಕ್ಕೆ <ph name="BEGIN_LINK"/>ಆಮದು ಮಾಡಲು <ph name="PROFILE_NAME"/> ಬಯಸುವಿರಾ<ph name="END_LINK"/>?</translation>
<translation id="2912905526406334195">ನಿಮ್ಮ ಮೈಕ್ರೊಫೋನ್ ಅನ್ನು <ph name="HOST"/> ಬಳಸಬೇಕೆಂದು ಬಯಸುತ್ತದೆ.</translation>
-<translation id="2805756323405976993">Apps</translation>
+<translation id="2805756323405976993">ಆಪ್ಸ್‌‌</translation>
<translation id="5151511998946489774">ಈ ವೆಬ್‌ಸೈಟ್‌ ಗುರುತನ್ನು <ph name="ISSUER"/> ಮೂಲಕ ಪರಿಶೀಲಿಸಲಾಗಿದೆ ಮತ್ತು ಇದನ್ನು ಸಾರ್ವಜನಿಕವಾಗಿ ಪರಿಶೋಧಿಸಬಹುದಾಗಿದೆ.</translation>
<translation id="1608626060424371292">ಈ ಬಳಕೆದಾರರನ್ನು ತೆಗೆದುಹಾಕಿ</translation>
<translation id="2779552785085366231">ಈ ಪುಟವನ್ನು ಅಪ್ಲಿಕೇಶನ್ ಲಾಂಚರ್‌ಗೆ ಸೇರಿಸಬಹುದಾಗಿದೆ</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_ko.xtb b/chromium/chrome/app/resources/generated_resources_ko.xtb
index 74ef97c218b..dd302ffdb01 100644
--- a/chromium/chrome/app/resources/generated_resources_ko.xtb
+++ b/chromium/chrome/app/resources/generated_resources_ko.xtb
@@ -2916,7 +2916,7 @@ http://support.google.com/chromebook/?p=tpm</translation>
<translation id="7347751611463936647">이 확장 프로그램을 사용하려면 '<ph name="EXTENSION_KEYWORD"/>'(을)를 입력하고 TAB을 누른 다음 명령어 또는 검색어를 입력하세요.</translation>
<translation id="878431691778285679">이미 해당 이름으로 사용자를 관리 중인 것 같습니다.<ph name="LINE_BREAK"/><ph name="BEGIN_LINK"/><ph name="PROFILE_NAME"/>을(를) 이 기기로 가져오시겠습니까<ph name="END_LINK"/>?</translation>
<translation id="2912905526406334195"><ph name="HOST"/>에서 사용자의 마이크를 사용하려고 합니다.</translation>
-<translation id="2805756323405976993">응용프로그램</translation>
+<translation id="2805756323405976993">앱</translation>
<translation id="5151511998946489774">이 웹사이트의 ID는 <ph name="ISSUER"/>에 의해 확인되었고 공개 감사가 가능합니다.</translation>
<translation id="1608626060424371292">이 사용자 삭제</translation>
<translation id="2779552785085366231">이 페이지를 앱 런처에 추가할 수 있습니다.</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_ml.xtb b/chromium/chrome/app/resources/generated_resources_ml.xtb
index 775e3608301..85d68bd4bc8 100644
--- a/chromium/chrome/app/resources/generated_resources_ml.xtb
+++ b/chromium/chrome/app/resources/generated_resources_ml.xtb
@@ -2924,7 +2924,7 @@ Google Chrome മൊബൈൽ ഡാറ്റ ഉപയോഗിക്കും.
<translation id="7347751611463936647">ഈ വിപുലീകരണം ഉപയോഗിക്കുക, &quot;<ph name="EXTENSION_KEYWORD"/>&quot; ടൈപ്പുചെയ്യുക, തുടര്‍ന്ന് TAB, തുടര്‍ന്ന് നിങ്ങളുടെ കമാന്‍റ് അല്ലെങ്കില്‍ തിരയല്‍.</translation>
<translation id="878431691778285679">നിങ്ങൾ ഇതിനകം ആ പേരിൽ ഒരു ഉപയോക്താവിനെ നിയന്ത്രിക്കുന്നതുപോലെ തോന്നുന്നു.<ph name="LINE_BREAK"/>ഈ ഉപകരണത്തിലേക്ക് <ph name="BEGIN_LINK"/><ph name="PROFILE_NAME"/> ഇമ്പോർട്ടുചെയ്യുന്നതിന് നിങ്ങൾക്ക് താൽപ്പര്യമുണ്ടോ<ph name="END_LINK"/>?</translation>
<translation id="2912905526406334195"><ph name="HOST"/> എന്നതിന് ഒരു മൈക്രോഫോൺ ഉപയോഗിക്കണം.</translation>
-<translation id="2805756323405976993">അപ്ലിക്കേഷന്‍സ്</translation>
+<translation id="2805756323405976993">ആപ്സ്</translation>
<translation id="5151511998946489774">ഈ വെബ്സൈറ്റിന്റെ ഐഡന്റിറ്റി <ph name="ISSUER"/> സ്ഥിരീകരിച്ചതും എല്ലാവർക്കും ഓഡിറ്റുചെയ്യാനാവുന്നതുമാണ്.</translation>
<translation id="1608626060424371292">ഈ ഉപയോക്താവിനെ നീക്കംചെയ്യുക</translation>
<translation id="2779552785085366231">ഈ പേജ് അപ്ലിക്കേഷൻ ലോഞ്ചറിലേക്ക് ചേർക്കാം</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_nl.xtb b/chromium/chrome/app/resources/generated_resources_nl.xtb
index e3c87acf15f..97537369aaa 100644
--- a/chromium/chrome/app/resources/generated_resources_nl.xtb
+++ b/chromium/chrome/app/resources/generated_resources_nl.xtb
@@ -2927,7 +2927,7 @@ Zorg ervoor dat je geen gevoelige informatie weergeeft.</translation>
<translation id="7347751611463936647">Als je deze extensie wilt gebruiken, typ je '<ph name="EXTENSION_KEYWORD"/>', druk je op Tab en geef je je opdracht of zoekopdracht op.</translation>
<translation id="878431691778285679">Het lijkt erop dat je al een gebruiker met die naam beheert.<ph name="LINE_BREAK"/>Wil je <ph name="BEGIN_LINK"/><ph name="PROFILE_NAME"/> importeren naar dit apparaat<ph name="END_LINK"/>?</translation>
<translation id="2912905526406334195"><ph name="HOST"/> wil gebruikmaken van je microfoon.</translation>
-<translation id="2805756323405976993">Google Apps</translation>
+<translation id="2805756323405976993">Apps</translation>
<translation id="5151511998946489774">De identiteit van deze website is geverifieerd door <ph name="ISSUER"/> en is openbaar controleerbaar.</translation>
<translation id="1608626060424371292">Deze gebruiker verwijderen</translation>
<translation id="2779552785085366231">Deze pagina kan worden toegevoegd aan de App Launcher</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_no.xtb b/chromium/chrome/app/resources/generated_resources_no.xtb
index af95d98ea42..6280972a1b3 100644
--- a/chromium/chrome/app/resources/generated_resources_no.xtb
+++ b/chromium/chrome/app/resources/generated_resources_no.xtb
@@ -121,7 +121,7 @@
<translation id="4654488276758583406">Veldig liten</translation>
<translation id="6647228709620733774">Nettadresse for tilbakekalling av Netscape-autoritetssertifikat</translation>
<translation id="546411240573627095">Talltastaturstil</translation>
-<translation id="2310216585920710503">Konfigurer enkel opplåsing</translation>
+<translation id="2310216585920710503">Konfigurer Enkel opplåsing</translation>
<translation id="8425213833346101688">Endre</translation>
<translation id="2972581237482394796">Gjø&amp;r om</translation>
<translation id="5895138241574237353">Start på nytt</translation>
@@ -519,7 +519,7 @@ Sjekk e-posten din på <ph name="ACCOUNT_EMAIL"/> for instruksjoner om dette og
<translation id="413121957363593859">Komponenter</translation>
<translation id="715487527529576698">Opprinnelig kinesisk modus er forenklet kinesisk</translation>
<translation id="6522350652862471760">Slå på Google-profilnavn og -ikon</translation>
-<translation id="6181259999130430430">Slå på enkel opplåsing for denne enheten.</translation>
+<translation id="6181259999130430430">Slå på Enkel opplåsing for denne enheten.</translation>
<translation id="8703575177326907206">Tilkoblingen til <ph name="DOMAIN"/> er ikke kryptert.</translation>
<translation id="6135622770221372891">ID-er for kanal</translation>
<translation id="8472623782143987204">maskinvarestøttet</translation>
@@ -712,7 +712,7 @@ Alle brukere må logge av for å fortsette.</translation>
<translation id="3984921062031549150">Gjengivelsen slutter å fungere</translation>
<translation id="7925285046818567682">Venter på <ph name="HOST_NAME"/>...</translation>
<translation id="1079766198702302550">Blokkér alltid bruk av kameraet</translation>
-<translation id="2964845078799970531">Med enkel opplåsing kan du låse opp Chromebooken når den er i nærheten av telefonen din.</translation>
+<translation id="2964845078799970531">Med Enkel opplåsing kan du låse opp Chromebooken når den er i nærheten av telefonen din.</translation>
<translation id="5053803681436838483">Ny leveringsadresse</translation>
<translation id="5952256601775839173">Aktivér trefingerklikk for styreflaten.</translation>
<translation id="3280237271814976245">L&amp;agre som...</translation>
@@ -1289,7 +1289,7 @@ Forresten: Inkognitomodus (<ph name="SHORTCUT_KEY"/>) kan være kjekt neste gang
<translation id="9033857511263905942">&amp;Lim inn</translation>
<translation id="1028690605877243613">Bruk den alternative hylleutformingen.</translation>
<translation id="6736045498964449756">Beklager. Passordene samsvarer ikke!</translation>
-<translation id="4558985768677321342">Aktiver enkel opplåsing.</translation>
+<translation id="4558985768677321342">Aktiver Enkel opplåsing.</translation>
<translation id="1221825588892235038">Bare utvalg</translation>
<translation id="2227939492629426903">Aktiverer den nye brukerbildemenyen. Når den kombineres med ny profiladministrasjon, vises den nye brukerbildemenyen for administrasjon av profiler. I andre tilfeller viser den en brukerbildemeny med ny utforming, men med samme funksjonalitet som den gamle menyen. I tillegg vises et veiledningskort øverst som ber brukeren om å prøve det nye grensesnittet for administrasjon av profiler.</translation>
<translation id="5582883434676861778"><ph name="PRODUCT_NAME"/> har blokkert tilgangen til <ph name="HOST_NAME"/>. Dette nettstedet har blitt rapportert som et nettfiskingsnettsted.</translation>
@@ -3323,7 +3323,7 @@ Pass på at du ikke deler privat informasjon.</translation>
<translation id="5917011688104426363">Fokuser adressefelt i søkemodus</translation>
<translation id="3269101346657272573">Skriv inn personlig kode.</translation>
<translation id="2822854841007275488">Arabisk</translation>
-<translation id="6559948977408379772">Dette ikonet vises når du og telefonen din er i nærheten og enkel opplåsing er tilgjengelig. Bare klikk for å åpne – ingen passord kreves.</translation>
+<translation id="6559948977408379772">Dette ikonet vises når du og telefonen din er i nærheten og Enkel opplåsing er tilgjengelig. Bare klikk for å åpne – ingen passord kreves.</translation>
<translation id="5857090052475505287">Ny mappe</translation>
<translation id="7450732239874446337">Nettverks-IO er sperret.</translation>
<translation id="4003393903129308792">Aktiver én-kopis rasterenhet</translation>
@@ -3439,7 +3439,7 @@ Pass på at du ikke deler privat informasjon.</translation>
<translation id="1526560967942511387">Dokument uten tittel</translation>
<translation id="3979748722126423326">Aktiver <ph name="NETWORKDEVICE"/></translation>
<translation id="7819857487979277519">PSK (WPA eller RSN)</translation>
-<translation id="7561031016893995297">Administrer enheter med enkel opplåsing i kontoinnstillingene dine.</translation>
+<translation id="7561031016893995297">Administrer enheter med Enkel opplåsing i kontoinnstillingene dine.</translation>
<translation id="2238379619048995541">Data om frekvenstilstand</translation>
<translation id="4367133129601245178">K&amp;opier bildeadressen</translation>
<translation id="6326175484149238433">Fjern fra Chrome</translation>
@@ -4439,7 +4439,7 @@ Pass på at du ikke deler privat informasjon.</translation>
<translation id="8148264977957212129">Pinyin inndatametode</translation>
<translation id="2288278176040912387">Platespiller</translation>
<translation id="7772032839648071052">Bekreft passord</translation>
-<translation id="3676582787770338561">Slå på enkel opplåsing for denne <ph name="DEVICE_TYPE"/>-enheten.</translation>
+<translation id="3676582787770338561">Slå på Enkel opplåsing for denne <ph name="DEVICE_TYPE"/>-enheten.</translation>
<translation id="2871813825302180988">Denne kontoen er allerede i bruk på denne enheten.</translation>
<translation id="1642505962779453775">Det siste kvartalet</translation>
<translation id="3323235640813116393">Gjør det mulig å lagre sider som MHTML – én enkelt tekstfil som inneholder HTML og alle underressurser.</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_ru.xtb b/chromium/chrome/app/resources/generated_resources_ru.xtb
index 3d6da12891c..130825bcb39 100644
--- a/chromium/chrome/app/resources/generated_resources_ru.xtb
+++ b/chromium/chrome/app/resources/generated_resources_ru.xtb
@@ -3341,7 +3341,7 @@
<translation id="87377425248837826">Включение панелей</translation>
<translation id="2805707493867224476">Разрешить открытие всплывающих окон на всех сайтах</translation>
<translation id="3561217442734750519">Входное значение закрытого ключа должно предоставлять собой допустимый путь.</translation>
-<translation id="3582930987043644930">Укажите имя</translation>
+<translation id="3582930987043644930">Добавьте имя</translation>
<translation id="2984337792991268709">Сегодня, <ph name="TODAY_DAYTIME"/></translation>
<translation id="5227808808023563348">Найти предыдущий текст</translation>
<translation id="4561162271279554092">Отключить нумерацию устройств средствами WebRTC.</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_sr.xtb b/chromium/chrome/app/resources/generated_resources_sr.xtb
index 21162e2d2e0..18df83e2f33 100644
--- a/chromium/chrome/app/resources/generated_resources_sr.xtb
+++ b/chromium/chrome/app/resources/generated_resources_sr.xtb
@@ -1798,7 +1798,7 @@
<translation id="2220529011494928058">Пријави проблем</translation>
<translation id="8475107630436748034">Експеримент са TLS/SSL упозорењем</translation>
<translation id="7857823885309308051">Ово може да потраје један минут...</translation>
-<translation id="370665806235115550">Учитавање...</translation>
+<translation id="370665806235115550">Учитава се...</translation>
<translation id="2580924999637585241">Укупно: <ph name="NUMBER_OF_SHEETS"/><ph name="SHEETS_LABEL"/></translation>
<translation id="3810973564298564668">Промени</translation>
<translation id="254416073296957292">&amp;Подешавања језика...</translation>
@@ -2909,7 +2909,7 @@
<translation id="7347751611463936647">Да бисте користили овај додатак, унесите „<ph name="EXTENSION_KEYWORD"/>“ и притисните тастер TAB, а затим унесите команду или обавите претрагу.</translation>
<translation id="878431691778285679">Изгледа да већ управљате корисником са тим именом.<ph name="LINE_BREAK"/>Да ли сте желели да <ph name="BEGIN_LINK"/>увезете корисника <ph name="PROFILE_NAME"/> на овај уређај<ph name="END_LINK"/>?</translation>
<translation id="2912905526406334195"><ph name="HOST"/> жели да користи микрофон.</translation>
-<translation id="2805756323405976993">Apps</translation>
+<translation id="2805756323405976993">Апликације</translation>
<translation id="5151511998946489774">Идентитет овог веб-сајта је верификовао/ла <ph name="ISSUER"/> и он може јавно да се провери.</translation>
<translation id="1608626060424371292">Уклони овог корисника</translation>
<translation id="2779552785085366231">Ову страницу можете да додате у Покретач апликација</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_sv.xtb b/chromium/chrome/app/resources/generated_resources_sv.xtb
index d3ca69df174..ecee3646e57 100644
--- a/chromium/chrome/app/resources/generated_resources_sv.xtb
+++ b/chromium/chrome/app/resources/generated_resources_sv.xtb
@@ -2912,7 +2912,7 @@ Lämna inte ut känsliga uppgifter.</translation>
<translation id="7347751611463936647">Om du vill använda det här tillägget skriver du ”<ph name="EXTENSION_KEYWORD"/>”, trycker på tabbtangenten och anger kommandot eller sökningen.</translation>
<translation id="878431691778285679">Det ser ut som om du redan hanterar en användare med det namnet.<ph name="LINE_BREAK"/>Ville du <ph name="BEGIN_LINK"/>importera <ph name="PROFILE_NAME"/> till den här enheten<ph name="END_LINK"/>?</translation>
<translation id="2912905526406334195"><ph name="HOST"/> försöker använda din mikrofon.</translation>
-<translation id="2805756323405976993">Apps</translation>
+<translation id="2805756323405976993">Appar</translation>
<translation id="5151511998946489774">Webbplatsens identitet har verifierats av <ph name="ISSUER"/> och kan granskas offentligt.</translation>
<translation id="1608626060424371292">Ta bort den här användaren</translation>
<translation id="2779552785085366231">Den här sidan kan läggas till i startprogrammet för appar</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_sw.xtb b/chromium/chrome/app/resources/generated_resources_sw.xtb
index 00bd0a25933..7dc7aef704b 100644
--- a/chromium/chrome/app/resources/generated_resources_sw.xtb
+++ b/chromium/chrome/app/resources/generated_resources_sw.xtb
@@ -900,7 +900,7 @@ Maelezo yako ya kuingia katika akaunti yamepitwa na wakati.</translation>
<translation id="2849936225196189499">Muhimu</translation>
<translation id="9001035236599590379">Aina ya MIME</translation>
<translation id="7238207184783103780">Google Wallet haipatikani kwa sasa.</translation>
-<translation id="3451859089869683931">Nambari batili ya simu. Tafadhali angalia na ujaribu tena.</translation>
+<translation id="3451859089869683931">Nambari ya simu si sahihi. Tafadhali angalia na ujaribu tena.</translation>
<translation id="3464868340187708956">Ongeza Mtumiaji Mpya</translation>
<translation id="7986039047000333986">Usasishaji maalum wa usalama kwa <ph name="PRODUCT_NAME"/> umetekelezwa hivi karibuni; unastahili kuanzisha upya sasa ili uanze kufanya kazi (tutarejesha upya vichupo vyako).</translation>
<translation id="2787591391657537328">Ruhusu vipakuliwa ambavyo vimekatizwa kuendelea au kuanzishwa tena, kwa kutumia kipengee cha menyu ya maudhui cha Endelea.</translation>
@@ -1699,7 +1699,7 @@ Baada ya kuunda mtumiaji mpya anayesimamiwa, unaweza kusimamia mipangilio yake w
<translation id="4343792725927556911">Mipangilio mipya ya kamera na maikrofoni itaanza kufanya kazi baada ya kupakia upya ukurasa.</translation>
<translation id="3847089579761895589">Unapewa usaidizi. Je, unataka kuendelea?</translation>
<translation id="5634367113401639867">Lo! Kuna kitu kimeharibika wakati wa kusajili kiotomatiki kifaa hiki. Tafadhali jaribu tena kutoka kwenye skrini ya kuingia katika akaunti ukitumia vitufe vya Ctrl-Alt-E kwa pamoja, ua wasiliana na mhudumu wako wa usaidizi.</translation>
-<translation id="8452588990572106089">Nambari batili ya kadi. Tafadhali angalia na ujaribu tena.</translation>
+<translation id="8452588990572106089">Nambari ya kadi si sahihi. Tafadhali angalia na ujaribu tena.</translation>
<translation id="7701869757853594372">Mishiko ya MTUMIAJI</translation>
<translation id="5714678912774000384">Amilisha kichupo cha mwisho</translation>
<translation id="7654972694106903394">Zima upangaji wa chapa kwa kujaribu ugongaji.</translation>
@@ -3377,7 +3377,7 @@ Baada ya kuunda mtumiaji mpya anayesimamiwa, unaweza kusimamia mipangilio yake w
<translation id="7317938878466090505"><ph name="PROFILE_NAME"/> (sasa)</translation>
<translation id="6774230405643443657">Inawezesha usimbaji wa picha zinazotofautiana.</translation>
<translation id="2148999191776934271">Inachaji
-<ph name="HOUR"/>:<ph name="MINUTE"/> hadi ijae</translation>
+Imebakisha <ph name="HOUR"/>:<ph name="MINUTE"/> ijae</translation>
<translation id="6007237601604674381">Kusogezwa kumeshindika. <ph name="ERROR_MESSAGE"/></translation>
<translation id="907841381057066561">Imeshindwa kuunda faili ya muda ya zip wakati wa kufungasha.</translation>
<translation id="1064912851688322329">Tenganisha Akaunti yako ya Google</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_ta.xtb b/chromium/chrome/app/resources/generated_resources_ta.xtb
index 3fa98b7611b..5dd5147a588 100644
--- a/chromium/chrome/app/resources/generated_resources_ta.xtb
+++ b/chromium/chrome/app/resources/generated_resources_ta.xtb
@@ -485,7 +485,7 @@
<translation id="1556537182262721003">சுயவிவரத்தில் நீட்டிப்புக் கோப்பகத்தை நகர்த்த முடியவில்லை.</translation>
<translation id="2946640296642327832">புளூடூத்தை இயக்கு</translation>
<translation id="5866557323934807206">எதிர்கால வருகைகளுக்கு இந்த அமைப்புகளை அழி</translation>
-<translation id="126710816202626562">மொழிபெயர்ப்பிற்கான மொழி:</translation>
+<translation id="126710816202626562">மொழிபெயர்ப்பிற்கான மொழி:</translation>
<translation id="1194381338562257973">சோதனை முறையிலான குறுகியகாலப் பயன்பாடுகளை இயக்கு.</translation>
<translation id="5355351445385646029">பிரதிநிதியைத் தேர்ந்தெடுக்க Space ஐ அழுத்துக</translation>
<translation id="5453029940327926427">தாவல்களை மூடுக</translation>
@@ -3201,7 +3201,7 @@
<translation id="7211828883345145708">Chromium ஐப் பிழைத்திருத்துவதற்குப் பயன்படும் கூடுதல் விசைப்பலகைக் குறுக்குவழிகளை இயக்கும்.</translation>
<translation id="8319414634934645341">நீட்டிக்கப்பட்ட விசைப் பயன்பாடு</translation>
<translation id="6056710589053485679">இயல்பாக மீண்டும் ஏற்று</translation>
-<translation id="4563210852471260509">தொடக்க உள்ளீட்டு மொழி சீனம்</translation>
+<translation id="4563210852471260509">தொடக்க உள்ளீட்டு மொழி சீனம்</translation>
<translation id="2888807692577297075">&lt;b&gt;&quot;<ph name="SEARCH_STRING"/>&quot;&lt;/b&gt; உடன் பொருந்தும் உருப்படிகள் எதுவுமில்லை</translation>
<translation id="3908501907586732282">நீட்டிப்பை இயக்கு</translation>
<translation id="6897140037006041989">பயனர் முகவர்</translation>
@@ -4317,7 +4317,7 @@
<translation id="1903219944620007795">உரை உள்ளீட்டுக்கு, ஒரு மொழியைத் தேர்ந்தெடுத்து கிடைக்கும் உள்ளீட்டு முறைகளைக் காண்க.</translation>
<translation id="1850508293116537636">&amp;வலஞ்சுழியாகச் சுற்று</translation>
<translation id="76113267417806263">ஆம், உறுதியாக உள்ளேன்</translation>
-<translation id="7209475358897642338">உங்கள் மொழி என்ன?</translation>
+<translation id="7209475358897642338">உங்கள் மொழி என்ன?</translation>
<translation id="140520891692800925"><ph name="PROFILE_DISPLAY_NAME"/> (கண்காணிக்கப்படும் பயனர்)</translation>
<translation id="9149866541089851383">மாற்று...</translation>
<translation id="8735794438432839558">உங்கள் Chromebook இல் உள்நுழைய, இணையத்துடன் இணையவும்.</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_te.xtb b/chromium/chrome/app/resources/generated_resources_te.xtb
index 2fb550491b1..f4f659462d5 100644
--- a/chromium/chrome/app/resources/generated_resources_te.xtb
+++ b/chromium/chrome/app/resources/generated_resources_te.xtb
@@ -2911,7 +2911,7 @@
<translation id="7347751611463936647">ఈ పొడిగింపును ఉపయోగించడానికి, &quot;<ph name="EXTENSION_KEYWORD"/>&quot; టైప్ చేసి, ఆపై టాబ్ చేసి, ఆపై మీ ఆదేశం లేదా శోధనను టైప్ చెయ్యండి.</translation>
<translation id="878431691778285679">మీరు ఇప్పటికే ఆ పేరుతో ఒక వినియోగదారుని నిర్వహిస్తున్నట్లు కనిపిస్తోంది.<ph name="LINE_BREAK"/>మీరు <ph name="BEGIN_LINK"/><ph name="PROFILE_NAME"/>ని ఈ పరికరానికి దిగుమతి చేయాలనుకుంటున్నారా<ph name="END_LINK"/>?</translation>
<translation id="2912905526406334195"><ph name="HOST"/> మీ మైక్రోఫోన్‌ను ఉపయోగించాలని ఆశిస్తుంది.</translation>
-<translation id="2805756323405976993">Apps</translation>
+<translation id="2805756323405976993">యాప్స్</translation>
<translation id="5151511998946489774">ఈ వెబ్‌సైట్ యొక్క గుర్తింపు <ph name="ISSUER"/> ద్వారా ధృవీకరించబడింది మరియు బహిరంగంగా పరిశీలించవచ్చు.</translation>
<translation id="1608626060424371292">ఈ వినియోగదారుని తీసివేయండి</translation>
<translation id="2779552785085366231">ఈ పేజీని అనువర్తన లాంచర్‌కి జోడించవచ్చు</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_th.xtb b/chromium/chrome/app/resources/generated_resources_th.xtb
index 928551aecff..903e812553e 100644
--- a/chromium/chrome/app/resources/generated_resources_th.xtb
+++ b/chromium/chrome/app/resources/generated_resources_th.xtb
@@ -2871,7 +2871,7 @@
<translation id="7347751611463936647">ในการใช้ส่วนขยายนี้ ให้พิมพ์ &quot;<ph name="EXTENSION_KEYWORD"/>&quot; แล้วกด TAB ตามด้วยคำสั่งหรือการค้นหาของคุณ</translation>
<translation id="878431691778285679">ดูเหมือนว่าคุณกำลังจัดการผู้ใช้ที่ชื่อนั้นอยู่แล้ว<ph name="LINE_BREAK"/>คุณต้องการ <ph name="BEGIN_LINK"/>นำเข้า <ph name="PROFILE_NAME"/> มายังอุปกรณ์นี้<ph name="END_LINK"/>ไหม</translation>
<translation id="2912905526406334195"><ph name="HOST"/> ต้องการใช้ไมโครโฟนของคุณ</translation>
-<translation id="2805756323405976993">แอปพลิเคชัน</translation>
+<translation id="2805756323405976993">แอป</translation>
<translation id="5151511998946489774">เว็บไซต์นี้ได้รับการยืนยันตัวตนโดย <ph name="ISSUER"/> และสามารถตรวจสอบได้แบบสาธารณะ</translation>
<translation id="1608626060424371292">ลบผู้ใช้รายนี้</translation>
<translation id="2779552785085366231">สามารถเพิ่มหน้านี้ลงในเครื่องเรียกใช้งานแอป</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_zh-CN.xtb b/chromium/chrome/app/resources/generated_resources_zh-CN.xtb
index a635580e858..065da35a1c0 100644
--- a/chromium/chrome/app/resources/generated_resources_zh-CN.xtb
+++ b/chromium/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -441,9 +441,9 @@
<translation id="3855676282923585394">导入书签和设置...</translation>
<translation id="1116694919640316211">关于</translation>
<translation id="8381977081675353473">斯洛伐克语</translation>
-<translation id="2849866606957084126">已创建名为<ph name="NEW_PROFILE_NAME"/>的受监管用户。要设置该用户可以浏览哪些网站,您可以访问<ph name="BEGIN_LINK"/>www.chrome.com/manage<ph name="END_LINK"/>,在其中配置相应限制和设置。如果您未更改默认设置,<ph name="NEW_PROFILE_NAME"/>将可以浏览所有网站。
+<translation id="2849866606957084126">已创建名为“<ph name="NEW_PROFILE_NAME"/>”的受监管用户。要设置该用户可以浏览哪些网站,您可以访问<ph name="BEGIN_LINK"/>www.chrome.com/manage<ph name="END_LINK"/>,在其中配置相应限制和设置。如果您不更改默认设置,“<ph name="NEW_PROFILE_NAME"/>”将可以浏览所有网站。
- 有关详细说明,请查看<ph name="ACCOUNT_EMAIL"/>中的电子邮件。</translation>
+有关详细说明,请查看<ph name="ACCOUNT_EMAIL"/>中的电子邮件。</translation>
<translation id="4422347585044846479">修改此页的书签</translation>
<translation id="1965624977906726414">无需特殊权限。</translation>
<translation id="2452539774207938933">切换到用户:<ph name="PROFILE_NAME"/></translation>
@@ -588,7 +588,7 @@
“<ph name="PRODUCT_NAME"/>”不会使用不安全的连接。</translation>
<translation id="7851858861565204677">来自其他设备的同步</translation>
<translation id="1662837784918284394">(无)</translation>
-<translation id="2573269395582837871">选择照片和名称</translation>
+<translation id="2573269395582837871">选择照片和名字</translation>
<translation id="5910363049092958439">图片存储为(&amp;V)...</translation>
<translation id="8793975580333839911">运行此插件</translation>
<translation id="1864146862702347178">启用滚动联想查询</translation>
@@ -4172,7 +4172,7 @@
<translation id="1317502925920562130">这是您想要的主页吗?</translation>
<translation id="7763146744708046348">请勿汇总数据 - 这可能会使速度变慢!</translation>
<translation id="8616352574453019203">ID为“<ph name="IMPORT_ID"/>”的共享模块未列入白名单,无法导入。</translation>
-<translation id="5626134646977739690">名称:</translation>
+<translation id="5626134646977739690">名字:</translation>
<translation id="4899837262951879307">触摸滚动模式。</translation>
<translation id="5854409662653665676">如果您经常遇到问题,可以试着用以下方法解决此模块存在的问题:</translation>
<translation id="3776796446459804932">此扩展程序违反了 Chrome 网上应用店政策。</translation>
@@ -4852,7 +4852,7 @@
<translation id="3807747707162121253">取消(&amp;C)</translation>
<translation id="202352106777823113">下载时间过长,网络已停止下载。</translation>
<translation id="6155817405098385604">在无法使用 GPU 的情况下,不改用 3D 软件光栅器。</translation>
-<translation id="3306897190788753224">暂时停用个性化转化、基于历史记录的建议以及用户词典。</translation>
+<translation id="3306897190788753224">暂时停用个性化转化、基于历史记录的建议以及用户字典。</translation>
<translation id="8941882480823041320">上一个字</translation>
<translation id="2489435327075806094">指针速度:</translation>
<translation id="2574102660421949343">允许来自 <ph name="DOMAIN"/> 的 Cookie。</translation>
diff --git a/chromium/chrome/app/resources/generated_resources_zh-TW.xtb b/chromium/chrome/app/resources/generated_resources_zh-TW.xtb
index 892737a1cdb..5d06410870e 100644
--- a/chromium/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chromium/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -2700,7 +2700,7 @@
<translation id="4278390842282768270">允許</translation>
<translation id="2074527029802029717">取消分頁固定</translation>
<translation id="1533897085022183721">電池可使用時間低於 <ph name="MINUTES"/>。</translation>
-<translation id="7382160026931194400">已儲存的內容設定及搜尋引擎不會遭到清除,而這可能反映您的瀏覽習慣。</translation>
+<translation id="7382160026931194400">已儲存的|內容設定|和#搜尋引擎#資料不會被清除,而且可能會反映您的瀏覽習慣。</translation>
<translation id="7503821294401948377">無法載入瀏覽器動作的圖示「<ph name="ICON"/>」。</translation>
<translation id="4809190954660909198">新增帳單詳細資訊...</translation>
<translation id="3942946088478181888">我需要進一步資訊</translation>
@@ -5237,4 +5237,4 @@
<translation id="7943385054491506837">Colemak 美式配置</translation>
<translation id="8203365863660628138">確認安裝</translation>
<translation id="2533972581508214006">回報錯誤的警告</translation>
-</translationbundle> \ No newline at end of file
+</translationbundle>
diff --git a/chromium/chrome/app/resources/google_chrome_strings_hi.xtb b/chromium/chrome/app/resources/google_chrome_strings_hi.xtb
index 748a591d906..544a176e133 100644
--- a/chromium/chrome/app/resources/google_chrome_strings_hi.xtb
+++ b/chromium/chrome/app/resources/google_chrome_strings_hi.xtb
@@ -158,7 +158,7 @@
<ph name="ADVANCED_TITLE"/>
पर जाएं और &quot;<ph name="NO_PREFETCH_DESCRIPTION"/>&quot; का चयन रद्द करें.
यदि इससे समस्या का समाधान नहीं होता, तो हम बेहतर प्रदर्शन के लिए इस
- विकल्प को पुन: चुनने की अनुशंसा करते हैं.</translation>
+ विकल्प को पुन: चुनने की सुझाव देते हैं.</translation>
<translation id="6235018212288296708">mDNS ट्रैफ़िक की अनुमति देने के लिए Google Chrome हेतु इनबाउंड नियम.</translation>
<translation id="61852838583753520">&amp;Chrome OS को अपडेट करें</translation>
<translation id="5028489144783860647">Google Chrome आपका डेटा समन्‍वयित नहीं कर सका. कृपया अपना समन्‍वयन पासफ़्रेज़ अपडेट करें.</translation>
diff --git a/chromium/chrome/browser/resources/chromeos/chromevox/chromevox/injected/event_watcher.js b/chromium/chrome/browser/resources/chromeos/chromevox/chromevox/injected/event_watcher.js
index 6aa21cf2deb..1a67836a464 100644
--- a/chromium/chrome/browser/resources/chromeos/chromevox/chromevox/injected/event_watcher.js
+++ b/chromium/chrome/browser/resources/chromeos/chromevox/chromevox/injected/event_watcher.js
@@ -582,9 +582,12 @@ cvox.ChromeVoxEventWatcher.mouseClickEventWatcher = function(evt) {
* @return {boolean} True if the default action should be performed.
*/
cvox.ChromeVoxEventWatcher.mouseOverEventWatcher = function(evt) {
- var hasTouch = 'ontouchstart' in window;
+ // Chrome simulates the meta key for mouse events generated from
+ // touch exploration.
+ var isTouchEvent = (evt.metaKey);
+
var mouseoverDelayMs = cvox.ChromeVoxEventWatcher.mouseoverDelayMs;
- if (hasTouch) {
+ if (isTouchEvent) {
mouseoverDelayMs = 0;
} else if (!cvox.ChromeVoxEventWatcher.focusFollowsMouse) {
return true;
diff --git a/chromium/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb b/chromium/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb
index 32c7ccdb1bb..6f560911127 100644
--- a/chromium/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb
+++ b/chromium/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_hi.xtb
@@ -121,7 +121,7 @@
<translation id="5080758118274074384">डबल क्लिक किया गया</translation>
<translation id="6281876499889881039">अगला समान तत्व.</translation>
<translation id="8767968232364267681">अगले स्‍तर 4 का शीर्षक</translation>
-<translation id="5042770794184672516">वाक् वॉल्‍यूम बढ़ाएं</translation>
+<translation id="5042770794184672516">बोली वॉल्‍यूम बढ़ाएं</translation>
<translation id="3865806312596179194">mnu itm</translation>
<translation id="3149472044574196936">अगली पंक्ति</translation>
<translation id="5866042630553435010">आंशिक रूप से चेक किया गया</translation>
@@ -135,7 +135,7 @@
<translation id="6364795331201459219">h6</translation>
<translation id="1156132699680778945">1 लिंक</translation>
<translation id="3629895152177651589">hd</translation>
-<translation id="5876817486144482042">वाक् वॉल्‍यूम घटाएं</translation>
+<translation id="5876817486144482042">बोली वॉल्‍यूम घटाएं</translation>
<translation id="5608798115546226984">स्वतः पूर्णता इनलाइन</translation>
<translation id="5963413905009737549">अनुभाग</translation>
<translation id="3172700825913348768">{COUNT,plural, =1{रिक्ति}one{# रिक्तियां}other{# रिक्तियां}}</translation>
@@ -224,7 +224,7 @@
<translation id="962913030769097253">अगले स्तर 1 का शीर्षक</translation>
<translation id="3616113530831147358">ऑडियो</translation>
<translation id="3406283310380167331">फ़ॉर्म सूची दिखाएं</translation>
-<translation id="225732394367814946">वाक् की दर बढ़ाएं</translation>
+<translation id="225732394367814946">बोली की दर बढ़ाएं</translation>
<translation id="3093176084511590672">अगला स्थानचिह्न</translation>
<translation id="5402367795255837559">ब्रेल</translation>
<translation id="1452236308086741652"><ph name="VALUE"/>, पासवर्ड पाठ बॉक्‍स</translation>
@@ -354,7 +354,7 @@
<translation id="1653266918374749391">पिछले स्‍तर 3 का शीर्षक</translation>
<translation id="3493915602752813531">कोई अगला एंकर नहीं.</translation>
<translation id="5919442531159595654">प्रतिलिपि बनाएं.</translation>
-<translation id="3712520970944678024">वाक् नियंत्रित करना</translation>
+<translation id="3712520970944678024">बोली नियंत्रित करना</translation>
<translation id="3392045790598181549"><ph name="NAME"/>, मेनू आइटम</translation>
<translation id="5851548754964597211">टैब सूची</translation>
<translation id="5054047268577924192">पिछला सूची आइटम</translation>
@@ -430,7 +430,7 @@
<translation id="7693840228159394336">पिछला रेडियो बटन</translation>
<translation id="844681116543532394">कोई पिछला चेकबॉक्स नहीं.</translation>
<translation id="3030432017085518523">मेनू आइटम रेडियो बटन</translation>
-<translation id="4372705107434148843">वाक् रोकें</translation>
+<translation id="4372705107434148843">बोली रोकें</translation>
<translation id="2100350898815792233">सभी विराम चिह्न</translation>
<translation id="7226216518520804442">lst</translation>
<translation id="4206289001967551965">तालिका के अंदर</translation>
@@ -484,7 +484,7 @@
<translation id="7609342235116740824">वर्तमान पृष्ठ का URL प्रदर्शित करें</translation>
<translation id="5102981729317424850">टूल बार</translation>
<translation id="1810107444790159527">सूची बॉक्स</translation>
-<translation id="948171205378458592">वाक् की दर घटाएं</translation>
+<translation id="948171205378458592">बोली की दर घटाएं</translation>
<translation id="4842108708071771135">कोई अगला ब्लॉककोट नहीं.</translation>
<translation id="3286390186030710347">स्लाइडर</translation>
<translation id="7041173719775863268">चयन समाप्त करें</translation>
diff --git a/chromium/chrome/browser/resources/chromeos/login/oobe_screen_hid_detection.css b/chromium/chrome/browser/resources/chromeos/login/oobe_screen_hid_detection.css
index 4e4da075e91..401eab307ca 100644
--- a/chromium/chrome/browser/resources/chromeos/login/oobe_screen_hid_detection.css
+++ b/chromium/chrome/browser/resources/chromeos/login/oobe_screen_hid_detection.css
@@ -19,12 +19,16 @@
}
#hid-detection #hid-prerequisite-msg {
- padding: 10px 0 30px;
+ padding: 10px 0 20px;
}
#hid-keyboard-block,
#hid-mouse-block {
- padding: 20px 0;
+ padding: 10px 0;
+}
+
+#hid-keyboard-block {
+ padding-bottom: 30px;
}
#hid-keyboard-icon,
@@ -42,6 +46,7 @@
#hid-mouse-label,
#hid-keyboard-label {
+ -webkit-padding-start: 10px;
display: inline;
}
@@ -63,7 +68,9 @@
}
#hid-detection #hid-keyboard-pincode {
- padding: 10px 0 20px 40px;
+ -webkit-padding-start: 60px;
+ padding-bottom: 15px;
+ padding-top: 15px;
}
.searching #hid-keyboard-label-searching,
@@ -89,6 +96,4 @@
.pairing #hid-keyboard-pincode {
display: block;
- margin-left: 40px;
- padding: 15px 0;
}
diff --git a/chromium/chrome/browser/resources/gcm_internals.html b/chromium/chrome/browser/resources/gcm_internals.html
index 99a5e3b9e5c..d2dd1af0e43 100644
--- a/chromium/chrome/browser/resources/gcm_internals.html
+++ b/chromium/chrome/browser/resources/gcm_internals.html
@@ -1,4 +1,4 @@
-<!DOCTYPE HTML>
+<!DOCTYPE HTML>
<html i18n-values="dir:textdirection">
<head>
<meta charset="utf-8">
diff --git a/chromium/chrome/browser/resources/hotword_helper/manifest.json b/chromium/chrome/browser/resources/hotword_helper/manifest.json
index eb21576e16a..889cf30c983 100644
--- a/chromium/chrome/browser/resources/hotword_helper/manifest.json
+++ b/chromium/chrome/browser/resources/hotword_helper/manifest.json
@@ -3,7 +3,7 @@
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDagiQy1VGkO2CHJSjVh7eU5GtuBuOlg2/cTZt7203AcevqpcDd+65S2/yd9KAELYcU6pK8nHVGYBMI6s0u+0RgXfIJ0eFOlTlgfAQWHvg8ovHtJlFJd1COrOkbntD9+s9Jobr3ldmow87aZF1bVHUY4khVP56cZe6adlVw2wK31QIDAQAB",
"name": "hotword helper",
- "version": "0.0.1.0",
+ "version": "0.0.2.0",
"manifest_version": 2,
"background": {
diff --git a/chromium/chrome/browser/resources/options/chromeos/bluetooth.css b/chromium/chrome/browser/resources/options/chromeos/bluetooth.css
index 3c849a981ed..b93849ec298 100644
--- a/chromium/chrome/browser/resources/options/chromeos/bluetooth.css
+++ b/chromium/chrome/browser/resources/options/chromeos/bluetooth.css
@@ -108,18 +108,12 @@
.bluetooth-keyboard-button {
-webkit-padding-end: 15px;
-webkit-padding-start: 15px;
- background-image: linear-gradient(to bottom,
- #e9e9e9,
- #f5f5f5);
border: 1px solid #ccc;
border-radius: 4px;
- box-shadow: 0 0 0 1px #888,
- inset 0 1px 1px 1px #fff,
- inset 0 -1px 1px 1px #eee;
+ box-shadow: 0 0 0 1px #222;
color: #222;
display: inline-block;
- font-size: 14px;
- font-weight: 600;
+ font-size: 16px;
height: 38px;
line-height: 38px;
margin: 0 10px 0 0;
@@ -154,20 +148,15 @@
}
.bluetooth-keyboard-button.key-next {
- background-image: -webkit-linear-gradient(top,
- rgb(77, 144, 254),
- rgb(71, 135, 237));
- border: 1px solid rgb(77, 144, 254);
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.07),
- inset 0 1px 1px 1px #fff,
- inset 0 -1px 1px 1px rgb(77, 144, 254);
+ background: rgb(77, 144, 254);
+ background-image: none;
+ border: 2px solid rgb(77, 144, 254);
+ box-shadow: none;
color: #fff;
}
.bluetooth-keyboard-button.key-untyped {
border: 1px solid #d4d4d4;
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.07),
- inset 0 1px 1px 1px #fff,
- inset 0 -1px 1px 1px #ddd;
+ box-shadow: 0 0 0 1px #888;
color: #666;
}
diff --git a/chromium/chrome/browser/resources/options/search_page.js b/chromium/chrome/browser/resources/options/search_page.js
index cd72ba5f383..5d65f7c575e 100644
--- a/chromium/chrome/browser/resources/options/search_page.js
+++ b/chromium/chrome/browser/resources/options/search_page.js
@@ -269,10 +269,12 @@ cr.define('options', function() {
// Cleanup the search query string.
text = SearchPage.canonicalizeQuery(text);
- // Set the hash on the current page, and the enclosing uber page
+ // Set the hash on the current page, and the enclosing uber page. Only do
+ // this if the page is not current. See https://crbug.com/401004.
var hash = text ? '#' + encodeURIComponent(text) : '';
var path = text ? this.name : '';
- uber.pushState({}, path + hash);
+ if (location.hash != hash || location.pathname != '/' + path)
+ uber.pushState({}, path + hash);
// Toggle the search page if necessary.
if (text) {
diff --git a/chromium/chrome/chrome_tests_unit.gypi b/chromium/chrome/chrome_tests_unit.gypi
index 0e3721c3bc2..bdfcec75eb1 100644
--- a/chromium/chrome/chrome_tests_unit.gypi
+++ b/chromium/chrome/chrome_tests_unit.gypi
@@ -966,6 +966,7 @@
'browser/extensions/extension_garbage_collector_chromeos_unittest.cc',
'browser/extensions/extension_gcm_app_handler_unittest.cc',
'browser/extensions/extension_icon_manager_unittest.cc',
+ 'browser/extensions/extension_install_prompt_unittest.cc',
'browser/extensions/extension_message_bubble_controller_unittest.cc',
'browser/extensions/extension_prefs_unittest.cc',
'browser/extensions/extension_prefs_unittest.h',
diff --git a/chromium/chrome/third_party/chromevox/chromeVoxChromeBackgroundScript.js b/chromium/chrome/third_party/chromevox/chromeVoxChromeBackgroundScript.js
index 9ee7347bf28..9665b1f27fb 100644
--- a/chromium/chrome/third_party/chromevox/chromeVoxChromeBackgroundScript.js
+++ b/chromium/chrome/third_party/chromevox/chromeVoxChromeBackgroundScript.js
@@ -1589,7 +1589,7 @@ cvox.ChromeVoxEventWatcher.setLastFocusedNode_=function(a){cvox.ChromeVoxEventWa
cvox.ChromeVoxEventWatcher.mutationHandler=function(a){if(cvox.ChromeVoxEventSuspender.areEventsSuspended())return!0;cvox.ChromeVox.navigationManager.updateIndicatorIfChanged();cvox.LiveRegions.processMutations(a,function(a,c){var d=new window.Event("LiveRegion");d.navDescriptions=c;d.assertive=a;cvox.ChromeVoxEventWatcher.addEvent(d,!0);return!0})};
cvox.ChromeVoxEventWatcher.mouseClickEventWatcher=function(a){if(a.fromCvox)return!0;if(cvox.ChromeVox.host.mustRedispatchClickEvent())return cvox.ChromeVoxUserCommands.wasMouseClicked=!0,a.stopPropagation(),a.preventDefault(),cvox.Focuser.setFocus(cvox.ChromeVox.navigationManager.getCurrentNode()),cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("element_clicked"),cvox.ChromeVoxEventWatcher.queueMode_(),cvox.AbstractTts.PERSONALITY_ANNOTATION),a=cvox.ChromeVox.navigationManager.getCurrentNode(),
cvox.DomUtil.clickElem(a,!1,!0),!1;cvox.ChromeVoxEventWatcher.addEvent(a);return cvox.ChromeVoxUserCommands.wasMouseClicked=!0};
-cvox.ChromeVoxEventWatcher.mouseOverEventWatcher=function(a){var b="ontouchstart"in window,c=cvox.ChromeVoxEventWatcher.mouseoverDelayMs;if(b)c=0;else if(!cvox.ChromeVoxEventWatcher.focusFollowsMouse)return!0;if(cvox.DomUtil.isDescendantOfNode(cvox.ChromeVoxEventWatcher.announcedMouseOverNode,a.target)||a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode)return!0;cvox.ChromeVoxEventWatcher.pendingMouseOverNode=a.target;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId&&(window.clearTimeout(cvox.ChromeVoxEventWatcher.mouseOverTimeoutId),
+cvox.ChromeVoxEventWatcher.mouseOverEventWatcher=function(a){var b=a.metaKey,c=cvox.ChromeVoxEventWatcher.mouseoverDelayMs;if(b)c=0;else if(!cvox.ChromeVoxEventWatcher.focusFollowsMouse)return!0;if(cvox.DomUtil.isDescendantOfNode(cvox.ChromeVoxEventWatcher.announcedMouseOverNode,a.target)||a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode)return!0;cvox.ChromeVoxEventWatcher.pendingMouseOverNode=a.target;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId&&(window.clearTimeout(cvox.ChromeVoxEventWatcher.mouseOverTimeoutId),
cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null);if(a.target.tagName&&"BODY"==a.target.tagName)return cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null,cvox.ChromeVoxEventWatcher.announcedMouseOverNode=null,!0;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=window.setTimeout(function(){cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null;if(a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode){cvox.ChromeVoxEventWatcher.shouldFlushNextUtterance=!0;cvox.ChromeVox.navigationManager.stopReading(!0);
var b=a.target;cvox.Focuser.setFocus(b);cvox.ApiImplementation.syncToNode(b,!0,cvox.ChromeVoxEventWatcher.queueMode_());cvox.ChromeVoxEventWatcher.announcedMouseOverNode=b}},c);return!0};
cvox.ChromeVoxEventWatcher.mouseOutEventWatcher=function(a){a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode&&(cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null,cvox.ChromeVoxEventWatcher.mouseOverTimeoutId&&(window.clearTimeout(cvox.ChromeVoxEventWatcher.mouseOverTimeoutId),cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null));return!0};
diff --git a/chromium/chrome/third_party/chromevox/chromeVoxChromeOptionsScript.js b/chromium/chrome/third_party/chromevox/chromeVoxChromeOptionsScript.js
index 759b5c90145..4637e9ed02b 100644
--- a/chromium/chrome/third_party/chromevox/chromeVoxChromeOptionsScript.js
+++ b/chromium/chrome/third_party/chromevox/chromeVoxChromeOptionsScript.js
@@ -1525,7 +1525,7 @@ cvox.ChromeVoxEventWatcher.setLastFocusedNode_=function(a){cvox.ChromeVoxEventWa
cvox.ChromeVoxEventWatcher.mutationHandler=function(a){if(cvox.ChromeVoxEventSuspender.areEventsSuspended())return!0;cvox.ChromeVox.navigationManager.updateIndicatorIfChanged();cvox.LiveRegions.processMutations(a,function(a,c){var d=new window.Event("LiveRegion");d.navDescriptions=c;d.assertive=a;cvox.ChromeVoxEventWatcher.addEvent(d,!0);return!0})};
cvox.ChromeVoxEventWatcher.mouseClickEventWatcher=function(a){if(a.fromCvox)return!0;if(cvox.ChromeVox.host.mustRedispatchClickEvent())return cvox.ChromeVoxUserCommands.wasMouseClicked=!0,a.stopPropagation(),a.preventDefault(),cvox.Focuser.setFocus(cvox.ChromeVox.navigationManager.getCurrentNode()),cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("element_clicked"),cvox.ChromeVoxEventWatcher.queueMode_(),cvox.AbstractTts.PERSONALITY_ANNOTATION),a=cvox.ChromeVox.navigationManager.getCurrentNode(),
cvox.DomUtil.clickElem(a,!1,!0),!1;cvox.ChromeVoxEventWatcher.addEvent(a);return cvox.ChromeVoxUserCommands.wasMouseClicked=!0};
-cvox.ChromeVoxEventWatcher.mouseOverEventWatcher=function(a){var b="ontouchstart"in window,c=cvox.ChromeVoxEventWatcher.mouseoverDelayMs;if(b)c=0;else if(!cvox.ChromeVoxEventWatcher.focusFollowsMouse)return!0;if(cvox.DomUtil.isDescendantOfNode(cvox.ChromeVoxEventWatcher.announcedMouseOverNode,a.target)||a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode)return!0;cvox.ChromeVoxEventWatcher.pendingMouseOverNode=a.target;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId&&(window.clearTimeout(cvox.ChromeVoxEventWatcher.mouseOverTimeoutId),
+cvox.ChromeVoxEventWatcher.mouseOverEventWatcher=function(a){var b=a.metaKey,c=cvox.ChromeVoxEventWatcher.mouseoverDelayMs;if(b)c=0;else if(!cvox.ChromeVoxEventWatcher.focusFollowsMouse)return!0;if(cvox.DomUtil.isDescendantOfNode(cvox.ChromeVoxEventWatcher.announcedMouseOverNode,a.target)||a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode)return!0;cvox.ChromeVoxEventWatcher.pendingMouseOverNode=a.target;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId&&(window.clearTimeout(cvox.ChromeVoxEventWatcher.mouseOverTimeoutId),
cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null);if(a.target.tagName&&"BODY"==a.target.tagName)return cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null,cvox.ChromeVoxEventWatcher.announcedMouseOverNode=null,!0;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=window.setTimeout(function(){cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null;if(a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode){cvox.ChromeVoxEventWatcher.shouldFlushNextUtterance=!0;cvox.ChromeVox.navigationManager.stopReading(!0);
var b=a.target;cvox.Focuser.setFocus(b);cvox.ApiImplementation.syncToNode(b,!0,cvox.ChromeVoxEventWatcher.queueMode_());cvox.ChromeVoxEventWatcher.announcedMouseOverNode=b}},c);return!0};
cvox.ChromeVoxEventWatcher.mouseOutEventWatcher=function(a){a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode&&(cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null,cvox.ChromeVoxEventWatcher.mouseOverTimeoutId&&(window.clearTimeout(cvox.ChromeVoxEventWatcher.mouseOverTimeoutId),cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null));return!0};
diff --git a/chromium/chrome/third_party/chromevox/chromeVoxChromePageScript.js b/chromium/chrome/third_party/chromevox/chromeVoxChromePageScript.js
index af97838c607..32ba9af623f 100644
--- a/chromium/chrome/third_party/chromevox/chromeVoxChromePageScript.js
+++ b/chromium/chrome/third_party/chromevox/chromeVoxChromePageScript.js
@@ -1474,7 +1474,7 @@ cvox.ChromeVoxEventWatcher.setLastFocusedNode_=function(a){cvox.ChromeVoxEventWa
cvox.ChromeVoxEventWatcher.mutationHandler=function(a){if(cvox.ChromeVoxEventSuspender.areEventsSuspended())return!0;cvox.ChromeVox.navigationManager.updateIndicatorIfChanged();cvox.LiveRegions.processMutations(a,function(a,c){var d=new window.Event("LiveRegion");d.navDescriptions=c;d.assertive=a;cvox.ChromeVoxEventWatcher.addEvent(d,!0);return!0})};
cvox.ChromeVoxEventWatcher.mouseClickEventWatcher=function(a){if(a.fromCvox)return!0;if(cvox.ChromeVox.host.mustRedispatchClickEvent())return cvox.ChromeVoxUserCommands.wasMouseClicked=!0,a.stopPropagation(),a.preventDefault(),cvox.Focuser.setFocus(cvox.ChromeVox.navigationManager.getCurrentNode()),cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("element_clicked"),cvox.ChromeVoxEventWatcher.queueMode_(),cvox.AbstractTts.PERSONALITY_ANNOTATION),a=cvox.ChromeVox.navigationManager.getCurrentNode(),
cvox.DomUtil.clickElem(a,!1,!0),!1;cvox.ChromeVoxEventWatcher.addEvent(a);return cvox.ChromeVoxUserCommands.wasMouseClicked=!0};
-cvox.ChromeVoxEventWatcher.mouseOverEventWatcher=function(a){var b="ontouchstart"in window,c=cvox.ChromeVoxEventWatcher.mouseoverDelayMs;if(b)c=0;else if(!cvox.ChromeVoxEventWatcher.focusFollowsMouse)return!0;if(cvox.DomUtil.isDescendantOfNode(cvox.ChromeVoxEventWatcher.announcedMouseOverNode,a.target)||a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode)return!0;cvox.ChromeVoxEventWatcher.pendingMouseOverNode=a.target;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId&&(window.clearTimeout(cvox.ChromeVoxEventWatcher.mouseOverTimeoutId),
+cvox.ChromeVoxEventWatcher.mouseOverEventWatcher=function(a){var b=a.metaKey,c=cvox.ChromeVoxEventWatcher.mouseoverDelayMs;if(b)c=0;else if(!cvox.ChromeVoxEventWatcher.focusFollowsMouse)return!0;if(cvox.DomUtil.isDescendantOfNode(cvox.ChromeVoxEventWatcher.announcedMouseOverNode,a.target)||a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode)return!0;cvox.ChromeVoxEventWatcher.pendingMouseOverNode=a.target;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId&&(window.clearTimeout(cvox.ChromeVoxEventWatcher.mouseOverTimeoutId),
cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null);if(a.target.tagName&&"BODY"==a.target.tagName)return cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null,cvox.ChromeVoxEventWatcher.announcedMouseOverNode=null,!0;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=window.setTimeout(function(){cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null;if(a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode){cvox.ChromeVoxEventWatcher.shouldFlushNextUtterance=!0;cvox.ChromeVox.navigationManager.stopReading(!0);
var b=a.target;cvox.Focuser.setFocus(b);cvox.ApiImplementation.syncToNode(b,!0,cvox.ChromeVoxEventWatcher.queueMode_());cvox.ChromeVoxEventWatcher.announcedMouseOverNode=b}},c);return!0};
cvox.ChromeVoxEventWatcher.mouseOutEventWatcher=function(a){a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode&&(cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null,cvox.ChromeVoxEventWatcher.mouseOverTimeoutId&&(window.clearTimeout(cvox.ChromeVoxEventWatcher.mouseOverTimeoutId),cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null));return!0};
diff --git a/chromium/chrome_elf/blacklist/blacklist.cc b/chromium/chrome_elf/blacklist/blacklist.cc
index efb9c97cd20..4026a0ac201 100644
--- a/chromium/chrome_elf/blacklist/blacklist.cc
+++ b/chromium/chrome_elf/blacklist/blacklist.cc
@@ -34,11 +34,19 @@ const wchar_t* g_troublesome_dlls[kTroublesomeDllsMaxCount] = {
// See crbug.com/379218.
L"activedetect64.dll", // Lenovo One Key Theater.
L"bitguard.dll", // Unknown (suspected malware).
+ L"cespy.dll", // CovenantEyes.
L"chrmxtn.dll", // Unknown (keystroke logger).
+ L"cplushook.dll", // Unknown (suspected malware).
L"datamngr.dll", // Unknown (suspected adware).
L"hk.dll", // Unknown (keystroke logger).
+ L"libapi2hook.dll", // V-Bates.
+ L"libinject.dll", // V-Bates.
+ L"libinject2.dll", // V-Bates.
+ L"libredir2.dll", // V-Bates.
L"libsvn_tsvn32.dll", // TortoiseSVN.
+ L"libwinhook.dll", // V-Bates.
L"lmrn.dll", // Unknown.
+ L"minisp.dll", // Unknown (suspected malware).
L"scdetour.dll", // Quick Heal Antivirus.
// See crbug.com/382561.
L"systemk.dll", // Unknown (suspected adware).
diff --git a/chromium/codereview.settings b/chromium/codereview.settings
index 76514e97e34..9789920c941 100644
--- a/chromium/codereview.settings
+++ b/chromium/codereview.settings
@@ -1,7 +1,7 @@
# This file is used by gcl to get repository specific information.
CODE_REVIEW_SERVER: codereview.chromium.org
CC_LIST: chromium-reviews@chromium.org
-VIEW_VC: https://src.chromium.org/viewvc/chrome?view=rev&revision=
+VIEW_VC: https://chromium.googlesource.com/chromium/src/+/
STATUS: http://chromium-status.appspot.com/status
TRY_ON_UPLOAD: True
TRYSERVER_SVN_URL: svn://svn.chromium.org/chrome-try/try
@@ -9,3 +9,4 @@ GITCL_PREUPLOAD: http://src.chromium.org/viewvc/trunk/tools/depot_tools/git-cl-u
GITCL_PREDCOMMIT: http://src.chromium.org/viewvc/trunk/tools/depot_tools/git-cl-upload-hook?revision=HEAD&root=chrome
LINT_IGNORE_REGEX: webkit/api/.*
PROJECT: chromium
+PENDING_REF_PREFIX: refs/pending/
diff --git a/chromium/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/chromium/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
index d373f7b8757..85169bda025 100644
--- a/chromium/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
+++ b/chromium/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -93,8 +93,27 @@ class DumpAccessibilityTreeTest : public ContentBrowserTest {
filters->push_back(Filter(base::ASCIIToUTF16("*=''"), Filter::DENY));
}
- void ParseFilters(const std::string& test_html,
- std::vector<Filter>* filters) {
+ // Parse the test html file and parse special directives, usually
+ // beginning with an '@' and inside an HTML comment, that control how the
+ // test is run and how the results are interpreted.
+ //
+ // When the accessibility tree is dumped as text, each attribute is
+ // run through filters before being appended to the string. An "allow"
+ // filter specifies attribute strings that should be dumped, and a "deny"
+ // filter specifies strings that should be suppressed. As an example,
+ // @MAC-ALLOW:AXSubrole=* means that the AXSubrole attribute should be
+ // printed, while @MAC-ALLOW:AXSubrole=AXList* means that any subrole
+ // beginning with the text "AXList" should be printed.
+ //
+ // The @WAIT-FOR:text directive allows the test to specify that the document
+ // may dynamically change after initial load, and the test is to wait
+ // until the given string (e.g., "text") appears in the resulting dump.
+ // A test can make some changes to the document, then append a magic string
+ // indicating that the test is done, and this framework will wait for that
+ // string to appear before comparing the results.
+ void ParseHtmlForExtraDirectives(const std::string& test_html,
+ std::vector<Filter>* filters,
+ std::string* wait_for) {
std::vector<std::string> lines;
base::SplitString(test_html, '\n', &lines);
for (std::vector<std::string>::const_iterator iter = lines.begin();
@@ -107,6 +126,7 @@ class DumpAccessibilityTreeTest : public ContentBrowserTest {
AccessibilityTreeFormatter::GetAllowString();
const std::string& deny_str =
AccessibilityTreeFormatter::GetDenyString();
+ const std::string& wait_str = "@WAIT-FOR:";
if (StartsWithASCII(line, allow_empty_str, true)) {
filters->push_back(
Filter(base::UTF8ToUTF16(line.substr(allow_empty_str.size())),
@@ -119,6 +139,8 @@ class DumpAccessibilityTreeTest : public ContentBrowserTest {
filters->push_back(Filter(base::UTF8ToUTF16(
line.substr(deny_str.size())),
Filter::DENY));
+ } else if (StartsWithASCII(line, wait_str, true)) {
+ *wait_for = line.substr(wait_str.size());
}
}
}
@@ -170,32 +192,52 @@ void DumpAccessibilityTreeTest::RunTest(
return;
}
+ // Parse filters and other directives in the test file.
+ std::vector<Filter> filters;
+ std::string wait_for;
+ AddDefaultFilters(&filters);
+ ParseHtmlForExtraDirectives(html_contents, &filters, &wait_for);
+
// Load the page.
base::string16 html_contents16;
html_contents16 = base::UTF8ToUTF16(html_contents);
GURL url = GetTestUrl("accessibility",
html_file.BaseName().MaybeAsASCII().c_str());
- AccessibilityNotificationWaiter waiter(
- shell(), AccessibilityModeComplete,
- ui::AX_EVENT_LOAD_COMPLETE);
+
+ // If there's a @WAIT-FOR directive, set up an accessibility notification
+ // waiter that returns on any event; we'll stop when we get the text we're
+ // waiting for, or time out. Otherwise just wait specifically for
+ // the "load complete" event.
+ scoped_ptr<AccessibilityNotificationWaiter> waiter;
+ if (!wait_for.empty()) {
+ waiter.reset(new AccessibilityNotificationWaiter(
+ shell(), AccessibilityModeComplete, ui::AX_EVENT_NONE));
+ } else {
+ waiter.reset(new AccessibilityNotificationWaiter(
+ shell(), AccessibilityModeComplete, ui::AX_EVENT_LOAD_COMPLETE));
+ }
+
+ // Load the test html.
NavigateToURL(shell(), url);
- waiter.WaitForNotification();
+ // Wait for notifications. If there's a @WAIT-FOR directive, break when
+ // the text we're waiting for appears in the dump, otherwise break after
+ // the first notification, which will be a load complete.
RenderWidgetHostViewBase* host_view = static_cast<RenderWidgetHostViewBase*>(
shell()->web_contents()->GetRenderWidgetHostView());
- AccessibilityTreeFormatter formatter(
- host_view->GetBrowserAccessibilityManager()->GetRoot());
-
- // Parse filters in the test file.
- std::vector<Filter> filters;
- AddDefaultFilters(&filters);
- ParseFilters(html_contents, &filters);
- formatter.SetFilters(filters);
+ std::string actual_contents;
+ do {
+ waiter->WaitForNotification();
+ base::string16 actual_contents_utf16;
+ AccessibilityTreeFormatter formatter(
+ host_view->GetBrowserAccessibilityManager()->GetRoot());
+ formatter.SetFilters(filters);
+ formatter.FormatAccessibilityTree(&actual_contents_utf16);
+ actual_contents = base::UTF16ToUTF8(actual_contents_utf16);
+ } while (!wait_for.empty() &&
+ actual_contents.find(wait_for) == std::string::npos);
// Perform a diff (or write the initial baseline).
- base::string16 actual_contents_utf16;
- formatter.FormatAccessibilityTree(&actual_contents_utf16);
- std::string actual_contents = base::UTF16ToUTF8(actual_contents_utf16);
std::vector<std::string> actual_lines, expected_lines;
Tokenize(actual_contents, "\n", &actual_lines);
Tokenize(expected_contents, "\n", &expected_lines);
@@ -515,6 +557,10 @@ IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityTableSpans) {
RunTest(FILE_PATH_LITERAL("table-spans.html"));
}
+IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest, AccessibilityTransition) {
+ RunTest(FILE_PATH_LITERAL("transition.html"));
+}
+
IN_PROC_BROWSER_TEST_F(DumpAccessibilityTreeTest,
AccessibilityToggleButton) {
RunTest(FILE_PATH_LITERAL("togglebutton.html"));
diff --git a/chromium/content/browser/android/content_view_core_impl.cc b/chromium/content/browser/android/content_view_core_impl.cc
index fc0af4c922b..10215503fb2 100644
--- a/chromium/content/browser/android/content_view_core_impl.cc
+++ b/chromium/content/browser/android/content_view_core_impl.cc
@@ -944,7 +944,10 @@ jboolean ContentViewCoreImpl::OnTouchEvent(JNIEnv* env,
jfloat touch_major_0,
jfloat touch_major_1,
jfloat raw_pos_x,
- jfloat raw_pos_y) {
+ jfloat raw_pos_y,
+ jint android_tool_type_0,
+ jint android_tool_type_1,
+ jint android_button_state) {
RenderWidgetHostViewAndroid* rwhv = GetRenderWidgetHostViewAndroid();
// Avoid synthesizing a touch event if it cannot be forwarded.
if (!rwhv)
@@ -967,7 +970,10 @@ jboolean ContentViewCoreImpl::OnTouchEvent(JNIEnv* env,
touch_major_0,
touch_major_1,
raw_pos_x,
- raw_pos_y);
+ raw_pos_y,
+ android_tool_type_0,
+ android_tool_type_1,
+ android_button_state);
return rwhv->OnTouchEvent(event);
}
@@ -1523,6 +1529,14 @@ void ContentViewCoreImpl::SetAccessibilityEnabled(JNIEnv* env, jobject obj,
SetAccessibilityEnabledInternal(enabled);
}
+void ContentViewCoreImpl::ShowSelectionHandlesAutomatically() const {
+ JNIEnv* env = AttachCurrentThread();
+ ScopedJavaLocalRef<jobject> obj(java_ref_.get(env));
+ if (obj.is_null())
+ return;
+ Java_ContentViewCore_showSelectionHandlesAutomatically(env, obj.obj());
+}
+
void ContentViewCoreImpl::SetAccessibilityEnabledInternal(bool enabled) {
accessibility_enabled_ = enabled;
RenderWidgetHostViewAndroid* host_view = GetRenderWidgetHostViewAndroid();
@@ -1598,14 +1612,18 @@ void ContentViewCoreImpl::RequestTextSurroundingSelection(
}
void ContentViewCoreImpl::OnSmartClipDataExtracted(
- const base::string16& result) {
+ const base::string16& text,
+ const base::string16& html,
+ const gfx::Rect& clip_rect) {
JNIEnv* env = AttachCurrentThread();
ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
if (obj.is_null())
return;
- ScopedJavaLocalRef<jstring> jresult = ConvertUTF16ToJavaString(env, result);
+ ScopedJavaLocalRef<jstring> jtext = ConvertUTF16ToJavaString(env, text);
+ ScopedJavaLocalRef<jstring> jhtml = ConvertUTF16ToJavaString(env, html);
+ ScopedJavaLocalRef<jobject> clip_rect_object(CreateJavaRect(env, clip_rect));
Java_ContentViewCore_onSmartClipDataExtracted(
- env, obj.obj(), jresult.obj());
+ env, obj.obj(), jtext.obj(), jhtml.obj(), clip_rect_object.obj());
}
void ContentViewCoreImpl::WebContentsDestroyed() {
diff --git a/chromium/content/browser/android/content_view_core_impl.h b/chromium/content/browser/android/content_view_core_impl.h
index 3bb12913975..462f3dceb8a 100644
--- a/chromium/content/browser/android/content_view_core_impl.h
+++ b/chromium/content/browser/android/content_view_core_impl.h
@@ -114,7 +114,10 @@ class ContentViewCoreImpl : public ContentViewCore,
jfloat touch_major_0,
jfloat touch_major_1,
jfloat raw_pos_x,
- jfloat raw_pos_y);
+ jfloat raw_pos_y,
+ jint android_tool_type_0,
+ jint android_tool_type_1,
+ jint android_button_state);
jboolean SendMouseMoveEvent(JNIEnv* env,
jobject obj,
jlong time_ms,
@@ -235,7 +238,9 @@ class ContentViewCoreImpl : public ContentViewCore,
// Public methods that call to Java via JNI
// --------------------------------------------------------------------------
- void OnSmartClipDataExtracted(const base::string16& result);
+ void OnSmartClipDataExtracted(const base::string16& text,
+ const base::string16& html,
+ const gfx::Rect& clip_rect);
// Creates a popup menu with |items|.
// |multiple| defines if it should support multi-select.
@@ -302,6 +307,8 @@ class ContentViewCoreImpl : public ContentViewCore,
void SetAccessibilityEnabledInternal(bool enabled);
+ void ShowSelectionHandlesAutomatically() const;
+
// --------------------------------------------------------------------------
// Methods called from native code
// --------------------------------------------------------------------------
diff --git a/chromium/content/browser/android/devtools_auth.cc b/chromium/content/browser/android/devtools_auth.cc
index c89cdc0cbf1..777a01e00b0 100644
--- a/chromium/content/browser/android/devtools_auth.cc
+++ b/chromium/content/browser/android/devtools_auth.cc
@@ -4,6 +4,9 @@
#include "content/public/browser/android/devtools_auth.h"
+#include <unistd.h>
+#include <sys/types.h>
+
#include "base/logging.h"
namespace content {
@@ -15,8 +18,9 @@ bool CanUserConnectToDevTools(uid_t uid, gid_t gid) {
return false;
}
if (gid == uid &&
- (strcmp("root", creds->pw_name) == 0 || // For rooted devices
- strcmp("shell", creds->pw_name) == 0)) { // For non-rooted devices
+ (strcmp("root", creds->pw_name) == 0 || // For rooted devices
+ strcmp("shell", creds->pw_name) == 0 || // For non-rooted devices
+ uid == getuid())) { // From processes signed with the same key
return true;
}
LOG(WARNING) << "DevTools: connection attempt from " << creds->pw_name;
diff --git a/chromium/content/browser/android/in_process/synchronous_compositor_factory_impl.cc b/chromium/content/browser/android/in_process/synchronous_compositor_factory_impl.cc
index c19173cd3cc..e5a0a681fb4 100644
--- a/chromium/content/browser/android/in_process/synchronous_compositor_factory_impl.cc
+++ b/chromium/content/browser/android/in_process/synchronous_compositor_factory_impl.cc
@@ -228,6 +228,11 @@ void SynchronousCompositorFactoryImpl::CompositorReleasedHardwareDraw() {
base::AutoLock lock(num_hardware_compositor_lock_);
DCHECK_GT(num_hardware_compositors_, 0u);
num_hardware_compositors_--;
+ if (num_hardware_compositors_ == 0) {
+ // Nullify the video_context_provider_ now so that it is not null only if
+ // there is at least 1 hardware compositor
+ video_context_provider_ = NULL;
+ }
}
bool SynchronousCompositorFactoryImpl::CanCreateMainThreadContext() {
@@ -241,8 +246,8 @@ SynchronousCompositorFactoryImpl::TryCreateStreamTextureFactory() {
context_provider;
// This check only guarantees the main thread context is created after
// a compositor did successfully initialize hardware draw in the past.
- // In particular this does not guarantee that the main thread context
- // will fail creation when all compositors release hardware draw.
+ // When all compositors have released hardware draw, main thread context
+ // creation is guaranteed to fail.
if (CanCreateMainThreadContext() && !video_context_provider_) {
DCHECK(service_);
DCHECK(share_context_.get());
diff --git a/chromium/content/browser/media/android/browser_media_player_manager.cc b/chromium/content/browser/media/android/browser_media_player_manager.cc
index 5df9016f7b7..d0c0a697c34 100644
--- a/chromium/content/browser/media/android/browser_media_player_manager.cc
+++ b/chromium/content/browser/media/android/browser_media_player_manager.cc
@@ -26,6 +26,7 @@
#include "content/public/common/content_switches.h"
#include "media/base/android/media_player_bridge.h"
#include "media/base/android/media_source_player.h"
+#include "media/base/android/media_url_interceptor.h"
#include "media/base/media_switches.h"
using media::MediaPlayerAndroid;
@@ -40,6 +41,7 @@ namespace content {
const int kMediaPlayerThreshold = 1;
static BrowserMediaPlayerManager::Factory g_factory = NULL;
+static media::MediaUrlInterceptor* media_url_interceptor_ = NULL;
// static
void BrowserMediaPlayerManager::RegisterFactory(Factory factory) {
@@ -47,6 +49,12 @@ void BrowserMediaPlayerManager::RegisterFactory(Factory factory) {
}
// static
+void BrowserMediaPlayerManager::RegisterMediaUrlInterceptor(
+ media::MediaUrlInterceptor* media_url_interceptor) {
+ media_url_interceptor_ = media_url_interceptor;
+}
+
+// static
BrowserMediaPlayerManager* BrowserMediaPlayerManager::Create(
RenderFrameHost* rfh) {
if (g_factory)
@@ -77,7 +85,8 @@ MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer(
weak_ptr_factory_.GetWeakPtr()),
base::Bind(&BrowserMediaPlayerManager::OnMediaResourcesReleased,
weak_ptr_factory_.GetWeakPtr()),
- media_player_params.frame_url);
+ media_player_params.frame_url,
+ media_player_params.allow_credentials);
BrowserMediaPlayerManager* browser_media_player_manager =
static_cast<BrowserMediaPlayerManager*>(manager);
ContentViewCoreImpl* content_view_core_impl =
@@ -297,6 +306,11 @@ BrowserMediaPlayerManager::GetMediaResourceGetter() {
return media_resource_getter_.get();
}
+media::MediaUrlInterceptor*
+BrowserMediaPlayerManager::GetMediaUrlInterceptor() {
+ return media_url_interceptor_;
+}
+
MediaPlayerAndroid* BrowserMediaPlayerManager::GetFullscreenPlayer() {
return GetPlayer(fullscreen_player_id_);
}
@@ -395,6 +409,24 @@ void BrowserMediaPlayerManager::OnEnterFullscreen(int player_id) {
video_view_->OpenVideo();
return;
} else if (!ContentVideoView::GetInstance()) {
+ if (!GetPlayer(player_id)) {
+ // If a player doesn't exist, it must be waiting for CORS check.
+ // As a result, just request the tab to enter fullscreen mode without
+ // creating the surface view. This is only needed for M37.
+ Send(new MediaPlayerMsg_DidEnterFullscreen(RoutingID(), player_id));
+ if (CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kDisableOverlayFullscreenVideoSubtitle)) {
+ return;
+ }
+ if (RenderWidgetHostViewAndroid* view_android =
+ static_cast<RenderWidgetHostViewAndroid*>(
+ web_contents_->GetRenderWidgetHostView())) {
+ view_android->SetOverlayVideoMode(true);
+ }
+ if (WebContentsDelegate* delegate = web_contents_->GetDelegate())
+ delegate->ToggleFullscreenModeForTab(web_contents_, true);
+ }
+
// In Android WebView, two ContentViewCores could both try to enter
// fullscreen video, we just ignore the second one.
video_view_.reset(new ContentVideoView(this));
diff --git a/chromium/content/browser/media/android/browser_media_player_manager.h b/chromium/content/browser/media/android/browser_media_player_manager.h
index 4c533885bf6..5f3fae57565 100644
--- a/chromium/content/browser/media/android/browser_media_player_manager.h
+++ b/chromium/content/browser/media/android/browser_media_player_manager.h
@@ -16,6 +16,7 @@
#include "ipc/ipc_message.h"
#include "media/base/android/media_player_android.h"
#include "media/base/android/media_player_manager.h"
+#include "media/base/android/media_url_interceptor.h"
#include "ui/gfx/rect_f.h"
#include "url/gurl.h"
@@ -44,6 +45,10 @@ class CONTENT_EXPORT BrowserMediaPlayerManager
typedef BrowserMediaPlayerManager* (*Factory)(RenderFrameHost*);
static void RegisterFactory(Factory factory);
+ // Permits embedders to handle custom urls.
+ static void RegisterMediaUrlInterceptor(
+ media::MediaUrlInterceptor* media_url_interceptor);
+
// Returns a new instance using the registered factory if available.
static BrowserMediaPlayerManager* Create(RenderFrameHost* rfh);
@@ -84,6 +89,7 @@ class CONTENT_EXPORT BrowserMediaPlayerManager
virtual void OnVideoSizeChanged(
int player_id, int width, int height) OVERRIDE;
virtual media::MediaResourceGetter* GetMediaResourceGetter() OVERRIDE;
+ virtual media::MediaUrlInterceptor* GetMediaUrlInterceptor() OVERRIDE;
virtual media::MediaPlayerAndroid* GetFullscreenPlayer() OVERRIDE;
virtual media::MediaPlayerAndroid* GetPlayer(int player_id) OVERRIDE;
virtual void RequestFullScreen(int player_id) OVERRIDE;
diff --git a/chromium/content/browser/media/android/media_resource_getter_impl.cc b/chromium/content/browser/media/android/media_resource_getter_impl.cc
index bcf293d9252..dac0059e9f7 100644
--- a/chromium/content/browser/media/android/media_resource_getter_impl.cc
+++ b/chromium/content/browser/media/android/media_resource_getter_impl.cc
@@ -18,6 +18,8 @@
#include "content/public/common/content_client.h"
#include "content/public/common/url_constants.h"
#include "jni/MediaResourceGetter_jni.h"
+#include "media/base/android/media_url_interceptor.h"
+#include "net/base/auth.h"
#include "net/cookies/cookie_monster.h"
#include "net/cookies/cookie_store.h"
#include "net/url_request/url_request_context.h"
@@ -75,7 +77,21 @@ static void RequestPlaformPathFromFileSystemURL(
ReturnResultOnUIThread(callback, std::string());
}
-// Get the metadata from a media URL. When finished, a task is posted to the UI
+// Posts a task to the UI thread to run the callback function.
+static void PostMediaMetadataCallbackTask(
+ const media::MediaResourceGetter::ExtractMediaMetadataCB& callback,
+ JNIEnv* env, ScopedJavaLocalRef<jobject>& j_metadata) {
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::Bind(callback, base::TimeDelta::FromMilliseconds(
+ Java_MediaMetadata_getDurationInMilliseconds(
+ env, j_metadata.obj())),
+ Java_MediaMetadata_getWidth(env, j_metadata.obj()),
+ Java_MediaMetadata_getHeight(env, j_metadata.obj()),
+ Java_MediaMetadata_isSuccess(env, j_metadata.obj())));
+}
+
+// Gets the metadata from a media URL. When finished, a task is posted to the UI
// thread to run the callback function.
static void GetMediaMetadata(
const std::string& url, const std::string& cookies,
@@ -94,14 +110,22 @@ static void GetMediaMetadata(
j_url_string.obj(),
j_cookies.obj(),
j_user_agent.obj());
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(callback, base::TimeDelta::FromMilliseconds(
- Java_MediaMetadata_getDurationInMilliseconds(
- env, j_metadata.obj())),
- Java_MediaMetadata_getWidth(env, j_metadata.obj()),
- Java_MediaMetadata_getHeight(env, j_metadata.obj()),
- Java_MediaMetadata_isSuccess(env, j_metadata.obj())));
+
+ PostMediaMetadataCallbackTask(callback, env, j_metadata);
+}
+
+// Gets the metadata from a file descriptor. When finished, a task is posted to
+// the UI thread to run the callback function.
+static void GetMediaMetadataFromFd(
+ const int fd, const int64 offset, const int64 size,
+ const media::MediaResourceGetter::ExtractMediaMetadataCB& callback) {
+ JNIEnv* env = base::android::AttachCurrentThread();
+
+ ScopedJavaLocalRef<jobject> j_metadata =
+ Java_MediaResourceGetter_extractMediaMetadataFromFd(
+ env, fd, offset, size);
+
+ PostMediaMetadataCallbackTask(callback, env, j_metadata);
}
// The task object that retrieves cookie on the IO thread.
@@ -276,6 +300,16 @@ void MediaResourceGetterImpl::ExtractMediaMetadata(
base::Bind(&GetMediaMetadata, url, cookies, user_agent, callback));
}
+void MediaResourceGetterImpl::ExtractMediaMetadata(
+ const int fd, const int64 offset, const int64 size,
+ const ExtractMediaMetadataCB& callback) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ base::SequencedWorkerPool* pool = content::BrowserThread::GetBlockingPool();
+ pool->PostWorkerTask(
+ FROM_HERE,
+ base::Bind(&GetMediaMetadataFromFd, fd, offset, size, callback));
+}
+
// static
bool MediaResourceGetterImpl::RegisterMediaResourceGetter(JNIEnv* env) {
return RegisterNativesImpl(env);
diff --git a/chromium/content/browser/media/android/media_resource_getter_impl.h b/chromium/content/browser/media/android/media_resource_getter_impl.h
index c1ed4b97b36..252ada81230 100644
--- a/chromium/content/browser/media/android/media_resource_getter_impl.h
+++ b/chromium/content/browser/media/android/media_resource_getter_impl.h
@@ -12,6 +12,8 @@
#include "base/memory/weak_ptr.h"
#include "base/synchronization/waitable_event.h"
#include "media/base/android/media_resource_getter.h"
+#include "media/base/android/media_url_interceptor.h"
+#include "net/base/auth.h"
#include "net/cookies/canonical_cookie.h"
namespace fileapi {
@@ -51,6 +53,11 @@ class MediaResourceGetterImpl : public media::MediaResourceGetter {
const std::string& url, const std::string& cookies,
const std::string& user_agent,
const ExtractMediaMetadataCB& callback) OVERRIDE;
+ virtual void ExtractMediaMetadata(
+ const int fd,
+ const int64 offset,
+ const int64 size,
+ const ExtractMediaMetadataCB& callback) OVERRIDE;
static bool RegisterMediaResourceGetter(JNIEnv* env);
diff --git a/chromium/content/browser/renderer_host/input/gesture_text_selector.cc b/chromium/content/browser/renderer_host/input/gesture_text_selector.cc
new file mode 100644
index 00000000000..59f28cf3245
--- /dev/null
+++ b/chromium/content/browser/renderer_host/input/gesture_text_selector.cc
@@ -0,0 +1,74 @@
+// 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 "content/browser/renderer_host/input/gesture_text_selector.h"
+
+#include "ui/events/event_constants.h"
+#include "ui/events/gesture_detection/gesture_event_data.h"
+#include "ui/events/gesture_detection/motion_event.h"
+
+namespace content {
+
+GestureTextSelector::GestureTextSelector(GestureTextSelectorClient* client)
+ : client_(client),
+ text_selection_triggered_(false),
+ anchor_x_(0.0f),
+ anchor_y_(0.0f) {
+}
+
+GestureTextSelector::~GestureTextSelector() {
+}
+
+bool GestureTextSelector::OnTouchEvent(const ui::MotionEvent& event) {
+ if (event.GetAction() == ui::MotionEvent::ACTION_DOWN) {
+ // Only trigger selection on ACTION_DOWN to prevent partial touch or gesture
+ // sequences from being forwarded.
+ text_selection_triggered_ = ShouldStartTextSelection(event);
+ }
+ return text_selection_triggered_;
+}
+
+bool GestureTextSelector::OnGestureEvent(const ui::GestureEventData& gesture) {
+ if (!text_selection_triggered_)
+ return false;
+
+ switch (gesture.type()) {
+ case ui::ET_GESTURE_TAP: {
+ client_->LongPress(gesture.time, gesture.x, gesture.y);
+ break;
+ }
+ case ui::ET_GESTURE_SCROLL_BEGIN: {
+ client_->Unselect();
+ anchor_x_ = gesture.x;
+ anchor_y_ = gesture.y;
+ break;
+ }
+ case ui::ET_GESTURE_SCROLL_UPDATE: {
+ // TODO(changwan): check if we can show handles on ET_GESTURE_SCROLL_END
+ // instead. Currently it is not possible as ShowSelectionHandles should
+ // be called before we change the selection.
+ client_->ShowSelectionHandlesAutomatically();
+ client_->SelectRange(anchor_x_, anchor_y_, gesture.x, gesture.y);
+ break;
+ }
+ default:
+ // Suppress all other gestures when we are selecting text.
+ break;
+ }
+ return true;
+}
+
+// static
+bool GestureTextSelector::ShouldStartTextSelection(
+ const ui::MotionEvent& event) {
+ DCHECK_GT(event.GetPointerCount(), 0u);
+ // Currently we are supporting stylus-only cases.
+ const bool is_stylus =
+ event.GetToolType(0) == ui::MotionEvent::TOOL_TYPE_STYLUS;
+ const bool is_only_secondary_button_pressed =
+ event.GetButtonState() == ui::MotionEvent::BUTTON_SECONDARY;
+ return is_stylus && is_only_secondary_button_pressed;
+}
+
+} // namespace content
diff --git a/chromium/content/browser/renderer_host/input/gesture_text_selector.h b/chromium/content/browser/renderer_host/input/gesture_text_selector.h
new file mode 100644
index 00000000000..092c30dab12
--- /dev/null
+++ b/chromium/content/browser/renderer_host/input/gesture_text_selector.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 CONTENT_BROWSER_RENDERER_HOST_INPUT_GESTURE_TEXT_SELECTOR_H_
+#define CONTENT_BROWSER_RENDERER_HOST_INPUT_GESTURE_TEXT_SELECTOR_H_
+
+#include "base/gtest_prod_util.h"
+#include "base/macros.h"
+#include "base/time/time.h"
+#include "content/common/content_export.h"
+
+namespace ui {
+struct GestureEventData;
+class MotionEvent;
+}
+
+namespace content {
+class GestureTextSelectorTest;
+
+// Interface with which GestureTextSelector can select, unselect, show
+// selection handles, or long press.
+class CONTENT_EXPORT GestureTextSelectorClient {
+ public:
+ virtual ~GestureTextSelectorClient() {}
+
+ virtual void ShowSelectionHandlesAutomatically() = 0;
+ virtual void SelectRange(float x1, float y1, float x2, float y2) = 0;
+ virtual void Unselect() = 0;
+ virtual void LongPress(base::TimeTicks time, float x, float y) = 0;
+};
+
+// A class to handle gesture-based text selection, such as when clicking first
+// button on stylus input. It also generates a synthetic long press gesture on
+// tap so that a word can be selected or the contextual menu can be shown.
+class CONTENT_EXPORT GestureTextSelector {
+ public:
+ explicit GestureTextSelector(GestureTextSelectorClient* client);
+ virtual ~GestureTextSelector();
+
+ // This should be called after gesture detection but before associated
+ // gestures are dispatched. Returns whether it will consume |event|.
+ bool OnTouchEvent(const ui::MotionEvent& event);
+
+ // Returns whether it will consume the event.
+ bool OnGestureEvent(const ui::GestureEventData& gesture);
+
+ private:
+ friend class GestureTextSelectorTest;
+ FRIEND_TEST_ALL_PREFIXES(GestureTextSelectorTest,
+ ShouldStartTextSelection);
+
+ static bool ShouldStartTextSelection(const ui::MotionEvent& event);
+
+ GestureTextSelectorClient* client_;
+ bool text_selection_triggered_;
+ float anchor_x_;
+ float anchor_y_;
+
+ DISALLOW_COPY_AND_ASSIGN(GestureTextSelector);
+};
+
+} // namespace content
+
+#endif // CONTENT_BROWSER_RENDERER_HOST_INPUT_GESTURE_TEXT_SELECTOR_H_
diff --git a/chromium/content/browser/renderer_host/input/gesture_text_selector_unittest.cc b/chromium/content/browser/renderer_host/input/gesture_text_selector_unittest.cc
new file mode 100644
index 00000000000..c5be224ed99
--- /dev/null
+++ b/chromium/content/browser/renderer_host/input/gesture_text_selector_unittest.cc
@@ -0,0 +1,221 @@
+// 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 <string>
+#include <vector>
+
+#include "base/memory/scoped_ptr.h"
+#include "base/time/time.h"
+#include "content/browser/renderer_host/input/gesture_text_selector.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/events/event_constants.h"
+#include "ui/events/gesture_detection/gesture_event_data.h"
+#include "ui/events/gesture_detection/motion_event.h"
+#include "ui/events/test/mock_motion_event.h"
+#include "ui/gfx/geometry/rect_f.h"
+
+using ui::GestureEventData;
+using ui::GestureEventDetails;
+using ui::MotionEvent;
+using ui::test::MockMotionEvent;
+
+namespace content {
+
+class GestureTextSelectorTest : public testing::Test,
+ public GestureTextSelectorClient {
+ public:
+ GestureTextSelectorTest() {}
+ virtual ~GestureTextSelectorTest() {}
+
+ // Test implementation.
+ virtual void SetUp() OVERRIDE {
+ selector_.reset(new GestureTextSelector(this));
+ event_log_.clear();
+ }
+
+ virtual void TearDown() OVERRIDE {
+ selector_.reset();
+ event_log_.clear();
+ }
+
+ // GestureTextSelectorClient implementation.
+ virtual void ShowSelectionHandlesAutomatically() OVERRIDE {
+ event_log_.push_back("Show");
+ }
+
+ virtual void SelectRange(float x1, float y1, float x2, float y2) OVERRIDE {
+ event_log_.push_back("SelectRange");
+ }
+
+ virtual void Unselect() OVERRIDE {
+ event_log_.push_back("Unselect");
+ }
+
+ virtual void LongPress(base::TimeTicks time, float x, float y) OVERRIDE {
+ event_log_.push_back("LongPress");
+ }
+
+ protected:
+ scoped_ptr<GestureTextSelector> selector_;
+ std::vector<std::string> event_log_;
+};
+
+TEST_F(GestureTextSelectorTest, ShouldStartTextSelection) {
+ base::TimeTicks event_time = base::TimeTicks::Now();
+ { // Touched with a finger.
+ MockMotionEvent e(MotionEvent::ACTION_DOWN, event_time, 50.0f, 50.0f);
+ e.SetToolType(0, MotionEvent::TOOL_TYPE_FINGER);
+ e.SetButtonState(0);
+ EXPECT_FALSE(selector_->ShouldStartTextSelection(e));
+ }
+
+ { // Touched with a stylus, but no button pressed.
+ MockMotionEvent e(MotionEvent::ACTION_DOWN, event_time, 50.0f, 50.0f);
+ e.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
+ e.SetButtonState(0);
+ EXPECT_FALSE(selector_->ShouldStartTextSelection(e));
+ }
+
+ { // Touched with a stylus, with first button (BUTTON_SECONDARY) pressed.
+ MockMotionEvent e(MotionEvent::ACTION_DOWN, event_time, 50.0f, 50.0f);
+ e.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
+ e.SetButtonState(MotionEvent::BUTTON_SECONDARY);
+ EXPECT_TRUE(selector_->ShouldStartTextSelection(e));
+ }
+
+ { // Touched with a stylus, with two buttons pressed.
+ MockMotionEvent e(MotionEvent::ACTION_DOWN, event_time, 50.0f, 50.0f);
+ e.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
+ e.SetButtonState(
+ MotionEvent::BUTTON_SECONDARY | MotionEvent::BUTTON_TERTIARY);
+ EXPECT_FALSE(selector_->ShouldStartTextSelection(e));
+ }
+}
+
+TEST_F(GestureTextSelectorTest, FingerTouch) {
+ base::TimeTicks event_time = base::TimeTicks::Now();
+ const float x = 50.0f;
+ const float y = 30.0f;
+ // 1. Touched with a finger: ignored
+ MockMotionEvent finger(MotionEvent::ACTION_DOWN, event_time, x, y);
+ finger.SetToolType(0, MotionEvent::TOOL_TYPE_FINGER);
+ EXPECT_FALSE(selector_->OnTouchEvent(finger));
+ // We do not consume finger events.
+ EXPECT_TRUE(event_log_.empty());
+}
+
+TEST_F(GestureTextSelectorTest, PenDragging) {
+ base::TimeTicks event_time = base::TimeTicks::Now();
+ const float x1 = 50.0f;
+ const float y1 = 30.0f;
+ const float x2 = 100.0f;
+ const float y2 = 90.0f;
+ // 1. ACTION_DOWN with stylus + button
+ event_time += base::TimeDelta::FromMilliseconds(10);
+ MockMotionEvent action_down(MotionEvent::ACTION_DOWN, event_time, x1, y1);
+ action_down.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
+ action_down.SetButtonState(MotionEvent::BUTTON_SECONDARY);
+ EXPECT_TRUE(selector_->OnTouchEvent(action_down));
+ EXPECT_TRUE(event_log_.empty());
+
+ // 2. ACTION_MOVE
+ event_time += base::TimeDelta::FromMilliseconds(10);
+ MockMotionEvent action_move(MotionEvent::ACTION_MOVE, event_time, x2, y2);
+ action_move.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
+ action_move.SetButtonState(MotionEvent::BUTTON_SECONDARY);
+ EXPECT_TRUE(selector_->OnTouchEvent(action_move));
+ EXPECT_TRUE(event_log_.empty());
+
+ // 3. DOUBLE TAP
+ // Suppress most gesture events when in text selection mode.
+ event_time += base::TimeDelta::FromMilliseconds(10);
+ const GestureEventData double_tap(
+ GestureEventDetails(ui::ET_GESTURE_DOUBLE_TAP, 0, 0), 0, event_time,
+ x2, y2, x2, y2, 1, gfx::RectF(0, 0, 0, 0));
+ EXPECT_TRUE(selector_->OnGestureEvent(double_tap));
+ EXPECT_TRUE(event_log_.empty());
+
+ // 4. ET_GESTURE_SCROLL_BEGIN
+ event_time += base::TimeDelta::FromMilliseconds(10);
+ const GestureEventData scroll_begin(
+ GestureEventDetails(ui::ET_GESTURE_SCROLL_BEGIN, 0, 0), 0, event_time,
+ x1, y1, x1, y1, 1, gfx::RectF(0, 0, 0, 0));
+ EXPECT_TRUE(selector_->OnGestureEvent(scroll_begin));
+ EXPECT_EQ(1u, event_log_.size()); // Unselect
+
+ // 5. ET_GESTURE_SCROLL_UPDATE
+ event_time += base::TimeDelta::FromMilliseconds(10);
+ const GestureEventData scroll_update(
+ GestureEventDetails(ui::ET_GESTURE_SCROLL_UPDATE, 0, 0), 0, event_time,
+ x2, y2, x2, y2, 1, gfx::RectF(0, 0, 0, 0));
+ EXPECT_TRUE(selector_->OnGestureEvent(scroll_update));
+ EXPECT_EQ(3u, event_log_.size()); // Unselect, Show, SelectRange
+ EXPECT_STREQ("SelectRange", event_log_.back().c_str());
+
+ // 6. ACTION_UP
+ event_time += base::TimeDelta::FromMilliseconds(10);
+ MockMotionEvent action_up(MotionEvent::ACTION_UP, event_time, x2, y2);
+ action_up.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
+ action_up.SetButtonState(0);
+ EXPECT_TRUE(selector_->OnTouchEvent(action_up));
+ EXPECT_EQ(3u, event_log_.size()); // NO CHANGE
+
+ // 7. ET_GESTURE_SCROLL_END
+ event_time += base::TimeDelta::FromMilliseconds(10);
+ const GestureEventData scroll_end(
+ GestureEventDetails(ui::ET_GESTURE_SCROLL_END, 0, 0), 0, event_time,
+ x2, y2, x2, y2, 1, gfx::RectF(0, 0, 0, 0));
+ EXPECT_TRUE(selector_->OnGestureEvent(scroll_end));
+ EXPECT_EQ(3u, event_log_.size()); // NO CHANGE
+}
+
+TEST_F(GestureTextSelectorTest, TapToSelectWord) {
+ base::TimeTicks event_time = base::TimeTicks::Now();
+ const float x1 = 50.0f;
+ const float y1 = 30.0f;
+ const float x2 = 51.0f;
+ const float y2 = 31.0f;
+ // 1. ACTION_DOWN with stylus + button
+ event_time += base::TimeDelta::FromMilliseconds(10);
+ MockMotionEvent action_down(MotionEvent::ACTION_DOWN, event_time, x1, y1);
+ action_down.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
+ action_down.SetButtonState(MotionEvent::BUTTON_SECONDARY);
+ EXPECT_TRUE(selector_->OnTouchEvent(action_down));
+ EXPECT_TRUE(event_log_.empty());
+
+ // 5. TAP_DOWN
+ event_time += base::TimeDelta::FromMilliseconds(10);
+ const GestureEventData tap_down(
+ GestureEventDetails(ui::ET_GESTURE_TAP_DOWN, 0, 0), 0, event_time,
+ x2, y2, x2, y2, 1, gfx::RectF(0, 0, 0, 0));
+ EXPECT_TRUE(selector_->OnGestureEvent(tap_down));
+ EXPECT_TRUE(event_log_.empty());
+
+ // 2. ACTION_MOVE
+ event_time += base::TimeDelta::FromMilliseconds(10);
+ MockMotionEvent action_move(MotionEvent::ACTION_MOVE, event_time, x2, y2);
+ action_move.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
+ action_move.SetButtonState(MotionEvent::BUTTON_SECONDARY);
+ EXPECT_TRUE(selector_->OnTouchEvent(action_move));
+ EXPECT_TRUE(event_log_.empty());
+
+ // 3. ACTION_UP
+ event_time += base::TimeDelta::FromMilliseconds(10);
+ MockMotionEvent action_up(MotionEvent::ACTION_UP, event_time, x2, y2);
+ action_up.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS);
+ action_up.SetButtonState(0);
+ EXPECT_TRUE(selector_->OnTouchEvent(action_up));
+ EXPECT_TRUE(event_log_.empty());
+
+ // 4. TAP
+ event_time += base::TimeDelta::FromMilliseconds(10);
+ const GestureEventData tap(
+ GestureEventDetails(ui::ET_GESTURE_TAP, 0, 0), 0, event_time,
+ x1, y1, x1, y1, 1, gfx::RectF(0, 0, 0, 0));
+ EXPECT_TRUE(selector_->OnGestureEvent(tap));
+ EXPECT_EQ(1u, event_log_.size()); // LongPress
+ EXPECT_STREQ("LongPress", event_log_.back().c_str());
+}
+
+} // namespace content
diff --git a/chromium/content/browser/renderer_host/input/motion_event_android.cc b/chromium/content/browser/renderer_host/input/motion_event_android.cc
index 7409955bc9c..7316a405f49 100644
--- a/chromium/content/browser/renderer_host/input/motion_event_android.cc
+++ b/chromium/content/browser/renderer_host/input/motion_event_android.cc
@@ -54,6 +54,38 @@ MotionEventAndroid::Action FromAndroidAction(int android_action) {
return MotionEventAndroid::ACTION_CANCEL;
}
+MotionEventAndroid::ToolType FromAndroidToolType(int android_tool_type) {
+ switch (android_tool_type) {
+ case TOOL_TYPE_UNKNOWN:
+ return MotionEventAndroid::TOOL_TYPE_UNKNOWN;
+ case TOOL_TYPE_FINGER:
+ return MotionEventAndroid::TOOL_TYPE_FINGER;
+ case TOOL_TYPE_STYLUS:
+ return MotionEventAndroid::TOOL_TYPE_STYLUS;
+ case TOOL_TYPE_MOUSE:
+ return MotionEventAndroid::TOOL_TYPE_MOUSE;
+ default:
+ NOTREACHED() << "Invalid Android MotionEvent tool type: "
+ << android_tool_type;
+ };
+ return MotionEventAndroid::TOOL_TYPE_UNKNOWN;
+}
+
+int FromAndroidButtonState(int button_state) {
+ int result = 0;
+ if ((button_state & BUTTON_BACK) != 0)
+ result |= MotionEventAndroid::BUTTON_BACK;
+ if ((button_state & BUTTON_FORWARD) != 0)
+ result |= MotionEventAndroid::BUTTON_FORWARD;
+ if ((button_state & BUTTON_PRIMARY) != 0)
+ result |= MotionEventAndroid::BUTTON_PRIMARY;
+ if ((button_state & BUTTON_SECONDARY) != 0)
+ result |= MotionEventAndroid::BUTTON_SECONDARY;
+ if ((button_state & BUTTON_TERTIARY) != 0)
+ result |= MotionEventAndroid::BUTTON_TERTIARY;
+ return result;
+}
+
int64 ToAndroidTime(base::TimeTicks time) {
return (time - base::TimeTicks()).InMilliseconds();
}
@@ -81,12 +113,16 @@ MotionEventAndroid::MotionEventAndroid(float pix_to_dip,
jfloat touch_major_0_pixels,
jfloat touch_major_1_pixels,
jfloat raw_pos_x_pixels,
- jfloat raw_pos_y_pixels)
+ jfloat raw_pos_y_pixels,
+ jint android_tool_type_0,
+ jint android_tool_type_1,
+ jint android_button_state)
: cached_time_(FromAndroidTime(time_ms)),
cached_action_(FromAndroidAction(android_action)),
cached_pointer_count_(pointer_count),
cached_history_size_(history_size),
cached_action_index_(action_index),
+ cached_button_state_(FromAndroidButtonState(android_button_state)),
pix_to_dip_(pix_to_dip),
should_recycle_(false) {
DCHECK_GT(pointer_count, 0);
@@ -104,6 +140,8 @@ MotionEventAndroid::MotionEventAndroid(float pix_to_dip,
cached_raw_position_offset_ =
ToDips(gfx::PointF(raw_pos_x_pixels, raw_pos_y_pixels)) -
cached_positions_[0];
+ cached_tool_types_[0] = FromAndroidToolType(android_tool_type_0);
+ cached_tool_types_[1] = FromAndroidToolType(android_tool_type_1);
}
MotionEventAndroid::MotionEventAndroid(float pix_to_dip,
@@ -115,6 +153,8 @@ MotionEventAndroid::MotionEventAndroid(float pix_to_dip,
cached_pointer_count_(Java_MotionEvent_getPointerCount(env, event)),
cached_history_size_(Java_MotionEvent_getHistorySize(env, event)),
cached_action_index_(Java_MotionEvent_getActionIndex(env, event)),
+ cached_button_state_(
+ FromAndroidButtonState(Java_MotionEvent_getButtonState(env, event))),
pix_to_dip_(pix_to_dip),
should_recycle_(true) {
event_.Reset(env, event);
@@ -128,9 +168,12 @@ MotionEventAndroid::MotionEventAndroid(float pix_to_dip,
cached_pointer_ids_[i] = Java_MotionEvent_getPointerId(env, event, i);
cached_touch_majors_[i] =
ToDips(Java_MotionEvent_getTouchMajorF_I(env, event, i));
+ cached_tool_types_[i] =
+ FromAndroidToolType(Java_MotionEvent_getToolType(env, event, i));
} else {
cached_pointer_ids_[i] = 0;
cached_touch_majors_[i] = 0.f;
+ cached_tool_types_[i] = MotionEvent::TOOL_TYPE_UNKNOWN;
}
}
@@ -148,6 +191,7 @@ MotionEventAndroid::MotionEventAndroid(const MotionEventAndroid& other)
cached_history_size_(other.cached_history_size_),
cached_action_index_(other.cached_action_index_),
cached_raw_position_offset_(other.cached_raw_position_offset_),
+ cached_button_state_(other.cached_button_state_),
pix_to_dip_(other.pix_to_dip_),
should_recycle_(true) {
DCHECK(event_.obj());
@@ -155,6 +199,7 @@ MotionEventAndroid::MotionEventAndroid(const MotionEventAndroid& other)
cached_positions_[i] = other.cached_positions_[i];
cached_pointer_ids_[i] = other.cached_pointer_ids_[i];
cached_touch_majors_[i] = other.cached_touch_majors_[i];
+ cached_tool_types_[i] = other.cached_tool_types_[i];
}
}
@@ -258,6 +303,19 @@ float MotionEventAndroid::GetHistoricalY(size_t pointer_index,
AttachCurrentThread(), event_.obj(), pointer_index, historical_index));
}
+ui::MotionEvent::ToolType MotionEventAndroid::GetToolType(
+ size_t pointer_index) const {
+ DCHECK_LT(pointer_index, cached_pointer_count_);
+ if (pointer_index < MAX_POINTERS_TO_CACHE)
+ return cached_tool_types_[pointer_index];
+ return FromAndroidToolType(Java_MotionEvent_getToolType(
+ AttachCurrentThread(), event_.obj(), pointer_index));
+}
+
+int MotionEventAndroid::GetButtonState() const {
+ return cached_button_state_;
+}
+
scoped_ptr<ui::MotionEvent> MotionEventAndroid::Clone() const {
return scoped_ptr<MotionEvent>(new MotionEventAndroid(*this));
}
diff --git a/chromium/content/browser/renderer_host/input/motion_event_android.h b/chromium/content/browser/renderer_host/input/motion_event_android.h
index 0362b0454e9..aa3e08241aa 100644
--- a/chromium/content/browser/renderer_host/input/motion_event_android.h
+++ b/chromium/content/browser/renderer_host/input/motion_event_android.h
@@ -39,7 +39,10 @@ class MotionEventAndroid : public ui::MotionEvent {
jfloat touch_major_0_pixels,
jfloat touch_major_1_pixels,
jfloat raw_pos_x_pixels,
- jfloat raw_pos_y_pixels);
+ jfloat raw_pos_y_pixels,
+ jint android_tool_type_0,
+ jint android_tool_type_1,
+ jint android_button_state);
virtual ~MotionEventAndroid();
// ui::MotionEvent methods.
@@ -64,6 +67,8 @@ class MotionEventAndroid : public ui::MotionEvent {
size_t historical_index) const OVERRIDE;
virtual float GetHistoricalY(size_t pointer_index,
size_t historical_index) const OVERRIDE;
+ virtual ToolType GetToolType(size_t pointer_index) const OVERRIDE;
+ virtual int GetButtonState() const OVERRIDE;
virtual scoped_ptr<MotionEvent> Clone() const OVERRIDE;
virtual scoped_ptr<MotionEvent> Cancel() const OVERRIDE;
@@ -110,6 +115,8 @@ class MotionEventAndroid : public ui::MotionEvent {
int cached_pointer_ids_[MAX_POINTERS_TO_CACHE];
float cached_touch_majors_[MAX_POINTERS_TO_CACHE];
gfx::Vector2dF cached_raw_position_offset_;
+ ToolType cached_tool_types_[MAX_POINTERS_TO_CACHE];
+ int cached_button_state_;
// Used to convert pixel coordinates from the Java-backed MotionEvent to
// DIP coordinates cached/returned by the MotionEventAndroid.
diff --git a/chromium/content/browser/renderer_host/input/motion_event_web.cc b/chromium/content/browser/renderer_host/input/motion_event_web.cc
index d1ff8a3c84f..0d812b229f8 100644
--- a/chromium/content/browser/renderer_host/input/motion_event_web.cc
+++ b/chromium/content/browser/renderer_host/input/motion_event_web.cc
@@ -143,6 +143,17 @@ float MotionEventWeb::GetHistoricalY(size_t pointer_index,
return 0.f;
}
+ui::MotionEvent::ToolType MotionEventWeb::GetToolType(
+ size_t pointer_index) const {
+ NOTIMPLEMENTED();
+ return TOOL_TYPE_UNKNOWN;
+}
+
+int MotionEventWeb::GetButtonState() const {
+ NOTIMPLEMENTED();
+ return 0;
+}
+
scoped_ptr<ui::MotionEvent> MotionEventWeb::Clone() const {
return scoped_ptr<MotionEvent>(new MotionEventWeb(event_));
}
diff --git a/chromium/content/browser/renderer_host/input/motion_event_web.h b/chromium/content/browser/renderer_host/input/motion_event_web.h
index f4ae25890fe..06a2141e7d4 100644
--- a/chromium/content/browser/renderer_host/input/motion_event_web.h
+++ b/chromium/content/browser/renderer_host/input/motion_event_web.h
@@ -41,6 +41,8 @@ class MotionEventWeb : public ui::MotionEvent {
virtual float GetHistoricalY(
size_t pointer_index,
size_t historical_index) const OVERRIDE;
+ virtual ToolType GetToolType(size_t pointer_index) const OVERRIDE;
+ virtual int GetButtonState() const OVERRIDE;
virtual scoped_ptr<MotionEvent> Clone() const OVERRIDE;
virtual scoped_ptr<MotionEvent> Cancel() const OVERRIDE;
diff --git a/chromium/content/browser/renderer_host/input/touch_emulator.cc b/chromium/content/browser/renderer_host/input/touch_emulator.cc
index c7d5cc605a7..2ee0247ac14 100644
--- a/chromium/content/browser/renderer_host/input/touch_emulator.cc
+++ b/chromium/content/browser/renderer_host/input/touch_emulator.cc
@@ -130,6 +130,11 @@ bool TouchEmulator::HandleMouseEvent(const WebMouseEvent& mouse_event) {
if (!enabled_)
return false;
+ if (mouse_event.button == WebMouseEvent::ButtonRight &&
+ mouse_event.type == WebInputEvent::MouseDown) {
+ client_->ShowContextMenuAtPoint(gfx::Point(mouse_event.x, mouse_event.y));
+ }
+
if (mouse_event.button != WebMouseEvent::ButtonLeft)
return true;
diff --git a/chromium/content/browser/renderer_host/input/touch_emulator_client.h b/chromium/content/browser/renderer_host/input/touch_emulator_client.h
index 92f382f5f9c..34ad109dd90 100644
--- a/chromium/content/browser/renderer_host/input/touch_emulator_client.h
+++ b/chromium/content/browser/renderer_host/input/touch_emulator_client.h
@@ -19,6 +19,7 @@ class CONTENT_EXPORT TouchEmulatorClient {
virtual void ForwardGestureEvent(const blink::WebGestureEvent& event) = 0;
virtual void ForwardTouchEvent(const blink::WebTouchEvent& event) = 0;
virtual void SetCursor(const WebCursor& cursor) = 0;
+ virtual void ShowContextMenuAtPoint(const gfx::Point& point) = 0;
};
} // namespace content
diff --git a/chromium/content/browser/renderer_host/input/touch_emulator_unittest.cc b/chromium/content/browser/renderer_host/input/touch_emulator_unittest.cc
index 8fdfd54cce2..cc6ec9134ac 100644
--- a/chromium/content/browser/renderer_host/input/touch_emulator_unittest.cc
+++ b/chromium/content/browser/renderer_host/input/touch_emulator_unittest.cc
@@ -84,6 +84,8 @@ class TouchEmulatorTest : public testing::Test,
virtual void SetCursor(const WebCursor& cursor) OVERRIDE {}
+ virtual void ShowContextMenuAtPoint(const gfx::Point& point) OVERRIDE {}
+
protected:
TouchEmulator* emulator() const {
return emulator_.get();
diff --git a/chromium/content/browser/renderer_host/render_widget_host_impl.cc b/chromium/content/browser/renderer_host/render_widget_host_impl.cc
index eb03476699a..eb638b0048d 100644
--- a/chromium/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/chromium/content/browser/renderer_host/render_widget_host_impl.cc
@@ -1072,6 +1072,11 @@ void RenderWidgetHostImpl::SetCursor(const WebCursor& cursor) {
view_->UpdateCursor(cursor);
}
+void RenderWidgetHostImpl::ShowContextMenuAtPoint(const gfx::Point& point) {
+ Send(new ViewMsg_ShowContextMenu(
+ GetRoutingID(), ui::MENU_SOURCE_MOUSE, point));
+}
+
void RenderWidgetHostImpl::SendCursorVisibilityState(bool is_visible) {
Send(new InputMsg_CursorVisibilityChange(GetRoutingID(), is_visible));
}
@@ -1195,7 +1200,18 @@ void RenderWidgetHostImpl::RendererExited(base::TerminationStatus status,
// Reset some fields in preparation for recovering from a crash.
ResetSizeAndRepaintPendingFlags();
current_size_.SetSize(0, 0);
- is_hidden_ = false;
+ // After the renderer crashes, the view is destroyed and so the
+ // RenderWidgetHost cannot track its visibility anymore. We assume such
+ // RenderWidgetHost to be visible for the sake of internal accounting - be
+ // careful about changing this - see http://crbug.com/401859.
+ //
+ // We need to at least make sure that the RenderProcessHost is notified about
+ // the |is_hidden_| change, so that the renderer will have correct visibility
+ // set when respawned.
+ if (!is_hidden_) {
+ process_->WidgetRestored();
+ is_hidden_ = false;
+ }
// Reset this to ensure the hung renderer mechanism is working properly.
in_flight_event_count_ = 0;
diff --git a/chromium/content/browser/renderer_host/render_widget_host_impl.h b/chromium/content/browser/renderer_host/render_widget_host_impl.h
index 65fa860df34..6f249d4e4fd 100644
--- a/chromium/content/browser/renderer_host/render_widget_host_impl.h
+++ b/chromium/content/browser/renderer_host/render_widget_host_impl.h
@@ -295,6 +295,7 @@ class CONTENT_EXPORT RenderWidgetHostImpl
virtual void ForwardTouchEvent(
const blink::WebTouchEvent& touch_event) OVERRIDE;
virtual void SetCursor(const WebCursor& cursor) OVERRIDE;
+ virtual void ShowContextMenuAtPoint(const gfx::Point& point) OVERRIDE;
// Queues a synthetic gesture for testing purposes. Invokes the on_complete
// callback when the gesture is finished running.
@@ -716,7 +717,8 @@ class CONTENT_EXPORT RenderWidgetHostImpl
// Indicates whether a page is loading or not.
bool is_loading_;
- // Indicates whether a page is hidden or not.
+ // Indicates whether a page is hidden or not. It has to stay in sync with the
+ // most recent call to process_->WidgetRestored() / WidgetHidden().
bool is_hidden_;
// Indicates whether a page is fullscreen or not.
diff --git a/chromium/content/browser/renderer_host/render_widget_host_view_android.cc b/chromium/content/browser/renderer_host/render_widget_host_view_android.cc
index f4217357c75..ff24085f803 100644
--- a/chromium/content/browser/renderer_host/render_widget_host_view_android.cc
+++ b/chromium/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -40,6 +40,7 @@
#include "content/browser/renderer_host/dip_util.h"
#include "content/browser/renderer_host/image_transport_factory_android.h"
#include "content/browser/renderer_host/input/synthetic_gesture_target_android.h"
+#include "content/browser/renderer_host/input/web_input_event_builders_android.h"
#include "content/browser/renderer_host/input/web_input_event_util.h"
#include "content/browser/renderer_host/render_process_host_impl.h"
#include "content/browser/renderer_host/render_view_host_impl.h"
@@ -187,6 +188,7 @@ RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid(
switches::kDisableOverscrollEdgeEffect)),
overscroll_effect_(OverscrollGlow::Create(overscroll_effect_enabled_)),
gesture_provider_(CreateGestureProviderConfig(), this),
+ gesture_text_selector_(this),
flush_input_requested_(false),
accelerated_surface_route_id_(0),
using_synchronous_compositor_(SynchronousCompositorImpl::FromID(
@@ -544,13 +546,11 @@ void RenderWidgetHostViewAndroid::OnStartContentIntent(
}
void RenderWidgetHostViewAndroid::OnSmartClipDataExtracted(
- const base::string16& result) {
- // Custom serialization over IPC isn't allowed normally for security reasons.
- // Since this feature is only used in (single-process) WebView, there are no
- // security issues. Enforce that it's only called in single process mode.
- CHECK(RenderProcessHost::run_renderer_in_process());
+ const base::string16& text,
+ const base::string16& html,
+ const gfx::Rect rect) {
if (content_view_core_)
- content_view_core_->OnSmartClipDataExtracted(result);
+ content_view_core_->OnSmartClipDataExtracted(text, html, rect);
}
bool RenderWidgetHostViewAndroid::OnTouchEvent(
@@ -561,6 +561,11 @@ bool RenderWidgetHostViewAndroid::OnTouchEvent(
if (!gesture_provider_.OnTouchEvent(event))
return false;
+ if (gesture_text_selector_.OnTouchEvent(event)) {
+ gesture_provider_.OnTouchEventAck(false);
+ return true;
+ }
+
// Short-circuit touch forwarding if no touch handlers exist.
if (!host_->ShouldForwardTouchEvent()) {
const bool event_consumed = false;
@@ -1290,6 +1295,9 @@ void RenderWidgetHostViewAndroid::RunAckCallbacks() {
void RenderWidgetHostViewAndroid::OnGestureEvent(
const ui::GestureEventData& gesture) {
+ if (gesture_text_selector_.OnGestureEvent(gesture))
+ return;
+
SendGestureEvent(CreateWebGestureEventFromGestureEventData(gesture));
}
@@ -1437,6 +1445,31 @@ SkBitmap::Config RenderWidgetHostViewAndroid::PreferredReadbackFormat() {
return SkBitmap::kARGB_8888_Config;
}
+void RenderWidgetHostViewAndroid::ShowSelectionHandlesAutomatically() {
+ if (content_view_core_)
+ content_view_core_->ShowSelectionHandlesAutomatically();
+}
+
+void RenderWidgetHostViewAndroid::SelectRange(
+ float x1, float y1, float x2, float y2) {
+ if (content_view_core_)
+ static_cast<WebContentsImpl*>(content_view_core_->GetWebContents())->
+ SelectRange(gfx::Point(x1, y1), gfx::Point(x2, y2));
+}
+
+void RenderWidgetHostViewAndroid::Unselect() {
+ if (content_view_core_)
+ content_view_core_->GetWebContents()->Unselect();
+}
+
+void RenderWidgetHostViewAndroid::LongPress(
+ base::TimeTicks time, float x, float y) {
+ blink::WebGestureEvent long_press = WebGestureEventBuilder::Build(
+ blink::WebInputEvent::GestureLongPress,
+ (time - base::TimeTicks()).InSecondsF(), x, y);
+ SendGestureEvent(long_press);
+}
+
// static
void RenderWidgetHostViewBase::GetDefaultScreenInfo(
blink::WebScreenInfo* results) {
diff --git a/chromium/content/browser/renderer_host/render_widget_host_view_android.h b/chromium/content/browser/renderer_host/render_widget_host_view_android.h
index 4707734a8e8..4d81add3940 100644
--- a/chromium/content/browser/renderer_host/render_widget_host_view_android.h
+++ b/chromium/content/browser/renderer_host/render_widget_host_view_android.h
@@ -20,6 +20,7 @@
#include "content/browser/renderer_host/delegated_frame_evictor.h"
#include "content/browser/renderer_host/image_transport_factory_android.h"
#include "content/browser/renderer_host/ime_adapter_android.h"
+#include "content/browser/renderer_host/input/gesture_text_selector.h"
#include "content/browser/renderer_host/render_widget_host_view_base.h"
#include "content/common/content_export.h"
#include "gpu/command_buffer/common/mailbox.h"
@@ -65,7 +66,8 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid
public ImageTransportFactoryAndroidObserver,
public ui::GestureProviderClient,
public ui::WindowAndroidObserver,
- public DelegatedFrameEvictorClient {
+ public DelegatedFrameEvictorClient,
+ public GestureTextSelectorClient {
public:
RenderWidgetHostViewAndroid(RenderWidgetHostImpl* widget,
ContentViewCoreImpl* content_view_core);
@@ -186,6 +188,12 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid
virtual SkBitmap::Config PreferredReadbackFormat() OVERRIDE;
+ // GestureTextSelectorClient implementation.
+ virtual void ShowSelectionHandlesAutomatically() OVERRIDE;
+ virtual void SelectRange(float x1, float y1, float x2, float y2) OVERRIDE;
+ virtual void Unselect() OVERRIDE;
+ virtual void LongPress(base::TimeTicks time, float x, float y) OVERRIDE;
+
// Non-virtual methods
void SetContentViewCore(ContentViewCoreImpl* content_view_core);
SkColor GetCachedBackgroundColor() const;
@@ -198,7 +206,9 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid
void OnDidChangeBodyBackgroundColor(SkColor color);
void OnStartContentIntent(const GURL& content_url);
void OnSetNeedsBeginFrame(bool enabled);
- void OnSmartClipDataExtracted(const base::string16& result);
+ void OnSmartClipDataExtracted(const base::string16& text,
+ const base::string16& html,
+ const gfx::Rect rect);
bool OnTouchEvent(const ui::MotionEvent& event);
void ResetGestureDetection();
@@ -334,6 +344,9 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid
// Android MotionEvent's) and touch event acks.
ui::FilteredGestureProvider gesture_provider_;
+ // Handles gesture based text selection
+ GestureTextSelector gesture_text_selector_;
+
bool flush_input_requested_;
int accelerated_surface_route_id_;
diff --git a/chromium/content/browser/resources/service_worker/serviceworker_internals.html b/chromium/content/browser/resources/service_worker/serviceworker_internals.html
index 89af55b0f77..85e70454664 100644
--- a/chromium/content/browser/resources/service_worker/serviceworker_internals.html
+++ b/chromium/content/browser/resources/service_worker/serviceworker_internals.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<html i18n-values="dir:textdirection;">
<head>
<meta charset="utf-8">
diff --git a/chromium/content/browser/web_contents/touch_editable_impl_aura.cc b/chromium/content/browser/web_contents/touch_editable_impl_aura.cc
index d28fa92deac..efcd1fccbb9 100644
--- a/chromium/content/browser/web_contents/touch_editable_impl_aura.cc
+++ b/chromium/content/browser/web_contents/touch_editable_impl_aura.cc
@@ -280,7 +280,8 @@ void TouchEditableImplAura::OpenContextMenu(const gfx::Point& anchor) {
gfx::Point point = anchor;
ConvertPointFromScreen(&point);
RenderWidgetHost* host = rwhva_->GetRenderWidgetHost();
- host->Send(new ViewMsg_ShowContextMenu(host->GetRoutingID(), point));
+ host->Send(new ViewMsg_ShowContextMenu(
+ host->GetRoutingID(), ui::MENU_SOURCE_TOUCH_EDIT_MENU, point));
EndTouchEditing(false);
}
diff --git a/chromium/content/browser/web_contents/web_contents_android.cc b/chromium/content/browser/web_contents/web_contents_android.cc
index fb8c0db8aa5..fbb5071ac1d 100644
--- a/chromium/content/browser/web_contents/web_contents_android.cc
+++ b/chromium/content/browser/web_contents/web_contents_android.cc
@@ -62,6 +62,12 @@ ScopedJavaLocalRef<jstring> WebContentsAndroid::GetTitle(
web_contents_->GetTitle());
}
+ScopedJavaLocalRef<jstring> WebContentsAndroid::GetVisibleURL(
+ JNIEnv* env, jobject obj) const {
+ return base::android::ConvertUTF8ToJavaString(
+ env, web_contents_->GetVisibleURL().spec());
+}
+
void WebContentsAndroid::Stop(JNIEnv* env, jobject obj) {
web_contents_->Stop();
}
diff --git a/chromium/content/browser/web_contents/web_contents_android.h b/chromium/content/browser/web_contents/web_contents_android.h
index eec6127220a..eda0235d467 100644
--- a/chromium/content/browser/web_contents/web_contents_android.h
+++ b/chromium/content/browser/web_contents/web_contents_android.h
@@ -36,6 +36,8 @@ class CONTENT_EXPORT WebContentsAndroid
// Methods called from Java
base::android::ScopedJavaLocalRef<jstring> GetTitle(JNIEnv* env,
jobject obj) const;
+ base::android::ScopedJavaLocalRef<jstring> GetVisibleURL(JNIEnv* env,
+ jobject obj) const;
void Stop(JNIEnv* env, jobject obj);
private:
diff --git a/chromium/content/common/media/media_player_messages_android.h b/chromium/content/common/media/media_player_messages_android.h
index 4548f0b849b..2908a2f84ae 100644
--- a/chromium/content/common/media/media_player_messages_android.h
+++ b/chromium/content/common/media/media_player_messages_android.h
@@ -71,6 +71,7 @@ IPC_STRUCT_BEGIN(MediaPlayerHostMsg_Initialize_Params)
IPC_STRUCT_MEMBER(GURL, url)
IPC_STRUCT_MEMBER(GURL, first_party_for_cookies)
IPC_STRUCT_MEMBER(GURL, frame_url)
+ IPC_STRUCT_MEMBER(bool, allow_credentials)
IPC_STRUCT_END()
// Chrome for Android seek message sequence is:
diff --git a/chromium/content/common/view_messages.h b/chromium/content/common/view_messages.h
index 3815910e727..2a95e3f6376 100644
--- a/chromium/content/common/view_messages.h
+++ b/chromium/content/common/view_messages.h
@@ -617,7 +617,8 @@ IPC_MESSAGE_ROUTED1(ViewMsg_SetInitialFocus,
// Sent to inform the renderer to invoke a context menu.
// The parameter specifies the location in the render view's coordinates.
-IPC_MESSAGE_ROUTED1(ViewMsg_ShowContextMenu,
+IPC_MESSAGE_ROUTED2(ViewMsg_ShowContextMenu,
+ ui::MenuSourceType,
gfx::Point /* location where menu should be shown */)
IPC_MESSAGE_ROUTED0(ViewMsg_Stop)
@@ -1660,11 +1661,10 @@ IPC_MESSAGE_ROUTED1(ViewHostMsg_SetNeedsBeginFrame,
bool /* enabled */)
// Reply to the ViewMsg_ExtractSmartClipData message.
-// TODO(juhui24.lee@samsung.com): this should be changed to a vector of structs
-// instead of encoding the data as a string which is not allowed normally. Since
-// ths is only used in Android WebView, it's allowed temporarily.
-// http://crbug.com/330872
-IPC_MESSAGE_ROUTED1(ViewHostMsg_SmartClipDataExtracted, base::string16)
+IPC_MESSAGE_ROUTED3(ViewHostMsg_SmartClipDataExtracted,
+ base::string16 /* text */,
+ base::string16 /* html */,
+ gfx::Rect /* rect */)
#elif defined(OS_MACOSX)
// Request that the browser load a font into shared memory for us.
diff --git a/chromium/content/content_browser.gypi b/chromium/content/content_browser.gypi
index 37aa4673cab..4f13c10ef93 100644
--- a/chromium/content/content_browser.gypi
+++ b/chromium/content/content_browser.gypi
@@ -871,6 +871,8 @@
'browser/renderer_host/ime_adapter_android.h',
'browser/renderer_host/input/gesture_event_queue.cc',
'browser/renderer_host/input/gesture_event_queue.h',
+ 'browser/renderer_host/input/gesture_text_selector.cc',
+ 'browser/renderer_host/input/gesture_text_selector.h',
'browser/renderer_host/input/input_ack_handler.h',
'browser/renderer_host/input/input_router.h',
'browser/renderer_host/input/input_router_client.h',
diff --git a/chromium/content/content_renderer.gypi b/chromium/content/content_renderer.gypi
index 444a6650113..1feeb81c384 100644
--- a/chromium/content/content_renderer.gypi
+++ b/chromium/content/content_renderer.gypi
@@ -58,7 +58,6 @@
'public/renderer/render_frame_observer.cc',
'public/renderer/render_frame_observer.h',
'public/renderer/render_frame_observer_tracker.h',
- 'public/renderer/render_font_warmup_win.cc',
'public/renderer/render_font_warmup_win.h',
'public/renderer/render_process_observer.cc',
'public/renderer/render_process_observer.h',
@@ -373,6 +372,7 @@
'renderer/notification_provider.h',
'renderer/push_messaging_dispatcher.cc',
'renderer/push_messaging_dispatcher.h',
+ 'renderer/render_font_warmup_win.cc',
'renderer/render_frame_impl.cc',
'renderer/render_frame_impl.h',
'renderer/render_frame_proxy.cc',
@@ -398,6 +398,8 @@
'renderer/renderer_clipboard_client.h',
'renderer/renderer_date_time_picker.cc',
'renderer/renderer_date_time_picker.h',
+ 'renderer/renderer_font_platform_win.cc',
+ 'renderer/renderer_font_platform_win.h',
'renderer/renderer_main.cc',
'renderer/renderer_main_platform_delegate.h',
'renderer/renderer_main_platform_delegate_android.cc',
@@ -683,8 +685,6 @@
'renderer/media/rtc_video_encoder_factory.h',
'renderer/media/rtc_video_renderer.cc',
'renderer/media/rtc_video_renderer.h',
- 'renderer/media/video_frame_deliverer.cc',
- 'renderer/media/video_frame_deliverer.h',
'renderer/media/video_source_handler.cc',
'renderer/media/video_source_handler.h',
'renderer/media/video_track_adapter.cc',
diff --git a/chromium/content/content_tests.gypi b/chromium/content/content_tests.gypi
index d17648d9b60..bb754ae2361 100644
--- a/chromium/content/content_tests.gypi
+++ b/chromium/content/content_tests.gypi
@@ -532,6 +532,7 @@
'browser/quota/usage_tracker_unittest.cc',
'browser/renderer_host/compositing_iosurface_transformer_mac_unittest.cc',
'browser/renderer_host/input/gesture_event_queue_unittest.cc',
+ 'browser/renderer_host/input/gesture_text_selector_unittest.cc',
'browser/renderer_host/input/input_router_impl_unittest.cc',
'browser/renderer_host/input/mock_input_ack_handler.cc',
'browser/renderer_host/input/mock_input_ack_handler.h',
diff --git a/chromium/content/public/OWNERS b/chromium/content/public/OWNERS
new file mode 100644
index 00000000000..cac71c15af4
--- /dev/null
+++ b/chromium/content/public/OWNERS
@@ -0,0 +1,2 @@
+# DWrite specific changes
+per-file render_font_warmup_win.h=scottmg@chromium.org
diff --git a/chromium/content/public/common/common_param_traits_macros.h b/chromium/content/public/common/common_param_traits_macros.h
index 61d8b851434..3de44ee43b1 100644
--- a/chromium/content/public/common/common_param_traits_macros.h
+++ b/chromium/content/public/common/common_param_traits_macros.h
@@ -191,6 +191,7 @@ IPC_STRUCT_TRAITS_BEGIN(WebPreferences)
IPC_STRUCT_TRAITS_MEMBER(use_legacy_background_size_shorthand_behavior)
IPC_STRUCT_TRAITS_MEMBER(wide_viewport_quirk)
IPC_STRUCT_TRAITS_MEMBER(use_wide_viewport)
+ IPC_STRUCT_TRAITS_MEMBER(force_zero_layout_height)
IPC_STRUCT_TRAITS_MEMBER(viewport_meta_layout_size_quirk)
IPC_STRUCT_TRAITS_MEMBER(viewport_meta_merge_content_quirk)
IPC_STRUCT_TRAITS_MEMBER(viewport_meta_non_user_scalable_quirk)
diff --git a/chromium/content/renderer/OWNERS b/chromium/content/renderer/OWNERS
index b3105d08b3c..b9a7ad47651 100644
--- a/chromium/content/renderer/OWNERS
+++ b/chromium/content/renderer/OWNERS
@@ -3,3 +3,9 @@ jamesr@chromium.org
# Mac Sandbox profiles.
per-file *.sb=set noparent
per-file *.sb=jeremy@chromium.org
+
+# DirectWrite specific changes
+per-file render_font_warmup_win.cc=scottmg@chromium.org
+per-file renderer_font_platform_win.*=shrikant@chromium.org
+per-file renderer_font_platform_win.*=scottmg@chromium.org
+per-file renderer_font_platform_win.*=cpu@chromium.org
diff --git a/chromium/content/renderer/accessibility/renderer_accessibility_complete.cc b/chromium/content/renderer/accessibility/renderer_accessibility_complete.cc
index 2e72dde7fb9..e7765d4673e 100644
--- a/chromium/content/renderer/accessibility/renderer_accessibility_complete.cc
+++ b/chromium/content/renderer/accessibility/renderer_accessibility_complete.cc
@@ -177,16 +177,21 @@ void RendererAccessibilityComplete::SendPendingAccessibilityEvents() {
// Generate an event message from each Blink event.
std::vector<AccessibilityHostMsg_EventParams> event_msgs;
+ // If there's a layout complete message, we need to send location changes.
+ bool had_layout_complete_messages = false;
+
// Loop over each event and generate an updated event message.
for (size_t i = 0; i < src_events.size(); ++i) {
- AccessibilityHostMsg_EventParams& event =
- src_events[i];
+ AccessibilityHostMsg_EventParams& event = src_events[i];
+ if (event.event_type == ui::AX_EVENT_LAYOUT_COMPLETE)
+ had_layout_complete_messages = true;
+
+ WebAXObject obj = document.accessibilityObjectFromID(event.id);
- WebAXObject obj = document.accessibilityObjectFromID(
- event.id);
// Make sure the object still exists.
if (!obj.updateBackingStoreAndCheckValidity())
continue;
+
// Make sure it's a descendant of our root node - exceptions include the
// scroll area that's the parent of the main document (we ignore it), and
// possibly nodes attached to a different document.
@@ -207,6 +212,13 @@ void RendererAccessibilityComplete::SendPendingAccessibilityEvents() {
serializer_.SerializeChanges(obj, &event_msg.update);
event_msgs.push_back(event_msg);
+ // For each node in the update, set the location in our map from
+ // ids to locations.
+ for (size_t i = 0; i < event_msg.update.nodes.size(); ++i) {
+ locations_[event_msg.update.nodes[i].id] =
+ event_msg.update.nodes[i].location;
+ }
+
VLOG(0) << "Accessibility event: " << ui::ToString(event.event_type)
<< " on node id " << event_msg.id
<< "\n" << event_msg.update.ToString();
@@ -214,7 +226,8 @@ void RendererAccessibilityComplete::SendPendingAccessibilityEvents() {
Send(new AccessibilityHostMsg_Events(routing_id(), event_msgs));
- SendLocationChanges();
+ if (had_layout_complete_messages)
+ SendLocationChanges();
}
void RendererAccessibilityComplete::SendLocationChanges() {
@@ -246,6 +259,12 @@ void RendererAccessibilityComplete::SendLocationChanges() {
// Save the new location.
new_locations[id] = new_location;
+
+ // Explore children of this object.
+ std::vector<blink::WebAXObject> children;
+ tree_source_.GetChildren(obj, &children);
+ for (size_t i = 0; i < children.size(); ++i)
+ objs_to_explore.push(children[i]);
}
locations_.swap(new_locations);
diff --git a/chromium/content/renderer/media/android/media_info_loader.cc b/chromium/content/renderer/media/android/media_info_loader.cc
index 8a49e04087f..caa66af7431 100644
--- a/chromium/content/renderer/media/android/media_info_loader.cc
+++ b/chromium/content/renderer/media/android/media_info_loader.cc
@@ -29,6 +29,7 @@ MediaInfoLoader::MediaInfoLoader(
const ReadyCB& ready_cb)
: loader_failed_(false),
url_(url),
+ allow_stored_credentials_(false),
cors_mode_(cors_mode),
single_origin_(true),
ready_cb_(ready_cb) {}
@@ -41,6 +42,7 @@ void MediaInfoLoader::Start(blink::WebFrame* frame) {
CHECK(frame);
start_time_ = base::TimeTicks::Now();
+ first_party_url_ = frame->document().firstPartyForCookies();
// Prepare the request.
WebURLRequest request(url_);
@@ -56,14 +58,17 @@ void MediaInfoLoader::Start(blink::WebFrame* frame) {
options.allowCredentials = true;
options.crossOriginRequestPolicy =
WebURLLoaderOptions::CrossOriginRequestPolicyAllow;
+ allow_stored_credentials_ = true;
} else {
options.exposeAllResponseHeaders = true;
// The author header set is empty, no preflight should go ahead.
options.preflightPolicy = WebURLLoaderOptions::PreventPreflight;
options.crossOriginRequestPolicy =
WebURLLoaderOptions::CrossOriginRequestPolicyUseAccessControl;
- if (cors_mode_ == blink::WebMediaPlayer::CORSModeUseCredentials)
+ if (cors_mode_ == blink::WebMediaPlayer::CORSModeUseCredentials) {
options.allowCredentials = true;
+ allow_stored_credentials_ = true;
+ }
}
loader.reset(frame->createAssociatedURLLoader(options));
}
@@ -92,6 +97,8 @@ void MediaInfoLoader::willSendRequest(
single_origin_ = url_.GetOrigin() == GURL(newRequest.url()).GetOrigin();
url_ = newRequest.url();
+ first_party_url_ = newRequest.firstPartyForCookies();
+ allow_stored_credentials_ = newRequest.allowStoredCredentials();
}
void MediaInfoLoader::didSendData(
@@ -187,7 +194,8 @@ void MediaInfoLoader::DidBecomeReady(Status status) {
base::TimeTicks::Now() - start_time_);
active_loader_.reset();
if (!ready_cb_.is_null())
- base::ResetAndReturn(&ready_cb_).Run(status);
+ base::ResetAndReturn(&ready_cb_).Run(status, url_, first_party_url_,
+ allow_stored_credentials_);
}
} // namespace content
diff --git a/chromium/content/renderer/media/android/media_info_loader.h b/chromium/content/renderer/media/android/media_info_loader.h
index d87b67c30ed..caefc9d1672 100644
--- a/chromium/content/renderer/media/android/media_info_loader.h
+++ b/chromium/content/renderer/media/android/media_info_loader.h
@@ -14,6 +14,7 @@
#include "content/renderer/media/active_loader.h"
#include "third_party/WebKit/public/platform/WebMediaPlayer.h"
#include "third_party/WebKit/public/platform/WebURLLoaderClient.h"
+#include "third_party/WebKit/public/web/WebDocument.h"
#include "url/gurl.h"
namespace blink {
@@ -44,11 +45,16 @@ class CONTENT_EXPORT MediaInfoLoader : private blink::WebURLLoaderClient {
kOk,
};
+ // Callback when MediaInfoLoader finishes loading the url. Args: whether URL
+ // is successfully loaded, the final URL destination following all the
+ // redirect, the first party URL for the final destination, and whether
+ // credentials needs to be sent to the final destination.
+ typedef base::Callback<void(Status, const GURL&, const GURL&, bool)> ReadyCB;
+
// Start loading information about the given media URL.
// |url| - URL for the media resource to be loaded.
// |cors_mode| - HTML media element's crossorigin attribute.
// |ready_cb| - Called when media info has finished or failed loading.
- typedef base::Callback<void(Status)> ReadyCB;
MediaInfoLoader(
const GURL& url,
blink::WebMediaPlayer::CORSMode cors_mode,
@@ -66,10 +72,6 @@ class CONTENT_EXPORT MediaInfoLoader : private blink::WebURLLoaderClient {
// Only valid to call after the loader becomes ready.
bool DidPassCORSAccessCheck() const;
- void set_single_origin(bool single_origin) {
- single_origin_ = single_origin;
- }
-
private:
friend class MediaInfoLoaderTest;
@@ -115,6 +117,8 @@ class CONTENT_EXPORT MediaInfoLoader : private blink::WebURLLoaderClient {
bool loader_failed_;
GURL url_;
+ GURL first_party_url_;
+ bool allow_stored_credentials_;
blink::WebMediaPlayer::CORSMode cors_mode_;
bool single_origin_;
diff --git a/chromium/content/renderer/media/android/media_info_loader_unittest.cc b/chromium/content/renderer/media/android/media_info_loader_unittest.cc
index ffde7927e1d..41a7b894b77 100644
--- a/chromium/content/renderer/media/android/media_info_loader_unittest.cc
+++ b/chromium/content/renderer/media/android/media_info_loader_unittest.cc
@@ -86,7 +86,7 @@ class MediaInfoLoaderTest : public testing::Test {
void SendResponse(
int http_status, MediaInfoLoader::Status expected_status) {
- EXPECT_CALL(*this, ReadyCallback(expected_status));
+ EXPECT_CALL(*this, ReadyCallback(expected_status, _, _, _));
EXPECT_CALL(*url_loader_, cancel());
WebURLResponse response(gurl_);
@@ -98,11 +98,13 @@ class MediaInfoLoaderTest : public testing::Test {
}
void FailLoad() {
- EXPECT_CALL(*this, ReadyCallback(MediaInfoLoader::kFailed));
+ EXPECT_CALL(*this, ReadyCallback(
+ MediaInfoLoader::kFailed, _, _, _));
loader_->didFail(url_loader_, WebURLError());
}
- MOCK_METHOD1(ReadyCallback, void(MediaInfoLoader::Status));
+ MOCK_METHOD4(ReadyCallback,
+ void(MediaInfoLoader::Status, const GURL&, const GURL&, bool));
protected:
GURL gurl_;
diff --git a/chromium/content/renderer/media/android/renderer_media_player_manager.cc b/chromium/content/renderer/media/android/renderer_media_player_manager.cc
index f3e0bc01cfc..88af4740d0b 100644
--- a/chromium/content/renderer/media/android/renderer_media_player_manager.cc
+++ b/chromium/content/renderer/media/android/renderer_media_player_manager.cc
@@ -67,8 +67,8 @@ void RendererMediaPlayerManager::Initialize(
const GURL& url,
const GURL& first_party_for_cookies,
int demuxer_client_id,
- const GURL& frame_url) {
-
+ const GURL& frame_url,
+ bool allow_credentials) {
MediaPlayerHostMsg_Initialize_Params media_player_params;
media_player_params.type = type;
media_player_params.player_id = player_id;
@@ -76,6 +76,7 @@ void RendererMediaPlayerManager::Initialize(
media_player_params.url = url;
media_player_params.first_party_for_cookies = first_party_for_cookies;
media_player_params.frame_url = frame_url;
+ media_player_params.allow_credentials = allow_credentials;
Send(new MediaPlayerHostMsg_Initialize(routing_id(), media_player_params));
}
diff --git a/chromium/content/renderer/media/android/renderer_media_player_manager.h b/chromium/content/renderer/media/android/renderer_media_player_manager.h
index 4bcb2888378..e8698c9506a 100644
--- a/chromium/content/renderer/media/android/renderer_media_player_manager.h
+++ b/chromium/content/renderer/media/android/renderer_media_player_manager.h
@@ -45,7 +45,8 @@ class RendererMediaPlayerManager : public RenderFrameObserver {
const GURL& url,
const GURL& first_party_for_cookies,
int demuxer_client_id,
- const GURL& frame_url);
+ const GURL& frame_url,
+ bool allow_credentials);
// Starts the player.
void Start(int player_id);
diff --git a/chromium/content/renderer/media/android/webmediaplayer_android.cc b/chromium/content/renderer/media/android/webmediaplayer_android.cc
index 98335469166..049a5576c2a 100644
--- a/chromium/content/renderer/media/android/webmediaplayer_android.cc
+++ b/chromium/content/renderer/media/android/webmediaplayer_android.cc
@@ -6,6 +6,7 @@
#include <limits>
+#include "base/android/build_info.h"
#include "base/bind.h"
#include "base/callback_helpers.h"
#include "base/command_line.h"
@@ -54,6 +55,7 @@
#include "ui/gfx/image/image.h"
static const uint32 kGLTextureExternalOES = 0x8D65;
+static const int kSDKVersionToSupportSecurityOriginCheck = 20;
using blink::WebMediaPlayer;
using blink::WebSize;
@@ -108,12 +110,9 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid(
texture_id_(0),
stream_id_(0),
is_playing_(false),
- playing_started_(false),
needs_establish_peer_(true),
stream_texture_proxy_initialized_(false),
has_size_info_(false),
- has_media_metadata_(false),
- has_media_info_(false),
stream_texture_factory_(factory),
needs_external_surface_(false),
video_frame_provider_client_(NULL),
@@ -123,6 +122,7 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid(
is_remote_(false),
media_log_(media_log),
web_cdm_(NULL),
+ allow_stored_credentials_(false),
weak_factory_(this) {
DCHECK(player_manager_);
DCHECK(cdm_manager_);
@@ -190,13 +190,9 @@ void WebMediaPlayerAndroid::load(LoadType load_type,
return;
}
- has_media_metadata_ = false;
- has_media_info_ = false;
-
+ url_ = url;
int demuxer_client_id = 0;
if (player_type_ != MEDIA_PLAYER_TYPE_URL) {
- has_media_info_ = true;
-
RendererDemuxerAndroid* demuxer =
RenderThreadImpl::current()->renderer_demuxer();
demuxer_client_id = demuxer->GetNextDemuxerClientID();
@@ -220,6 +216,8 @@ void WebMediaPlayerAndroid::load(LoadType load_type,
weak_factory_.GetWeakPtr()),
base::Bind(&WebMediaPlayerAndroid::OnDurationChanged,
weak_factory_.GetWeakPtr()));
+ InitializePlayer(url_, frame_->document().firstPartyForCookies(),
+ true, demuxer_client_id);
}
} else {
info_loader_.reset(
@@ -228,28 +226,18 @@ void WebMediaPlayerAndroid::load(LoadType load_type,
cors_mode,
base::Bind(&WebMediaPlayerAndroid::DidLoadMediaInfo,
weak_factory_.GetWeakPtr())));
- // TODO(qinmin): The url might be redirected when android media player
- // requests the stream. As a result, we cannot guarantee there is only
- // a single origin. Remove the following line when b/12573548 is fixed.
- // Check http://crbug.com/334204.
- info_loader_->set_single_origin(false);
info_loader_->Start(frame_);
}
-
- url_ = url;
- GURL first_party_url = frame_->document().firstPartyForCookies();
- player_manager_->Initialize(
- player_type_, player_id_, url, first_party_url, demuxer_client_id,
- frame_->document().url());
-
- if (player_manager_->ShouldEnterFullscreen(frame_))
- player_manager_->EnterFullscreen(player_id_, frame_);
-
+
UpdateNetworkState(WebMediaPlayer::NetworkStateLoading);
UpdateReadyState(WebMediaPlayer::ReadyStateHaveNothing);
}
-void WebMediaPlayerAndroid::DidLoadMediaInfo(MediaInfoLoader::Status status) {
+void WebMediaPlayerAndroid::DidLoadMediaInfo(
+ MediaInfoLoader::Status status,
+ const GURL& redirected_url,
+ const GURL& first_party_for_cookies,
+ bool allow_stored_credentials) {
DCHECK(!media_source_delegate_);
if (status == MediaInfoLoader::kFailed) {
info_loader_.reset();
@@ -257,17 +245,10 @@ void WebMediaPlayerAndroid::DidLoadMediaInfo(MediaInfoLoader::Status status) {
return;
}
- has_media_info_ = true;
- if (has_media_metadata_ &&
- ready_state_ != WebMediaPlayer::ReadyStateHaveEnoughData) {
- UpdateReadyState(WebMediaPlayer::ReadyStateHaveMetadata);
- UpdateReadyState(WebMediaPlayer::ReadyStateHaveEnoughData);
- }
- // Android doesn't start fetching resources until an implementation-defined
- // event (e.g. playback request) occurs. Sets the network state to IDLE
- // if play is not requested yet.
- if (!playing_started_)
- UpdateNetworkState(WebMediaPlayer::NetworkStateIdle);
+ InitializePlayer(
+ redirected_url, first_party_for_cookies, allow_stored_credentials, 0);
+
+ UpdateNetworkState(WebMediaPlayer::NetworkStateIdle);
}
void WebMediaPlayerAndroid::play() {
@@ -291,7 +272,6 @@ void WebMediaPlayerAndroid::play() {
player_manager_->Start(player_id_);
UpdatePlayingState(true);
UpdateNetworkState(WebMediaPlayer::NetworkStateLoading);
- playing_started_ = true;
}
void WebMediaPlayerAndroid::pause() {
@@ -544,12 +524,23 @@ bool WebMediaPlayerAndroid::copyVideoTextureToPlatformTexture(
}
bool WebMediaPlayerAndroid::hasSingleSecurityOrigin() const {
- if (info_loader_)
- return info_loader_->HasSingleOrigin();
- // The info loader may have failed.
- if (player_type_ == MEDIA_PLAYER_TYPE_URL)
+ if (player_type_ != MEDIA_PLAYER_TYPE_URL)
+ return true;
+
+ if (!info_loader_ || !info_loader_->HasSingleOrigin())
return false;
- return true;
+
+ // TODO(qinmin): The url might be redirected when android media player
+ // requests the stream. As a result, we cannot guarantee there is only
+ // a single origin. Only if the HTTP request was made without credentials,
+ // we will honor the return value from HasSingleSecurityOriginInternal()
+ // in pre-L android versions.
+ // Check http://crbug.com/334204.
+ if (!allow_stored_credentials_)
+ return true;
+
+ return base::android::BuildInfo::GetInstance()->sdk_int() >=
+ kSDKVersionToSupportSecurityOriginCheck;
}
bool WebMediaPlayerAndroid::didPassCORSAccessCheck() const {
@@ -613,9 +604,7 @@ void WebMediaPlayerAndroid::OnMediaMetadataChanged(
}
}
- has_media_metadata_ = true;
- if (has_media_info_ &&
- ready_state_ != WebMediaPlayer::ReadyStateHaveEnoughData) {
+ if (ready_state_ != WebMediaPlayer::ReadyStateHaveEnoughData) {
UpdateReadyState(WebMediaPlayer::ReadyStateHaveMetadata);
UpdateReadyState(WebMediaPlayer::ReadyStateHaveEnoughData);
}
@@ -884,6 +873,19 @@ void WebMediaPlayerAndroid::OnDestruct() {
"the RenderFrame goes away.";
}
+void WebMediaPlayerAndroid::InitializePlayer(
+ const GURL& url,
+ const GURL& first_party_for_cookies,
+ bool allow_stored_credentials,
+ int demuxer_client_id) {
+ allow_stored_credentials_ = allow_stored_credentials;
+ player_manager_->Initialize(
+ player_type_, player_id_, url, first_party_for_cookies, demuxer_client_id,
+ frame_->document().url(), allow_stored_credentials);
+ if (player_manager_->ShouldEnterFullscreen(frame_))
+ player_manager_->EnterFullscreen(player_id_, frame_);
+}
+
void WebMediaPlayerAndroid::Pause(bool is_media_related_action) {
player_manager_->Pause(player_id_, is_media_related_action);
UpdatePlayingState(false);
diff --git a/chromium/content/renderer/media/android/webmediaplayer_android.h b/chromium/content/renderer/media/android/webmediaplayer_android.h
index 67d09e06708..f20d0ae5c6a 100644
--- a/chromium/content/renderer/media/android/webmediaplayer_android.h
+++ b/chromium/content/renderer/media/android/webmediaplayer_android.h
@@ -250,11 +250,18 @@ class WebMediaPlayerAndroid : public blink::WebMediaPlayer,
void SetNeedsEstablishPeer(bool needs_establish_peer);
private:
+ void InitializePlayer(const GURL& url,
+ const GURL& first_party_for_cookies,
+ bool allowed_stored_credentials,
+ int demuxer_client_id);
void Pause(bool is_media_related_action);
void DrawRemotePlaybackText(const std::string& remote_playback_message);
void ReallocateVideoFrame();
void SetCurrentFrameInternal(scoped_refptr<media::VideoFrame>& frame);
- void DidLoadMediaInfo(MediaInfoLoader::Status status);
+ void DidLoadMediaInfo(MediaInfoLoader::Status status,
+ const GURL& redirected_url,
+ const GURL& first_party_for_cookies,
+ bool allow_stored_credentials);
bool IsKeySystemSupported(const std::string& key_system);
// Actually do the work for generateKeyRequest/addKey so they can easily
@@ -358,9 +365,6 @@ class WebMediaPlayerAndroid : public blink::WebMediaPlayer,
// Whether the mediaplayer is playing.
bool is_playing_;
- // Whether the mediaplayer has already started playing.
- bool playing_started_;
-
// Whether media player needs to re-establish the surface texture peer.
bool needs_establish_peer_;
@@ -370,10 +374,6 @@ class WebMediaPlayerAndroid : public blink::WebMediaPlayer,
// Whether the video size info is available.
bool has_size_info_;
- // Whether the video metadata and info are available.
- bool has_media_metadata_;
- bool has_media_info_;
-
// Object for allocating stream textures.
scoped_refptr<StreamTextureFactory> stream_texture_factory_;
@@ -443,6 +443,9 @@ class WebMediaPlayerAndroid : public blink::WebMediaPlayer,
// player_manager_->SetCdm() directly.
media::DecryptorReadyCB decryptor_ready_cb_;
+ // Whether stored credentials are allowed to be passed to the server.
+ bool allow_stored_credentials_;
+
// NOTE: Weak pointers must be invalidated before all other member variables.
base::WeakPtrFactory<WebMediaPlayerAndroid> weak_factory_;
diff --git a/chromium/content/renderer/media/crypto/key_systems.cc b/chromium/content/renderer/media/crypto/key_systems.cc
index dace75167b1..1684c271ea2 100644
--- a/chromium/content/renderer/media/crypto/key_systems.cc
+++ b/chromium/content/renderer/media/crypto/key_systems.cc
@@ -209,14 +209,14 @@ KeySystems::KeySystems() : needs_update_(true) {
}
void KeySystems::UpdateIfNeeded() {
-#if defined(WIDEVINE_CDM_AVAILABLE) && defined(WIDEVINE_CDM_IS_COMPONENT)
+#if defined(WIDEVINE_CDM_AVAILABLE)
DCHECK(thread_checker_.CalledOnValidThread());
if (!needs_update_)
return;
// The update could involve a sync IPC to the browser process. Use a minimum
// update interval to avoid unnecessary frequent IPC to the browser.
- static const int kMinUpdateIntervalInSeconds = 5;
+ static const int kMinUpdateIntervalInSeconds = 1;
base::Time now = base::Time::Now();
if (now - last_update_time_ <
base::TimeDelta::FromSeconds(kMinUpdateIntervalInSeconds)) {
diff --git a/chromium/content/renderer/media/media_stream_video_track.cc b/chromium/content/renderer/media/media_stream_video_track.cc
index 0ad7159255d..da26aac6f79 100644
--- a/chromium/content/renderer/media/media_stream_video_track.cc
+++ b/chromium/content/renderer/media/media_stream_video_track.cc
@@ -4,86 +4,172 @@
#include "content/renderer/media/media_stream_video_track.h"
+#include <utility>
+
#include "base/bind.h"
-#include "content/renderer/media/video_frame_deliverer.h"
#include "media/base/bind_to_current_loop.h"
namespace content {
-// Helper class used for delivering video frames to MediaStreamSinks on the
-// IO-thread.
-// Frames are delivered to an instance of this class from a
-// MediaStreamVideoSource on the IO-thread to the method DeliverFrameOnIO.
-// Frames are only delivered to the sinks if the track is enabled.
-class MediaStreamVideoTrack::FrameDeliverer : public VideoFrameDeliverer {
+namespace {
+void ResetCallback(scoped_ptr<VideoCaptureDeliverFrameCB> callback) {
+ // |callback| will be deleted when this exits.
+}
+} // namespace
+
+// MediaStreamVideoTrack::FrameDeliverer is a helper class used for registering
+// VideoCaptureDeliverFrameCB on the main render thread to receive video frames
+// on the IO-thread.
+// Frames are only delivered to the sinks if the track is enabled. If the track
+// is disabled, a black frame is instead forwarded to the sinks at the same
+// frame rate.
+class MediaStreamVideoTrack::FrameDeliverer
+ : public base::RefCountedThreadSafe<FrameDeliverer> {
public:
FrameDeliverer(
- const scoped_refptr<base::MessageLoopProxy>& io_message_loop_proxy,
- bool enabled)
- : VideoFrameDeliverer(io_message_loop_proxy),
- enabled_(enabled) {
- }
+ const scoped_refptr<base::MessageLoopProxy>& io_message_loop,
+ bool enabled);
- // Add |sink| to receive state changes on the main render thread.
- // Video frames will be delivered to |callback| on the IO thread.
- void AddSink(MediaStreamVideoSink* sink,
- const VideoCaptureDeliverFrameCB& callback) {
- DCHECK(thread_checker().CalledOnValidThread());
- DCHECK(std::find(sinks_.begin(), sinks_.end(), sink) == sinks_.end());
- sinks_.push_back(sink);
- AddCallback(sink, callback);
- }
+ void SetEnabled(bool enabled);
- void RemoveSink(MediaStreamVideoSink* sink) {
- DCHECK(thread_checker().CalledOnValidThread());
- std::vector<MediaStreamVideoSink*>::iterator it =
- std::find(sinks_.begin(), sinks_.end(), sink);
- DCHECK(it != sinks_.end());
- sinks_.erase(it);
- RemoveCallback(sink);
- }
+ // Add |callback| to receive video frames on the IO-thread.
+ // Must be called on the main render thread.
+ void AddCallback(void* id, const VideoCaptureDeliverFrameCB& callback);
- void SetEnabled(bool enabled) {
- DCHECK(thread_checker().CalledOnValidThread());
- io_message_loop()->PostTask(
- FROM_HERE,
- base::Bind(&MediaStreamVideoTrack::FrameDeliverer::SetEnabledOnIO,
- this, enabled));
- }
+ // Removes |callback| associated with |id| from receiving video frames if |id|
+ // has been added. It is ok to call RemoveCallback even if the |id| has not
+ // been added. Note that the added callback will be reset on the main thread.
+ // Must be called on the main render thread.
+ void RemoveCallback(void* id);
- virtual void DeliverFrameOnIO(
- const scoped_refptr<media::VideoFrame>& frame,
- const media::VideoCaptureFormat& format,
- const base::TimeTicks& estimated_capture_time) OVERRIDE {
- DCHECK(io_message_loop()->BelongsToCurrentThread());
- if (!enabled_)
- return;
- VideoFrameDeliverer::DeliverFrameOnIO(frame, format,
- estimated_capture_time);
- }
+ // Triggers all registered callbacks with |frame|, |format| and
+ // |estimated_capture_time| as parameters. Must be called on the IO-thread.
+ void DeliverFrameOnIO(const scoped_refptr<media::VideoFrame>& frame,
+ const media::VideoCaptureFormat& format,
+ const base::TimeTicks& estimated_capture_time);
- const std::vector<MediaStreamVideoSink*>& sinks() const { return sinks_; }
-
- protected:
- virtual ~FrameDeliverer() {
- DCHECK(sinks_.empty());
- }
+ private:
+ friend class base::RefCountedThreadSafe<FrameDeliverer>;
+ virtual ~FrameDeliverer();
+ void AddCallbackOnIO(void* id, const VideoCaptureDeliverFrameCB& callback);
+ void RemoveCallbackOnIO(
+ void* id, const scoped_refptr<base::MessageLoopProxy>& message_loop);
- void SetEnabledOnIO(bool enabled) {
- DCHECK(io_message_loop()->BelongsToCurrentThread());
- enabled_ = enabled;
- }
+ void SetEnabledOnIO(bool enabled);
+ // Returns |black_frame_| where the size and time stamp is set to the same as
+ // as in |reference_frame|.
+ const scoped_refptr<media::VideoFrame>& GetBlackFrame(
+ const scoped_refptr<media::VideoFrame>& reference_frame);
- private:
- // The below members are used on the main render thread.
- std::vector<MediaStreamVideoSink*> sinks_;
+ // Used to DCHECK that AddCallback and RemoveCallback are called on the main
+ // render thread.
+ base::ThreadChecker thread_checker_;
+ scoped_refptr<base::MessageLoopProxy> io_message_loop_;
- // The below parameters are used on the IO-thread.
bool enabled_;
+ scoped_refptr<media::VideoFrame> black_frame_;
+
+ typedef std::pair<void*, VideoCaptureDeliverFrameCB> VideoIdCallbackPair;
+ std::vector<VideoIdCallbackPair> callbacks_;
DISALLOW_COPY_AND_ASSIGN(FrameDeliverer);
};
+MediaStreamVideoTrack::FrameDeliverer::FrameDeliverer(
+ const scoped_refptr<base::MessageLoopProxy>& io_message_loop, bool enabled)
+ : io_message_loop_(io_message_loop),
+ enabled_(enabled) {
+ DCHECK(io_message_loop_);
+}
+
+MediaStreamVideoTrack::FrameDeliverer::~FrameDeliverer() {
+ DCHECK(callbacks_.empty());
+}
+
+void MediaStreamVideoTrack::FrameDeliverer::AddCallback(
+ void* id,
+ const VideoCaptureDeliverFrameCB& callback) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ io_message_loop_->PostTask(
+ FROM_HERE,
+ base::Bind(&FrameDeliverer::AddCallbackOnIO,
+ this, id, callback));
+}
+
+void MediaStreamVideoTrack::FrameDeliverer::AddCallbackOnIO(
+ void* id,
+ const VideoCaptureDeliverFrameCB& callback) {
+ DCHECK(io_message_loop_->BelongsToCurrentThread());
+ callbacks_.push_back(std::make_pair(id, callback));
+}
+
+void MediaStreamVideoTrack::FrameDeliverer::RemoveCallback(void* id) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ io_message_loop_->PostTask(
+ FROM_HERE,
+ base::Bind(&FrameDeliverer::RemoveCallbackOnIO,
+ this, id, base::MessageLoopProxy::current()));
+}
+
+void MediaStreamVideoTrack::FrameDeliverer::RemoveCallbackOnIO(
+ void* id, const scoped_refptr<base::MessageLoopProxy>& message_loop) {
+ DCHECK(io_message_loop_->BelongsToCurrentThread());
+ std::vector<VideoIdCallbackPair>::iterator it = callbacks_.begin();
+ for (; it != callbacks_.end(); ++it) {
+ if (it->first == id) {
+ // Callback is copied to heap and then deleted on the target thread.
+ scoped_ptr<VideoCaptureDeliverFrameCB> callback;
+ callback.reset(new VideoCaptureDeliverFrameCB(it->second));
+ callbacks_.erase(it);
+ message_loop->PostTask(
+ FROM_HERE, base::Bind(&ResetCallback, base::Passed(&callback)));
+ return;
+ }
+ }
+}
+
+void MediaStreamVideoTrack::FrameDeliverer::SetEnabled(bool enabled) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ io_message_loop_->PostTask(
+ FROM_HERE,
+ base::Bind(&FrameDeliverer::SetEnabledOnIO,
+ this, enabled));
+}
+
+void MediaStreamVideoTrack::FrameDeliverer::SetEnabledOnIO(bool enabled) {
+ DCHECK(io_message_loop_->BelongsToCurrentThread());
+ enabled_ = enabled;
+ if (enabled_)
+ black_frame_ = NULL;
+}
+
+void MediaStreamVideoTrack::FrameDeliverer::DeliverFrameOnIO(
+ const scoped_refptr<media::VideoFrame>& frame,
+ const media::VideoCaptureFormat& format,
+ const base::TimeTicks& estimated_capture_time) {
+ DCHECK(io_message_loop_->BelongsToCurrentThread());
+ const scoped_refptr<media::VideoFrame>& video_frame =
+ enabled_ ? frame : GetBlackFrame(frame);
+
+ for (std::vector<VideoIdCallbackPair>::iterator it = callbacks_.begin();
+ it != callbacks_.end(); ++it) {
+ it->second.Run(video_frame, format, estimated_capture_time);
+ }
+}
+
+const scoped_refptr<media::VideoFrame>&
+MediaStreamVideoTrack::FrameDeliverer::GetBlackFrame(
+ const scoped_refptr<media::VideoFrame>& reference_frame) {
+ DCHECK(io_message_loop_->BelongsToCurrentThread());
+ if (!black_frame_ ||
+ black_frame_->natural_size() != reference_frame->natural_size())
+ black_frame_ =
+ media::VideoFrame::CreateBlackFrame(reference_frame->natural_size());
+
+ black_frame_->set_timestamp(reference_frame->timestamp());
+ return black_frame_;
+}
+
// static
blink::WebMediaStreamTrack MediaStreamVideoTrack::CreateVideoTrack(
MediaStreamVideoSource* source,
@@ -126,6 +212,7 @@ MediaStreamVideoTrack::MediaStreamVideoTrack(
MediaStreamVideoTrack::~MediaStreamVideoTrack() {
DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK(sinks_.empty());
Stop();
DVLOG(3) << "~MediaStreamVideoTrack()";
}
@@ -133,12 +220,18 @@ MediaStreamVideoTrack::~MediaStreamVideoTrack() {
void MediaStreamVideoTrack::AddSink(
MediaStreamVideoSink* sink, const VideoCaptureDeliverFrameCB& callback) {
DCHECK(thread_checker_.CalledOnValidThread());
- frame_deliverer_->AddSink(sink, callback);
+ DCHECK(std::find(sinks_.begin(), sinks_.end(), sink) == sinks_.end());
+ sinks_.push_back(sink);
+ frame_deliverer_->AddCallback(sink, callback);
}
void MediaStreamVideoTrack::RemoveSink(MediaStreamVideoSink* sink) {
DCHECK(thread_checker_.CalledOnValidThread());
- frame_deliverer_->RemoveSink(sink);
+ std::vector<MediaStreamVideoSink*>::iterator it =
+ std::find(sinks_.begin(), sinks_.end(), sink);
+ DCHECK(it != sinks_.end());
+ sinks_.erase(it);
+ frame_deliverer_->RemoveCallback(sink);
}
void MediaStreamVideoTrack::SetEnabled(bool enabled) {
@@ -146,9 +239,8 @@ void MediaStreamVideoTrack::SetEnabled(bool enabled) {
MediaStreamTrack::SetEnabled(enabled);
frame_deliverer_->SetEnabled(enabled);
- const std::vector<MediaStreamVideoSink*>& sinks = frame_deliverer_->sinks();
- for (std::vector<MediaStreamVideoSink*>::const_iterator it = sinks.begin();
- it != sinks.end(); ++it) {
+ for (std::vector<MediaStreamVideoSink*>::const_iterator it = sinks_.begin();
+ it != sinks_.end(); ++it) {
(*it)->OnEnabledChanged(enabled);
}
}
@@ -165,9 +257,8 @@ void MediaStreamVideoTrack::Stop() {
void MediaStreamVideoTrack::OnReadyStateChanged(
blink::WebMediaStreamSource::ReadyState state) {
DCHECK(thread_checker_.CalledOnValidThread());
- const std::vector<MediaStreamVideoSink*>& sinks = frame_deliverer_->sinks();
- for (std::vector<MediaStreamVideoSink*>::const_iterator it = sinks.begin();
- it != sinks.end(); ++it) {
+ for (std::vector<MediaStreamVideoSink*>::const_iterator it = sinks_.begin();
+ it != sinks_.end(); ++it) {
(*it)->OnReadyStateChanged(state);
}
}
diff --git a/chromium/content/renderer/media/media_stream_video_track.h b/chromium/content/renderer/media/media_stream_video_track.h
index 040686c5828..6fecbe1758e 100644
--- a/chromium/content/renderer/media/media_stream_video_track.h
+++ b/chromium/content/renderer/media/media_stream_video_track.h
@@ -41,12 +41,12 @@ class CONTENT_EXPORT MediaStreamVideoTrack : public MediaStreamTrack {
static MediaStreamVideoTrack* GetVideoTrack(
const blink::WebMediaStreamTrack& track);
- // Constructor for local video tracks.
- MediaStreamVideoTrack(
- MediaStreamVideoSource* source,
- const blink::WebMediaConstraints& constraints,
- const MediaStreamVideoSource::ConstraintsCallback& callback,
- bool enabled);
+ // Constructor for video tracks.
+ MediaStreamVideoTrack(
+ MediaStreamVideoSource* source,
+ const blink::WebMediaConstraints& constraints,
+ const MediaStreamVideoSource::ConstraintsCallback& callback,
+ bool enabled);
virtual ~MediaStreamVideoTrack();
virtual void SetEnabled(bool enabled) OVERRIDE;
@@ -80,6 +80,8 @@ class CONTENT_EXPORT MediaStreamVideoTrack : public MediaStreamTrack {
const VideoCaptureDeliverFrameCB& callback);
void RemoveSink(MediaStreamVideoSink* sink);
+ std::vector<MediaStreamVideoSink*> sinks_;
+
// |FrameDeliverer| is an internal helper object used for delivering video
// frames on the IO-thread using callbacks to all registered tracks.
class FrameDeliverer;
diff --git a/chromium/content/renderer/media/media_stream_video_track_unittest.cc b/chromium/content/renderer/media/media_stream_video_track_unittest.cc
index 9b281a67d15..2571ee4add2 100644
--- a/chromium/content/renderer/media/media_stream_video_track_unittest.cc
+++ b/chromium/content/renderer/media/media_stream_video_track_unittest.cc
@@ -18,6 +18,9 @@
namespace content {
+const uint8 kBlackValue = 0x00;
+const uint8 kColorValue = 0xAB;
+
ACTION_P(RunClosure, closure) {
closure.Run();
}
@@ -43,9 +46,10 @@ class MediaStreamVideoTrackTest : public ::testing::Test {
EXPECT_CALL(*sink, OnVideoFrame()).WillOnce(
RunClosure(quit_closure));
scoped_refptr<media::VideoFrame> frame =
- media::VideoFrame::CreateBlackFrame(
+ media::VideoFrame::CreateColorFrame(
gfx::Size(MediaStreamVideoSource::kDefaultWidth,
- MediaStreamVideoSource::kDefaultHeight));
+ MediaStreamVideoSource::kDefaultHeight),
+ kColorValue, kColorValue, kColorValue, base::TimeDelta());
mock_source()->DeliverVideoFrame(frame);
run_loop.Run();
}
@@ -163,24 +167,20 @@ TEST_F(MediaStreamVideoTrackTest, SetEnabled) {
DeliverVideoFrameAndWaitForRenderer(&sink);
EXPECT_EQ(1, sink.number_of_frames());
+ EXPECT_EQ(kColorValue, *sink.last_frame()->data(media::VideoFrame::kYPlane));
video_track->SetEnabled(false);
EXPECT_FALSE(sink.enabled());
- scoped_refptr<media::VideoFrame> frame =
- media::VideoFrame::CreateBlackFrame(
- gfx::Size(MediaStreamVideoSource::kDefaultWidth,
- MediaStreamVideoSource::kDefaultHeight));
- mock_source()->DeliverVideoFrame(frame);
- // Wait for the IO thread to complete delivering frames.
- io_message_loop()->RunUntilIdle();
- EXPECT_EQ(1, sink.number_of_frames());
+ DeliverVideoFrameAndWaitForRenderer(&sink);
+ EXPECT_EQ(2, sink.number_of_frames());
+ EXPECT_EQ(kBlackValue, *sink.last_frame()->data(media::VideoFrame::kYPlane));
video_track->SetEnabled(true);
EXPECT_TRUE(sink.enabled());
- mock_source()->DeliverVideoFrame(frame);
DeliverVideoFrameAndWaitForRenderer(&sink);
- EXPECT_EQ(2, sink.number_of_frames());
+ EXPECT_EQ(3, sink.number_of_frames());
+ EXPECT_EQ(kColorValue, *sink.last_frame()->data(media::VideoFrame::kYPlane));
MediaStreamVideoSink::RemoveFromVideoTrack(&sink, track);
}
diff --git a/chromium/content/renderer/media/mock_media_stream_video_sink.cc b/chromium/content/renderer/media/mock_media_stream_video_sink.cc
index 347ca62e728..7a054ab3f71 100644
--- a/chromium/content/renderer/media/mock_media_stream_video_sink.cc
+++ b/chromium/content/renderer/media/mock_media_stream_video_sink.cc
@@ -31,6 +31,7 @@ void MockMediaStreamVideoSink::DeliverVideoFrame(
const scoped_refptr<media::VideoFrame>& frame,
const media::VideoCaptureFormat& format,
const base::TimeTicks& estimated_capture_time) {
+ last_frame_ = frame;
++number_of_frames_;
format_ = frame->format();
frame_size_ = frame->natural_size();
diff --git a/chromium/content/renderer/media/mock_media_stream_video_sink.h b/chromium/content/renderer/media/mock_media_stream_video_sink.h
index 682a617f167..2f7376173a1 100644
--- a/chromium/content/renderer/media/mock_media_stream_video_sink.h
+++ b/chromium/content/renderer/media/mock_media_stream_video_sink.h
@@ -32,6 +32,7 @@ class MockMediaStreamVideoSink : public MediaStreamVideoSink {
int number_of_frames() const { return number_of_frames_; }
media::VideoFrame::Format format() const { return format_; }
gfx::Size frame_size() const { return frame_size_; }
+ scoped_refptr<media::VideoFrame> last_frame() const { return last_frame_; };
bool enabled() const { return enabled_; }
blink::WebMediaStreamSource::ReadyState state() const { return state_; }
@@ -47,6 +48,7 @@ class MockMediaStreamVideoSink : public MediaStreamVideoSink {
media::VideoFrame::Format format_;
blink::WebMediaStreamSource::ReadyState state_;
gfx::Size frame_size_;
+ scoped_refptr<media::VideoFrame> last_frame_;
base::WeakPtrFactory<MockMediaStreamVideoSink> weak_factory_;
};
diff --git a/chromium/content/renderer/media/rtc_video_renderer.cc b/chromium/content/renderer/media/rtc_video_renderer.cc
index c45a24a2f68..323f0a3d795 100644
--- a/chromium/content/renderer/media/rtc_video_renderer.cc
+++ b/chromium/content/renderer/media/rtc_video_renderer.cc
@@ -81,12 +81,6 @@ void RTCVideoRenderer::OnReadyStateChanged(
RenderSignalingFrame();
}
-void RTCVideoRenderer::OnEnabledChanged(bool enabled) {
- DCHECK(message_loop_proxy_->BelongsToCurrentThread());
- if (!enabled)
- RenderSignalingFrame();
-}
-
void RTCVideoRenderer::OnVideoFrame(
const scoped_refptr<media::VideoFrame>& frame,
const media::VideoCaptureFormat& format,
@@ -108,7 +102,7 @@ void RTCVideoRenderer::OnVideoFrame(
void RTCVideoRenderer::RenderSignalingFrame() {
// This is necessary to make sure audio can play if the video tag src is
- // a MediaStream video track that has been rejected, ended or disabled.
+ // a MediaStream video track that has been rejected or ended.
// It also ensure that the renderer don't hold a reference to a real video
// frame if no more frames are provided. This is since there might be a
// finite number of available buffers. E.g, video that
diff --git a/chromium/content/renderer/media/rtc_video_renderer.h b/chromium/content/renderer/media/rtc_video_renderer.h
index e205b6b5f8d..6add0df44e8 100644
--- a/chromium/content/renderer/media/rtc_video_renderer.h
+++ b/chromium/content/renderer/media/rtc_video_renderer.h
@@ -61,7 +61,6 @@ class CONTENT_EXPORT RTCVideoRenderer
// VideoTrackSink implementation. Called on the main thread.
virtual void OnReadyStateChanged(
blink::WebMediaStreamSource::ReadyState state) OVERRIDE;
- virtual void OnEnabledChanged(bool enabled) OVERRIDE;
void RenderSignalingFrame();
diff --git a/chromium/content/renderer/media/video_frame_deliverer.cc b/chromium/content/renderer/media/video_frame_deliverer.cc
deleted file mode 100644
index 05c77496790..00000000000
--- a/chromium/content/renderer/media/video_frame_deliverer.cc
+++ /dev/null
@@ -1,84 +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 "content/renderer/media/video_frame_deliverer.h"
-
-#include "base/bind.h"
-#include "base/location.h"
-
-namespace content {
-namespace {
-void ResetCallback(scoped_ptr<VideoCaptureDeliverFrameCB> callback) {
- // |callback| will be deleted when this exits.
-}
-} // namespace
-
-VideoFrameDeliverer::VideoFrameDeliverer(
- const scoped_refptr<base::MessageLoopProxy>& io_message_loop)
- : io_message_loop_(io_message_loop) {
- DCHECK(io_message_loop_);
-}
-
-VideoFrameDeliverer::~VideoFrameDeliverer() {
- DCHECK(callbacks_.empty());
-}
-
-void VideoFrameDeliverer::AddCallback(
- void* id,
- const VideoCaptureDeliverFrameCB& callback) {
- DCHECK(thread_checker_.CalledOnValidThread());
- io_message_loop_->PostTask(
- FROM_HERE,
- base::Bind(&VideoFrameDeliverer::AddCallbackOnIO,
- this, id, callback));
-}
-
-void VideoFrameDeliverer::AddCallbackOnIO(
- void* id,
- const VideoCaptureDeliverFrameCB& callback) {
- DCHECK(io_message_loop_->BelongsToCurrentThread());
- callbacks_.push_back(std::make_pair(id, callback));
-}
-
-void VideoFrameDeliverer::RemoveCallback(void* id) {
- DCHECK(thread_checker_.CalledOnValidThread());
- io_message_loop_->PostTask(
- FROM_HERE,
- base::Bind(&VideoFrameDeliverer::RemoveCallbackOnIO,
- this, id, base::MessageLoopProxy::current()));
-}
-
-void VideoFrameDeliverer::RemoveCallbackOnIO(
- void* id, const scoped_refptr<base::MessageLoopProxy>& message_loop) {
- DCHECK(io_message_loop_->BelongsToCurrentThread());
- std::vector<VideoIdCallbackPair>::iterator it = callbacks_.begin();
- for (; it != callbacks_.end(); ++it) {
- if (it->first == id) {
- // Callback is copied to heap and then deleted on the target thread.
- // The following code ensures that the callback is not referenced on
- // the stack.
- scoped_ptr<VideoCaptureDeliverFrameCB> callback;
- {
- callback.reset(new VideoCaptureDeliverFrameCB(it->second));
- callbacks_.erase(it);
- }
- message_loop->PostTask(
- FROM_HERE, base::Bind(&ResetCallback, base::Passed(&callback)));
- return;
- }
- }
-}
-
-void VideoFrameDeliverer::DeliverFrameOnIO(
- const scoped_refptr<media::VideoFrame>& frame,
- const media::VideoCaptureFormat& format,
- const base::TimeTicks& estimated_capture_time) {
- DCHECK(io_message_loop_->BelongsToCurrentThread());
- for (std::vector<VideoIdCallbackPair>::iterator it = callbacks_.begin();
- it != callbacks_.end(); ++it) {
- it->second.Run(frame, format, estimated_capture_time);
- }
-}
-
-} // namespace content
diff --git a/chromium/content/renderer/media/video_frame_deliverer.h b/chromium/content/renderer/media/video_frame_deliverer.h
deleted file mode 100644
index a1f4b9d4f6a..00000000000
--- a/chromium/content/renderer/media/video_frame_deliverer.h
+++ /dev/null
@@ -1,82 +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 CONTENT_RENDERER_MEDIA_VIDEO_FRAME_DELIVERER_H_
-#define CONTENT_RENDERER_MEDIA_VIDEO_FRAME_DELIVERER_H_
-
-#include <utility>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/message_loop/message_loop_proxy.h"
-#include "base/threading/thread_checker.h"
-#include "content/common/media/video_capture.h"
-#include "content/public/renderer/media_stream_video_sink.h"
-#include "media/base/video_frame.h"
-
-namespace content {
-
-// VideoFrameDeliverer is a helper class used for registering
-// VideoCaptureDeliverFrameCB on the main render thread to receive video frames
-// on the IO-thread.
-// Its used by MediaStreamVideoTrack.
-class VideoFrameDeliverer
- : public base::RefCountedThreadSafe<VideoFrameDeliverer> {
- public:
- explicit VideoFrameDeliverer(
- const scoped_refptr<base::MessageLoopProxy>& io_message_loop);
-
- // Add |callback| to receive video frames on the IO-thread.
- // Must be called on the main render thread.
- void AddCallback(void* id, const VideoCaptureDeliverFrameCB& callback);
-
- // Removes |callback| associated with |id| from receiving video frames if |id|
- // has been added. It is ok to call RemoveCallback even if the |id| has not
- // been added. Note that the added callback will be reset on the main thread.
- // Must be called on the main render thread.
- void RemoveCallback(void* id);
-
- // Triggers all registered callbacks with |frame|, |format| and
- // |estimated_capture_time| as parameters. Must be called on the IO-thread.
- virtual void DeliverFrameOnIO(
- const scoped_refptr<media::VideoFrame>& frame,
- const media::VideoCaptureFormat& format,
- const base::TimeTicks& estimated_capture_time);
-
- const scoped_refptr<base::MessageLoopProxy>& io_message_loop() const {
- return io_message_loop_;
- }
-
- protected:
- void AddCallbackOnIO(void* id, const VideoCaptureDeliverFrameCB& callback);
-
- // Callback will be removed and then reset on the designated message loop.
- // It is ok to call RemoveCallback even if |id| has not been added.
- void RemoveCallbackOnIO(
- void* id, const scoped_refptr<base::MessageLoopProxy>& message_loop);
-
- protected:
- virtual ~VideoFrameDeliverer();
- const base::ThreadChecker& thread_checker() const {
- return thread_checker_;
- }
-
- private:
- friend class base::RefCountedThreadSafe<VideoFrameDeliverer>;
-
- // Used to DCHECK that AddCallback and RemoveCallback are called on the main
- // render thread.
- base::ThreadChecker thread_checker_;
- scoped_refptr<base::MessageLoopProxy> io_message_loop_;
-
- typedef std::pair<void*, VideoCaptureDeliverFrameCB> VideoIdCallbackPair;
- std::vector<VideoIdCallbackPair> callbacks_;
-
- DISALLOW_COPY_AND_ASSIGN(VideoFrameDeliverer);
-};
-
-} // namespace content
-
-#endif // CONTENT_RENDERER_MEDIA_VIDEO_FRAME_DELIVERER_H_
diff --git a/chromium/content/renderer/render_font_warmup_win.cc b/chromium/content/renderer/render_font_warmup_win.cc
new file mode 100644
index 00000000000..90bbab220bb
--- /dev/null
+++ b/chromium/content/renderer/render_font_warmup_win.cc
@@ -0,0 +1,204 @@
+// 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 "content/public/renderer/render_font_warmup_win.h"
+
+#include <dwrite.h>
+
+#include "base/debug/alias.h"
+#include "base/logging.h"
+#include "base/win/iat_patch_function.h"
+#include "base/win/windows_version.h"
+#include "content/renderer/renderer_font_platform_win.h"
+#include "third_party/WebKit/public/web/win/WebFontRendering.h"
+#include "third_party/skia/include/core/SkPaint.h"
+#include "third_party/skia/include/ports/SkFontMgr.h"
+#include "third_party/skia/include/ports/SkTypeface_win.h"
+
+namespace content {
+
+namespace {
+
+SkFontMgr* g_warmup_fontmgr = NULL;
+
+base::win::IATPatchFunction g_iat_patch_open_sc_manager;
+base::win::IATPatchFunction g_iat_patch_close_service_handle;
+base::win::IATPatchFunction g_iat_patch_open_service;
+base::win::IATPatchFunction g_iat_patch_start_service;
+base::win::IATPatchFunction g_iat_patch_nt_connect_port;
+
+// These are from ntddk.h
+#if !defined(STATUS_ACCESS_DENIED)
+#define STATUS_ACCESS_DENIED ((NTSTATUS)0xC0000022L)
+#endif
+
+typedef LONG NTSTATUS;
+
+SC_HANDLE WINAPI OpenSCManagerWPatch(const wchar_t* machine_name,
+ const wchar_t* database_name,
+ DWORD access_mask) {
+ ::SetLastError(0);
+ return reinterpret_cast<SC_HANDLE>(0xdeadbeef);
+}
+
+SC_HANDLE WINAPI OpenServiceWPatch(SC_HANDLE sc_manager,
+ const wchar_t* service_name,
+ DWORD access_mask) {
+ ::SetLastError(0);
+ return reinterpret_cast<SC_HANDLE>(0xdeadbabe);
+}
+
+BOOL WINAPI CloseServiceHandlePatch(SC_HANDLE service_handle) {
+ if (service_handle != reinterpret_cast<SC_HANDLE>(0xdeadbabe) &&
+ service_handle != reinterpret_cast<SC_HANDLE>(0xdeadbeef))
+ CHECK(false);
+ ::SetLastError(0);
+ return TRUE;
+}
+
+BOOL WINAPI StartServiceWPatch(SC_HANDLE service,
+ DWORD args,
+ const wchar_t** arg_vectors) {
+ if (service != reinterpret_cast<SC_HANDLE>(0xdeadbabe))
+ CHECK(false);
+ ::SetLastError(ERROR_ACCESS_DENIED);
+ return FALSE;
+}
+
+NTSTATUS WINAPI NtALpcConnectPortPatch(HANDLE* port_handle,
+ void* port_name,
+ void* object_attribs,
+ void* port_attribs,
+ DWORD flags,
+ void* server_sid,
+ void* message,
+ DWORD* buffer_length,
+ void* out_message_attributes,
+ void* in_message_attributes,
+ void* time_out) {
+ return STATUS_ACCESS_DENIED;
+}
+
+// Directwrite connects to the font cache service to retrieve information about
+// fonts installed on the system etc. This works well outside the sandbox and
+// within the sandbox as long as the lpc connection maintained by the current
+// process with the font cache service remains valid. It appears that there
+// are cases when this connection is dropped after which directwrite is unable
+// to connect to the font cache service which causes problems with characters
+// disappearing.
+// Directwrite has fallback code to enumerate fonts if it is unable to connect
+// to the font cache service. We need to intercept the following APIs to
+// ensure that it does not connect to the font cache service.
+// NtALpcConnectPort
+// OpenSCManagerW
+// OpenServiceW
+// StartServiceW
+// CloseServiceHandle.
+// These are all IAT patched.
+void PatchServiceManagerCalls() {
+ static bool is_patched = false;
+ if (is_patched)
+ return;
+ const char* service_provider_dll =
+ (base::win::GetVersion() >= base::win::VERSION_WIN8 ?
+ "api-ms-win-service-management-l1-1-0.dll" : "advapi32.dll");
+
+ is_patched = true;
+
+ DWORD patched = g_iat_patch_open_sc_manager.Patch(L"dwrite.dll",
+ service_provider_dll, "OpenSCManagerW", OpenSCManagerWPatch);
+ DCHECK(patched == 0);
+
+ patched = g_iat_patch_close_service_handle.Patch(L"dwrite.dll",
+ service_provider_dll, "CloseServiceHandle", CloseServiceHandlePatch);
+ DCHECK(patched == 0);
+
+ patched = g_iat_patch_open_service.Patch(L"dwrite.dll",
+ service_provider_dll, "OpenServiceW", OpenServiceWPatch);
+ DCHECK(patched == 0);
+
+ patched = g_iat_patch_start_service.Patch(L"dwrite.dll",
+ service_provider_dll, "StartServiceW", StartServiceWPatch);
+ DCHECK(patched == 0);
+
+ patched = g_iat_patch_nt_connect_port.Patch(L"dwrite.dll",
+ "ntdll.dll", "NtAlpcConnectPort", NtALpcConnectPortPatch);
+ DCHECK(patched == 0);
+}
+
+// Windows-only DirectWrite support. These warm up the DirectWrite paths
+// before sandbox lock down to allow Skia access to the Font Manager service.
+void CreateDirectWriteFactory(IDWriteFactory** factory) {
+ typedef decltype(DWriteCreateFactory)* DWriteCreateFactoryProc;
+ HMODULE dwrite_dll = LoadLibraryW(L"dwrite.dll");
+ // TODO(scottmg): Temporary code to track crash in http://crbug.com/387867.
+ if (!dwrite_dll) {
+ DWORD load_library_get_last_error = GetLastError();
+ base::debug::Alias(&dwrite_dll);
+ base::debug::Alias(&load_library_get_last_error);
+ CHECK(false);
+ }
+
+ PatchServiceManagerCalls();
+
+ DWriteCreateFactoryProc dwrite_create_factory_proc =
+ reinterpret_cast<DWriteCreateFactoryProc>(
+ GetProcAddress(dwrite_dll, "DWriteCreateFactory"));
+ // TODO(scottmg): Temporary code to track crash in http://crbug.com/387867.
+ if (!dwrite_create_factory_proc) {
+ DWORD get_proc_address_get_last_error = GetLastError();
+ base::debug::Alias(&dwrite_create_factory_proc);
+ base::debug::Alias(&get_proc_address_get_last_error);
+ CHECK(false);
+ }
+ CHECK(SUCCEEDED(
+ dwrite_create_factory_proc(DWRITE_FACTORY_TYPE_ISOLATED,
+ __uuidof(IDWriteFactory),
+ reinterpret_cast<IUnknown**>(factory))));
+}
+
+HRESULT STDMETHODCALLTYPE StubFontCollection(IDWriteFactory* factory,
+ IDWriteFontCollection** col,
+ BOOL checkUpdates) {
+ // We always return pre-created font collection from here.
+ IDWriteFontCollection* custom_collection = GetCustomFontCollection(factory);
+ DCHECK(custom_collection != NULL);
+ *col = custom_collection;
+ return S_OK;
+}
+
+void PatchDWriteFactory(IDWriteFactory* factory) {
+ const unsigned int kGetSystemFontCollectionVTableIndex = 3;
+
+ PROC* vtable = *reinterpret_cast<PROC**>(factory);
+ PROC* function_ptr = &vtable[kGetSystemFontCollectionVTableIndex];
+ void* stub_function = &StubFontCollection;
+ base::win::ModifyCode(function_ptr, &stub_function, sizeof(PROC));
+}
+
+} // namespace
+
+void DoPreSandboxWarmupForTypeface(SkTypeface* typeface) {
+ SkPaint paint_warmup;
+ paint_warmup.setTypeface(typeface);
+ wchar_t glyph = L'S';
+ paint_warmup.measureText(&glyph, 2);
+}
+
+SkFontMgr* GetPreSandboxWarmupFontMgr() {
+ if (!g_warmup_fontmgr) {
+ IDWriteFactory* factory;
+ CreateDirectWriteFactory(&factory);
+
+ IDWriteFontCollection* collection = GetCustomFontCollection(factory);
+
+ PatchDWriteFactory(factory);
+
+ blink::WebFontRendering::setDirectWriteFactory(factory);
+ g_warmup_fontmgr = SkFontMgr_New_DirectWrite(factory);
+ }
+ return g_warmup_fontmgr;
+}
+
+} // namespace content
diff --git a/chromium/content/renderer/render_frame_impl.cc b/chromium/content/renderer/render_frame_impl.cc
index ebb32650721..cd15a637ff2 100644
--- a/chromium/content/renderer/render_frame_impl.cc
+++ b/chromium/content/renderer/render_frame_impl.cc
@@ -2269,11 +2269,11 @@ bool RenderFrameImpl::runModalBeforeUnloadDialog(
void RenderFrameImpl::showContextMenu(const blink::WebContextMenuData& data) {
ContextMenuParams params = ContextMenuParamsBuilder::Build(data);
params.source_type = GetRenderWidget()->context_menu_source_type();
- if (params.source_type == ui::MENU_SOURCE_TOUCH_EDIT_MENU) {
- params.x = GetRenderWidget()->touch_editing_context_menu_location().x();
- params.y = GetRenderWidget()->touch_editing_context_menu_location().y();
- }
GetRenderWidget()->OnShowHostContextMenu(&params);
+ if (GetRenderWidget()->has_host_context_menu_location()) {
+ params.x = GetRenderWidget()->host_context_menu_location().x();
+ params.y = GetRenderWidget()->host_context_menu_location().y();
+ }
// Plugins, e.g. PDF, don't currently update the render view when their
// selected text changes, but the context menu params do contain the updated
diff --git a/chromium/content/renderer/render_thread_impl.cc b/chromium/content/renderer/render_thread_impl.cc
index 42e31303627..121828a24cc 100644
--- a/chromium/content/renderer/render_thread_impl.cc
+++ b/chromium/content/renderer/render_thread_impl.cc
@@ -172,6 +172,12 @@ const int kIdleCPUUsageThresholdInPercents = 3;
const int kMinRasterThreads = 1;
const int kMaxRasterThreads = 64;
+// Maximum allocation size allowed for image scaling filters that
+// require pre-scaling. Skia will fallback to a filter that doesn't
+// require pre-scaling if the default filter would require an
+// allocation that exceeds this limit.
+const size_t kImageCacheSingleAllocationByteLimit = 64 * 1024 * 1024;
+
// Keep the global RenderThreadImpl in a TLS slot so it is impossible to access
// incorrectly from the wrong thread.
base::LazyInstance<base::ThreadLocalPointer<RenderThreadImpl> >
@@ -827,6 +833,9 @@ void RenderThreadImpl::EnsureWebKitInitialized() {
if (!command_line.HasSwitch(switches::kEnableDeferredImageDecoding) &&
!is_impl_side_painting_enabled_)
SkGraphics::SetImageCacheByteLimit(0u);
+
+ SkGraphics::SetImageCacheSingleAllocationByteLimit(
+ kImageCacheSingleAllocationByteLimit);
}
void RenderThreadImpl::RegisterSchemes() {
diff --git a/chromium/content/renderer/render_view_impl.cc b/chromium/content/renderer/render_view_impl.cc
index f5bd5eb75d9..3a68a86a6b1 100644
--- a/chromium/content/renderer/render_view_impl.cc
+++ b/chromium/content/renderer/render_view_impl.cc
@@ -3779,11 +3779,14 @@ void RenderViewImpl::DidHideExternalPopupMenu() {
}
#endif
-void RenderViewImpl::OnShowContextMenu(const gfx::Point& location) {
- context_menu_source_type_ = ui::MENU_SOURCE_TOUCH_EDIT_MENU;
- touch_editing_context_menu_location_ = location;
+void RenderViewImpl::OnShowContextMenu(
+ ui::MenuSourceType source_type, const gfx::Point& location) {
+ context_menu_source_type_ = source_type;
+ has_host_context_menu_location_ = true;
+ host_context_menu_location_ = location;
if (webview())
webview()->showContextMenu();
+ has_host_context_menu_location_ = false;
}
void RenderViewImpl::OnEnableViewSourceMode() {
diff --git a/chromium/content/renderer/render_view_impl.h b/chromium/content/renderer/render_view_impl.h
index 324c4c77eeb..4827abb555d 100644
--- a/chromium/content/renderer/render_view_impl.h
+++ b/chromium/content/renderer/render_view_impl.h
@@ -685,7 +685,8 @@ class CONTENT_EXPORT RenderViewImpl
void OnCancelDownload(int32 download_id);
void OnClearFocusedElement();
void OnClosePage();
- void OnShowContextMenu(const gfx::Point& location);
+ void OnShowContextMenu(ui::MenuSourceType source_type,
+ const gfx::Point& location);
void OnCopyImageAt(int x, int y);
void OnSaveImageAt(int x, int y);
void OnDeterminePageLanguage();
diff --git a/chromium/content/renderer/render_view_impl_android.cc b/chromium/content/renderer/render_view_impl_android.cc
index 679da548f91..57d1920f5bd 100644
--- a/chromium/content/renderer/render_view_impl_android.cc
+++ b/chromium/content/renderer/render_view_impl_android.cc
@@ -65,8 +65,12 @@ void RenderViewImpl::didScrollWithKeyboard(const blink::WebSize& delta) {
}
void RenderViewImpl::OnExtractSmartClipData(const gfx::Rect& rect) {
+ blink::WebString clip_text;
+ blink::WebString clip_html;
+ blink::WebRect clip_rect;
+ webview()->extractSmartClipData(rect, clip_text, clip_html, clip_rect);
Send(new ViewHostMsg_SmartClipDataExtracted(
- routing_id_, webview()->getSmartClipData(rect)));
+ routing_id_, clip_text, clip_html, clip_rect));
}
} // namespace content
diff --git a/chromium/content/renderer/render_widget.cc b/chromium/content/renderer/render_widget.cc
index d91647ea5ab..8dfd4aa74cc 100644
--- a/chromium/content/renderer/render_widget.cc
+++ b/chromium/content/renderer/render_widget.cc
@@ -397,7 +397,8 @@ RenderWidget::RenderWidget(blink::WebPopupType popup_type,
#endif
popup_origin_scale_for_emulation_(0.f),
resizing_mode_selector_(new ResizingModeSelector()),
- context_menu_source_type_(ui::MENU_SOURCE_MOUSE) {
+ context_menu_source_type_(ui::MENU_SOURCE_MOUSE),
+ has_host_context_menu_location_(false) {
if (!swapped_out)
RenderProcess::current()->AddRefProcess();
DCHECK(RenderThread::Get());
diff --git a/chromium/content/renderer/render_widget.h b/chromium/content/renderer/render_widget.h
index cfba42a5d59..7dd43c98db3 100644
--- a/chromium/content/renderer/render_widget.h
+++ b/chromium/content/renderer/render_widget.h
@@ -105,9 +105,13 @@ class CONTENT_EXPORT RenderWidget
bool closing() const { return closing_; }
bool is_swapped_out() { return is_swapped_out_; }
ui::MenuSourceType context_menu_source_type() {
- return context_menu_source_type_; }
- gfx::Point touch_editing_context_menu_location() {
- return touch_editing_context_menu_location_;
+ return context_menu_source_type_;
+ }
+ bool has_host_context_menu_location() {
+ return has_host_context_menu_location_;
+ }
+ gfx::Point host_context_menu_location() {
+ return host_context_menu_location_;
}
// Functions to track out-of-process frames for special notifications.
@@ -704,7 +708,8 @@ class CONTENT_EXPORT RenderWidget
ObserverList<RenderFrameImpl> render_frames_;
ui::MenuSourceType context_menu_source_type_;
- gfx::Point touch_editing_context_menu_location_;
+ bool has_host_context_menu_location_;
+ gfx::Point host_context_menu_location_;
DISALLOW_COPY_AND_ASSIGN(RenderWidget);
};
diff --git a/chromium/content/renderer/renderer_font_platform_win.cc b/chromium/content/renderer/renderer_font_platform_win.cc
new file mode 100644
index 00000000000..2087046ce07
--- /dev/null
+++ b/chromium/content/renderer/renderer_font_platform_win.cc
@@ -0,0 +1,305 @@
+// 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 "content/renderer/renderer_font_platform_win.h"
+
+#include <dwrite.h>
+#include <string>
+#include <vector>
+#include <wrl/implements.h>
+#include <wrl/wrappers/corewrappers.h>
+
+#include "base/debug/alias.h"
+#include "base/files/file_enumerator.h"
+#include "base/files/file_path.h"
+#include "base/files/memory_mapped_file.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/memory/scoped_vector.h"
+#include "base/path_service.h"
+#include "base/time/time.h"
+#include "base/win/iat_patch_function.h"
+#include "base/win/registry.h"
+#include "base/win/scoped_comptr.h"
+
+namespace {
+
+namespace mswr = Microsoft::WRL;
+namespace mswrw = Microsoft::WRL::Wrappers;
+
+class FontCollectionLoader
+ : public mswr::RuntimeClass<mswr::RuntimeClassFlags<mswr::ClassicCom>,
+ IDWriteFontCollectionLoader> {
+ public:
+ // IDWriteFontCollectionLoader methods.
+ virtual HRESULT STDMETHODCALLTYPE
+ CreateEnumeratorFromKey(IDWriteFactory* factory,
+ void const* key,
+ UINT32 key_size,
+ IDWriteFontFileEnumerator** file_enumerator);
+
+ static HRESULT Initialize(IDWriteFactory* factory);
+
+ UINT32 GetFontMapSize();
+
+ std::wstring GetFontNameFromKey(UINT32 idx);
+
+ bool LoadFontListFromRegistry();
+
+ FontCollectionLoader() {};
+ virtual ~FontCollectionLoader() {};
+
+ private:
+ mswr::ComPtr<IDWriteFontFileLoader> file_loader_;
+
+ std::vector<std::wstring> reg_fonts_;
+};
+
+mswr::ComPtr<FontCollectionLoader> g_font_loader;
+
+class FontFileStream
+ : public mswr::RuntimeClass<mswr::RuntimeClassFlags<mswr::ClassicCom>,
+ IDWriteFontFileStream> {
+ public:
+ // IDWriteFontFileStream methods.
+ virtual HRESULT STDMETHODCALLTYPE
+ ReadFileFragment(void const** fragment_start,
+ UINT64 file_offset,
+ UINT64 fragment_size,
+ void** context) {
+ if (!memory_.get() || !memory_->IsValid())
+ return E_FAIL;
+
+ *fragment_start = static_cast<BYTE const*>(memory_->data()) +
+ static_cast<size_t>(file_offset);
+ *context = NULL;
+ return S_OK;
+ }
+
+ virtual void STDMETHODCALLTYPE ReleaseFileFragment(void* context) {}
+
+ virtual HRESULT STDMETHODCALLTYPE GetFileSize(UINT64* file_size) {
+ if (!memory_.get() || !memory_->IsValid())
+ return E_FAIL;
+
+ *file_size = memory_->length();
+ return S_OK;
+ }
+
+ virtual HRESULT STDMETHODCALLTYPE GetLastWriteTime(UINT64* last_write_time) {
+ if (!memory_.get() || !memory_->IsValid())
+ return E_FAIL;
+
+ // According to MSDN article http://goo.gl/rrSYzi the "last modified time"
+ // is used by DirectWrite font selection algorithms to determine whether
+ // one font resource is more up to date than another one.
+ // So by returning 0 we are assuming that it will treat all fonts to be
+ // equally up to date.
+ // TODO(shrikant): We should further investigate this.
+ *last_write_time = 0;
+ return S_OK;
+ }
+
+ FontFileStream::FontFileStream() : font_key_(0) {
+ };
+
+ HRESULT RuntimeClassInitialize(UINT32 font_key) {
+ base::FilePath path;
+ PathService::Get(base::DIR_WINDOWS_FONTS, &path);
+ path = path.Append(g_font_loader->GetFontNameFromKey(font_key).c_str());
+ memory_.reset(new base::MemoryMappedFile());
+
+ // Put some debug information on stack.
+ WCHAR font_name[256];
+ path.value().copy(font_name, arraysize(font_name));
+ base::debug::Alias(font_name);
+
+ if (!memory_->Initialize(path)) {
+ memory_.reset();
+ return E_FAIL;
+ }
+
+ font_key_ = font_key;
+ return S_OK;
+ }
+
+ virtual ~FontFileStream() {}
+
+ UINT32 font_key_;
+ scoped_ptr<base::MemoryMappedFile> memory_;
+};
+
+class FontFileLoader
+ : public mswr::RuntimeClass<mswr::RuntimeClassFlags<mswr::ClassicCom>,
+ IDWriteFontFileLoader> {
+ public:
+ // IDWriteFontFileLoader methods.
+ virtual HRESULT STDMETHODCALLTYPE
+ CreateStreamFromKey(void const* ref_key,
+ UINT32 ref_key_size,
+ IDWriteFontFileStream** stream) {
+ if (ref_key_size != sizeof(UINT32))
+ return E_FAIL;
+
+ UINT32 font_key = *static_cast<const UINT32*>(ref_key);
+ mswr::ComPtr<FontFileStream> font_stream;
+ HRESULT hr = mswr::MakeAndInitialize<FontFileStream>(&font_stream,
+ font_key);
+ if (SUCCEEDED(hr)) {
+ *stream = font_stream.Detach();
+ return S_OK;
+ }
+ return E_FAIL;
+ }
+
+ FontFileLoader() {}
+ virtual ~FontFileLoader() {}
+};
+
+class FontFileEnumerator
+ : public mswr::RuntimeClass<mswr::RuntimeClassFlags<mswr::ClassicCom>,
+ IDWriteFontFileEnumerator> {
+ public:
+ // IDWriteFontFileEnumerator methods.
+ virtual HRESULT STDMETHODCALLTYPE MoveNext(BOOL* has_current_file) {
+ *has_current_file = FALSE;
+
+ if (current_file_)
+ current_file_.ReleaseAndGetAddressOf();
+
+ if (font_idx_ < g_font_loader->GetFontMapSize()) {
+ HRESULT hr =
+ factory_->CreateCustomFontFileReference(&font_idx_,
+ sizeof(UINT32),
+ file_loader_.Get(),
+ current_file_.GetAddressOf());
+ DCHECK(SUCCEEDED(hr));
+ *has_current_file = TRUE;
+ font_idx_++;
+ }
+ return S_OK;
+ }
+
+ virtual HRESULT STDMETHODCALLTYPE
+ GetCurrentFontFile(IDWriteFontFile** font_file) {
+ if (!current_file_) {
+ *font_file = NULL;
+ return E_FAIL;
+ }
+
+ *font_file = current_file_.Detach();
+ return S_OK;
+ }
+
+ FontFileEnumerator(const void* keys,
+ UINT32 buffer_size,
+ IDWriteFactory* factory,
+ IDWriteFontFileLoader* file_loader)
+ : factory_(factory), file_loader_(file_loader), font_idx_(0) {}
+
+ virtual ~FontFileEnumerator() {}
+
+ mswr::ComPtr<IDWriteFactory> factory_;
+ mswr::ComPtr<IDWriteFontFile> current_file_;
+ mswr::ComPtr<IDWriteFontFileLoader> file_loader_;
+ UINT32 font_idx_;
+};
+
+// IDWriteFontCollectionLoader methods.
+HRESULT STDMETHODCALLTYPE FontCollectionLoader::CreateEnumeratorFromKey(
+ IDWriteFactory* factory,
+ void const* key,
+ UINT32 key_size,
+ IDWriteFontFileEnumerator** file_enumerator) {
+ *file_enumerator = mswr::Make<FontFileEnumerator>(
+ key, key_size, factory, file_loader_.Get()).Detach();
+ return S_OK;
+}
+
+// static
+HRESULT FontCollectionLoader::Initialize(IDWriteFactory* factory) {
+ DCHECK(g_font_loader == NULL);
+
+ g_font_loader = mswr::Make<FontCollectionLoader>();
+ if (!g_font_loader) {
+ DCHECK(FALSE);
+ return E_FAIL;
+ }
+
+ CHECK(g_font_loader->LoadFontListFromRegistry());
+
+ g_font_loader->file_loader_ = mswr::Make<FontFileLoader>().Detach();
+
+ factory->RegisterFontFileLoader(g_font_loader->file_loader_.Get());
+ factory->RegisterFontCollectionLoader(g_font_loader.Get());
+
+ return S_OK;
+}
+
+UINT32 FontCollectionLoader::GetFontMapSize() {
+ return reg_fonts_.size();
+}
+
+std::wstring FontCollectionLoader::GetFontNameFromKey(UINT32 idx) {
+ DCHECK(idx < reg_fonts_.size());
+ return reg_fonts_[idx];
+}
+
+bool FontCollectionLoader::LoadFontListFromRegistry() {
+ const wchar_t kFontsRegistry[] =
+ L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts";
+ CHECK(reg_fonts_.empty());
+ base::win::RegKey regkey;
+ if (regkey.Open(HKEY_LOCAL_MACHINE, kFontsRegistry, KEY_READ) !=
+ ERROR_SUCCESS) {
+ return false;
+ }
+
+ std::wstring name;
+ std::wstring value;
+ for (DWORD idx = 0; idx < regkey.GetValueCount(); idx++) {
+ if (regkey.GetValueNameAt(idx, &name) == ERROR_SUCCESS &&
+ regkey.ReadValue(name.c_str(), &value) == ERROR_SUCCESS) {
+ base::FilePath path(value.c_str());
+ // We need to check if file name is the only component that exists,
+ // we will ignore all other registry entries.
+ std::vector<base::FilePath::StringType> components;
+ path.GetComponents(&components);
+ if (components.size() == 1) {
+ reg_fonts_.push_back(value.c_str());
+ }
+ }
+ }
+ return true;
+}
+
+} // namespace
+
+namespace content {
+
+mswr::ComPtr<IDWriteFontCollection> g_font_collection;
+
+IDWriteFontCollection* GetCustomFontCollection(IDWriteFactory* factory) {
+ if (g_font_collection.Get() != NULL)
+ return g_font_collection.Get();
+
+ base::TimeTicks start_tick = base::TimeTicks::Now();
+
+ FontCollectionLoader::Initialize(factory);
+
+ HRESULT hr = factory->CreateCustomFontCollection(
+ g_font_loader.Get(), NULL, 0, g_font_collection.GetAddressOf());
+
+ base::TimeDelta time_delta = base::TimeTicks::Now() - start_tick;
+ int64 delta = time_delta.ToInternalValue();
+ base::debug::Alias(&delta);
+ UINT32 size = g_font_loader->GetFontMapSize();
+ base::debug::Alias(&size);
+
+ CHECK(SUCCEEDED(hr));
+ CHECK(g_font_collection.Get() != NULL);
+
+ return g_font_collection.Get();
+}
+
+} // namespace content
diff --git a/chromium/content/renderer/renderer_font_platform_win.h b/chromium/content/renderer/renderer_font_platform_win.h
new file mode 100644
index 00000000000..a04901b73d2
--- /dev/null
+++ b/chromium/content/renderer/renderer_font_platform_win.h
@@ -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.
+
+#ifndef CHROME_RENDERER_RENDERER_FONT_PLATFORM_WIN_H_
+#define CHROME_RENDERER_RENDERER_FONT_PLATFORM_WIN_H_
+
+struct IDWriteFactory;
+struct IDWriteFontCollection;
+
+namespace content {
+
+IDWriteFontCollection* GetCustomFontCollection(IDWriteFactory* factory);
+
+} // namespace content
+
+#endif // CHROME_RENDERER_RENDERER_FONT_PLATFORM_WIN_H_
diff --git a/chromium/google_apis/gcm/engine/gcm_store_impl.cc b/chromium/google_apis/gcm/engine/gcm_store_impl.cc
index e27e82e6ce2..6f128f5f6ad 100644
--- a/chromium/google_apis/gcm/engine/gcm_store_impl.cc
+++ b/chromium/google_apis/gcm/engine/gcm_store_impl.cc
@@ -339,7 +339,8 @@ void GCMStoreImpl::Backend::RemoveRegistration(const std::string& app_id,
leveldb::WriteOptions write_options;
write_options.sync = true;
- leveldb::Status status = db_->Delete(write_options, MakeSlice(app_id));
+ leveldb::Status status =
+ db_->Delete(write_options, MakeSlice(MakeRegistrationKey(app_id)));
if (status.ok()) {
foreground_task_runner_->PostTask(FROM_HERE, base::Bind(callback, true));
return;
diff --git a/chromium/google_apis/gcm/engine/gcm_store_impl_unittest.cc b/chromium/google_apis/gcm/engine/gcm_store_impl_unittest.cc
index 7b9c8936529..8db28cc8861 100644
--- a/chromium/google_apis/gcm/engine/gcm_store_impl_unittest.cc
+++ b/chromium/google_apis/gcm/engine/gcm_store_impl_unittest.cc
@@ -261,6 +261,25 @@ TEST_F(GCMStoreImplTest, Registrations) {
load_result->registrations["app2"]->sender_ids[0]);
EXPECT_EQ(registration2->sender_ids[1],
load_result->registrations["app2"]->sender_ids[1]);
+
+ gcm_store->RemoveRegistration(
+ "app2",
+ base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this)));
+ PumpLoop();
+
+ gcm_store = BuildGCMStore().Pass();
+ gcm_store->Load(base::Bind(
+ &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
+ PumpLoop();
+
+ ASSERT_EQ(1u, load_result->registrations.size());
+ ASSERT_TRUE(load_result->registrations.find("app1") !=
+ load_result->registrations.end());
+ EXPECT_EQ(registration1->registration_id,
+ load_result->registrations["app1"]->registration_id);
+ ASSERT_EQ(1u, load_result->registrations["app1"]->sender_ids.size());
+ EXPECT_EQ(registration1->sender_ids[0],
+ load_result->registrations["app1"]->sender_ids[0]);
}
// Verify saving some incoming messages, reopening the directory, and then
diff --git a/chromium/gpu/command_buffer/service/gles2_cmd_decoder.cc b/chromium/gpu/command_buffer/service/gles2_cmd_decoder.cc
index 02ac2f68eff..5a829e959ef 100644
--- a/chromium/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/chromium/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -5020,7 +5020,8 @@ void GLES2DecoderImpl::ClearUnclearedAttachments(
1.0f);
state_.SetDeviceColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
clear_bits |= GL_COLOR_BUFFER_BIT;
- framebuffer->PrepareDrawBuffersForClear();
+ if (feature_info_->feature_flags().ext_draw_buffers)
+ framebuffer->PrepareDrawBuffersForClear();
}
if (framebuffer->HasUnclearedAttachment(GL_STENCIL_ATTACHMENT) ||
@@ -5041,7 +5042,8 @@ void GLES2DecoderImpl::ClearUnclearedAttachments(
state_.SetDeviceCapabilityState(GL_SCISSOR_TEST, false);
glClear(clear_bits);
- if ((clear_bits | GL_COLOR_BUFFER_BIT) != 0)
+ if ((clear_bits | GL_COLOR_BUFFER_BIT) != 0 &&
+ feature_info_->feature_flags().ext_draw_buffers)
framebuffer->RestoreDrawBuffersAfterClear();
framebuffer_manager()->MarkAttachmentsAsCleared(
diff --git a/chromium/gpu/config/gpu_driver_bug_list_json.cc b/chromium/gpu/config/gpu_driver_bug_list_json.cc
index bcd2dd4d77e..991f2b5e2b2 100644
--- a/chromium/gpu/config/gpu_driver_bug_list_json.cc
+++ b/chromium/gpu/config/gpu_driver_bug_list_json.cc
@@ -19,7 +19,7 @@ const char kGpuDriverBugListJson[] = LONG_STRING_CONST(
{
"name": "gpu driver bug list",
// Please update the version number whenever you change this file.
- "version": "6.7",
+ "version": "6.10",
"entries": [
{
"id": 1,
@@ -1094,6 +1094,22 @@ LONG_STRING_CONST(
"features": [
"disable_d3d11"
]
+ },
+ {
+ "id": 87,
+ "description": "Disable use of Direct3D 11 on older AMD drivers",
+ "cr_bugs": [402134],
+ "os": {
+ "type": "win"
+ },
+ "vendor_id": "0x1002",
+ "driver_date": {
+ "op": "<",
+ "value": "2011.1"
+ },
+ "features": [
+ "disable_d3d11"
+ ]
}
]
}
diff --git a/chromium/media/audio/pulse/pulse_output.cc b/chromium/media/audio/pulse/pulse_output.cc
index 19fc47b8be5..e0a0b42c61d 100644
--- a/chromium/media/audio/pulse/pulse_output.cc
+++ b/chromium/media/audio/pulse/pulse_output.cc
@@ -124,26 +124,31 @@ void PulseAudioOutputStream::FulfillWriteRequest(size_t requested_bytes) {
CHECK_GE(pa_stream_begin_write(pa_stream_, &buffer, &bytes_to_fill), 0);
CHECK_EQ(bytes_to_fill, static_cast<size_t>(params_.GetBytesPerBuffer()));
+ // NOTE: |bytes_to_fill| may be larger than |requested_bytes| now, this is
+ // okay since pa_stream_begin_write() is the authoritative source on how
+ // much can be written.
+
int frames_filled = 0;
if (source_callback_) {
- uint32 hardware_delay = pulse::GetHardwareLatencyInBytes(
- pa_stream_, params_.sample_rate(),
- params_.GetBytesPerFrame());
+ const uint32 hardware_delay = pulse::GetHardwareLatencyInBytes(
+ pa_stream_, params_.sample_rate(), params_.GetBytesPerFrame());
frames_filled = source_callback_->OnMoreData(
audio_bus_.get(), AudioBuffersState(0, hardware_delay));
- }
- // Zero any unfilled data so it plays back as silence.
- if (frames_filled < audio_bus_->frames()) {
- audio_bus_->ZeroFramesPartial(
- frames_filled, audio_bus_->frames() - frames_filled);
- }
+ // Zero any unfilled data so it plays back as silence.
+ if (frames_filled < audio_bus_->frames()) {
+ audio_bus_->ZeroFramesPartial(
+ frames_filled, audio_bus_->frames() - frames_filled);
+ }
- // Note: If this ever changes to output raw float the data must be clipped
- // and sanitized since it may come from an untrusted source such as NaCl.
- audio_bus_->Scale(volume_);
- audio_bus_->ToInterleaved(
- audio_bus_->frames(), params_.bits_per_sample() / 8, buffer);
+ // Note: If this ever changes to output raw float the data must be clipped
+ // and sanitized since it may come from an untrusted source such as NaCl.
+ audio_bus_->Scale(volume_);
+ audio_bus_->ToInterleaved(
+ audio_bus_->frames(), params_.bits_per_sample() / 8, buffer);
+ } else {
+ memset(buffer, 0, bytes_to_fill);
+ }
if (pa_stream_write(pa_stream_, buffer, bytes_to_fill, NULL, 0LL,
PA_SEEK_RELATIVE) < 0) {
@@ -152,7 +157,23 @@ void PulseAudioOutputStream::FulfillWriteRequest(size_t requested_bytes) {
}
}
+ // NOTE: As mentioned above, |bytes_remaining| may be negative after this.
bytes_remaining -= bytes_to_fill;
+
+ // Despite telling Pulse to only request certain buffer sizes, it will not
+ // always obey. In these cases we need to avoid back to back reads from
+ // the renderer as it won't have time to complete the request.
+ //
+ // We can't defer the callback as Pulse will never call us again until we've
+ // satisfied writing the requested number of bytes.
+ //
+ // TODO(dalecurtis): It might be worth choosing the sleep duration based on
+ // the hardware latency return above. Watch http://crbug.com/366433 to see
+ // if a more complicated wait process is necessary. We may also need to see
+ // if a PostDelayedTask should be used here to avoid blocking the PulseAudio
+ // command thread.
+ if (source_callback_ && bytes_remaining > 0)
+ base::PlatformThread::Sleep(params_.GetBufferDuration() / 4);
}
}
diff --git a/chromium/media/audio/pulse/pulse_util.cc b/chromium/media/audio/pulse/pulse_util.cc
index 66f52c2c700..c06195eb198 100644
--- a/chromium/media/audio/pulse/pulse_util.cc
+++ b/chromium/media/audio/pulse/pulse_util.cc
@@ -274,9 +274,13 @@ bool CreateOutputStream(pa_threaded_mainloop** mainloop,
// |minreq| bytes. |tlength| should be a multiple of |minreq|; too low and
// Pulse will issue callbacks way too fast, too high and we don't get
// callbacks frequently enough.
+ //
+ // Setting |minreq| to the exact buffer size leads to more callbacks than
+ // necessary, so we've clipped it to half the buffer size. Regardless of the
+ // requested amount, we'll always fill |params.GetBytesPerBuffer()| though.
pa_buffer_attr pa_buffer_attributes;
pa_buffer_attributes.maxlength = static_cast<uint32_t>(-1);
- pa_buffer_attributes.minreq = params.GetBytesPerBuffer();
+ pa_buffer_attributes.minreq = params.GetBytesPerBuffer() / 2;
pa_buffer_attributes.prebuf = static_cast<uint32_t>(-1);
pa_buffer_attributes.tlength = params.GetBytesPerBuffer() * 3;
pa_buffer_attributes.fragsize = static_cast<uint32_t>(-1);
diff --git a/chromium/media/audio/win/audio_device_listener_win.cc b/chromium/media/audio/win/audio_device_listener_win.cc
index ecf83874867..81d67982997 100644
--- a/chromium/media/audio/win/audio_device_listener_win.cc
+++ b/chromium/media/audio/win/audio_device_listener_win.cc
@@ -125,9 +125,6 @@ STDMETHODIMP AudioDeviceListenerWin::OnDeviceRemoved(LPCWSTR device_id) {
STDMETHODIMP AudioDeviceListenerWin::OnDeviceStateChanged(LPCWSTR device_id,
DWORD new_state) {
- if (new_state != DEVICE_STATE_ACTIVE && new_state != DEVICE_STATE_NOTPRESENT)
- return S_OK;
-
base::SystemMonitor* monitor = base::SystemMonitor::Get();
if (monitor)
monitor->ProcessDevicesChanged(base::SystemMonitor::DEVTYPE_AUDIO_CAPTURE);
diff --git a/chromium/media/base/android/media_player_bridge.cc b/chromium/media/base/android/media_player_bridge.cc
index 214b52b486d..a9b7d275003 100644
--- a/chromium/media/base/android/media_player_bridge.cc
+++ b/chromium/media/base/android/media_player_bridge.cc
@@ -13,6 +13,7 @@
#include "jni/MediaPlayerBridge_jni.h"
#include "media/base/android/media_player_manager.h"
#include "media/base/android/media_resource_getter.h"
+#include "media/base/android/media_url_interceptor.h"
using base::android::ConvertUTF8ToJavaString;
using base::android::ScopedJavaLocalRef;
@@ -34,7 +35,8 @@ MediaPlayerBridge::MediaPlayerBridge(
MediaPlayerManager* manager,
const RequestMediaResourcesCB& request_media_resources_cb,
const ReleaseMediaResourcesCB& release_media_resources_cb,
- const GURL& frame_url)
+ const GURL& frame_url,
+ bool allow_credentials)
: MediaPlayerAndroid(player_id,
manager,
request_media_resources_cb,
@@ -53,6 +55,7 @@ MediaPlayerBridge::MediaPlayerBridge(
can_seek_backward_(true),
is_surface_in_use_(false),
volume_(-1.0),
+ allow_credentials_(allow_credentials),
weak_factory_(this) {
listener_.reset(new MediaPlayerListener(base::MessageLoopProxy::current(),
weak_factory_.GetWeakPtr()));
@@ -84,6 +87,13 @@ void MediaPlayerBridge::Initialize() {
return;
}
+ // Start extracting the metadata immediately if the request is anonymous.
+ // Otherwise, wait for user credentials to be retrieved first.
+ if (!allow_credentials_) {
+ ExtractMediaMetadata(url_.spec());
+ return;
+ }
+
resource_getter->GetCookies(url_,
first_party_for_cookies_,
base::Bind(&MediaPlayerBridge::OnCookiesRetrieved,
@@ -164,30 +174,43 @@ void MediaPlayerBridge::SetDataSource(const std::string& url) {
JNIEnv* env = base::android::AttachCurrentThread();
CHECK(env);
- // Create a Java String for the URL.
- ScopedJavaLocalRef<jstring> j_url_string = ConvertUTF8ToJavaString(env, url);
- ScopedJavaLocalRef<jstring> j_cookies = ConvertUTF8ToJavaString(
- env, cookies_);
- ScopedJavaLocalRef<jstring> j_user_agent = ConvertUTF8ToJavaString(
- env, user_agent_);
+ int fd;
+ int64 offset;
+ int64 size;
+ if (InterceptMediaUrl(url, &fd, &offset, &size)) {
+ if (!Java_MediaPlayerBridge_setDataSourceFromFd(
+ env, j_media_player_bridge_.obj(), fd, offset, size)) {
+ OnMediaError(MEDIA_ERROR_FORMAT);
+ return;
+ }
+ } else {
+ // Create a Java String for the URL.
+ ScopedJavaLocalRef<jstring> j_url_string =
+ ConvertUTF8ToJavaString(env, url);
+
+ jobject j_context = base::android::GetApplicationContext();
+ DCHECK(j_context);
+
+ const std::string data_uri_prefix("data:");
+ if (StartsWithASCII(url, data_uri_prefix, true)) {
+ if (!Java_MediaPlayerBridge_setDataUriDataSource(
+ env, j_media_player_bridge_.obj(), j_context, j_url_string.obj())) {
+ OnMediaError(MEDIA_ERROR_FORMAT);
+ }
+ return;
+ }
- jobject j_context = base::android::GetApplicationContext();
- DCHECK(j_context);
+ ScopedJavaLocalRef<jstring> j_cookies = ConvertUTF8ToJavaString(
+ env, cookies_);
+ ScopedJavaLocalRef<jstring> j_user_agent = ConvertUTF8ToJavaString(
+ env, user_agent_);
- const std::string data_uri_prefix("data:");
- if (StartsWithASCII(url, data_uri_prefix, true)) {
- if (!Java_MediaPlayerBridge_setDataUriDataSource(
- env, j_media_player_bridge_.obj(), j_context, j_url_string.obj())) {
+ if (!Java_MediaPlayerBridge_setDataSource(
+ env, j_media_player_bridge_.obj(), j_context, j_url_string.obj(),
+ j_cookies.obj(), j_user_agent.obj(), hide_url_log_)) {
OnMediaError(MEDIA_ERROR_FORMAT);
+ return;
}
- return;
- }
-
- if (!Java_MediaPlayerBridge_setDataSource(
- env, j_media_player_bridge_.obj(), j_context, j_url_string.obj(),
- j_cookies.obj(), j_user_agent.obj(), hide_url_log_)) {
- OnMediaError(MEDIA_ERROR_FORMAT);
- return;
}
request_media_resources_cb_.Run(player_id());
@@ -195,6 +218,25 @@ void MediaPlayerBridge::SetDataSource(const std::string& url) {
OnMediaError(MEDIA_ERROR_FORMAT);
}
+bool MediaPlayerBridge::InterceptMediaUrl(
+ const std::string& url, int* fd, int64* offset, int64* size) {
+ // Sentinel value to check whether the output arguments have been set.
+ const int kUnsetValue = -1;
+
+ *fd = kUnsetValue;
+ *offset = kUnsetValue;
+ *size = kUnsetValue;
+ media::MediaUrlInterceptor* url_interceptor =
+ manager()->GetMediaUrlInterceptor();
+ if (url_interceptor && url_interceptor->Intercept(url, fd, offset, size)) {
+ DCHECK_NE(kUnsetValue, *fd);
+ DCHECK_NE(kUnsetValue, *offset);
+ DCHECK_NE(kUnsetValue, *size);
+ return true;
+ }
+ return false;
+}
+
void MediaPlayerBridge::OnDidSetDataUriDataSource(JNIEnv* env, jobject obj,
jboolean success) {
if (!success) {
@@ -213,12 +255,20 @@ void MediaPlayerBridge::OnCookiesRetrieved(const std::string& cookies) {
}
void MediaPlayerBridge::ExtractMediaMetadata(const std::string& url) {
- manager()->GetMediaResourceGetter()->ExtractMediaMetadata(
- url,
- cookies_,
- user_agent_,
- base::Bind(&MediaPlayerBridge::OnMediaMetadataExtracted,
- weak_factory_.GetWeakPtr()));
+ int fd;
+ int64 offset;
+ int64 size;
+ if (InterceptMediaUrl(url, &fd, &offset, &size)) {
+ manager()->GetMediaResourceGetter()->ExtractMediaMetadata(
+ fd, offset, size,
+ base::Bind(&MediaPlayerBridge::OnMediaMetadataExtracted,
+ weak_factory_.GetWeakPtr()));
+ } else {
+ manager()->GetMediaResourceGetter()->ExtractMediaMetadata(
+ url, cookies_, user_agent_,
+ base::Bind(&MediaPlayerBridge::OnMediaMetadataExtracted,
+ weak_factory_.GetWeakPtr()));
+ }
}
void MediaPlayerBridge::OnMediaMetadataExtracted(
diff --git a/chromium/media/base/android/media_player_bridge.h b/chromium/media/base/android/media_player_bridge.h
index f63d6268851..792ebc12e39 100644
--- a/chromium/media/base/android/media_player_bridge.h
+++ b/chromium/media/base/android/media_player_bridge.h
@@ -50,7 +50,8 @@ class MEDIA_EXPORT MediaPlayerBridge : public MediaPlayerAndroid {
MediaPlayerManager* manager,
const RequestMediaResourcesCB& request_media_resources_cb,
const ReleaseMediaResourcesCB& release_media_resources_cb,
- const GURL& frame_url);
+ const GURL& frame_url,
+ bool allow_credentials);
virtual ~MediaPlayerBridge();
// Initialize this object and extract the metadata from the media.
@@ -132,6 +133,11 @@ class MEDIA_EXPORT MediaPlayerBridge : public MediaPlayerAndroid {
void OnMediaMetadataExtracted(base::TimeDelta duration, int width, int height,
bool success);
+ // Returns true if a MediaUrlInterceptor registered by the embedder has
+ // intercepted the url.
+ bool InterceptMediaUrl(
+ const std::string& url, int* fd, int64* offset, int64* size);
+
// Whether the player is prepared for playback.
bool prepared_;
@@ -180,6 +186,9 @@ class MEDIA_EXPORT MediaPlayerBridge : public MediaPlayerAndroid {
// Volume of playback.
double volume_;
+ // Whether user credentials are allowed to be passed.
+ bool allow_credentials_;
+
// Weak pointer passed to |listener_| for callbacks.
// NOTE: Weak pointers must be invalidated before all other member variables.
base::WeakPtrFactory<MediaPlayerBridge> weak_factory_;
diff --git a/chromium/media/base/android/media_player_manager.h b/chromium/media/base/android/media_player_manager.h
index 0b79f187d65..be84b086fca 100644
--- a/chromium/media/base/android/media_player_manager.h
+++ b/chromium/media/base/android/media_player_manager.h
@@ -14,15 +14,19 @@ namespace media {
class MediaPlayerAndroid;
class MediaResourceGetter;
+class MediaUrlInterceptor;
// This class is responsible for managing active MediaPlayerAndroid objects.
class MEDIA_EXPORT MediaPlayerManager {
public:
virtual ~MediaPlayerManager() {}
- // Return a pointer to the MediaResourceGetter object.
+ // Returns a pointer to the MediaResourceGetter object.
virtual MediaResourceGetter* GetMediaResourceGetter() = 0;
+ // Returns a pointer to the MediaUrlInterceptor object or null.
+ virtual MediaUrlInterceptor* GetMediaUrlInterceptor() = 0;
+
// Called when time update messages need to be sent. Args: player ID,
// current time.
virtual void OnTimeUpdate(int player_id, base::TimeDelta current_time) = 0;
diff --git a/chromium/media/base/android/media_resource_getter.h b/chromium/media/base/android/media_resource_getter.h
index 075f9d01fec..72f204f581c 100644
--- a/chromium/media/base/android/media_resource_getter.h
+++ b/chromium/media/base/android/media_resource_getter.h
@@ -35,13 +35,21 @@ class MEDIA_EXPORT MediaResourceGetter {
const GURL& url,
const GetPlatformPathCB& callback) = 0;
- // Extract the metadata from a media URL. Once completed, the provided
+ // Extracts the metadata from a media URL. Once completed, the provided
// callback function will be run.
virtual void ExtractMediaMetadata(
const std::string& url,
const std::string& cookies,
const std::string& user_agent,
const ExtractMediaMetadataCB& callback) = 0;
+
+ // Extracts the metadata from a file descriptor. Once completed, the
+ // provided callback function will be run.
+ virtual void ExtractMediaMetadata(
+ const int fd,
+ const int64 offset,
+ const int64 size,
+ const ExtractMediaMetadataCB& callback) = 0;
};
} // namespace media
diff --git a/chromium/media/base/android/media_source_player_unittest.cc b/chromium/media/base/android/media_source_player_unittest.cc
index 604c195da34..09b031c2699 100644
--- a/chromium/media/base/android/media_source_player_unittest.cc
+++ b/chromium/media/base/android/media_source_player_unittest.cc
@@ -13,6 +13,7 @@
#include "media/base/android/media_drm_bridge.h"
#include "media/base/android/media_player_manager.h"
#include "media/base/android/media_source_player.h"
+#include "media/base/android/media_url_interceptor.h"
#include "media/base/android/video_decoder_job.h"
#include "media/base/bind_to_current_loop.h"
#include "media/base/decoder_buffer.h"
@@ -52,6 +53,9 @@ class MockMediaPlayerManager : public MediaPlayerManager {
virtual MediaResourceGetter* GetMediaResourceGetter() OVERRIDE {
return NULL;
}
+ virtual MediaUrlInterceptor* GetMediaUrlInterceptor() OVERRIDE {
+ return NULL;
+ }
virtual void OnTimeUpdate(int player_id,
base::TimeDelta current_time) OVERRIDE {
timestamp_updated_ = true;
diff --git a/chromium/media/base/android/media_url_interceptor.h b/chromium/media/base/android/media_url_interceptor.h
new file mode 100644
index 00000000000..e1db62392aa
--- /dev/null
+++ b/chromium/media/base/android/media_url_interceptor.h
@@ -0,0 +1,36 @@
+// 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 MEDIA_BASE_ANDROID_MEDIA_URL_INTERCEPTOR_H_
+#define MEDIA_BASE_ANDROID_MEDIA_URL_INTERCEPTOR_H_
+
+#include <string>
+
+#include "base/android/jni_android.h"
+#include "media/base/media_export.h"
+
+namespace media {
+
+// Interceptor for content embedders to handle custom media urls
+// and translate them into files containing media.
+class MEDIA_EXPORT MediaUrlInterceptor {
+ public:
+ virtual ~MediaUrlInterceptor() {};
+
+ // Returns true if the embedder has intercepted the url and
+ // false otherwise.
+ // Output arguments (only when the url has been intercepted):
+ // - |fd|: file descriptor to the file containing the media element.
+ // - |offset|: offset in bytes from the start of the file to the
+ // media element.
+ // - |size|: size in bytes of the media element.
+ virtual bool Intercept(const std::string& url,
+ int* fd,
+ int64* offset,
+ int64* size) const = 0;
+};
+
+} // namespace media
+
+#endif // MEDIA_BASE_ANDROID_MEDIA_URL_INTERCEPTOR_H_
diff --git a/chromium/media/cast/cast_defines.h b/chromium/media/cast/cast_defines.h
index 64b20c96da6..6e587ae8d56 100644
--- a/chromium/media/cast/cast_defines.h
+++ b/chromium/media/cast/cast_defines.h
@@ -27,7 +27,7 @@ const uint32 kStartFrameId = UINT32_C(0xffffffff);
// This is an important system-wide constant. This limits how much history the
// implementation must retain in order to process the acknowledgements of past
// frames.
-const int kMaxUnackedFrames = 255;
+const int kMaxUnackedFrames = 60;
const size_t kMaxIpPacketSize = 1500;
const int kStartRttMs = 20;
diff --git a/chromium/media/media.gyp b/chromium/media/media.gyp
index 71099e93475..25497d1fd6f 100644
--- a/chromium/media/media.gyp
+++ b/chromium/media/media.gyp
@@ -1643,6 +1643,7 @@
'base/android/media_player_listener.h',
'base/android/media_source_player.cc',
'base/android/media_source_player.h',
+ 'base/android/media_url_interceptor.h',
'base/android/video_decoder_job.cc',
'base/android/video_decoder_job.h',
'base/android/webaudio_media_codec_bridge.cc',
diff --git a/chromium/net/base/registry_controlled_domains/OWNERS b/chromium/net/base/registry_controlled_domains/OWNERS
index 9f8b1799602..2ba05a6168c 100644
--- a/chromium/net/base/registry_controlled_domains/OWNERS
+++ b/chromium/net/base/registry_controlled_domains/OWNERS
@@ -1,2 +1,3 @@
pam@chromium.org
pkasting@chromium.org
+rsleevi@chromium.org
diff --git a/chromium/net/base/registry_controlled_domains/effective_tld_names.dat b/chromium/net/base/registry_controlled_domains/effective_tld_names.dat
index 4a8664322b8..19881bf0009 100644
--- a/chromium/net/base/registry_controlled_domains/effective_tld_names.dat
+++ b/chromium/net/base/registry_controlled_domains/effective_tld_names.dat
@@ -7992,6 +7992,171 @@ click
// cern : 2014-06-05 European Organization for Nuclear Research ("CERN")
cern
+// healthcare : 2014-06-13 Silver Glen, LLC
+healthcare
+
+// xn--30rr7y : 2014-06-13 Excellent First Limited
+xn--30rr7y
+
+// band : 2014-06-13 Auburn Hollow, LLC
+band
+
+// xn--9et52u : 2014-06-13 RISE VICTORY LIMITED
+xn--9et52u
+
+// world : 2014-06-13 Bitter Fields, LLC
+world
+
+// latrobe : 2014-06-16 La Trobe University
+latrobe
+
+// bible : 2014-06-19 American Bible Society
+bible
+
+// java : 2014-06-19 Oracle Corporation
+java
+
+// sky : 2014-06-19 Sky IP International Ltd, a company incorporated in England and Wales, operating via its registered Swiss branch
+sky
+
+// oracle : 2014-06-19 Oracle Corporation
+oracle
+
+// pharmacy : 2014-06-19 National Association of Boards of Pharmacy
+pharmacy
+
+// dvag : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
+dvag
+
+// xn--vermgensberater-ctb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
+xn--vermgensberater-ctb
+
+// xn--vermgensberatung-pwb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
+xn--vermgensberatung-pwb
+
+// montblanc : 2014-06-23 Richemont DNS Inc.
+montblanc
+
+// iwc : 2014-06-23 Richemont DNS Inc.
+iwc
+
+// cartier : 2014-06-23 Richemont DNS Inc.
+cartier
+
+// pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
+pohl
+
+// diet : 2014-06-26 Uniregistry, Corp.
+diet
+
+// cba : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
+cba
+
+// netbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
+netbank
+
+// pictet : 2014-06-26 Pictet Europe S.A.
+pictet
+
+// help : 2014-06-26 Uniregistry, Corp.
+help
+
+// pizza : 2014-06-26 Foggy Moon, LLC
+pizza
+
+// garden : 2014-06-26 Top Level Domain Holdings Limited
+garden
+
+// commbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
+commbank
+
+// gifts : 2014-07-03 Goose Sky, LLC
+gifts
+
+// fashion : 2014-07-03 Top Level Domain Holdings Limited
+fashion
+
+// tui : 2014-07-03 TUI AG
+tui
+
+// iinet : 2014-07-03 Connect West Pty. Ltd.
+iinet
+
+// restaurant : 2014-07-03 Snow Avenue, LLC
+restaurant
+
+// alsace : 2014-07-02 REGION D ALSACE
+alsace
+
+// poker : 2014-07-03 Afilias Domains No. 5 Limited
+poker
+
+// allfinanz : 2014-07-03 Allfinanz Deutsche Vermögensberatung Aktiengesellschaft
+allfinanz
+
+// sarl : 2014-07-03 Delta Orchard, LLC
+sarl
+
+// taipei : 2014-07-10 Taipei City Government
+taipei
+
+// immo : 2014-07-10 Auburn Bloom, LLC
+immo
+
+// hermes : 2014-07-10 HERMES INTERNATIONAL
+hermes
+
+// rip : 2014-07-10 United TLD Holdco Ltd.
+rip
+
+// gbiz : 2014-07-17 Charleston Road Registry Inc.
+gbiz
+
+// bloomberg : 2014-07-17 Bloomberg IP Holdings LLC
+bloomberg
+
+// sew : 2014-07-17 SEW-EURODRIVE GmbH & Co KG
+sew
+
+// prof : 2014-07-24 Charleston Road Registry Inc.
+prof
+
+// gle : 2014-07-24 Charleston Road Registry Inc.
+gle
+
+// amsterdam : 2014-07-24 Gemeente Amsterdam
+amsterdam
+
+// aquarelle : 2014-07-24 Aquarelle.com
+aquarelle
+
+// nexus : 2014-07-24 Charleston Road Registry Inc.
+nexus
+
+// flsmidth : 2014-07-24 FLSmidth A/S
+flsmidth
+
+// bnl : 2014-07-24 Banca Nazionale del Lavoro
+bnl
+
+// bcn : 2014-07-24 Municipi de Barcelona
+bcn
+
+// chrome : 2014-07-24 Charleston Road Registry Inc.
+chrome
+
+// google : 2014-07-24 Charleston Road Registry Inc.
+google
+
+// barcelona : 2014-07-24 Municipi de Barcelona
+barcelona
+
+// cal : 2014-07-24 Charleston Road Registry Inc.
+cal
+
+// abbott : 2014-07-24 Abbott Laboratories, Inc.
+abbott
+
// ===END ICANN DOMAINS===
// ===BEGIN PRIVATE DOMAINS===
diff --git a/chromium/net/base/registry_controlled_domains/effective_tld_names.gperf b/chromium/net/base/registry_controlled_domains/effective_tld_names.gperf
index 6bee195507e..f131a98733d 100644
--- a/chromium/net/base/registry_controlled_domains/effective_tld_names.gperf
+++ b/chromium/net/base/registry_controlled_domains/effective_tld_names.gperf
@@ -31,6 +31,7 @@ aa.no, 0
aarborte.no, 0
ab.ca, 0
abashiri.hokkaido.jp, 0
+abbott, 0
abeno.osaka.jp, 0
abiko.chiba.jp, 0
abira.hokkaido.jp, 0
@@ -169,6 +170,8 @@ alaska.museum, 0
alessandria.it, 0
alesund.no, 0
algard.no, 0
+allfinanz, 0
+alsace, 0
alstahaug.no, 0
alta.no, 0
altai.ru, 0
@@ -192,6 +195,7 @@ americanart.museum, 0
ami.ibaraki.jp, 0
amli.no, 0
amot.no, 0
+amsterdam, 0
amsterdam.museum, 0
amur.ru, 0
amursk.ru, 0
@@ -236,6 +240,7 @@ ap.it, 0
appspot.com, 4
aq, 0
aq.it, 0
+aquarelle, 0
aquarium.museum, 0
aquila.it, 0
ar, 0
@@ -410,10 +415,12 @@ balsan.it, 0
balsfjord.no, 0
baltimore.museum, 0
bamble.no, 0
+band, 0
bandai.fukushima.jp, 0
bando.ibaraki.jp, 0
bar, 0
bar.pro, 0
+barcelona, 0
barcelona.museum, 0
bardu.no, 0
bargains, 0
@@ -437,6 +444,7 @@ bauhaus, 0
bayern, 0
bb, 0
bc.ca, 0
+bcn, 0
bd, 2
bd.se, 0
be, 0
@@ -475,6 +483,7 @@ bi.it, 0
bialowieza.pl, 0
bialystok.pl, 0
bibai.hokkaido.jp, 0
+bible, 0
bible.museum, 0
bid, 0
biei.hokkaido.jp, 0
@@ -564,11 +573,13 @@ blogspot.sg, 4
blogspot.sk, 4
blogspot.td, 4
blogspot.tw, 4
+bloomberg, 0
blue, 0
bm, 0
bmd.br, 0
bn, 2
bn.it, 0
+bnl, 0
bnpparibas, 0
bo, 0
bo.it, 0
@@ -662,6 +673,7 @@ cab, 0
cadaques.museum, 0
cagliari.it, 0
cahcesuolo.no, 0
+cal, 0
cal.it, 0
calabria.it, 0
california.museum, 0
@@ -690,6 +702,7 @@ cargo.aero, 0
carrara-massa.it, 0
carraramassa.it, 0
carrier.museum, 0
+cartier, 0
cartoonart.museum, 0
casa, 0
casadelamoneda.museum, 0
@@ -704,6 +717,7 @@ catanzaro.it, 0
catering, 0
catering.aero, 0
cb.it, 0
+cba, 0
cbg.ru, 0
cc, 0
cc.ak.us, 0
@@ -831,6 +845,7 @@ choshi.chiba.jp, 0
choyo.kumamoto.jp, 0
christiansburg.museum, 0
christmas, 0
+chrome, 0
chtr.k12.ma.us, 0
chukotka.ru, 0
chungbuk.kr, 0
@@ -1086,6 +1101,7 @@ com.vi, 0
com.vn, 0
com.vu, 0
com.ws, 0
+commbank, 0
communication.museum, 0
communications.museum, 0
community, 0
@@ -1221,6 +1237,7 @@ detroit.museum, 0
dgca.aero, 0
diamonds, 0
dielddanuorri.no, 0
+diet, 0
digital, 0
dinosaur.museum, 0
direct, 0
@@ -1271,6 +1288,7 @@ drobak.no, 0
dudinka.ru, 0
durban, 0
durham.museum, 0
+dvag, 0
dvrdns.org, 4
dyn-o-saur.com, 4
dynalias.com, 4
@@ -1552,6 +1570,7 @@ farmequipment.museum, 0
farmers.museum, 0
farmstead.museum, 0
farsund.no, 0
+fashion, 0
fauske.no, 0
fc.it, 0
fe.it, 0
@@ -1618,6 +1637,7 @@ florence.it, 0
florida.museum, 0
florist, 0
floro.no, 0
+flsmidth, 0
fly, 0
fm, 0
fm.br, 0
@@ -1816,6 +1836,7 @@ gamo.shiga.jp, 0
gamvik.no, 0
gangaviika.no, 0
gangwon.kr, 0
+garden, 0
garden.museum, 0
gateway.museum, 0
gaular.no, 0
@@ -1823,6 +1844,7 @@ gausdal.no, 0
gb, 0
gb.com, 4
gb.net, 4
+gbiz, 0
gc.ca, 0
gd, 0
gd.cn, 0
@@ -1855,6 +1877,7 @@ gi, 0
giehtavuoatna.no, 0
giessen.museum, 0
gift, 0
+gifts, 0
gifu.gifu.jp, 0
gifu.jp, 0
gildeskal.no, 0
@@ -1874,6 +1897,7 @@ gl, 0
glas.museum, 0
glass, 0
glass.museum, 0
+gle, 0
gliding.aero, 0
gliwice.pl, 0
global, 0
@@ -1922,6 +1946,7 @@ gokase.miyazaki.jp, 0
gol.no, 0
gon.pk, 0
gonohe.aomori.jp, 0
+google, 0
googleapis.com, 4
googlecode.com, 4
gop, 0
@@ -2215,10 +2240,12 @@ he.cn, 0
health.museum, 0
health.nz, 0
health.vn, 0
+healthcare, 0
heguri.nara.jp, 0
heimatunduhren.museum, 0
hekinan.aichi.jp, 0
hellas.museum, 0
+help, 0
helsinki.museum, 0
hembygdsforbund.museum, 0
hemne.no, 0
@@ -2228,6 +2255,7 @@ herad.no, 0
here, 0
here-for-more.info, 4
heritage.museum, 0
+hermes, 0
herokuapp.com, 4
herokussl.com, 4
heroy.more-og-romsdal.no, 0
@@ -2430,6 +2458,7 @@ iheya.okinawa.jp, 0
iida.nagano.jp, 0
iide.yamagata.jp, 0
iijima.nagano.jp, 0
+iinet, 0
iitate.fukushima.jp, 0
iiyama.nagano.jp, 0
iizuka.fukuoka.jp, 0
@@ -2458,6 +2487,7 @@ imakane.hokkaido.jp, 0
imari.saga.jp, 0
imb.br, 0
imizu.toyama.jp, 0
+immo, 0
immobilien, 0
imperia.it, 0
in, 0
@@ -2697,6 +2727,7 @@ iwata.shizuoka.jp, 0
iwate.iwate.jp, 0
iwate.jp, 0
iwatsuki.saitama.jp, 0
+iwc, 0
iwi.nz, 0
iyo.ehime.jp, 0
iz.hr, 0
@@ -2716,6 +2747,7 @@ jamal.ru, 0
jamison.museum, 0
jan-mayen.no, 0
jar.ru, 0
+java, 0
jaworzno.pl, 0
je, 0
jefferson.museum, 0
@@ -3249,6 +3281,7 @@ larsson.museum, 0
larvik.no, 0
laspezia.it, 0
latina.it, 0
+latrobe, 0
lavagis.no, 0
lavangen.no, 0
law.pro, 0
@@ -3772,6 +3805,7 @@ mombetsu.hokkaido.jp, 0
monash, 0
money.museum, 0
monmouth.museum, 0
+montblanc, 0
monticello.museum, 0
montreal.museum, 0
monza-brianza.it, 0
@@ -4132,6 +4166,7 @@ net.vi, 0
net.vn, 0
net.vu, 0
net.ws, 0
+netbank, 0
network, 0
neues.museum, 0
neustar, 0
@@ -4143,6 +4178,7 @@ newport.museum, 0
news.hu, 0
newspaper.museum, 0
newyork.museum, 0
+nexus, 0
neyagawa.osaka.jp, 0
nf, 0
nf.ca, 0
@@ -4446,6 +4482,7 @@ or.tz, 0
or.ug, 0
or.us, 0
ora.gunma.jp, 0
+oracle, 0
oregon.museum, 0
oregontrail.museum, 0
orenburg.ru, 0
@@ -4709,6 +4746,7 @@ pg.it, 0
ph, 0
pharmacien.fr, 0
pharmaciens.km, 0
+pharmacy, 0
pharmacy.museum, 0
philadelphia.museum, 0
philadelphiaarea.museum, 0
@@ -4722,6 +4760,7 @@ physio, 0
pi.it, 0
piacenza.it, 0
pics, 0
+pictet, 0
pictures, 0
piedmont.it, 0
piemonte.it, 0
@@ -4734,6 +4773,7 @@ pisa.it, 0
pistoia.it, 0
pisz.pl, 0
pittsburgh.museum, 0
+pizza, 0
pk, 0
pl, 0
pl.ua, 0
@@ -4757,6 +4797,8 @@ podhale.pl, 0
podlasie.pl, 0
podzone.net, 4
podzone.org, 4
+pohl, 0
+poker, 0
pol.dz, 0
pol.ht, 0
police.uk, 0
@@ -4823,6 +4865,7 @@ prochowice.pl, 0
prod, 0
production.aero, 0
productions, 0
+prof, 0
prof.pr, 0
project.museum, 0
properties, 0
@@ -4928,6 +4971,7 @@ research.aero, 0
research.museum, 0
resistance.museum, 0
rest, 0
+restaurant, 0
reviews, 0
rg.it, 0
rhcloud.com, 4
@@ -4946,6 +4990,7 @@ ringerike.no, 0
ringsaker.no, 0
rio, 0
riodejaneiro.museum, 0
+rip, 0
rishiri.hokkaido.jp, 0
rishirifuji.hokkaido.jp, 0
risor.no, 0
@@ -5107,6 +5152,7 @@ sar.it, 0
saratov.ru, 0
sardegna.it, 0
sardinia.it, 0
+sarl, 0
saroma.hokkaido.jp, 0
sarpsborg.no, 0
sarufutsu.hokkaido.jp, 0
@@ -5226,6 +5272,7 @@ settlement.museum, 0
settlers.museum, 0
settsu.osaka.jp, 0
sevastopol.ua, 0
+sew, 0
sex.hu, 0
sex.pl, 0
sexy, 0
@@ -5373,6 +5420,7 @@ sklep.pl, 0
skoczow.pl, 0
skodje.no, 0
skole.museum, 0
+sky, 0
skydiving.aero, 0
sl, 0
slask.pl, 0
@@ -5577,6 +5625,7 @@ taiji.wakayama.jp, 0
taiki.hokkaido.jp, 0
taiki.mie.jp, 0
tainai.niigata.jp, 0
+taipei, 0
taira.toyama.jp, 0
taishi.hyogo.jp, 0
taishi.osaka.jp, 0
@@ -5915,6 +5964,7 @@ tsuwano.shimane.jp, 0
tsuyama.okayama.jp, 0
tt, 0
tt.im, 0
+tui, 0
tula.ru, 0
tur.ar, 0
tur.br, 0
@@ -6257,6 +6307,7 @@ workinggroup.aero, 0
works, 0
works.aero, 0
workshop.museum, 0
+world, 0
worse-than.tv, 4
writesthisblog.com, 4
wroc.pl, 0
@@ -6273,6 +6324,7 @@ x.bg, 0
x.se, 0
xj.cn, 0
xn--1qqw23a, 0
+xn--30rr7y, 0
xn--3bst00m, 0
xn--3ds443g, 0
xn--3e0b707e, 0
@@ -6294,6 +6346,7 @@ xn--80au.xn--90a3ac, 0
xn--90a3ac, 0
xn--90azh.xn--90a3ac, 0
xn--9dbhblg6di.museum, 0
+xn--9et52u, 0
xn--andy-ira.no, 0
xn--aroport-bya.ci, 0
xn--asky-ira.no, 0
@@ -6539,6 +6592,8 @@ xn--unup4y, 0
xn--vads-jra.no, 0
xn--vard-jra.no, 0
xn--vegrshei-c0a.no, 0
+xn--vermgensberater-ctb, 0
+xn--vermgensberatung-pwb, 0
xn--vestvgy-ixa6o.no, 0
xn--vg-yiab.no, 0
xn--vgan-qoa.no, 0
diff --git a/chromium/net/http/http_network_session.cc b/chromium/net/http/http_network_session.cc
index b4e373e5de7..75c8ee4cd1b 100644
--- a/chromium/net/http/http_network_session.cc
+++ b/chromium/net/http/http_network_session.cc
@@ -117,6 +117,7 @@ HttpNetworkSession::HttpNetworkSession(const Params& params)
net::ClientSocketFactory::GetDefaultFactory(),
params.http_server_properties,
params.cert_verifier,
+ params.transport_security_state,
params.quic_crypto_client_stream_factory,
params.quic_random ? params.quic_random :
QuicRandom::GetInstance(),
diff --git a/chromium/net/http/http_stream_factory_impl_job.cc b/chromium/net/http/http_stream_factory_impl_job.cc
index 79a95361d43..1d8237cf1da 100644
--- a/chromium/net/http/http_stream_factory_impl_job.cc
+++ b/chromium/net/http/http_stream_factory_impl_job.cc
@@ -1124,13 +1124,14 @@ int HttpStreamFactoryImpl::Job::DoCreateStream() {
// HttpStreamFactoryImpl will be creating all the SpdyHttpStreams, since it
// will know when SpdySessions become available.
- if (stream_factory_->for_websockets_) {
- // TODO(ricea): Restore this code when WebSockets over SPDY is implemented.
- NOTREACHED();
- } else {
- bool use_relative_url = direct || request_info_.url.SchemeIs("https");
- stream_.reset(new SpdyHttpStream(spdy_session, use_relative_url));
- }
+ // TODO(ricea): Restore the code for WebSockets over SPDY once it's
+ // implemented.
+ if (stream_factory_->for_websockets_)
+ return ERR_NOT_IMPLEMENTED;
+
+ bool use_relative_url = direct || request_info_.url.SchemeIs("https");
+ stream_.reset(new SpdyHttpStream(spdy_session, use_relative_url));
+
return OK;
}
diff --git a/chromium/net/quic/crypto/proof_verifier_chromium.cc b/chromium/net/quic/crypto/proof_verifier_chromium.cc
index 4b118da198c..a1365c5c4d2 100644
--- a/chromium/net/quic/crypto/proof_verifier_chromium.cc
+++ b/chromium/net/quic/crypto/proof_verifier_chromium.cc
@@ -9,6 +9,7 @@
#include "base/callback_helpers.h"
#include "base/compiler_specific.h"
#include "base/logging.h"
+#include "base/metrics/histogram.h"
#include "base/stl_util.h"
#include "base/strings/stringprintf.h"
#include "crypto/signature_verifier.h"
@@ -21,6 +22,7 @@
#include "net/cert/single_request_cert_verifier.h"
#include "net/cert/x509_certificate.h"
#include "net/cert/x509_util.h"
+#include "net/http/transport_security_state.h"
#include "net/quic/crypto/crypto_protocol.h"
#include "net/ssl/ssl_config_service.h"
@@ -38,6 +40,7 @@ class ProofVerifierChromium::Job {
public:
Job(ProofVerifierChromium* proof_verifier,
CertVerifier* cert_verifier,
+ TransportSecurityState* transport_security_state,
const BoundNetLog& net_log);
// Starts the proof verification. If |QUIC_PENDING| is returned, then
@@ -72,6 +75,8 @@ class ProofVerifierChromium::Job {
// The underlying verifier used for verifying certificates.
scoped_ptr<SingleRequestCertVerifier> verifier_;
+ TransportSecurityState* transport_security_state_;
+
// |hostname| specifies the hostname for which |certs| is a valid chain.
std::string hostname_;
@@ -89,11 +94,14 @@ class ProofVerifierChromium::Job {
DISALLOW_COPY_AND_ASSIGN(Job);
};
-ProofVerifierChromium::Job::Job(ProofVerifierChromium* proof_verifier,
- CertVerifier* cert_verifier,
- const BoundNetLog& net_log)
+ProofVerifierChromium::Job::Job(
+ ProofVerifierChromium* proof_verifier,
+ CertVerifier* cert_verifier,
+ TransportSecurityState* transport_security_state,
+ const BoundNetLog& net_log)
: proof_verifier_(proof_verifier),
verifier_(new SingleRequestCertVerifier(cert_verifier)),
+ transport_security_state_(transport_security_state),
next_state_(STATE_NONE),
net_log_(net_log) {
}
@@ -222,6 +230,59 @@ int ProofVerifierChromium::Job::DoVerifyCert(int result) {
int ProofVerifierChromium::Job::DoVerifyCertComplete(int result) {
verifier_.reset();
+#if defined(OFFICIAL_BUILD) && !defined(OS_ANDROID) && !defined(OS_IOS)
+ // TODO(wtc): The following code was copied from ssl_client_socket_nss.cc.
+ // Convert it to a new function that can be called by both files. These
+ // variables simulate the arguments to the new function.
+ const CertVerifyResult& cert_verify_result =
+ verify_details_->cert_verify_result;
+ bool sni_available = true;
+ const std::string& host = hostname_;
+ TransportSecurityState* transport_security_state = transport_security_state_;
+ std::string* pinning_failure_log = &verify_details_->pinning_failure_log;
+
+ // Take care of any mandates for public key pinning.
+ //
+ // Pinning is only enabled for official builds to make sure that others don't
+ // end up with pins that cannot be easily updated.
+ //
+ // TODO(agl): We might have an issue here where a request for foo.example.com
+ // merges into a SPDY connection to www.example.com, and gets a different
+ // certificate.
+
+ // Perform pin validation if, and only if, all these conditions obtain:
+ //
+ // * a TransportSecurityState object is available;
+ // * the server's certificate chain is valid (or suffers from only a minor
+ // error);
+ // * the server's certificate chain chains up to a known root (i.e. not a
+ // user-installed trust anchor); and
+ // * the build is recent (very old builds should fail open so that users
+ // have some chance to recover).
+ //
+ const CertStatus cert_status = cert_verify_result.cert_status;
+ if (transport_security_state &&
+ (result == OK ||
+ (IsCertificateError(result) && IsCertStatusMinorError(cert_status))) &&
+ cert_verify_result.is_issued_by_known_root &&
+ TransportSecurityState::IsBuildTimely()) {
+ if (transport_security_state->HasPublicKeyPins(host, sni_available)) {
+ if (!transport_security_state->CheckPublicKeyPins(
+ host,
+ sni_available,
+ cert_verify_result.public_key_hashes,
+ pinning_failure_log)) {
+ LOG(ERROR) << *pinning_failure_log;
+ result = ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN;
+ UMA_HISTOGRAM_BOOLEAN("Net.PublicKeyPinSuccess", false);
+ TransportSecurityState::ReportUMAOnPinFailure(host);
+ } else {
+ UMA_HISTOGRAM_BOOLEAN("Net.PublicKeyPinSuccess", true);
+ }
+ }
+ }
+#endif
+
if (result <= ERR_FAILED) {
error_details_ = StringPrintf("Failed to verify certificate chain: %s",
ErrorToString(result));
@@ -310,8 +371,12 @@ bool ProofVerifierChromium::Job::VerifySignature(const string& signed_data,
return true;
}
-ProofVerifierChromium::ProofVerifierChromium(CertVerifier* cert_verifier)
- : cert_verifier_(cert_verifier) {}
+ProofVerifierChromium::ProofVerifierChromium(
+ CertVerifier* cert_verifier,
+ TransportSecurityState* transport_security_state)
+ : cert_verifier_(cert_verifier),
+ transport_security_state_(transport_security_state) {
+}
ProofVerifierChromium::~ProofVerifierChromium() {
STLDeleteElements(&active_jobs_);
@@ -332,7 +397,10 @@ QuicAsyncStatus ProofVerifierChromium::VerifyProof(
}
const ProofVerifyContextChromium* chromium_context =
reinterpret_cast<const ProofVerifyContextChromium*>(verify_context);
- scoped_ptr<Job> job(new Job(this, cert_verifier_, chromium_context->net_log));
+ scoped_ptr<Job> job(new Job(this,
+ cert_verifier_,
+ transport_security_state_,
+ chromium_context->net_log));
QuicAsyncStatus status = job->VerifyProof(hostname, server_config, certs,
signature, error_details,
verify_details, callback);
diff --git a/chromium/net/quic/crypto/proof_verifier_chromium.h b/chromium/net/quic/crypto/proof_verifier_chromium.h
index 6f8a23131f3..46632fb7093 100644
--- a/chromium/net/quic/crypto/proof_verifier_chromium.h
+++ b/chromium/net/quic/crypto/proof_verifier_chromium.h
@@ -22,12 +22,18 @@ namespace net {
class CertVerifier;
class SingleRequestCertVerifier;
+class TransportSecurityState;
// ProofVerifyDetailsChromium is the implementation-specific information that a
// ProofVerifierChromium returns about a certificate verification.
struct ProofVerifyDetailsChromium : public ProofVerifyDetails {
public:
CertVerifyResult cert_verify_result;
+
+ // pinning_failure_log contains a message produced by
+ // TransportSecurityState::DomainState::CheckPublicKeyPins in the event of a
+ // pinning failure. It is a (somewhat) human-readable string.
+ std::string pinning_failure_log;
};
// ProofVerifyContextChromium is the implementation-specific information that a
@@ -44,7 +50,8 @@ struct ProofVerifyContextChromium : public ProofVerifyContext {
// capable of handling multiple simultaneous requests.
class NET_EXPORT_PRIVATE ProofVerifierChromium : public ProofVerifier {
public:
- explicit ProofVerifierChromium(CertVerifier* cert_verifier);
+ ProofVerifierChromium(CertVerifier* cert_verifier,
+ TransportSecurityState* transport_security_state);
virtual ~ProofVerifierChromium();
// ProofVerifier interface
@@ -70,6 +77,8 @@ class NET_EXPORT_PRIVATE ProofVerifierChromium : public ProofVerifier {
// Underlying verifier used to verify certificates.
CertVerifier* const cert_verifier_;
+ TransportSecurityState* transport_security_state_;
+
DISALLOW_COPY_AND_ASSIGN(ProofVerifierChromium);
};
diff --git a/chromium/net/quic/quic_client_session.cc b/chromium/net/quic/quic_client_session.cc
index 745692c2e12..40b22cdc315 100644
--- a/chromium/net/quic/quic_client_session.cc
+++ b/chromium/net/quic/quic_client_session.cc
@@ -427,6 +427,7 @@ bool QuicClientSession::GetSSLInfo(SSLInfo* ssl_info) const {
ssl_info->channel_id_sent = false;
ssl_info->security_bits = security_bits;
ssl_info->handshake_type = SSLInfo::HANDSHAKE_FULL;
+ ssl_info->pinning_failure_log = pinning_failure_log_;
return true;
}
@@ -654,12 +655,12 @@ void QuicClientSession::OnProofValid(
void QuicClientSession::OnProofVerifyDetailsAvailable(
const ProofVerifyDetails& verify_details) {
- const CertVerifyResult* cert_verify_result_other =
- &(reinterpret_cast<const ProofVerifyDetailsChromium*>(
- &verify_details))->cert_verify_result;
+ const ProofVerifyDetailsChromium* verify_details_chromium =
+ reinterpret_cast<const ProofVerifyDetailsChromium*>(&verify_details);
CertVerifyResult* result_copy = new CertVerifyResult;
- result_copy->CopyFrom(*cert_verify_result_other);
+ result_copy->CopyFrom(verify_details_chromium->cert_verify_result);
cert_verify_result_.reset(result_copy);
+ pinning_failure_log_ = verify_details_chromium->pinning_failure_log;
}
void QuicClientSession::StartReading() {
diff --git a/chromium/net/quic/quic_client_session.h b/chromium/net/quic/quic_client_session.h
index 7fbe3db5cd1..29281b07492 100644
--- a/chromium/net/quic/quic_client_session.h
+++ b/chromium/net/quic/quic_client_session.h
@@ -227,6 +227,7 @@ class NET_EXPORT_PRIVATE QuicClientSession : public QuicClientSessionBase {
scoped_refptr<IOBufferWithSize> read_buffer_;
scoped_ptr<QuicServerInfo> server_info_;
scoped_ptr<CertVerifyResult> cert_verify_result_;
+ std::string pinning_failure_log_;
ObserverSet observers_;
StreamRequestQueue stream_requests_;
bool read_pending_;
diff --git a/chromium/net/quic/quic_stream_factory.cc b/chromium/net/quic/quic_stream_factory.cc
index 2fc1b9e334c..5462d2a334d 100644
--- a/chromium/net/quic/quic_stream_factory.cc
+++ b/chromium/net/quic/quic_stream_factory.cc
@@ -450,6 +450,7 @@ QuicStreamFactory::QuicStreamFactory(
ClientSocketFactory* client_socket_factory,
base::WeakPtr<HttpServerProperties> http_server_properties,
CertVerifier* cert_verifier,
+ TransportSecurityState* transport_security_state,
QuicCryptoClientStreamFactory* quic_crypto_client_stream_factory,
QuicRandom* random_generator,
QuicClock* clock,
@@ -479,7 +480,8 @@ QuicStreamFactory::QuicStreamFactory(
crypto_config_.set_user_agent_id(user_agent_id);
crypto_config_.AddCanonicalSuffix(".c.youtube.com");
crypto_config_.AddCanonicalSuffix(".googlevideo.com");
- crypto_config_.SetProofVerifier(new ProofVerifierChromium(cert_verifier));
+ crypto_config_.SetProofVerifier(
+ new ProofVerifierChromium(cert_verifier, transport_security_state));
base::CPU cpu;
if (cpu.has_aesni() && cpu.has_avx())
crypto_config_.PreferAesGcm();
diff --git a/chromium/net/quic/quic_stream_factory.h b/chromium/net/quic/quic_stream_factory.h
index eb82659bbf8..b0280e2ebbc 100644
--- a/chromium/net/quic/quic_stream_factory.h
+++ b/chromium/net/quic/quic_stream_factory.h
@@ -38,6 +38,7 @@ class QuicRandom;
class QuicServerInfoFactory;
class QuicServerId;
class QuicStreamFactory;
+class TransportSecurityState;
namespace test {
class QuicStreamFactoryPeer;
@@ -91,6 +92,7 @@ class NET_EXPORT_PRIVATE QuicStreamFactory
ClientSocketFactory* client_socket_factory,
base::WeakPtr<HttpServerProperties> http_server_properties,
CertVerifier* cert_verifier,
+ TransportSecurityState* transport_security_state,
QuicCryptoClientStreamFactory* quic_crypto_client_stream_factory,
QuicRandom* random_generator,
QuicClock* clock,
diff --git a/chromium/net/quic/quic_stream_factory_test.cc b/chromium/net/quic/quic_stream_factory_test.cc
index e88ea4b8052..ff8e4ce6eb4 100644
--- a/chromium/net/quic/quic_stream_factory_test.cc
+++ b/chromium/net/quic/quic_stream_factory_test.cc
@@ -12,6 +12,7 @@
#include "net/http/http_response_headers.h"
#include "net/http/http_response_info.h"
#include "net/http/http_util.h"
+#include "net/http/transport_security_state.h"
#include "net/quic/crypto/crypto_handshake.h"
#include "net/quic/crypto/proof_verifier_chromium.h"
#include "net/quic/crypto/quic_decrypter.h"
@@ -91,6 +92,7 @@ class QuicStreamFactoryTest : public ::testing::TestWithParam<QuicVersion> {
cert_verifier_(CertVerifier::CreateDefault()),
factory_(&host_resolver_, &socket_factory_,
base::WeakPtr<HttpServerProperties>(), cert_verifier_.get(),
+ &transport_security_state_,
&crypto_client_stream_factory_, &random_generator_, clock_,
kDefaultMaxPacketSize, std::string(),
SupportedVersions(GetParam()), true, true, true),
@@ -181,6 +183,7 @@ class QuicStreamFactoryTest : public ::testing::TestWithParam<QuicVersion> {
QuicTestPacketMaker maker_;
MockClock* clock_; // Owned by factory_.
scoped_ptr<CertVerifier> cert_verifier_;
+ TransportSecurityState transport_security_state_;
QuicStreamFactory factory_;
HostPortPair host_port_pair_;
bool is_https_;
diff --git a/chromium/net/quic/test_tools/crypto_test_utils_chromium.cc b/chromium/net/quic/test_tools/crypto_test_utils_chromium.cc
index 9deee8388b7..a3c85fb2990 100644
--- a/chromium/net/quic/test_tools/crypto_test_utils_chromium.cc
+++ b/chromium/net/quic/test_tools/crypto_test_utils_chromium.cc
@@ -10,6 +10,7 @@
#include "net/cert/cert_verifier.h"
#include "net/cert/test_root_certs.h"
#include "net/cert/x509_certificate.h"
+#include "net/http/transport_security_state.h"
#include "net/quic/crypto/proof_source_chromium.h"
#include "net/quic/crypto/proof_verifier_chromium.h"
#include "net/test/cert_test_util.h"
@@ -21,9 +22,11 @@ namespace test {
class TestProofVerifierChromium : public ProofVerifierChromium {
public:
TestProofVerifierChromium(CertVerifier* cert_verifier,
+ TransportSecurityState* transport_security_state,
const std::string& cert_file)
- : ProofVerifierChromium(cert_verifier),
- cert_verifier_(cert_verifier) {
+ : ProofVerifierChromium(cert_verifier, transport_security_state),
+ cert_verifier_(cert_verifier),
+ transport_security_state_(transport_security_state) {
// Load and install the root for the validated chain.
scoped_refptr<X509Certificate> root_cert =
ImportCertFromFile(GetTestCertsDirectory(), cert_file);
@@ -34,6 +37,7 @@ class TestProofVerifierChromium : public ProofVerifierChromium {
private:
ScopedTestRoot scoped_root_;
scoped_ptr<CertVerifier> cert_verifier_;
+ scoped_ptr<TransportSecurityState> transport_security_state_;
};
// static
@@ -43,8 +47,10 @@ ProofSource* CryptoTestUtils::ProofSourceForTesting() {
// static
ProofVerifier* CryptoTestUtils::ProofVerifierForTesting() {
- TestProofVerifierChromium* proof_verifier = new TestProofVerifierChromium(
- CertVerifier::CreateDefault(), "quic_root.crt");
+ TestProofVerifierChromium* proof_verifier =
+ new TestProofVerifierChromium(CertVerifier::CreateDefault(),
+ new TransportSecurityState,
+ "quic_root.crt");
return proof_verifier;
}
diff --git a/chromium/sdch/open-vcdiff/vsprojects/open-vcdiff.sln b/chromium/sdch/open-vcdiff/vsprojects/open-vcdiff.sln
index 690072d7244..c8a0374a764 100644
--- a/chromium/sdch/open-vcdiff/vsprojects/open-vcdiff.sln
+++ b/chromium/sdch/open-vcdiff/vsprojects/open-vcdiff.sln
@@ -1,4 +1,4 @@
-
+
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vcdcom", "vcdcom\vcdcom.vcproj", "{A49D16EE-E69E-4B5D-9CB7-ABEF79BB4246}"
diff --git a/chromium/sdch/open-vcdiff/vsprojects/vcdcom/vcdcom.vcproj b/chromium/sdch/open-vcdiff/vsprojects/vcdcom/vcdcom.vcproj
index 2b1af554751..8c3637bdd88 100644
--- a/chromium/sdch/open-vcdiff/vsprojects/vcdcom/vcdcom.vcproj
+++ b/chromium/sdch/open-vcdiff/vsprojects/vcdcom/vcdcom.vcproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
diff --git a/chromium/sdch/open-vcdiff/vsprojects/vcddec/vcddec.vcproj b/chromium/sdch/open-vcdiff/vsprojects/vcddec/vcddec.vcproj
index 4add588ff8e..22b93f51d3e 100644
--- a/chromium/sdch/open-vcdiff/vsprojects/vcddec/vcddec.vcproj
+++ b/chromium/sdch/open-vcdiff/vsprojects/vcddec/vcddec.vcproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
diff --git a/chromium/sdch/open-vcdiff/vsprojects/vcdecoder_test_common/vcdecoder_test_common.vcproj b/chromium/sdch/open-vcdiff/vsprojects/vcdecoder_test_common/vcdecoder_test_common.vcproj
index 0fa49faf2ea..55d41bea9ca 100644
--- a/chromium/sdch/open-vcdiff/vsprojects/vcdecoder_test_common/vcdecoder_test_common.vcproj
+++ b/chromium/sdch/open-vcdiff/vsprojects/vcdecoder_test_common/vcdecoder_test_common.vcproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
diff --git a/chromium/sdch/open-vcdiff/vsprojects/vcdenc/vcdenc.vcproj b/chromium/sdch/open-vcdiff/vsprojects/vcdenc/vcdenc.vcproj
index 688a55893ff..368200ddcad 100644
--- a/chromium/sdch/open-vcdiff/vsprojects/vcdenc/vcdenc.vcproj
+++ b/chromium/sdch/open-vcdiff/vsprojects/vcdenc/vcdenc.vcproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
diff --git a/chromium/testing/gmock/msvc/2005/gmock.sln b/chromium/testing/gmock/msvc/2005/gmock.sln
index d18be9b5471..0cf57a35aa8 100644
--- a/chromium/testing/gmock/msvc/2005/gmock.sln
+++ b/chromium/testing/gmock/msvc/2005/gmock.sln
@@ -1,4 +1,4 @@
-
+
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmock", "gmock.vcproj", "{34681F0D-CE45-415D-B5F2-5C662DFE3BD5}"
diff --git a/chromium/testing/gmock/msvc/2010/gmock.sln b/chromium/testing/gmock/msvc/2010/gmock.sln
index 70be89aaabd..3c356e14529 100644
--- a/chromium/testing/gmock/msvc/2010/gmock.sln
+++ b/chromium/testing/gmock/msvc/2010/gmock.sln
@@ -1,4 +1,4 @@
-
+
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual C++ Express 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmock", "gmock.vcxproj", "{34681F0D-CE45-415D-B5F2-5C662DFE3BD5}"
diff --git a/chromium/testing/gtest/codegear/gtest.cbproj b/chromium/testing/gtest/codegear/gtest.cbproj
index 468ef971859..285bb2a87b4 100644
--- a/chromium/testing/gtest/codegear/gtest.cbproj
+++ b/chromium/testing/gtest/codegear/gtest.cbproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{bca37a72-5b07-46cf-b44e-89f8e06451a2}</ProjectGuid>
diff --git a/chromium/testing/gtest/codegear/gtest.groupproj b/chromium/testing/gtest/codegear/gtest.groupproj
index a1c9eccc1a7..849f4c4b810 100644
--- a/chromium/testing/gtest/codegear/gtest.groupproj
+++ b/chromium/testing/gtest/codegear/gtest.groupproj
@@ -1,4 +1,4 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{c1d923e0-6cba-4332-9b6f-3420acbf5091}</ProjectGuid>
</PropertyGroup>
diff --git a/chromium/testing/gtest/codegear/gtest_main.cbproj b/chromium/testing/gtest/codegear/gtest_main.cbproj
index d1305631791..fae32cb29b6 100644
--- a/chromium/testing/gtest/codegear/gtest_main.cbproj
+++ b/chromium/testing/gtest/codegear/gtest_main.cbproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{bca37a72-5b07-46cf-b44e-89f8e06451a2}</ProjectGuid>
diff --git a/chromium/testing/gtest/codegear/gtest_unittest.cbproj b/chromium/testing/gtest/codegear/gtest_unittest.cbproj
index 0c8676c1660..33f70563469 100644
--- a/chromium/testing/gtest/codegear/gtest_unittest.cbproj
+++ b/chromium/testing/gtest/codegear/gtest_unittest.cbproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{eea63393-5ac5-4b9c-8909-d75fef2daa41}</ProjectGuid>
diff --git a/chromium/third_party/WebKit/Source/core/css/mediaControls.css b/chromium/third_party/WebKit/Source/core/css/mediaControls.css
index d3b5536e4a4..d95e26e609d 100644
--- a/chromium/third_party/WebKit/Source/core/css/mediaControls.css
+++ b/chromium/third_party/WebKit/Source/core/css/mediaControls.css
@@ -79,6 +79,8 @@ audio::-webkit-media-controls-panel, video::-webkit-media-controls-panel {
height: 30px;
background-color: rgba(20, 20, 20, 0.8);
border-radius: 5px;
+ /* The duration is also specified in MediaControlElements.cpp and LayoutTests/media/media-controls.js */
+ transition: opacity 0.3s;
}
video:-webkit-full-page-media {
diff --git a/chromium/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp b/chromium/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
index 5431a1a06c4..00096d73919 100644
--- a/chromium/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
+++ b/chromium/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp