diff --git a/DEPS b/DEPS index 23a10ba..8c02b49 100644 --- a/DEPS +++ b/DEPS
@@ -86,7 +86,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': '36ee60c3a440b353cf9242697ef2fc32e11892f9', + 'v8_revision': '68c9ef3121b8017fb9c8fb88367890cbbe0759dd', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other. @@ -106,7 +106,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. - 'pdfium_revision': '28bb2f2ffe751cf4142329e27238da52ae9f848b', + 'pdfium_revision': 'dc566b0a76f9d2ad112c8cc35fa6dc8eaf942316', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling openmax_dl # and whatever else without interference from each other. @@ -142,7 +142,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling catapult # and whatever else without interference from each other. - 'catapult_revision': '23d04ac91acd96d02be00dca03310a22daf8baeb', + 'catapult_revision': 'a13166acf03fb105dd4629ed6a2ef95bcf9b75ed', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -876,7 +876,7 @@ Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + 'da5abe6e9bae583e4ae73aa553547fcaa637d099', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '8058fbbd6bc09dd64b87a479d4028a0d8a2fed5b', # commit position 21742 + Var('webrtc_git') + '/src.git' + '@' + '448f4d50dc75531db755ed6829f33be426429f95', # commit position 21742 'src/third_party/xdg-utils': { 'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d', @@ -910,7 +910,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@5e34303e0ea17a3fd3b86e200e87b2629bbeae59', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@78ba74d755847eea235f8dd57849b7b1e9ee8d10', 'condition': 'checkout_src_internal', },
diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc index 28deb8f67..3ce0566 100644 --- a/ash/accelerators/accelerator_controller.cc +++ b/ash/accelerators/accelerator_controller.cc
@@ -102,26 +102,6 @@ const char kPolicyDisabledToastId[] = "voice_interaction_policy_disabled"; const int kToastDurationMs = 2500; -// The notification delegate that will be used to open the keyboard shortcut -// help page when the notification is clicked. -class DeprecatedAcceleratorNotificationDelegate - : public message_center::NotificationDelegate { - public: - DeprecatedAcceleratorNotificationDelegate() = default; - - // message_center::NotificationDelegate: - void Click() override { - if (!Shell::Get()->session_controller()->IsUserSessionBlocked()) - Shell::Get()->shell_delegate()->OpenKeyboardShortcutHelpPage(); - } - - private: - // Private destructor since NotificationDelegate is ref-counted. - ~DeprecatedAcceleratorNotificationDelegate() override = default; - - DISALLOW_COPY_AND_ASSIGN(DeprecatedAcceleratorNotificationDelegate); -}; - // Ensures that there are no word breaks at the "+"s in the shortcut texts such // as "Ctrl+Shift+Space". void EnsureNoWordBreaks(base::string16* shortcut_text) { @@ -165,6 +145,13 @@ int new_shortcut_id) { const base::string16 message = GetNotificationText(message_id, old_shortcut_id, new_shortcut_id); + auto delegate = + base::MakeRefCounted<message_center::HandleNotificationClickDelegate>( + base::BindRepeating([]() { + if (!Shell::Get()->session_controller()->IsUserSessionBlocked()) + Shell::Get()->shell_delegate()->OpenKeyboardShortcutHelpPage(); + })); + std::unique_ptr<Notification> notification = message_center::Notification::CreateSystemNotification( message_center::NOTIFICATION_TYPE_SIMPLE, notification_id, @@ -173,8 +160,7 @@ message_center::NotifierId( message_center::NotifierId::SYSTEM_COMPONENT, kNotifierAccelerator), - message_center::RichNotificationData(), - new DeprecatedAcceleratorNotificationDelegate, + message_center::RichNotificationData(), std::move(delegate), kNotificationKeyboardIcon, SystemNotificationWarningLevel::NORMAL); notification->set_priority(message_center::SYSTEM_PRIORITY); message_center::MessageCenter::Get()->AddNotification(
diff --git a/ash/components/strings/ash_components_strings_es.xtb b/ash/components/strings/ash_components_strings_es.xtb index 393e77a..a9c0d57 100644 --- a/ash/components/strings/ash_components_strings_es.xtb +++ b/ash/components/strings/ash_components_strings_es.xtb
@@ -2,7 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="es"> <translation id="104962181688258143">Abrir la aplicación Archivos</translation> -<translation id="1122869341872663659">Mostrar los <ph name="N" /> resultados de búsqueda de <ph name="QUERY" /></translation> +<translation id="1122869341872663659">Mostrando <ph name="N" /> resultados de búsqueda de <ph name="QUERY" /></translation> <translation id="1134347825771908369">Silenciar volumen</translation> <translation id="1195667586424773550">Arrastra el enlace a la barra de direcciones de la pestaña</translation> <translation id="1204450209689312104">Abrir una ventana nueva en modo incógnito</translation>
diff --git a/ash/components/strings/ash_components_strings_gu.xtb b/ash/components/strings/ash_components_strings_gu.xtb index 803d8ee6..d4e58bb9 100644 --- a/ash/components/strings/ash_components_strings_gu.xtb +++ b/ash/components/strings/ash_components_strings_gu.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="gu"> <translation id="104962181688258143">Files ઍપ ખોલો</translation> +<translation id="1122869341872663659"><ph name="QUERY" /> માટે <ph name="N" /> શોધ પરિણામો ડિસ્પ્લે કરી રહ્યાં છીએ</translation> <translation id="1134347825771908369">વૉલ્યૂમ મ્યૂટ કરો</translation> <translation id="1195667586424773550">ટૅબના ઍડ્રેસ બારમાં લિંકને ખેંચો</translation> <translation id="1204450209689312104">છૂપા મોડમાં એક નવી વિંડો ખોલો</translation> @@ -158,6 +159,7 @@ <translation id="9052808072970550123">આગલા વપરાશકર્તા પર સ્વિચ કરો</translation> <translation id="906458777597946297">વિંડો મોટી કરો</translation> <translation id="9106898733795143799">પેજ અને વેબ બ્રાઉઝર</translation> +<translation id="9162942292291287644"><ph name="QUERY" /> માટે કોઈ શોધ પરિણામ નથી</translation> <translation id="9179672198516322668">લોકપ્રિય શૉર્ટકટ</translation> <translation id="93603345341560814"><ph name="SHIFT" />ને દબાવો અને લિંકને ક્લિક કરો</translation> <translation id="945383118875625837">લિંકને બુકમાર્ક બાર પર ખેંચો</translation>
diff --git a/ash/components/strings/ash_components_strings_nl.xtb b/ash/components/strings/ash_components_strings_nl.xtb index 370a87a..2c96dd4e 100644 --- a/ash/components/strings/ash_components_strings_nl.xtb +++ b/ash/components/strings/ash_components_strings_nl.xtb
@@ -2,7 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="nl"> <translation id="104962181688258143">De app Bestanden openen</translation> -<translation id="1122869341872663659">Weergave van <ph name="N" /> zoekresultaten voor <ph name="QUERY" /></translation> +<translation id="1122869341872663659">Er worden <ph name="N" /> zoekresultaten voor <ph name="QUERY" /> getoond</translation> <translation id="1134347825771908369">Volume dempen</translation> <translation id="1195667586424773550">Sleep de link naar de adresbalk van het tabblad</translation> <translation id="1204450209689312104">Een nieuw venster openen in de incognitomodus</translation>
diff --git a/ash/components/strings/ash_components_strings_no.xtb b/ash/components/strings/ash_components_strings_no.xtb index 1e12325..022e03b7 100644 --- a/ash/components/strings/ash_components_strings_no.xtb +++ b/ash/components/strings/ash_components_strings_no.xtb
@@ -2,6 +2,7 @@ <!DOCTYPE translationbundle> <translationbundle lang="no"> <translation id="104962181688258143">Åpne Filer-appen</translation> +<translation id="1122869341872663659">Viser <ph name="N" /> søkeresultater for <ph name="QUERY" /></translation> <translation id="1134347825771908369">Kutt lyden</translation> <translation id="1195667586424773550">Dra linken til adressefeltet i fanen</translation> <translation id="1204450209689312104">Åpne et nytt vindu i inkognitomodus</translation> @@ -158,6 +159,7 @@ <translation id="9052808072970550123">Bytt til den neste brukeren</translation> <translation id="906458777597946297">Maksimerer vinduet</translation> <translation id="9106898733795143799">Side og nettleser</translation> +<translation id="9162942292291287644">Ingen søkeresultater for <ph name="QUERY" /></translation> <translation id="9179672198516322668">Populære hurtigtaster</translation> <translation id="93603345341560814">Trykk på <ph name="SHIFT" /> og klikk på en link</translation> <translation id="945383118875625837">Dra linken til bokmerkeraden</translation>
diff --git a/ash/display/display_util.cc b/ash/display/display_util.cc index 97bb803..f391b4721 100644 --- a/ash/display/display_util.cc +++ b/ash/display/display_util.cc
@@ -41,27 +41,6 @@ const char kDisplayErrorNotificationId[] = "chrome://settings/display/error"; const char kNotifierDisplayError[] = "ash.display.error"; -// A notification delegate that will start the feedback app when the notication -// is clicked. -class DisplayErrorNotificationDelegate - : public message_center::NotificationDelegate { - public: - DisplayErrorNotificationDelegate() = default; - - // message_center::NotificationDelegate: - void ButtonClick(int index) override { - DCHECK_EQ(0, index); - Shell::Get()->new_window_controller()->OpenFeedbackPage(); - } - - private: - // Private destructor since NotificationDelegate is ref-counted. - ~DisplayErrorNotificationDelegate() override = default; - - DISALLOW_COPY_AND_ASSIGN(DisplayErrorNotificationDelegate); -}; - - void ConvertPointFromScreenToNative(aura::WindowTreeHost* host, gfx::Point* point) { ::wm::ConvertPointFromScreen(host->window(), point); @@ -182,7 +161,12 @@ message_center::NotifierId( message_center::NotifierId::SYSTEM_COMPONENT, kNotifierDisplayError), - data, new DisplayErrorNotificationDelegate, + data, + base::MakeRefCounted<message_center::HandleNotificationClickDelegate>( + base::BindRepeating([](base::Optional<int> button_index) { + if (button_index) + Shell::Get()->new_window_controller()->OpenFeedbackPage(); + })), kNotificationMonitorWarningIcon, message_center::SystemNotificationWarningLevel::WARNING); notification->set_priority(message_center::SYSTEM_PRIORITY);
diff --git a/ash/display/resolution_notification_controller.cc b/ash/display/resolution_notification_controller.cc index 0bc4d576..62df5135 100644 --- a/ash/display/resolution_notification_controller.cc +++ b/ash/display/resolution_notification_controller.cc
@@ -167,14 +167,12 @@ AcceptResolutionChange(false); } -void ResolutionNotificationController::Click() { - AcceptResolutionChange(true); -} - -void ResolutionNotificationController::ButtonClick(int button_index) { +void ResolutionNotificationController::Click( + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { // If there's the timeout, the first button is "Accept". Otherwise the - // button click should be "Revert". - if (DoesNotificationTimeout() && button_index == 0) + // button click should be "Revert". Clicking on the body should accept. + if (!button_index || (DoesNotificationTimeout() && *button_index == 0)) AcceptResolutionChange(true); else RevertResolutionChange(false /* display_was_removed */);
diff --git a/ash/display/resolution_notification_controller.h b/ash/display/resolution_notification_controller.h index 4858f59..3ca37d7e 100644 --- a/ash/display/resolution_notification_controller.h +++ b/ash/display/resolution_notification_controller.h
@@ -69,8 +69,8 @@ // message_center::NotificationObserver void Close(bool by_user) override; - void Click() override; - void ButtonClick(int button_index) override; + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; private: friend class ResolutionNotificationControllerTest;
diff --git a/ash/message_center/message_center_controller.cc b/ash/message_center/message_center_controller.cc index a86f436..3fc2fed 100644 --- a/ash/message_center/message_center_controller.cc +++ b/ash/message_center/message_center_controller.cc
@@ -51,19 +51,14 @@ client_->HandleNotificationClosed(notification_id_, by_user); } - void Click() override { - client_->HandleNotificationClicked(notification_id_); - } - - void ButtonClick(int button_index) override { - client_->HandleNotificationButtonClicked(notification_id_, button_index, - base::nullopt); - } - - void ButtonClickWithReply(int button_index, - const base::string16& reply) override { - client_->HandleNotificationButtonClicked(notification_id_, button_index, - reply); + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override { + if (button_index) { + client_->HandleNotificationButtonClicked(notification_id_, *button_index, + reply); + } else { + client_->HandleNotificationClicked(notification_id_); + } } void SettingsClick() override {
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb index 36e48dd..903ea6f 100644 --- a/ash/strings/ash_strings_gu.xtb +++ b/ash/strings/ash_strings_gu.xtb
@@ -249,6 +249,7 @@ <translation id="6650933572246256093">Bluetooth ઉપકરણ "<ph name="DEVICE_NAME" />" ને જોડી બનાવવા માટે પરવાનગી જોઈએ છે. કૃપા કરીને તે ઉપકરણ પર આ પાસકીને દાખલ કરો: <ph name="PASSKEY" /></translation> <translation id="6657585470893396449">પાસવર્ડ</translation> <translation id="6691659475504239918">Search+Shift+H</translation> +<translation id="6696025732084565524">અલગ પાડી શકાય તેવા તમારા કીબોર્ડ માટે મહત્ત્વપૂર્ણ અપડેટ જરૂરી છે</translation> <translation id="6700713906295497288">IME મેનૂ બટન</translation> <translation id="6713285437468012787">Bluetooth ઉપકરણ "<ph name="DEVICE_NAME" />" ની જોડી બનાવવામાં આવી અને હવે તે બધા વપરાશકર્તાઓને ઉપલબ્ધ છે. તમે સેટિંગ્સનો ઉપયોગ કરીને આ જોડીને દૂર કરી શકો છો.</translation> <translation id="6715542151869432661">કોઈ મોબાઇલ ઉપકરણો મળ્યાં નથી.</translation>
diff --git a/ash/strings/ash_strings_hr.xtb b/ash/strings/ash_strings_hr.xtb index 56034ab..4f7153ea 100644 --- a/ash/strings/ash_strings_hr.xtb +++ b/ash/strings/ash_strings_hr.xtb
@@ -249,7 +249,7 @@ <translation id="6650933572246256093">Bluetooth uređaj "<ph name="DEVICE_NAME" />" traži dopuštenje za uparivanje. Unesite ovaj pristupni ključ na tom uređaju: <ph name="PASSKEY" /></translation> <translation id="6657585470893396449">Zaporka</translation> <translation id="6691659475504239918">Search + Shift + H</translation> -<translation id="6696025732084565524">Potrebno je kritično ažuriranje za vašu odvojivu tipkovnicu</translation> +<translation id="6696025732084565524">Potrebno je preuzeti važno ažuriranje za vašu odvojivu tipkovnicu</translation> <translation id="6700713906295497288">Gumb izbornika IME-a</translation> <translation id="6713285437468012787">Bluetooth uređaj "<ph name="DEVICE_NAME" />" sada je uparen i dostupan svim korisnicima. To uparivanje možete ukloniti u Postavkama.</translation> <translation id="6715542151869432661">Nije pronađen nijedan mobilni uređaj.</translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb index a56cb6690..bfa370d1 100644 --- a/ash/strings/ash_strings_no.xtb +++ b/ash/strings/ash_strings_no.xtb
@@ -249,6 +249,7 @@ <translation id="6650933572246256093">Bluetooth-enheten «<ph name="DEVICE_NAME" />» ber om tillatelse til å koble til. Skriv inn denne tilgangskoden på den aktuelle enheten: <ph name="PASSKEY" /></translation> <translation id="6657585470893396449">Passord</translation> <translation id="6691659475504239918">Søk + Shift + H</translation> +<translation id="6696025732084565524">Det avtakbare tastaturet trenger en kritisk oppdatering</translation> <translation id="6700713906295497288">IME-menyknappen</translation> <translation id="6713285437468012787">Nå er Bluetooth-enheten «<ph name="DEVICE_NAME" />» koblet til og tilgjengelig for alle brukere. Du kan oppheve denne tilkoblingen via Innstillinger.</translation> <translation id="6715542151869432661">Fant ingen mobilenheter.</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb index 7fe3847..c654129 100644 --- a/ash/strings/ash_strings_sk.xtb +++ b/ash/strings/ash_strings_sk.xtb
@@ -249,7 +249,7 @@ <translation id="6650933572246256093">Zariadenie Bluetooth s názvom <ph name="DEVICE_NAME" /> žiada o povolenie párovania. Zadajte na danom zariadení tento prístupový kľúč: <ph name="PASSKEY" /></translation> <translation id="6657585470893396449">Heslo</translation> <translation id="6691659475504239918">Hľadať+Shift+H</translation> -<translation id="6696025732084565524">Odoberateľná klávesnica potrebuje závažnú aktualizáciu</translation> +<translation id="6696025732084565524">Odoberateľná klávesnica potrebuje kritickú aktualizáciu</translation> <translation id="6700713906295497288">Tlačidlo ponuky IME</translation> <translation id="6713285437468012787">Zariadenie Bluetooth s názvom <ph name="DEVICE_NAME" /> bolo spárované a je k dispozícii pre všetkých používateľov. Párovanie môžete zrušiť pomocou ponuky Nastavenia.</translation> <translation id="6715542151869432661">Neboli nájdené žiadne mobilné zariadenia.</translation>
diff --git a/ash/system/bluetooth/bluetooth_notification_controller.cc b/ash/system/bluetooth/bluetooth_notification_controller.cc index 1cd76ede..58e6b82 100644 --- a/ash/system/bluetooth/bluetooth_notification_controller.cc +++ b/ash/system/bluetooth/bluetooth_notification_controller.cc
@@ -63,7 +63,8 @@ // message_center::NotificationDelegate overrides. void Close(bool by_user) override; - void ButtonClick(int button_index) override; + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; private: // Buttons that appear in notifications. @@ -100,13 +101,18 @@ device->CancelPairing(); } -void BluetoothPairingNotificationDelegate::ButtonClick(int button_index) { - VLOG(1) << "Pairing notification, button click: " << button_index; +void BluetoothPairingNotificationDelegate::Click( + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { + if (!button_index) + return; + + VLOG(1) << "Pairing notification, button click: " << *button_index; // If the device object still exists, send the appropriate response either // confirming or rejecting the pairing. BluetoothDevice* device = adapter_->GetDevice(address_); if (device) { - switch (button_index) { + switch (*button_index) { case BUTTON_ACCEPT: device->ConfirmPairing(); break;
diff --git a/ash/system/locale/locale_notification_controller.cc b/ash/system/locale/locale_notification_controller.cc index c77a33c..bb84369c 100644 --- a/ash/system/locale/locale_notification_controller.cc +++ b/ash/system/locale/locale_notification_controller.cc
@@ -36,8 +36,8 @@ // message_center::NotificationDelegate overrides: void Close(bool by_user) override; - void Click() override; - void ButtonClick(int button_index) override; + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; private: base::OnceCallback<void(ash::mojom::LocaleNotificationResult)> callback_; @@ -63,18 +63,15 @@ } } -void LocaleNotificationDelegate::Click() { - if (callback_) { - std::move(callback_).Run(ash::mojom::LocaleNotificationResult::ACCEPT); - } -} +void LocaleNotificationDelegate::Click( + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { + if (!callback_) + return; -void LocaleNotificationDelegate::ButtonClick(int button_index) { - DCHECK_EQ(0, button_index); - - if (callback_) { - std::move(callback_).Run(ash::mojom::LocaleNotificationResult::REVERT); - } + std::move(callback_).Run(button_index + ? ash::mojom::LocaleNotificationResult::REVERT + : ash::mojom::LocaleNotificationResult::ACCEPT); } } // namespace
diff --git a/ash/system/power/dual_role_notification.cc b/ash/system/power/dual_role_notification.cc index 7aa41f9..9f6b204 100644 --- a/ash/system/power/dual_role_notification.cc +++ b/ash/system/power/dual_role_notification.cc
@@ -29,23 +29,6 @@ const char kDualRoleNotificationId[] = "dual-role"; const char kNotifierDualRole[] = "ash.dual-role"; -// Opens power settings on click. -class DualRoleNotificationDelegate - : public message_center::NotificationDelegate { - public: - DualRoleNotificationDelegate() = default; - - // Overridden from message_center::NotificationDelegate. - void Click() override { - Shell::Get()->system_tray_controller()->ShowPowerSettings(); - } - - private: - ~DualRoleNotificationDelegate() override = default; - - DISALLOW_COPY_AND_ASSIGN(DualRoleNotificationDelegate); -}; - } // namespace DualRoleNotification::DualRoleNotification(MessageCenter* message_center) @@ -140,6 +123,12 @@ IDS_ASH_STATUS_TRAY_CHARGING_DUAL_ROLE_DEVICES_TITLE); } + auto delegate = + base::MakeRefCounted<message_center::HandleNotificationClickDelegate>( + base::BindRepeating([]() { + Shell::Get()->system_tray_controller()->ShowPowerSettings(); + })); + std::unique_ptr<Notification> notification = Notification::CreateSystemNotification( message_center::NOTIFICATION_TYPE_SIMPLE, kDualRoleNotificationId, @@ -148,8 +137,8 @@ gfx::Image(), base::string16(), GURL(), message_center::NotifierId( message_center::NotifierId::SYSTEM_COMPONENT, kNotifierDualRole), - message_center::RichNotificationData(), - new DualRoleNotificationDelegate, kNotificationChargingUsbCIcon, + message_center::RichNotificationData(), std::move(delegate), + kNotificationChargingUsbCIcon, message_center::SystemNotificationWarningLevel::NORMAL); notification->set_priority(message_center::MIN_PRIORITY); return notification;
diff --git a/ash/system/screen_layout_observer_unittest.cc b/ash/system/screen_layout_observer_unittest.cc index f64a1cb..126a4f0 100644 --- a/ash/system/screen_layout_observer_unittest.cc +++ b/ash/system/screen_layout_observer_unittest.cc
@@ -85,7 +85,7 @@ void ScreenLayoutObserverTest::ClickNotification() { const message_center::Notification* notification = GetDisplayNotification(); - notification->Click(); + notification->delegate()->Click(base::nullopt, base::nullopt); } base::string16 ScreenLayoutObserverTest::GetDisplayNotificationText() const {
diff --git a/ash/system/screen_security/screen_security_notification_controller.cc b/ash/system/screen_security/screen_security_notification_controller.cc index 0159704a..558170a5 100644 --- a/ash/system/screen_security/screen_security_notification_controller.cc +++ b/ash/system/screen_security/screen_security_notification_controller.cc
@@ -12,6 +12,7 @@ #include "ui/base/l10n/l10n_util.h" #include "ui/message_center/message_center.h" #include "ui/message_center/public/cpp/notification.h" +#include "ui/message_center/public/cpp/notification_delegate.h" using message_center::MessageCenter; using message_center::Notification; @@ -27,44 +28,6 @@ namespace { -class ScreenSecurityNotificationDelegate - : public message_center::NotificationDelegate { - public: - ScreenSecurityNotificationDelegate(base::OnceClosure stop_callback, - bool is_capture); - - // message_center::NotificationDelegate overrides: - void ButtonClick(int button_index) override; - - protected: - ~ScreenSecurityNotificationDelegate() override; - - private: - base::OnceClosure stop_callback_; - const bool is_capture_; - - DISALLOW_COPY_AND_ASSIGN(ScreenSecurityNotificationDelegate); -}; - -ScreenSecurityNotificationDelegate::ScreenSecurityNotificationDelegate( - base::OnceClosure stop_callback, - bool is_capture) - : stop_callback_(std::move(stop_callback)), is_capture_(is_capture) {} - -ScreenSecurityNotificationDelegate::~ScreenSecurityNotificationDelegate() = - default; - -void ScreenSecurityNotificationDelegate::ButtonClick(int button_index) { - DCHECK_EQ(0, button_index); - if (stop_callback_.is_null()) - return; - std::move(stop_callback_).Run(); - if (is_capture_) { - Shell::Get()->metrics()->RecordUserMetricsAction( - UMA_STATUS_AREA_SCREEN_CAPTURE_NOTIFICATION_STOP); - } -} - void CreateNotification(base::OnceClosure stop_callback, const base::string16& message, bool is_capture) { @@ -72,6 +35,25 @@ data.buttons.push_back(message_center::ButtonInfo(l10n_util::GetStringUTF16( is_capture ? IDS_ASH_STATUS_TRAY_SCREEN_CAPTURE_STOP : IDS_ASH_STATUS_TRAY_SCREEN_SHARE_STOP))); + + auto delegate = + base::MakeRefCounted<message_center::HandleNotificationClickDelegate>( + base::BindRepeating( + [](base::OnceClosure stop_callback, bool is_capture, + base::Optional<int> button_index) { + if (!button_index || stop_callback.is_null()) + return; + + DCHECK_EQ(0, *button_index); + + std::move(stop_callback).Run(); + if (is_capture) { + Shell::Get()->metrics()->RecordUserMetricsAction( + UMA_STATUS_AREA_SCREEN_CAPTURE_NOTIFICATION_STOP); + } + }, + base::Passed(&stop_callback), is_capture)); + std::unique_ptr<Notification> notification = Notification::CreateSystemNotification( message_center::NOTIFICATION_TYPE_SIMPLE, @@ -82,10 +64,7 @@ message_center::NotifierId( message_center::NotifierId::SYSTEM_COMPONENT, is_capture ? kNotifierScreenCapture : kNotifierScreenShare), - data, - new ScreenSecurityNotificationDelegate(std::move(stop_callback), - is_capture), - kNotificationScreenshareIcon, + data, std::move(delegate), kNotificationScreenshareIcon, message_center::SystemNotificationWarningLevel::NORMAL); notification->SetSystemPriority(); if (features::IsSystemTrayUnifiedEnabled())
diff --git a/base/android/build_info.cc b/base/android/build_info.cc index 6de8a75..151c045 100644 --- a/base/android/build_info.cc +++ b/base/android/build_info.cc
@@ -73,7 +73,9 @@ installer_package_name_(StrDupParam(params, 16)), abi_name_(StrDupParam(params, 17)), firebase_app_id_(StrDupParam(params, 18)), - extracted_file_suffix_(params[19]), + custom_themes_(StrDupParam(params, 19)), + resources_version_(StrDupParam(params, 20)), + extracted_file_suffix_(params[21]), java_exception_info_(NULL) {} // static
diff --git a/base/android/build_info.h b/base/android/build_info.h index 07b0cfd68..1d8f510 100644 --- a/base/android/build_info.h +++ b/base/android/build_info.h
@@ -103,6 +103,10 @@ // Will be empty string if no app id is assigned. const char* firebase_app_id() const { return firebase_app_id_; } + const char* custom_themes() const { return custom_themes_; } + + const char* resources_version() const { return resources_version_; } + const char* build_type() const { return build_type_; } @@ -155,6 +159,8 @@ const char* const installer_package_name_; const char* const abi_name_; const char* const firebase_app_id_; + const char* const custom_themes_; + const char* const resources_version_; // Not needed by breakpad. const std::string extracted_file_suffix_; // This is set via set_java_exception_info, not at constructor time.
diff --git a/base/android/java/src/org/chromium/base/BuildInfo.java b/base/android/java/src/org/chromium/base/BuildInfo.java index d1ce0da6..cfe96d8 100644 --- a/base/android/java/src/org/chromium/base/BuildInfo.java +++ b/base/android/java/src/org/chromium/base/BuildInfo.java
@@ -45,6 +45,10 @@ public final String androidBuildFingerprint; /** A string that is different each time the apk changes. */ public final String extractedFileSuffix; + /** Whether or not the device has apps installed for using custom themes. */ + public final String customThemes; + /** Product version as stored in Android resources. */ + public final String resourcesVersion; private static class Holder { private static BuildInfo sInstance = new BuildInfo(); } @@ -59,7 +63,7 @@ buildInfo.packageName, String.valueOf(buildInfo.versionCode), buildInfo.versionName, buildInfo.androidBuildFingerprint, buildInfo.gmsVersionCode, buildInfo.installerPackageName, buildInfo.abiString, BuildConfig.FIREBASE_APP_ID, - buildInfo.extractedFileSuffix, + buildInfo.customThemes, buildInfo.resourcesVersion, buildInfo.extractedFileSuffix, }; } @@ -110,6 +114,34 @@ gmsVersionCode = gmsPackageInfo != null ? String.valueOf(gmsPackageInfo.versionCode) : "gms versionCode not available."; + String hasCustomThemes = "true"; + try { + // Substratum is a theme engine that enables users to use custom themes provided + // by theme apps. Sometimes these can cause crashs if not installed correctly. + // These crashes can be difficult to debug, so knowing if the theme manager is + // present on the device is useful (http://crbug.com/820591). + pm.getPackageInfo("projekt.substratum", 0); + } catch (NameNotFoundException e) { + hasCustomThemes = "false"; + } + customThemes = hasCustomThemes; + + String currentResourcesVersion = "Not Enabled"; + // Controlled by target specific build flags. + if (BuildConfig.R_STRING_PRODUCT_VERSION != 0) { + try { + // This value can be compared with the actual product version to determine if + // corrupted resources were the cause of a crash. This can happen if the app + // loads resources from the outdated package during an update + // (http://crbug.com/820591). + currentResourcesVersion = ContextUtils.getApplicationContext().getString( + BuildConfig.R_STRING_PRODUCT_VERSION); + } catch (Exception e) { + currentResourcesVersion = "Not found"; + } + } + resourcesVersion = currentResourcesVersion; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { abiString = TextUtils.join(", ", Build.SUPPORTED_ABIS); } else {
diff --git a/base/android/java/templates/BuildConfig.template b/base/android/java/templates/BuildConfig.template index 2b4d1a6f..1006d12e 100644 --- a/base/android/java/templates/BuildConfig.template +++ b/base/android/java/templates/BuildConfig.template
@@ -57,4 +57,14 @@ #else public static MAYBE_FINAL String[] UNCOMPRESSED_LOCALES = {}; #endif + + // The ID of the android string resource that stores the product version. + // This layer of indirection is necessary to make the resource dependency + // optional for android_apk targets/base_java (ex. for cronet). +#if defined(_RESOURCES_VERSION_VARIABLE) + public static MAYBE_FINAL int R_STRING_PRODUCT_VERSION = _RESOURCES_VERSION_VARIABLE; +#else + // Default value, do not use. + public static MAYBE_FINAL int R_STRING_PRODUCT_VERSION = 0; +#endif }
diff --git a/base/message_loop/message_loop_unittest.cc b/base/message_loop/message_loop_unittest.cc index 1aa4012..3932980 100644 --- a/base/message_loop/message_loop_unittest.cc +++ b/base/message_loop/message_loop_unittest.cc
@@ -1257,10 +1257,7 @@ void FuncThatPumps(TaskList* order, int cookie) { order->RecordStart(PUMPS, cookie); - { - MessageLoop::ScopedNestableTaskAllower allow(MessageLoop::current()); - RunLoop().RunUntilIdle(); - } + RunLoop(RunLoop::Type::kNestableTasksAllowed).RunUntilIdle(); order->RecordEnd(PUMPS, cookie); }
diff --git a/base/threading/thread_local_storage_unittest.cc b/base/threading/thread_local_storage_unittest.cc index 0b9e32b..9062ff0 100644 --- a/base/threading/thread_local_storage_unittest.cc +++ b/base/threading/thread_local_storage_unittest.cc
@@ -23,7 +23,7 @@ namespace base { -#if defined(OS_POSIX) && !defined(OS_FUCHSIA) +#if defined(OS_POSIX) namespace internal { @@ -37,7 +37,7 @@ } // namespace internal -#endif // defined(OS_POSIX) && !defined(OS_FUCHSIA) +#endif // defined(OS_POSIX) namespace { @@ -96,20 +96,21 @@ TLSSlot().Set(value); } -#if defined(OS_POSIX) && !defined(OS_FUCHSIA) +#if defined(OS_POSIX) constexpr intptr_t kDummyValue = 0xABCD; constexpr size_t kKeyCount = 20; -// The order in which pthread keys are destructed is non-deterministic. -// Hopefully, of the 20 keys we create, some of them should be destroyed -class UseTLSDuringDestructionThread : public SimpleThread { +// The order in which pthread keys are destructed is not specified by the POSIX +// specification. Hopefully, of the 20 keys we create, some of them should be +// destroyed after the TLS key is destroyed. +class UseTLSDuringDestructionRunner { public: - UseTLSDuringDestructionThread() : SimpleThread("prefix") {} + UseTLSDuringDestructionRunner() = default; // The order in which pthread_key destructors are called is not well defined. // Hopefully, by creating 10 both before and after initializing TLS on the // thread, at least 1 will be called after TLS destruction. - void Run() override { + void Run() { ASSERT_FALSE(internal::ThreadLocalStorageTestInternal::HasBeenDestroyed()); // Create 10 pthread keys before initializing TLS on the thread. @@ -169,7 +170,7 @@ tls_states_[index].teardown_works_correctly = &teardown_works_correctly_; int result = pthread_key_create( &(tls_states_[index].key), - UseTLSDuringDestructionThread::ThreadLocalDestructor); + UseTLSDuringDestructionRunner::ThreadLocalDestructor); ASSERT_EQ(result, 0); result = pthread_setspecific(tls_states_[index].key, &tls_states_[index]); @@ -180,12 +181,19 @@ bool teardown_works_correctly_ = false; TLSState tls_states_[kKeyCount]; - DISALLOW_COPY_AND_ASSIGN(UseTLSDuringDestructionThread); + DISALLOW_COPY_AND_ASSIGN(UseTLSDuringDestructionRunner); }; -base::ThreadLocalStorage::Slot UseTLSDuringDestructionThread::slot_; +base::ThreadLocalStorage::Slot UseTLSDuringDestructionRunner::slot_; -#endif // defined(OS_POSIX) && !defined(OS_FUCHSIA) +void* UseTLSTestThreadRun(void* input) { + UseTLSDuringDestructionRunner* runner = + static_cast<UseTLSDuringDestructionRunner*>(input); + runner->Run(); + return nullptr; +} + +#endif // defined(OS_POSIX) } // namespace @@ -249,17 +257,22 @@ } } -#if defined(OS_POSIX) && !defined(OS_FUCHSIA) +#if defined(OS_POSIX) // Unlike POSIX, Windows does not iterate through the OS TLS to cleanup any // values there. Instead a per-module thread destruction function is called. // However, it is not possible to perform a check after this point (as the code // is detached from the thread), so this check remains POSIX only. TEST(ThreadLocalStorageTest, UseTLSDuringDestruction) { - UseTLSDuringDestructionThread thread; - thread.Start(); - thread.Join(); - EXPECT_TRUE(thread.teardown_works_correctly()); + UseTLSDuringDestructionRunner runner; + pthread_t thread; + int result = pthread_create(&thread, nullptr, UseTLSTestThreadRun, &runner); + ASSERT_EQ(result, 0); + + result = pthread_join(thread, nullptr); + ASSERT_EQ(result, 0); + + EXPECT_TRUE(runner.teardown_works_correctly()); } -#endif // defined(OS_POSIX) && !defined(OS_FUCHSIA) +#endif // defined(OS_POSIX) } // namespace base
diff --git a/build/android/PRESUBMIT.py b/build/android/PRESUBMIT.py index dcd53468..253d807 100644 --- a/build/android/PRESUBMIT.py +++ b/build/android/PRESUBMIT.py
@@ -58,6 +58,7 @@ output_api, unit_tests=[ J('.', 'emma_coverage_stats_test.py'), + J('gyp', 'util', 'build_utils_test.py'), J('gyp', 'util', 'md5_check_test.py'), J('play_services', 'update_test.py'), J('pylib', 'gtest', 'gtest_test_instance_test.py'),
diff --git a/build/android/gyp/util/build_utils.py b/build/android/gyp/util/build_utils.py index dec818ee..17442ba1 100644 --- a/build/android/gyp/util/build_utils.py +++ b/build/android/gyp/util/build_utils.py
@@ -3,6 +3,7 @@ # found in the LICENSE file. import ast +import collections import contextlib import fnmatch import json @@ -395,37 +396,28 @@ def GetSortedTransitiveDependencies(top, deps_func): """Gets the list of all transitive dependencies in sorted order. - There should be no cycles in the dependency graph. + There should be no cycles in the dependency graph (crashes if cycles exist). Args: - top: a list of the top level nodes - deps_func: A function that takes a node and returns its direct dependencies. + top: A list of the top level nodes + deps_func: A function that takes a node and returns a list of its direct + dependencies. Returns: A list of all transitive dependencies of nodes in top, in order (a node will appear in the list at a higher index than all of its dependencies). """ - def Node(dep): - return (dep, deps_func(dep)) + # Find all deps depth-first, maintaining original order in the case of ties. + deps_map = collections.OrderedDict() + def discover(nodes): + for node in nodes: + if node in deps_map: + continue + deps = deps_func(node) + discover(deps) + deps_map[node] = deps - # First: find all deps - unchecked_deps = list(top) - all_deps = set(top) - while unchecked_deps: - dep = unchecked_deps.pop() - new_deps = deps_func(dep).difference(all_deps) - unchecked_deps.extend(new_deps) - all_deps = all_deps.union(new_deps) - - # Then: simple, slow topological sort. - sorted_deps = [] - unsorted_deps = dict(map(Node, all_deps)) - while unsorted_deps: - for library, dependencies in unsorted_deps.items(): - if not dependencies.intersection(unsorted_deps.keys()): - sorted_deps.append(library) - del unsorted_deps[library] - - return sorted_deps + discover(top) + return deps_map.keys() def GetPythonDependencies():
diff --git a/build/android/gyp/util/build_utils_test.py b/build/android/gyp/util/build_utils_test.py new file mode 100755 index 0000000..bcc892f --- /dev/null +++ b/build/android/gyp/util/build_utils_test.py
@@ -0,0 +1,44 @@ +#!/usr/bin/env python +# Copyright 2018 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. + +import collections +import unittest + +import build_utils # pylint: disable=W0403 + +_DEPS = collections.OrderedDict() +_DEPS['a'] = [] +_DEPS['b'] = [] +_DEPS['c'] = ['a'] +_DEPS['d'] = ['a'] +_DEPS['e'] = ['f'] +_DEPS['f'] = ['a', 'd'] +_DEPS['g'] = [] +_DEPS['h'] = ['d', 'b', 'f'] +_DEPS['i'] = ['f'] + + +class BuildUtilsTest(unittest.TestCase): + def testGetSortedTransitiveDependencies_all(self): + TOP = _DEPS.keys() + EXPECTED = ['a', 'b', 'c', 'd', 'f', 'e', 'g', 'h', 'i'] + actual = build_utils.GetSortedTransitiveDependencies(TOP, _DEPS.get) + self.assertEqual(EXPECTED, actual) + + def testGetSortedTransitiveDependencies_leaves(self): + TOP = ['c', 'e', 'g', 'h', 'i'] + EXPECTED = ['a', 'c', 'd', 'f', 'e', 'g', 'b', 'h', 'i'] + actual = build_utils.GetSortedTransitiveDependencies(TOP, _DEPS.get) + self.assertEqual(EXPECTED, actual) + + def testGetSortedTransitiveDependencies_leavesReverse(self): + TOP = ['i', 'h', 'g', 'e', 'c'] + EXPECTED = ['a', 'd', 'f', 'i', 'b', 'h', 'g', 'e', 'c'] + actual = build_utils.GetSortedTransitiveDependencies(TOP, _DEPS.get) + self.assertEqual(EXPECTED, actual) + + +if __name__ == '__main__': + unittest.main()
diff --git a/build/android/gyp/write_build_config.py b/build/android/gyp/write_build_config.py index 329c4f2..d6938582 100755 --- a/build/android/gyp/write_build_config.py +++ b/build/android/gyp/write_build_config.py
@@ -562,7 +562,7 @@ def GetAllDepsConfigsInOrder(deps_config_paths): def GetDeps(path): - return set(GetDepConfig(path)['deps_configs']) + return GetDepConfig(path)['deps_configs'] return build_utils.GetSortedTransitiveDependencies(deps_config_paths, GetDeps)
diff --git a/build/android/gyp/write_ordered_libraries.py b/build/android/gyp/write_ordered_libraries.py index e5a23bf..70186c3f 100755 --- a/build/android/gyp/write_ordered_libraries.py +++ b/build/android/gyp/write_ordered_libraries.py
@@ -48,11 +48,11 @@ def GetDependencies(library_or_executable): elf = CallReadElf(library_or_executable) - deps = set() + deps = [] for l in _library_re.findall(elf): p = _library_path_map.get(l) if p is not None: - deps.add(p) + deps.append(p) return deps
diff --git a/build/android/lint/suppressions.xml b/build/android/lint/suppressions.xml index 62216d2..5098c5b 100644 --- a/build/android/lint/suppressions.xml +++ b/build/android/lint/suppressions.xml
@@ -267,9 +267,6 @@ <issue id="RtlCompat" severity="ignore"/> <issue id="RtlEnabled" severity="ignore"/> <issue id="RtlSymmetry" severity="ignore"/> - <issue id="SdCardPath"> - <ignore regexp="content/public/android/java/src/org/chromium/content/browser/MediaResourceGetter.java"/> - </issue> <issue id="SetJavaScriptEnabled" severity="ignore"/> <issue id="SignatureOrSystemPermissions" severity="ignore"/> <issue id="SpUsage" severity="Error">
diff --git a/build/android/resource_sizes.py b/build/android/resource_sizes.py index d50edc0a..3d91808 100755 --- a/build/android/resource_sizes.py +++ b/build/android/resource_sizes.py
@@ -13,12 +13,10 @@ from contextlib import contextmanager import json import logging -import operator import os import re import struct import sys -import tempfile import zipfile import zlib @@ -32,17 +30,11 @@ from pylib.constants import host_paths _AAPT_PATH = lazy.WeakConstant(lambda: build_tools.GetPath('aapt')) -_GRIT_PATH = os.path.join(host_paths.DIR_SOURCE_ROOT, 'tools', 'grit') _BUILD_UTILS_PATH = os.path.join( host_paths.DIR_SOURCE_ROOT, 'build', 'android', 'gyp') _APK_PATCH_SIZE_ESTIMATOR_PATH = os.path.join( host_paths.DIR_SOURCE_ROOT, 'third_party', 'apk-patch-size-estimator') -# Prepend the grit module from the source tree so it takes precedence over other -# grit versions that might present in the search path. -with host_paths.SysPath(_GRIT_PATH, 0): - from grit.format import data_pack # pylint: disable=import-error - with host_paths.SysPath(host_paths.BUILD_COMMON_PATH): import perf_tests_results_helper # pylint: disable=import-error @@ -542,118 +534,6 @@ print 'Unknown entry:', info.filename, info.compress_size -def IsPakFileName(file_name): - """Returns whether the given file name ends with .pak or .lpak.""" - return file_name.endswith('.pak') or file_name.endswith('.lpak') - - -def PrintPakAnalysis(apk_filename, min_pak_resource_size, out_dir): - """Print sizes of all resources in all pak files in |apk_filename|.""" - print - print 'Analyzing pak files in %s...' % apk_filename - - # A structure for holding details about a pak file. - Pak = collections.namedtuple( - 'Pak', ['filename', 'compress_size', 'file_size', 'resources']) - - # Build a list of Pak objets for each pak file. - paks = [] - apk = zipfile.ZipFile(apk_filename, 'r') - try: - for i in (x for x in apk.infolist() if IsPakFileName(x.filename)): - with tempfile.NamedTemporaryFile() as f: - f.write(apk.read(i.filename)) - f.flush() - paks.append(Pak(i.filename, i.compress_size, i.file_size, - data_pack.ReadDataPack(f.name).resources)) - finally: - apk.close() - - # Output the overall pak file summary. - total_files = len(paks) - total_compress_size = sum(pak.compress_size for pak in paks) - total_file_size = sum(pak.file_size for pak in paks) - print 'Total pak files: %d' % total_files - print 'Total compressed size: %s' % _FormatBytes(total_compress_size) - print 'Total uncompressed size: %s' % _FormatBytes(total_file_size) - print - - if not paks: - return - - # Output the table of details about all pak files. - print '%25s%11s%21s%21s' % ( - 'FILENAME', 'RESOURCES', 'COMPRESSED SIZE', 'UNCOMPRESSED SIZE') - for pak in sorted(paks, key=operator.attrgetter('file_size'), reverse=True): - print '%25s %10s %12s %6.2f%% %12s %6.2f%%' % ( - pak.filename, - len(pak.resources), - _FormatBytes(pak.compress_size), - 100.0 * pak.compress_size / total_compress_size, - _FormatBytes(pak.file_size), - 100.0 * pak.file_size / total_file_size) - - print - print 'Analyzing pak resources in %s...' % apk_filename - - # Calculate aggregate stats about resources across pak files. - resource_count_map = collections.defaultdict(int) - resource_size_map = collections.defaultdict(int) - seen_data_ids = set() - alias_overhead_bytes = 4 - resource_overhead_bytes = 6 - for pak in paks: - for k, v in pak.resources.iteritems(): - resource_count_map[k] += 1 - if id(v) not in seen_data_ids: - seen_data_ids.add(id(v)) - resource_size_map[k] += resource_overhead_bytes + len(v) - else: - resource_size_map[k] += alias_overhead_bytes - # Output the overall resource summary. - total_resource_size = sum(resource_size_map.values()) - total_resource_count = len(resource_count_map) - assert total_resource_size <= total_file_size - print 'Total pak resources: %s' % total_resource_count - print 'Total uncompressed resource size: %s' % _FormatBytes( - total_resource_size) - print - - if not out_dir or not os.path.isdir(out_dir): - return - resource_id_name_map, resources_id_header_map = _AnnotatePakResources(out_dir) - - # Output the table of details about all resources across pak files. - print - print '%56s %5s %17s' % ('RESOURCE', 'COUNT', 'UNCOMPRESSED SIZE') - for i in sorted(resource_size_map, key=resource_size_map.get, - reverse=True): - if resource_size_map[i] < min_pak_resource_size: - break - - print '%56s %5s %9s %6.2f%%' % ( - resource_id_name_map.get(i, i), - resource_count_map[i], - _FormatBytes(resource_size_map[i]), - 100.0 * resource_size_map[i] / total_resource_size) - - # Print breakdown on a per-grd file basis. - size_by_header = collections.defaultdict(int) - for resid, size in resource_size_map.iteritems(): - size_by_header[resources_id_header_map.get(resid, 'unknown')] += size - - print - print '%80s %17s' % ('HEADER', 'UNCOMPRESSED SIZE') - for header in sorted(size_by_header, key=size_by_header.get, reverse=True): - if size_by_header[header] < min_pak_resource_size: - break - - print '%80s %9s %6.2f%%' % ( - header, - _FormatBytes(size_by_header[header]), - 100.0 * size_by_header[header] / total_resource_size) - - def _AnnotatePakResources(out_dir): """Returns a pair of maps: id_name_map, id_header_map.""" print 'Looking at resources in: %s' % out_dir @@ -721,17 +601,6 @@ so_with_symbols_path) -def _FormatBytes(byts): - """Pretty-print a number of bytes.""" - if byts > 2**20.0: - byts /= 2**20.0 - return '%.2fm' % byts - if byts > 2**10.0: - byts /= 2**10.0 - return '%.2fk' % byts - return str(byts) - - def _CalculateCompressedSize(file_path): CHUNK_SIZE = 256 * 1024 compressor = zlib.compressobj() @@ -869,7 +738,6 @@ if args.estimate_patch_size: _PrintPatchSizeEstimate(args.apk, args.reference_apk_builder, args.reference_apk_bucket, chartjson=chartjson) - PrintPakAnalysis(args.apk, args.min_pak_resource_size, out_dir) if chartjson: results_path = os.path.join(args.output_dir, 'results-chart.json') logging.critical('Dumping json to %s', results_path)
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni index 4ff5dea..c9c7d185 100644 --- a/build/config/android/rules.gni +++ b/build/config/android/rules.gni
@@ -1728,6 +1728,11 @@ if (defined(invoker.firebase_app_id)) { defines += [ "_FIREBASE_APP_ID=${invoker.firebase_app_id}" ] } + if (defined(invoker.resources_version_variable)) { + defines += [ + "_RESOURCES_VERSION_VARIABLE=${invoker.resources_version_variable}", + ] + } } } } @@ -2042,6 +2047,12 @@ "$_base_path.resources.main-dex-proguard.txt" } _generated_proguard_config = "$_base_path.resources.proguard.txt" + + if (_generate_buildconfig_java && + defined(invoker.product_version_resources_dep)) { + _deps += [ invoker.product_version_resources_dep ] + } + _compile_resources_target = "${_template_name}__compile_resources" compile_resources(_compile_resources_target) { forward_variables_from(invoker, @@ -2176,6 +2187,10 @@ use_final_fields = true build_config = _build_config enable_multidex = _enable_multidex + if (defined(invoker.product_version_resources_dep)) { + resources_version_variable = + "org.chromium.base.R.string.product_version" + } deps = [ ":$_build_config_target", ]
diff --git a/build/config/fuchsia/BUILD.gn b/build/config/fuchsia/BUILD.gn index ac57038..00bac7b718 100644 --- a/build/config/fuchsia/BUILD.gn +++ b/build/config/fuchsia/BUILD.gn
@@ -3,6 +3,7 @@ # found in the LICENSE file. import("//build/config/fuchsia/config.gni") +import("//build/config/fuchsia/rules.gni") import("//build/config/sysroot.gni") assert(is_fuchsia) @@ -61,3 +62,72 @@ libs = [ "zircon" ] } + +# Writes an extended version of fvm.blk to fvm.extended.blk. +blobstore_extended_path = "$root_out_dir/fvm.extended.blk" +action("blobstore_extended_fvm") { + # The file is grown by 500MB, which should be large enough to hold packaged + # binaries and assets. The value should be increased if the size becomes a + # limitation in the future. + _extend_size = "524288000" # 500MB = 500 * 1024 * 1024 + + script = "//build/config/fuchsia/extend_fvm.py" + + if (current_cpu == "arm64") { + _blobstore_src_path = "//third_party/fuchsia-sdk/sdk/target/aarch64/fvm.blk" + } else if (current_cpu == "x64") { + _blobstore_src_path = "//third_party/fuchsia-sdk/sdk/target/x86_64/fvm.blk" + } + inputs = [ + _blobstore_src_path, + ] + outputs = [ + blobstore_extended_path, + ] + + args = [ + rebase_path("${fuchsia_sdk}/tools/fvm"), + rebase_path(_blobstore_src_path), + rebase_path(blobstore_extended_path), + _extend_size, + ] +} + +# _________________________________________ +# / Create a compressed copy-on-write (COW) \ +# \ image based on fvm.blk. / +# ----------------------------------------- +# \ ^__^ +# \ (oo)\_______ +# (__)\ )\/\ +# ||----w | +# || || +action("blobstore_extended_qcow2") { + script = "//build/gn_run_binary.py" + + deps = [ + ":blobstore_extended_fvm", + ] + inputs = [ + blobstore_extended_path, + ] + outputs = [ + blobstore_qcow_path, + ] + data = [ + blobstore_qcow_path, + ] + + args = [ + rebase_path("//third_party/fuchsia-sdk/sdk/qemu/bin/qemu-img", + root_build_dir), + "convert", + "-f", + "raw", + "-O", + "qcow2", + "-c", + rebase_path(blobstore_extended_path), + rebase_path(blobstore_qcow_path), + ] +}
diff --git a/build/config/fuchsia/extend_fvm.py b/build/config/fuchsia/extend_fvm.py new file mode 100644 index 0000000..44e5ee3 --- /dev/null +++ b/build/config/fuchsia/extend_fvm.py
@@ -0,0 +1,26 @@ +# Copyright 2018 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. + +"""Copies a FVM file and extends it by a specified amount. + +Arg #1: path to 'fvm'. + #2: the path to the source fvm.blk. + #3: the path that the extended FVM file will be written to. + #4: the additional number of bytes to grow fvm.blk by.""" + +import os +import shutil +import subprocess +import sys + +def ExtendFVM(fvm_tool_path, src_path, dest_path, delta): + old_size = os.path.getsize(src_path) + new_size = old_size + int(delta) + shutil.copyfile(src_path, dest_path) + subprocess.check_call([fvm_tool_path, dest_path, 'extend', '--length', + str(new_size)]) + return 0 + +if __name__ == '__main__': + sys.exit(ExtendFVM(*sys.argv[1:]))
diff --git a/build/config/fuchsia/rules.gni b/build/config/fuchsia/rules.gni index e1326e79..b1da05715 100644 --- a/build/config/fuchsia/rules.gni +++ b/build/config/fuchsia/rules.gni
@@ -7,6 +7,9 @@ import("//build/config/chromecast_build.gni") import("//build/config/fuchsia/config.gni") import("//build/config/fuchsia/package.gni") +import("//build/config/sysroot.gni") + +blobstore_qcow_path = "$root_out_dir/fvm.blk.qcow2" template("generate_runner_script") { # This runtime_deps file is used at runtime and thus cannot go in @@ -19,8 +22,8 @@ _pkg_dir = "$root_out_dir/gen/" + get_label_info(invoker.package_name, "dir") _manifest_path = "$_pkg_dir/${invoker.package_name}.archive_manifest" _package_path = "$_pkg_dir/${invoker.package_name}.far" - _runner_target = "${target_name}_runner" - _legacy_runner_target = "${target_name}_legacy_runner" + _runner_target = "${target_name}_script" + _legacy_runner_target = "${target_name}_legacy_script" group(_runtime_deps_target) { forward_variables_from(invoker, @@ -104,6 +107,7 @@ ]) deps = [ + "//build/config/fuchsia:blobstore_extended_qcow2", "//testing/buildbot/filters:fuchsia_filters", ]
diff --git a/build/fuchsia/runner_v2/qemu_target.py b/build/fuchsia/runner_v2/qemu_target.py index bea8601..04c2e4e5 100644 --- a/build/fuchsia/runner_v2/qemu_target.py +++ b/build/fuchsia/runner_v2/qemu_target.py
@@ -69,8 +69,7 @@ # any changes. '-snapshot', '-drive', 'file=%s,format=qcow2,if=none,id=data,snapshot=on' % - boot_data.GetTargetFile(self._GetTargetSdkArch(), - 'fvm.blk.qcow2'), + os.path.join(self._output_dir, 'fvm.blk.qcow2'), '-drive', 'file=%s,format=qcow2,if=none,id=blobstore,snapshot=on' % self._MakeQcowDisk(boot_data.ConfigureDataFVM(self._output_dir, False)),
diff --git a/build/fuchsia/sdk.sha1 b/build/fuchsia/sdk.sha1 index ca42ae5..37b316d6 100644 --- a/build/fuchsia/sdk.sha1 +++ b/build/fuchsia/sdk.sha1
@@ -1 +1 @@ -32a56ad54471732034ba802cbfc3c9ff277b9d1c +20cc9f09319aef5699fc39b9adcc09265c81205e
diff --git a/chrome/DEPS b/chrome/DEPS index b05b1838..2cf24582 100644 --- a/chrome/DEPS +++ b/chrome/DEPS
@@ -35,7 +35,7 @@ # Allow inclusion of WebKit API files. "+third_party/WebKit/public/platform", - "+third_party/WebKit/public/public_features.h", + "+third_party/WebKit/public/public_buildflags.h", "+third_party/WebKit/public/web", # Allow inclusion of third-party code:
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn index da38538a..cdf4769 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn
@@ -722,6 +722,26 @@ ] } +version_resource_dir = "$target_gen_dir/templates/chrome_version_xml/res" +verson_resource_file = "$version_resource_dir/values/strings.xml" +process_version("version_xml") { + template_file = "java/version_strings.xml.template" + sources = [ + "//chrome/VERSION", + ] + output = verson_resource_file +} + +android_resources("product_version_resources") { + resource_dirs = [] + generated_resource_dirs = [ version_resource_dir ] + generated_resource_files = [ verson_resource_file ] + custom_package = "org.chromium.base" + deps = [ + ":version_xml", + ] +} + java_group("chrome_public_non_pak_assets") { deps = [ "//chrome/android/webapk/libs/runtime_library:runtime_library_assets",
diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni index ebabc6b..0d24698 100644 --- a/chrome/android/chrome_public_apk_tmpl.gni +++ b/chrome/android/chrome_public_apk_tmpl.gni
@@ -98,6 +98,7 @@ !use_lld && (use_chromium_linker || requires_sdk_api_level_23) } command_line_flags_file = "chrome-command-line" + product_version_resources_dep = "//chrome/android:product_version_resources" } }
diff --git a/chrome/android/java/res/layout/account_picker_dialog_body.xml b/chrome/android/java/res/layout/account_picker_dialog_body.xml new file mode 100644 index 0000000..6a9a8ea --- /dev/null +++ b/chrome/android/java/res/layout/account_picker_dialog_body.xml
@@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2018 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. --> +<android.support.v7.widget.RecyclerView + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingStart="16dp" + android:paddingTop="16dp" + android:paddingEnd="16dp" + android:paddingBottom="8dp"/>
diff --git a/chrome/android/java/res/layout/account_picker_new_account_row.xml b/chrome/android/java/res/layout/account_picker_new_account_row.xml new file mode 100644 index 0000000..711ab28 --- /dev/null +++ b/chrome/android/java/res/layout/account_picker_new_account_row.xml
@@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2018 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. --> +<TextView + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:drawableStart="@drawable/add_circle_blue" + android:drawablePadding="16dp" + android:gravity="center_vertical" + android:padding="8dp" + android:text="@string/signin_add_account" + android:textAppearance="@style/BlackBodyDefault"/>
diff --git a/chrome/android/java/res/layout/account_picker_row.xml b/chrome/android/java/res/layout/account_picker_row.xml new file mode 100644 index 0000000..857cb46 --- /dev/null +++ b/chrome/android/java/res/layout/account_picker_row.xml
@@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2018 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. --> +<RelativeLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:padding="8dp"> + + <ImageView + android:id="@+id/account_image" + android:layout_width="40dp" + android:layout_height="40dp" + android:layout_alignParentStart="true" + android:layout_centerVertical="true" + android:layout_marginEnd="16dp" + android:contentDescription="@null"/> + <TextView + android:id="@+id/account_name" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_toStartOf="@+id/account_selection_mark" + android:layout_toEndOf="@id/account_image" + android:gravity="center_vertical" + android:minHeight="20dp" + android:textAppearance="@style/BlackBodyDefault" + tools:text="John Doe"/> + <TextView + android:id="@+id/account_email" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_below="@id/account_name" + android:layout_toStartOf="@+id/account_selection_mark" + android:layout_toEndOf="@id/account_image" + android:gravity="center_vertical" + android:minHeight="20dp" + android:textAppearance="@style/BlackCaption" + tools:text="john.doe@example.com"/> + <!-- TODO(https://crbug.com/828841): Use animated drawable for checkmark. --> + <ImageView + android:id="@+id/account_selection_mark" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_alignParentEnd="true" + android:layout_centerVertical="true" + android:layout_marginStart="16dp" + android:contentDescription="@null" + android:src="@drawable/ic_check_googblue_24dp"/> +</RelativeLayout>
diff --git a/chrome/android/java/res/layout/bottom_sheet.xml b/chrome/android/java/res/layout/bottom_sheet.xml index b1eeff1a..25112ea 100644 --- a/chrome/android/java/res/layout/bottom_sheet.xml +++ b/chrome/android/java/res/layout/bottom_sheet.xml
@@ -55,4 +55,10 @@ android:scaleType="fitXY" android:contentDescription="@null" /> + <FrameLayout + android:id="@+id/bottom_sheet_snackbar_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="start|bottom" /> + </org.chromium.chrome.browser.widget.bottomsheet.BottomSheet>
diff --git a/chrome/android/java/res/layout/main.xml b/chrome/android/java/res/layout/main.xml index fb6f0721..5417220b 100644 --- a/chrome/android/java/res/layout/main.xml +++ b/chrome/android/java/res/layout/main.xml
@@ -90,12 +90,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" /> - <FrameLayout - android:id="@+id/bottom_sheet_snackbar_container" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="start|bottom" /> - <ViewStub android:id="@+id/empty_container_stub" android:inflatedId="@+id/empty_container"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java index 9236e18..4aaf9bb 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -1192,7 +1192,10 @@ */ @Override public SnackbarManager getSnackbarManager() { - return mSnackbarManager; + return mBottomSheetController != null + && mBottomSheetController.getBottomSheet().isSheetOpen() + ? mBottomSheetController.getSnackbarManager() + : mSnackbarManager; } /** @@ -1269,7 +1272,7 @@ ((BottomContainer) findViewById(R.id.bottom_container)).setBottomSheet(mBottomSheet); mFadingBackgroundView = (FadingBackgroundView) findViewById(R.id.fading_focus_target); - mBottomSheetController = new BottomSheetController(getTabModelSelector(), + mBottomSheetController = new BottomSheetController(this, getTabModelSelector(), getCompositorViewHolder().getLayoutManager(), mFadingBackgroundView, mBottomSheet);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextual_suggestions/ContextualSuggestionsBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/contextual_suggestions/ContextualSuggestionsBridge.java index 3f4f374..fefad0b 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/contextual_suggestions/ContextualSuggestionsBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextual_suggestions/ContextualSuggestionsBridge.java
@@ -24,6 +24,26 @@ public class ContextualSuggestionsBridge { private long mNativeContextualSuggestionsBridge; + /** Result of fetching contextual suggestions. */ + public static class ContextualSuggestionsResult { + private String mPeekText; + private List<ContextualSuggestionsCluster> mClusters = new ArrayList<>(); + + ContextualSuggestionsResult(String peekText) { + mPeekText = peekText; + } + + /** Peek text to show in UI. */ + public String getPeekText() { + return mPeekText; + } + + /** Clusters of suggestions. */ + public List<ContextualSuggestionsCluster> getClusters() { + return mClusters; + } + } + /** * Creates a ContextualSuggestionsBridge for getting snippet data for the current user. * @@ -45,8 +65,7 @@ * @param url URL for which to fetch suggestions. * @param callback Callback used to return suggestions for a given URL. */ - public void fetchSuggestions( - String url, Callback<List<ContextualSuggestionsCluster>> callback) { + public void fetchSuggestions(String url, Callback<ContextualSuggestionsResult> callback) { assert mNativeContextualSuggestionsBridge != 0; nativeFetchSuggestions(mNativeContextualSuggestionsBridge, url, callback); } @@ -85,32 +104,30 @@ } @CalledByNative - private static List<ContextualSuggestionsCluster> createContextualSuggestionsClusterList() { - return new ArrayList<>(); + private static ContextualSuggestionsResult createContextualSuggestionsResult(String peekText) { + return new ContextualSuggestionsResult(peekText); } @CalledByNative - private static void addNewClusterToList( - List<ContextualSuggestionsCluster> clusters, String title) { - clusters.add(new ContextualSuggestionsCluster(title)); + private static void addNewClusterToResult(ContextualSuggestionsResult result, String title) { + result.getClusters().add(new ContextualSuggestionsCluster(title)); } @CalledByNative private static void addSuggestionToLastCluster(List<ContextualSuggestionsCluster> clusters, - String id, String title, String publisher, String url, long timestamp, float score, - long fetchTime, boolean isVideoSuggestion, int thumbnailDominantColor) { + String id, String title, String publisher, String url) { assert clusters.size() > 0; clusters.get(clusters.size() - 1) .getSuggestions() .add(new SnippetArticle(KnownCategories.CONTEXTUAL, id, title, publisher, url, - timestamp, score, fetchTime, isVideoSuggestion, - thumbnailDominantColor == 0 ? null : thumbnailDominantColor)); + /*publishTimestamp=*/0, /*score=*/0f, /*fetchTimestamp=*/0, + /*isVideoSuggestion=*/false, /*thumbnailDominantColor=*/0)); } private native long nativeInit(Profile profile); private native void nativeDestroy(long nativeContextualSuggestionsBridge); private native void nativeFetchSuggestions(long nativeContextualSuggestionsBridge, String url, - Callback<List<ContextualSuggestionsCluster>> callback); + Callback<ContextualSuggestionsResult> callback); private native void nativeFetchSuggestionImage( long nativeContextualSuggestionsBridge, String suggestionId, Callback<Bitmap> callback); private native void nativeFetchSuggestionFavicon(
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextual_suggestions/ContextualSuggestionsCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextual_suggestions/ContextualSuggestionsCoordinator.java index 9883556..6aeb6b02 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/contextual_suggestions/ContextualSuggestionsCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextual_suggestions/ContextualSuggestionsCoordinator.java
@@ -110,7 +110,7 @@ new SuggestionsUiDelegateImpl(suggestionsSource, new DummyEventReporter(), navigationDelegate, mProfile, mBottomSheetController.getBottomSheet(), mActivity.getChromeApplication().getReferencePool(), - mActivity.getSnackbarManager()); + mBottomSheetController.getSnackbarManager()); mContentCoordinator.showSuggestions(mActivity, mProfile, uiDelegate, mModel, mActivity.getWindowAndroid(), mActivity::closeContextMenu);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/crash/PureJavaExceptionReporter.java b/chrome/android/java/src/org/chromium/chrome/browser/crash/PureJavaExceptionReporter.java index 7bc014b3..6f78e7ef 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/crash/PureJavaExceptionReporter.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/crash/PureJavaExceptionReporter.java
@@ -49,6 +49,8 @@ public static final String EXCEPTION_INFO = "exception_info"; public static final String PROCESS_TYPE = "ptype"; public static final String EARLY_JAVA_EXCEPTION = "early_java_exception"; + public static final String CUSTOM_THEMES = "custom_themes"; + public static final String RESOURCES_VERSION = "resources_version"; private static final String CRASH_DUMP_DIR = "Crash Reports"; private static final String FILE_PREFIX = "chromium-browser-minidump-"; @@ -137,6 +139,8 @@ addPairedString(PACKAGE, String.format("%s v%s (%s)", BuildConfig.FIREBASE_APP_ID, buildInfo.versionCode, buildInfo.versionName)); + addPairedString(CUSTOM_THEMES, buildInfo.customThemes); + addPairedString(RESOURCES_VERSION, buildInfo.resourcesVersion); addString(mBoundary); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java index da80fca..b5d0be5 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java
@@ -407,7 +407,7 @@ return RecyclerView.NO_POSITION; } - SectionList getSectionListForTesting() { + public SectionList getSectionListForTesting() { return mSections; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SuggestionsSection.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SuggestionsSection.java index fcdc6ea..302d2fd 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SuggestionsSection.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SuggestionsSection.java
@@ -673,7 +673,7 @@ return mMoreButton; } - SectionHeader getHeaderItemForTesting() { + public SectionHeader getHeaderItemForTesting() { return mHeader; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountPickerDialogFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountPickerDialogFragment.java new file mode 100644 index 0000000..58b5486 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountPickerDialogFragment.java
@@ -0,0 +1,265 @@ +// Copyright 2018 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. + +package org.chromium.chrome.browser.signin; + +import android.app.Dialog; +import android.os.Bundle; +import android.support.annotation.IntDef; +import android.support.annotation.Nullable; +import android.support.v4.app.DialogFragment; +import android.support.v4.app.Fragment; +import android.support.v4.util.ObjectsCompat; +import android.support.v7.app.AlertDialog; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import org.chromium.base.Log; +import org.chromium.chrome.R; +import org.chromium.components.signin.AccountManagerDelegateException; +import org.chromium.components.signin.AccountManagerFacade; +import org.chromium.components.signin.AccountsChangeObserver; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.util.ArrayList; +import java.util.List; + +/** + * This class implements dialog-based account picker that is used by SigninFragmentBase. This + * fragment uses {@link Fragment#getParentFragment()} to report selection results, so parent + * fragment should: + * 1. Use {@link Fragment#getChildFragmentManager()} to add this fragment. + * 2. Implement {@link Callback} interface to get selection result. + */ +public class AccountPickerDialogFragment extends DialogFragment { + public interface Callback { + /** + * Notifies that user has selected an account. + * @param accountName The email of the selected account. + * @param isDefaultAccount Whether the selected account is the first in the account list. + */ + void onAccountSelected(String accountName, boolean isDefaultAccount); + } + + @Retention(RetentionPolicy.SOURCE) + @IntDef({ViewType.EXISTING_ACCOUNT, ViewType.NEW_ACCOUNT}) + private @interface ViewType { + int EXISTING_ACCOUNT = 0; + int NEW_ACCOUNT = 1; + } + + private class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> { + class ViewHolder extends RecyclerView.ViewHolder { + private final @Nullable ImageView mAccountImage; + private final @Nullable TextView mAccountName; + private final @Nullable TextView mAccountEmail; + private final @Nullable ImageView mSelectionMark; + + /** Used for displaying profile data for existing account. */ + ViewHolder(View view, @Nullable ImageView accountImage, @Nullable TextView accountName, + @Nullable TextView accountEmail, @Nullable ImageView selectionMark) { + super(view); + mAccountImage = accountImage; + mAccountName = accountName; + mAccountEmail = accountEmail; + mSelectionMark = selectionMark; + } + + /** Used for "Add account" row. */ + ViewHolder(View view) { + this(view, null, null, null, null); + } + + void onBind(DisplayableProfileData profileData, boolean isSelected) { + mAccountImage.setImageDrawable(profileData.getImage()); + mAccountName.setText(profileData.getFullNameOrEmail()); + mAccountEmail.setText(profileData.getAccountName()); + mSelectionMark.setVisibility(isSelected ? View.VISIBLE : View.GONE); + } + } + + private String mSelectedAccountName; + private List<DisplayableProfileData> mProfileDataList; + + Adapter(String selectedAccountName, List<DisplayableProfileData> profileDataList) { + mSelectedAccountName = selectedAccountName; + mProfileDataList = profileDataList; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup viewGroup, @ViewType int viewType) { + LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext()); + if (viewType == ViewType.NEW_ACCOUNT) { + View view = + inflater.inflate(R.layout.account_picker_new_account_row, viewGroup, false); + return new ViewHolder(view); + } + View view = inflater.inflate(R.layout.account_picker_row, viewGroup, false); + ImageView accountImage = (ImageView) view.findViewById(R.id.account_image); + TextView accountName = (TextView) view.findViewById(R.id.account_name); + TextView accountEmail = (TextView) view.findViewById(R.id.account_email); + ImageView selectionMark = (ImageView) view.findViewById(R.id.account_selection_mark); + return new ViewHolder(view, accountImage, accountName, accountEmail, selectionMark); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + switch (holder.getItemViewType()) { + case ViewType.EXISTING_ACCOUNT: + DisplayableProfileData profileData = mProfileDataList.get(position); + boolean isSelected = ObjectsCompat.equals( + profileData.getAccountName(), mSelectedAccountName); + holder.onBind(profileData, isSelected); + + final String accountName = profileData.getAccountName(); + final boolean isDefault = position == 0; + holder.itemView.setOnClickListener( + view -> onAccountSelected(accountName, isDefault)); + + return; + case ViewType.NEW_ACCOUNT: + // "Add account" row is immutable. + // TODO(https://crbug.com/814728): Add click listener. + return; + default: + assert false : "Unexpected view type!"; + } + } + + @Override + public int getItemCount() { + // The last row is "Add account" and doesn't have a corresponding account. + return mProfileDataList.size() + 1; + } + + @Override + public int getItemViewType(int position) { + int result = position == mProfileDataList.size() ? ViewType.NEW_ACCOUNT + : ViewType.EXISTING_ACCOUNT; + return result; + } + + void setSelectedAccountName(String selectedAccountName) { + mSelectedAccountName = selectedAccountName; + notifyDataSetChanged(); + } + + void setProfileDataList(List<DisplayableProfileData> profileDataList) { + mProfileDataList = profileDataList; + notifyDataSetChanged(); + } + } + + private static final String TAG = "AccountPickerDialog"; + private static final String ARGUMENT_SELECTED_ACCOUNT_NAME = + "AccountPickerDialogFragment.SelectedAccountName"; + + private final AccountsChangeObserver mAccountsChangeObserver = this::updateAccounts; + private final ProfileDataCache.Observer mProfileDataObserver = accountId -> updateProfileData(); + private ProfileDataCache mProfileDataCache; + private List<String> mAccounts; + private Adapter mAdapter; + + /** + * Creates an instance and sets its arguments. + * @param selectedAccountName The name of the account that should be marked as selected. + */ + public static AccountPickerDialogFragment create(@Nullable String selectedAccountName) { + AccountPickerDialogFragment result = new AccountPickerDialogFragment(); + Bundle args = new Bundle(); + args.putString(ARGUMENT_SELECTED_ACCOUNT_NAME, selectedAccountName); + result.setArguments(args); + return result; + } + + public AccountPickerDialogFragment() { + // Fragment must have a publicly accessible default constructor + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + assert getCallback() != null : "No callback for AccountPickerDialogFragment"; + + mProfileDataCache = new ProfileDataCache( + getActivity(), getResources().getDimensionPixelSize(R.dimen.user_picture_size)); + + String selectedAccountName = getArguments().getString(ARGUMENT_SELECTED_ACCOUNT_NAME); + // Account list will be updated in onStart() + mAdapter = new Adapter(selectedAccountName, new ArrayList<>()); + } + + @Override + public void onStart() { + super.onStart(); + AccountManagerFacade.get().addObserver(mAccountsChangeObserver); + mProfileDataCache.addObserver(mProfileDataObserver); + updateAccounts(); + } + + @Override + public void onStop() { + super.onStop(); + mProfileDataCache.removeObserver(mProfileDataObserver); + AccountManagerFacade.get().removeObserver(mAccountsChangeObserver); + } + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + AlertDialog.Builder builder = + new AlertDialog.Builder(getActivity(), R.style.AlertDialogTheme); + LayoutInflater inflater = LayoutInflater.from(builder.getContext()); + RecyclerView recyclerView = + (RecyclerView) inflater.inflate(R.layout.account_picker_dialog_body, null); + recyclerView.setAdapter(mAdapter); + recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); + return builder.setTitle(R.string.signin_account_picker_dialog_title) + .setView(recyclerView) + .create(); + } + + /** + * Updates the selected account. + * @param selectedAccountName The name of the account that should be marked as selected. + */ + public void updateSelectedAccount(String selectedAccountName) { + mAdapter.setSelectedAccountName(selectedAccountName); + } + + private void onAccountSelected(String accountName, boolean isDefaultAccount) { + getCallback().onAccountSelected(accountName, isDefaultAccount); + dismiss(); + } + + private void updateAccounts() { + try { + mAccounts = AccountManagerFacade.get().getGoogleAccountNames(); + } catch (AccountManagerDelegateException ex) { + Log.e(TAG, "Can't get account list", ex); + dismiss(); + return; + } + + mProfileDataCache.update(mAccounts); + updateProfileData(); + } + + private void updateProfileData() { + List<DisplayableProfileData> profileDataList = new ArrayList<>(); + for (String accountName : mAccounts) { + profileDataList.add(mProfileDataCache.getProfileDataOrDefault(accountName)); + } + mAdapter.setProfileDataList(profileDataList); + } + + private Callback getCallback() { + return (Callback) getParentFragment(); + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninFragmentBase.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninFragmentBase.java index e0fb714..6757a04 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninFragmentBase.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninFragmentBase.java
@@ -9,6 +9,7 @@ import android.support.annotation.Nullable; import android.support.annotation.StringRes; import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AlertDialog; import android.text.method.LinkMovementMethod; import android.view.LayoutInflater; @@ -40,13 +41,16 @@ * features. Configuration for this fragment is provided by overriding {@link #getSigninArguments} * derived classes. */ -public abstract class SigninFragmentBase extends Fragment { +public abstract class SigninFragmentBase + extends Fragment implements AccountPickerDialogFragment.Callback { private static final String TAG = "SigninFragmentBase"; private static final String SETTINGS_LINK_OPEN = "<LINK1>"; private static final String SETTINGS_LINK_CLOSE = "</LINK1>"; private static final String ARGUMENT_ACCESS_POINT = "SigninFragmentBase.AccessPoint"; + public static final String ACCOUNT_PICKER_DIALOG_TAG = + "SigninFragmentBase.AccountPickerDialogFragment"; private @SigninAccessPoint int mSigninAccessPoint; // TODO(https://crbug.com/814728): Pass this as Fragment argument. @@ -154,6 +158,8 @@ LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mView = (SigninView) inflater.inflate(R.layout.signin_view, container, false); + mView.getAccountPickerView().setOnClickListener(view -> onAccountPickerClicked()); + mView.getAcceptButton().setVisibility(View.GONE); mView.getMoreButton().setVisibility(View.VISIBLE); mView.getMoreButton().setOnClickListener(view -> { @@ -226,6 +232,11 @@ mView.getRefuseButton().setEnabled(enabled); } + private void onAccountPickerClicked() { + // TODO(https://crbug.com/814728): Ignore clicks if GMS reported an error. + showAccountPicker(); + } + /** * Records the Sync consent. * @param confirmationView The view that the user clicked when consenting. @@ -235,6 +246,22 @@ ConsentAuditorFeature.CHROME_SYNC, confirmationView, mView); } + private void showAccountPicker() { + // Account picker is already shown + if (getChildFragmentManager().findFragmentByTag(ACCOUNT_PICKER_DIALOG_TAG) != null) return; + + AccountPickerDialogFragment dialog = + AccountPickerDialogFragment.create(mSelectedAccountName); + FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); + transaction.add(dialog, ACCOUNT_PICKER_DIALOG_TAG); + transaction.commit(); + } + + @Override + public void onAccountSelected(String accountName, boolean isDefaultAccount) { + selectAccount(accountName, isDefaultAccount); + } + @Override public void onResume() { super.onResume(); @@ -258,7 +285,12 @@ mProfileDataCache.update(Collections.singletonList(mSelectedAccountName)); updateProfileData(); - // TODO(https://crbug.com/814728): Update selected account in account picker. + AccountPickerDialogFragment accountPickerFragment = + (AccountPickerDialogFragment) getChildFragmentManager().findFragmentByTag( + ACCOUNT_PICKER_DIALOG_TAG); + if (accountPickerFragment != null) { + accountPickerFragment.updateSelectedAccount(accountName); + } } private void triggerUpdateAccounts() { @@ -293,7 +325,7 @@ // TODO(https://crbug.com/814728): Cancel ConfirmSyncDataStateMachine. selectAccount(mAccountNames.get(0), true); - // TODO(https://crbug.com/814728): Show account picker. + showAccountPicker(); // Show account picker so user can confirm the account selection. } @Nullable
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninView.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninView.java index 7b6e496..ca6d9fc 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninView.java
@@ -20,6 +20,7 @@ public class SigninView extends LinearLayout { private SigninScrollView mScrollView; private TextView mTitle; + private View mAccountPicker; private ImageView mAccountImage; private TextView mAccountName; private TextView mAccountEmail; @@ -42,6 +43,7 @@ mScrollView = (SigninScrollView) findViewById(R.id.signin_scroll_view); mTitle = (TextView) findViewById(R.id.signin_title); + mAccountPicker = findViewById(R.id.signin_account_picker); mAccountImage = (ImageView) findViewById(R.id.account_image); mAccountName = (TextView) findViewById(R.id.account_name); mAccountEmail = (TextView) findViewById(R.id.account_email); @@ -65,6 +67,10 @@ return mTitle; } + public View getAccountPickerView() { + return mAccountPicker; + } + public ImageView getAccountImageView() { return mAccountImage; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellDelegate.java index aa95e5b..88f466e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrShellDelegate.java
@@ -288,8 +288,8 @@ // If we didn't request WebVR then we're not coming from a request present call. // If we didn't set mEnterVrOnStartup this isn't an intent from another app. // Therefore we can assume this was triggered by NFC. - sInstance.nativeRecordVrStartAction(sInstance.mNativeVrShellDelegate, - PageSessionStartAction.HEADSET_ACTIVATION); + sInstance.nativeRecordVrStartAction( + sInstance.mNativeVrShellDelegate, VrStartAction.HEADSET_ACTIVATION); } // We add a black overlay view so that we can show black while the VR UI is loading. @@ -1236,7 +1236,7 @@ mDonSucceeded = true; mInVrAtChromeLaunch = true; - nativeRecordVrStartAction(mNativeVrShellDelegate, PageSessionStartAction.INTENT_LAUNCH); + nativeRecordVrStartAction(mNativeVrShellDelegate, VrStartAction.INTENT_LAUNCH); if (!mPaused) enterVrAfterDon(); } @@ -1252,7 +1252,7 @@ mDonSucceeded = true; mInVrAtChromeLaunch = true; - nativeRecordVrStartAction(mNativeVrShellDelegate, PageSessionStartAction.DEEP_LINKED_APP); + nativeRecordVrStartAction(mNativeVrShellDelegate, VrStartAction.DEEP_LINKED_APP); } private void onEnterVrUnsupported() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetController.java b/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetController.java index b16fb34..1d6bd600 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetController.java
@@ -4,12 +4,17 @@ package org.chromium.chrome.browser.widget.bottomsheet; +import android.app.Activity; import android.view.ViewGroup; +import org.chromium.base.ActivityState; +import org.chromium.base.ApplicationStatus; +import org.chromium.chrome.R; import org.chromium.chrome.browser.compositor.layouts.Layout; import org.chromium.chrome.browser.compositor.layouts.LayoutManager; import org.chromium.chrome.browser.compositor.layouts.SceneChangeObserver; import org.chromium.chrome.browser.compositor.layouts.StaticLayout; +import org.chromium.chrome.browser.snackbar.SnackbarManager; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver; @@ -27,7 +32,7 @@ * and call {@link #requestShowContent(BottomSheetContent, boolean)} which will return true if the * content was actually shown (see full doc on method). */ -public class BottomSheetController { +public class BottomSheetController implements ApplicationStatus.ActivityStateListener { /** The initial capacity for the priority queue handling pending content show requests. */ private static final int INITIAL_QUEUE_CAPACITY = 1; @@ -37,6 +42,9 @@ /** A handle to the {@link BottomSheet} that this class controls. */ private final BottomSheet mBottomSheet; + /** A handle to the {@link SnackbarManager} that manages snackbars inside the bottom sheet. */ + private final SnackbarManager mSnackbarManager; + /** A queue for content that is waiting to be shown in the {@link BottomSheet}. */ private PriorityQueue<BottomSheetContent> mContentQueue; @@ -53,11 +61,15 @@ * @param fadingBackgroundView The scrim that shows when the bottom sheet is opened. * @param bottomSheet The bottom sheet that this class will be controlling. */ - public BottomSheetController(final TabModelSelector tabModelSelector, + public BottomSheetController(final Activity activity, final TabModelSelector tabModelSelector, final LayoutManager layoutManager, final FadingBackgroundView fadingBackgroundView, BottomSheet bottomSheet) { mBottomSheet = bottomSheet; mLayoutManager = layoutManager; + mSnackbarManager = new SnackbarManager( + activity, mBottomSheet.findViewById(R.id.bottom_sheet_snackbar_container)); + mSnackbarManager.onStart(); + ApplicationStatus.registerStateListenerForActivity(this, activity); // Handle interactions with the scrim. fadingBackgroundView.addObserver(new FadingViewObserver() { @@ -132,6 +144,11 @@ UiUtils.removeViewFromParent(fadingBackgroundView); parent.addView(fadingBackgroundView, mOriginalScrimIndexInParent); } + + @Override + public void onSheetOffsetChanged(float heightFraction) { + mSnackbarManager.dismissAllSnackbars(); + } }); // Initialize the queue with a comparator that checks content priority. @@ -147,6 +164,13 @@ } /** + * @return The {@link SnackbarManager} that manages snackbars inside the bottom sheet. + */ + public SnackbarManager getSnackbarManager() { + return mSnackbarManager; + } + + /** * Request that some content be shown in the bottom sheet. * @param content The content to be shown in the bottom sheet. * @param animate Whether the appearance of the bottom sheet should be animated. @@ -235,6 +259,17 @@ } } + @Override + public void onActivityStateChange(Activity activity, int newState) { + if (newState == ActivityState.STARTED) { + mSnackbarManager.onStart(); + } else if (newState == ActivityState.STOPPED) { + mSnackbarManager.onStop(); + } else if (newState == ActivityState.DESTROYED) { + ApplicationStatus.unregisterActivityStateListener(this); + } + } + /** * Show the next {@link BottomSheetContent} if it is available and peek the sheet. If no content * is available the sheet's content is set to null.
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd index 3dbadcb..d8b769078 100644 --- a/chrome/android/java/strings/android_chrome_strings.grd +++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -2315,6 +2315,9 @@ <message name="IDS_SIGNIN_ACCEPT_BUTTON" desc="Text for the confirmation button in the sign-in screen. By clicking this button users signs in and turns on Sync and personalization. [CHAR-LIMIT=20]" translateable="false"> Yes, I'm in </message> + <message name="IDS_SIGNIN_ACCOUNT_PICKER_DIALOG_TITLE" desc="The title for the dialog that shows the list of accounts on the device and asks user to select one of these accounts. [CHAR-LIMIT=27]" translateable="false"> + Choose an account + </message> <!-- Personalized Signin Promos Strings --> <message name="IDS_SIGNIN_PROMO_DESCRIPTION_BOOKMARKS" desc="Description string for 'Continue as' signin promo shown in Bookmarks screen.">
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_am.xtb b/chrome/android/java/strings/translations/android_chrome_strings_am.xtb index 636c9a8..8b131300 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_am.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_am.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">የአካባቢ መዳረሻ ለዚህ መሣሪያ ጠፍቷል። በ<ph name="BEGIN_LINK" />Android ቅንብሮች<ph name="END_LINK" /> ውስጥ ያብሩት።</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> በChrome ውስጥ ይከፈታል። በመቀጠልዎ በChrome <ph name="BEGIN_LINK1" />አገልግሎት ውል<ph name="END_LINK1" /> እና <ph name="BEGIN_LINK2" />የግላዊነት ማስታወቂያ<ph name="END_LINK2" /> ተስማምተዋል።</translation> <translation id="189172778771606813">የአሰሳ መሳቢያ ዝጋ</translation> -<translation id="1897409700584096124">ድር ጣቢያ በማሠራጨት ላይ ነው</translation> <translation id="1919345977826869612">ማስታወቂያዎች</translation> <translation id="1933845786846280168">የተመረጠው ትር</translation> <translation id="1938981467853765413">ግብረ መልሰ ይስጡ</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">ማሳወቂያዎች ይፈቀዳሉ</translation> <translation id="3295602654194328831">መረጃ ደብቅ</translation> <translation id="3303414029551471755">ይዘቱን ማውረድ ይቀጥል?</translation> -<translation id="3321222012623826478">ይህ አገልግሎት የዚህም ድር ጣቢያ አድራሻ ለማረጋገጥ ስም-አልባ ሆኖ ወደ Google መላክ አለበት።</translation> <translation id="3328801116991980348">የጣቢያ መረጃ</translation> <translation id="3341058695485821946">ምን ያህል ውሂብ እንዳስቀመጡ ይመልከቱ</translation> <translation id="3350687908700087792">ሁሉንም ማንነት የማያሳውቅ ትሮችን ይዝጉ</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">ቪድዮ አውርድ</translation> <translation id="6482749332252372425">በማከማቻ ቦታ ጥበት ምክንያት <ph name="FILE_NAME" />ን ማውረድ አልተሳካም።</translation> <translation id="6496823230996795692"><ph name="APP_NAME" />ን ለመጀመሪያ ጊዜ ለመጠቀም እባክዎ ከበይነመረብ ጋር ይገናኙ።</translation> -<translation id="6508332297647760142">አካላዊ የድር ማጋራት</translation> <translation id="6527303717912515753">አጋራ</translation> <translation id="6534565668554028783">Google ምላሽ ለመስጠት ከልክ በላይ ረዥም ጊዜ ወስዷል</translation> <translation id="6538442820324228105"><ph name="GBS" /> ጊባ ወርዷል</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb index da3c1a9..ae3c2b5 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">الوصول إلى الموقع الجغرافي متوقف لهذا الجهاز. يمكنك تفعليه في <ph name="BEGIN_LINK" />إعدادات Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886">سيتم فتح <ph name="APP_NAME" /> في Chrome. بالمتابعة، أنت توافق على <ph name="BEGIN_LINK1" />بنود الخدمة<ph name="END_LINK1" /> و<ph name="BEGIN_LINK2" />إشعار الخصوصية<ph name="END_LINK2" /> في Chrome.</translation> <translation id="189172778771606813">إغلاق لائحة التنقل</translation> -<translation id="1897409700584096124">يتم بث موقع الويب</translation> <translation id="1919345977826869612">إعلانات</translation> <translation id="1933845786846280168">علامة تبويب محددة</translation> <translation id="1938981467853765413">تقديم تعليقات</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">مسموح بالإشعارات</translation> <translation id="3295602654194328831">إخفاء المعلومات</translation> <translation id="3303414029551471755">هل ترغب في الاستمرار في تنزيل المحتوى؟</translation> -<translation id="3321222012623826478">تحتاج هذه الخدمة إلى إرسال عنوان موقع الويب هذا بدون الكشف عن الهوية إلى خوادم Google للتحقق.</translation> <translation id="3328801116991980348">معلومات موقع الويب</translation> <translation id="3341058695485821946">الاطّلاع على مقدار البيانات التي حفظتها</translation> <translation id="3350687908700087792">إغلاق كافة علامات تبويب التصفح المتخفي</translation> @@ -594,7 +592,6 @@ <translation id="6475951671322991020">تنزيل الفيديو</translation> <translation id="6482749332252372425">تعذّر تنزيل الملف <ph name="FILE_NAME" /> لعدم توفر مساحة لتخزين.</translation> <translation id="6496823230996795692">لاستخدام <ph name="APP_NAME" /> للمرة الأولى، يُرجى الاتصال بالإنترنت.</translation> -<translation id="6508332297647760142">مشاركة الشبكة المادية</translation> <translation id="6527303717912515753">مشاركة</translation> <translation id="6534565668554028783">استغرقت Google وقتًا أطول مما يجب للاستجابة</translation> <translation id="6538442820324228105">تم التنزيل بحجم <ph name="GBS" /> غيغابايت</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb b/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb index e16905c..93f2a7f 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Достъпът до местоположението е изключен за това устройство. Включете го от <ph name="BEGIN_LINK" />настройките на Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> ще се отвори в Chrome. С продължаването си приемате <ph name="BEGIN_LINK1" />Общите условия<ph name="END_LINK1" /> и <ph name="BEGIN_LINK2" />Съобщението за поверителност<ph name="END_LINK2" /> на браузъра.</translation> <translation id="189172778771606813">Затваряне на слоя за навигация</translation> -<translation id="1897409700584096124">Уебсайтът се излъчва</translation> <translation id="1919345977826869612">Реклами</translation> <translation id="1933845786846280168">Избран раздел</translation> <translation id="1938981467853765413">Изпратете отзив</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Известията са разрешени</translation> <translation id="3295602654194328831">Скриване на информацията</translation> <translation id="3303414029551471755">Искате ли да продължите с изтеглянето на съдържанието?</translation> -<translation id="3321222012623826478">Тази услуга трябва анонимно да изпрати за потвърждение до сървърите на Google адреса на този уебсайт.</translation> <translation id="3328801116991980348">Информация за сайта</translation> <translation id="3341058695485821946">Вижте колко данни сте спестили</translation> <translation id="3350687908700087792">Затваряне на всички раздели в режим „инкогнито“</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Изтегляне на видеоклипа</translation> <translation id="6482749332252372425">Изтеглянето на „<ph name="FILE_NAME" />“ не бе успешно поради липса на място в хранилището.</translation> <translation id="6496823230996795692">За да използвате <ph name="APP_NAME" /> за първи път, моля, свържете се с интернет.</translation> -<translation id="6508332297647760142">Споделяне във Физическата мрежа</translation> <translation id="6527303717912515753">Споделяне</translation> <translation id="6534565668554028783">Google не отговаря твърде дълго време</translation> <translation id="6538442820324228105">Изтеглено: <ph name="GBS" /> ГБ</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb index d02614f..5b628c8f 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">L'accés a la ubicació està desactivat en aquest dispositiu. Activa'l a la <ph name="BEGIN_LINK" />configuració d'Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> s'obrirà a Chrome. En continuar, acceptes les <ph name="BEGIN_LINK1" />condicions del servei<ph name="END_LINK1" /> i l'<ph name="BEGIN_LINK2" />avís de privadesa<ph name="END_LINK2" /> de Chrome.</translation> <translation id="189172778771606813">Tanca el tauler de navegació</translation> -<translation id="1897409700584096124">El lloc web està emetent</translation> <translation id="1919345977826869612">Anuncis</translation> <translation id="1933845786846280168">Pestanya seleccionada</translation> <translation id="1938981467853765413">Què et sembla?</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Es permeten les notificacions</translation> <translation id="3295602654194328831">Amaga la informació</translation> <translation id="3303414029551471755">Voleu baixar el contingut?</translation> -<translation id="3321222012623826478">Aquest servei ha d'enviar anònimament l'adreça d'aquest lloc web als servidors de Google per verificar-la.</translation> <translation id="3328801116991980348">Informació del lloc</translation> <translation id="3341058695485821946">Consulta la quantitat de dades que has estalviat</translation> <translation id="3350687908700087792">Tanca totes les pestanyes d'incògnit</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Baixa el vídeo</translation> <translation id="6482749332252372425">No s'ha pogut baixar <ph name="FILE_NAME" /> perquè falta espai d'emmagatzematge.</translation> <translation id="6496823230996795692">Per utilitzar <ph name="APP_NAME" /> per primera vegada, connecta't a Internet.</translation> -<translation id="6508332297647760142">Ús compartit del Web físic</translation> <translation id="6527303717912515753">Comparteix</translation> <translation id="6534565668554028783">Google ha tardat massa a respondre</translation> <translation id="6538442820324228105">S'han baixat <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb b/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb index 841dfa69..334cae0 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Přístup k poloze je v tomto zařízení vypnut. Zapnete jej v <ph name="BEGIN_LINK" />Nastavení Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886">Aplikace <ph name="APP_NAME" /> se otevře v Chromu. Pokračováním vyjadřujete souhlas se <ph name="BEGIN_LINK1" />smluvními podmínkami<ph name="END_LINK1" /> a <ph name="BEGIN_LINK2" />upozorněním ve věci ochrany soukromí<ph name="END_LINK2" />.</translation> <translation id="189172778771606813">Zavřít vysouvací panel navigace</translation> -<translation id="1897409700584096124">Web vysílá</translation> <translation id="1919345977826869612">Reklamy</translation> <translation id="1933845786846280168">Vybraná karta</translation> <translation id="1938981467853765413">Odeslat zpětnou vazbu</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Oznámení jsou povolena</translation> <translation id="3295602654194328831">Skrýt informace</translation> <translation id="3303414029551471755">Chcete pokračovat ke stažení obsahu?</translation> -<translation id="3321222012623826478">Tato služba potřebuje odeslat adresu tohoto webu anonymně do Googlu k ověření.</translation> <translation id="3328801116991980348">Informace o stránkách</translation> <translation id="3341058695485821946">Podívejte se, kolik dat jste ušetřili</translation> <translation id="3350687908700087792">Zavřít všechny anonymní karty</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Stáhnout video</translation> <translation id="6482749332252372425">Stažení souboru <ph name="FILE_NAME" /> se nezdařilo z důvodu nedostatku místa v úložišti.</translation> <translation id="6496823230996795692">Chcete-li poprvé použít aplikaci <ph name="APP_NAME" />, připojte se k internetu.</translation> -<translation id="6508332297647760142">Sdílení fyzického webu</translation> <translation id="6527303717912515753">Sdílet</translation> <translation id="6534565668554028783">Odpověď Googlu trvala příliš dlouho</translation> <translation id="6538442820324228105">Staženo: <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_da.xtb b/chrome/android/java/strings/translations/android_chrome_strings_da.xtb index bb234f8..a20d05e5 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_da.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_da.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Placeringsadgang er deaktiveret for denne enhed. Aktivér det under <ph name="BEGIN_LINK" />indstillinger for Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> åbnes i Chrome. Når du fortsætter, accepterer du Chromes <ph name="BEGIN_LINK1" />servicevilkår<ph name="END_LINK1" /> og <ph name="BEGIN_LINK2" />erklæring om privatliv<ph name="END_LINK2" />.</translation> <translation id="189172778771606813">Luk sidemenuen</translation> -<translation id="1897409700584096124">Websitet sender</translation> <translation id="1919345977826869612">Annoncer</translation> <translation id="1933845786846280168">Valgt fane</translation> <translation id="1938981467853765413">Giv feedback</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Underretninger er tilladt</translation> <translation id="3295602654194328831">Skjul oplysninger</translation> <translation id="3303414029551471755">Vil du fortsætte og downloade indholdet?</translation> -<translation id="3321222012623826478">Denne tjeneste skal sende denne websiteadresse anonymt til bekræftelse på Googles servere.</translation> <translation id="3328801116991980348">Webstedoplysninger</translation> <translation id="3341058695485821946">Se, hvor meget data du har gemt</translation> <translation id="3350687908700087792">Luk alle inkognitofaner</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Download video</translation> <translation id="6482749332252372425">Download af <ph name="FILE_NAME" /> mislykkedes, fordi der ikke er nok lagerplads.</translation> <translation id="6496823230996795692">Opret forbindelse til internettet, første gang du bruger <ph name="APP_NAME" />.</translation> -<translation id="6508332297647760142">Fysisk web-deling</translation> <translation id="6527303717912515753">Del</translation> <translation id="6534565668554028783">Google var for lang tid om at svare</translation> <translation id="6538442820324228105">Der er downloadet <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_de.xtb b/chrome/android/java/strings/translations/android_chrome_strings_de.xtb index a06b096..e488d78f 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_de.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_de.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Der Standortzugriff ist für dieses Gerät deaktiviert. Sie können ihn in den <ph name="BEGIN_LINK" />Android-Einstellungen<ph name="END_LINK" /> aktivieren.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> wird in Chrome geöffnet. Wenn Sie fortfahren, stimmen Sie den <ph name="BEGIN_LINK1" />Nutzungsbedingungen<ph name="END_LINK1" /> und <ph name="BEGIN_LINK2" />Datenschutzhinweisen<ph name="END_LINK2" /> von Chrome zu.</translation> <translation id="189172778771606813">Navigationsleiste schließen</translation> -<translation id="1897409700584096124">Website überträgt</translation> <translation id="1919345977826869612">Werbung</translation> <translation id="1933845786846280168">Ausgewählter Tab</translation> <translation id="1938981467853765413">Feedback geben</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Benachrichtigungen sind erlaubt</translation> <translation id="3295602654194328831">Informationen ausblenden</translation> <translation id="3303414029551471755">Inhalt herunterladen?</translation> -<translation id="3321222012623826478">Dieser Dienst muss die Adresse dieser Website zur Überprüfung anonym an Google-Server senden.</translation> <translation id="3328801116991980348">Websiteinformationen</translation> <translation id="3341058695485821946">Sie können sich ansehen, wie viel Datenvolumen Sie einsparen</translation> <translation id="3350687908700087792">Alle Inkognitotabs schließen</translation> @@ -594,7 +592,6 @@ <translation id="6475951671322991020">Video herunterladen</translation> <translation id="6482749332252372425"><ph name="FILE_NAME" /> konnte nicht heruntergeladen werden, weil nicht genügend Speicherplatz vorhanden ist.</translation> <translation id="6496823230996795692">Wenn Sie <ph name="APP_NAME" /> zum ersten Mal nutzen, stellen Sie bitte eine Verbindung zum Internet her.</translation> -<translation id="6508332297647760142">Freigabe im Physical Web</translation> <translation id="6527303717912515753">Teilen</translation> <translation id="6534565668554028783">Die Antwort von Google hat zu lange gedauert</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB heruntergeladen</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_el.xtb b/chrome/android/java/strings/translations/android_chrome_strings_el.xtb index ff60835..01e67244 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_el.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_el.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Η πρόσβαση στην Τοποθεσία είναι απενεργοποιημένη γι' αυτήν τη συσκευή. Ενεργοποιήστε τη στις <ph name="BEGIN_LINK" />Ρυθμίσεις Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886">Η εφαρμογή <ph name="APP_NAME" /> θα ανοίξει στο Chrome. Εάν συνεχίσετε, συμφωνείτε με τους <ph name="BEGIN_LINK1" />Όρους Παροχής Υπηρεσιών<ph name="END_LINK1" /> και τη <ph name="BEGIN_LINK2" />Σημείωση απορρήτου<ph name="END_LINK2" /> του Chrome.</translation> <translation id="189172778771606813">Κλείσιμο συρταριού πλοήγησης</translation> -<translation id="1897409700584096124">Ο ιστότοπος μεταδίδει περιεχόμενο</translation> <translation id="1919345977826869612">Διαφημίσεις</translation> <translation id="1933845786846280168">Επιλεγμένη καρτέλα</translation> <translation id="1938981467853765413">Στείλτε τα σχόλιά σας</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Οι ειδοποιήσεις επιτρέπονται</translation> <translation id="3295602654194328831">Απόκρυψη πληροφοριών</translation> <translation id="3303414029551471755">Συνέχεια για λήψη του περιεχομένου;</translation> -<translation id="3321222012623826478">Αυτή η υπηρεσία θα πρέπει να στέλνει ανώνυμα αυτήν τη διεύθυνση ιστοτόπου στους διακομιστές της Google για επαλήθευση.</translation> <translation id="3328801116991980348">Πληροφορίες ιστοτόπου</translation> <translation id="3341058695485821946">Δείτε πόσα δεδομένα έχετε αποθηκεύσει</translation> <translation id="3350687908700087792">Κλείσιμο όλων των καρτελών ανώνυμης περιήγησης</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Λήψη βίντεο</translation> <translation id="6482749332252372425">Η λήψη του αρχείου <ph name="FILE_NAME" /> απέτυχε λόγω έλλειψης αποθηκευτικού χώρου.</translation> <translation id="6496823230996795692">Για να χρησιμοποιήσετε την εφαρμογή <ph name="APP_NAME" /> για πρώτη φορά, συνδεθείτε στο διαδίκτυο.</translation> -<translation id="6508332297647760142">Κοινοποίηση στο Φυσικό δίκτυο</translation> <translation id="6527303717912515753">Κοινοποίηση</translation> <translation id="6534565668554028783">Η απάντηση από το Google καθυστέρησε υπερβολικά</translation> <translation id="6538442820324228105">Έγινε λήψη <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb index 9e9ffe0..360c6cc 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Location access is off for this device. Turn it on in <ph name="BEGIN_LINK" />Android Settings<ph name="END_LINK" />.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> will open in Chrome. By continuing, you agree to Chrome’s <ph name="BEGIN_LINK1" />Terms of Service<ph name="END_LINK1" /> and <ph name="BEGIN_LINK2" />Privacy Notice<ph name="END_LINK2" />.</translation> <translation id="189172778771606813">Close navigation drawer</translation> -<translation id="1897409700584096124">Website is broadcasting</translation> <translation id="1919345977826869612">Ads</translation> <translation id="1933845786846280168">Selected Tab</translation> <translation id="1938981467853765413">Provide feedback</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Notifications are allowed</translation> <translation id="3295602654194328831">Hide info</translation> <translation id="3303414029551471755">Proceed to download the content?</translation> -<translation id="3321222012623826478">This service needs to anonymously send this website address to Google servers for verification.</translation> <translation id="3328801116991980348">Site information</translation> <translation id="3341058695485821946">See how much data that you've saved</translation> <translation id="3350687908700087792">Close all incognito tabs</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Download video</translation> <translation id="6482749332252372425"><ph name="FILE_NAME" /> download failed due to lack of storage space.</translation> <translation id="6496823230996795692">To use <ph name="APP_NAME" /> for the first time, please connect to the Internet.</translation> -<translation id="6508332297647760142">Physical Web Sharing</translation> <translation id="6527303717912515753">Share</translation> <translation id="6534565668554028783">Google took too long to respond</translation> <translation id="6538442820324228105">Downloaded <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb b/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb index 560e079..bb3a3c4 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">En este dispositivo, el acceso a la ubicación está desactivado. Actívalo en la <ph name="BEGIN_LINK" />Configuración de Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> se abrirá en Chrome. Al continuar, aceptas las <ph name="BEGIN_LINK1" />Condiciones del servicio<ph name="END_LINK1" /> y el <ph name="BEGIN_LINK2" />Aviso de privacidad<ph name="END_LINK2" /> de Chrome.</translation> <translation id="189172778771606813">Cerrar panel lateral de navegación</translation> -<translation id="1897409700584096124">El sitio web está transmitiendo</translation> <translation id="1919345977826869612">Anuncios</translation> <translation id="1933845786846280168">Pestaña seleccionada</translation> <translation id="1938981467853765413">Hacer comentarios</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Las notificaciones están habilitadas</translation> <translation id="3295602654194328831">Ocultar información</translation> <translation id="3303414029551471755">¿Deseas descargar el contenido?</translation> -<translation id="3321222012623826478">Este servicio necesita enviar la dirección de este sitio web de forma anónima a los servidores de Google para verificarla.</translation> <translation id="3328801116991980348">Información del sitio</translation> <translation id="3341058695485821946">Consulta cuántos datos redujiste</translation> <translation id="3350687908700087792">Cerrar todas las pestañas de incógnito</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Descargar video</translation> <translation id="6482749332252372425"><ph name="FILE_NAME" /> no se pudo descargar debido a la falta de espacio de almacenamiento.</translation> <translation id="6496823230996795692">Para usar <ph name="APP_NAME" /> por primera vez, conéctate a Internet.</translation> -<translation id="6508332297647760142">Uso compartido de la Web física</translation> <translation id="6527303717912515753">Compartir</translation> <translation id="6534565668554028783">Google tardó demasiado en responder</translation> <translation id="6538442820324228105">Se descargaron <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_es.xtb b/chrome/android/java/strings/translations/android_chrome_strings_es.xtb index 85007ba..d2c17f0c 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_es.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_es.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">El acceso a la ubicación está desactivado en este dispositivo. Actívalo en los <ph name="BEGIN_LINK" />Ajustes de Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> se abrirá en Chrome. Si continúas, aceptas las <ph name="BEGIN_LINK1" />condiciones de servicio<ph name="END_LINK1" /> y el <ph name="BEGIN_LINK2" />aviso de privacidad<ph name="END_LINK2" /> de Chrome.</translation> <translation id="189172778771606813">Cerrar panel de navegación</translation> -<translation id="1897409700584096124">La página web se está transmitiendo</translation> <translation id="1919345977826869612">Anuncios</translation> <translation id="1933845786846280168">Pestaña seleccionada</translation> <translation id="1938981467853765413">Enviar comentarios</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Las notificaciones están permitidas</translation> <translation id="3295602654194328831">Ocultar información</translation> <translation id="3303414029551471755">¿Quieres continuar para descargar el contenido?</translation> -<translation id="3321222012623826478">Este servicio necesita enviar de forma anónima la dirección de este sitio web a los servidores de Google para que la verifiquen.</translation> <translation id="3328801116991980348">Información del sitio</translation> <translation id="3341058695485821946">Consulta la cantidad de datos que has ahorrado</translation> <translation id="3350687908700087792">Cerrar todas las pestañas de incógnito</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Descargar vídeo</translation> <translation id="6482749332252372425">No se ha podido descargar <ph name="FILE_NAME" /> porque no hay suficiente espacio de almacenamiento.</translation> <translation id="6496823230996795692">Para utilizar <ph name="APP_NAME" /> por primera vez, conéctate a Internet.</translation> -<translation id="6508332297647760142">Compartir Web física</translation> <translation id="6527303717912515753">Compartir</translation> <translation id="6534565668554028783">Google ha tardado demasiado en responder</translation> <translation id="6538442820324228105">GB descargados: <ph name="GBS" /></translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb index aba0618..dec35e0 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">دسترسی به مکان برای این دستگاه خاموش است. آن را در <ph name="BEGIN_LINK" />تنظیمات Android<ph name="END_LINK" /> روشن کنید.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> در Chrome باز میشود. درصورت ادامه دادن، با <ph name="BEGIN_LINK1" />شرایط خدمات<ph name="END_LINK1" /> و <ph name="BEGIN_LINK2" />اعلان حریم خصوصی<ph name="END_LINK2" /> Chrome موافقت میکنید.</translation> <translation id="189172778771606813">بستن کشوی پیمایش</translation> -<translation id="1897409700584096124">وبسایت درحال پخش است</translation> <translation id="1919345977826869612">آگهیها</translation> <translation id="1933845786846280168">برگه انتخابشده</translation> <translation id="1938981467853765413">ارائه بازخورد</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">اعلانها مجاز هستند</translation> <translation id="3295602654194328831">پنهان کردن اطلاعات</translation> <translation id="3303414029551471755">ادامه میدهید و محتوا را بارگیری میکنید؟</translation> -<translation id="3321222012623826478">این سرویس باید این نشانی وبسایت را بهصورت ناشناس برای تأیید به سرورهای Google بفرستد.</translation> <translation id="3328801116991980348">اطلاعات سایت</translation> <translation id="3341058695485821946">ببینید چه مقدار داده صرفهجویی کردهاید</translation> <translation id="3350687908700087792">بستن همه برگههای ناشناس</translation> @@ -592,7 +590,6 @@ <translation id="6475951671322991020">بارگیری ویدیو</translation> <translation id="6482749332252372425">بهدلیل نبودن فضای ذخیرهسازی، بارگیری <ph name="FILE_NAME" /> انجام نشد.</translation> <translation id="6496823230996795692">برای استفاده از <ph name="APP_NAME" /> برای اولین بار، لطفاً به اینترنت وصل شوید.</translation> -<translation id="6508332297647760142">اشتراکگذاری وب فیزیکی</translation> <translation id="6527303717912515753">اشتراکگذاری</translation> <translation id="6534565668554028783">پاسخ Google بیش از حد طول کشیده است</translation> <translation id="6538442820324228105"><ph name="GBS" /> گیگابایت بارگیری شد</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb index a162e22b..bd1781d 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Sijainti on poissa käytöstä tällä laitteella. Voit ottaa sen käyttöön <ph name="BEGIN_LINK" />Android-asetuksista<ph name="END_LINK" />.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> avautuu Chromessa. Jatkamalla hyväksyt Chromen <ph name="BEGIN_LINK1" />käyttöehdot<ph name="END_LINK1" /> ja <ph name="BEGIN_LINK2" />tietosuojailmoituksen<ph name="END_LINK2" />.</translation> <translation id="189172778771606813">Sulje navigoinnin vetopaneeli</translation> -<translation id="1897409700584096124">Verkkosivustoa lähetetään</translation> <translation id="1919345977826869612">Mainokset</translation> <translation id="1933845786846280168">Valittu välilehti</translation> <translation id="1938981467853765413">Anna palautetta</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Ilmoitukset sallitaan</translation> <translation id="3295602654194328831">Piilota tiedot</translation> <translation id="3303414029551471755">Jatketaanko sisällön lataamiseen?</translation> -<translation id="3321222012623826478">Palvelun on lähetettävä tämä verkko-osoite nimettömänä Googlen palvelimille vahvistusta varten.</translation> <translation id="3328801116991980348">Tietoja sivustosta</translation> <translation id="3341058695485821946">Katso, kuinka paljon dataa olet säästänyt</translation> <translation id="3350687908700087792">Sulje kaikki incognito-välilehdet.</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Lataa video</translation> <translation id="6482749332252372425">Tiedoston <ph name="FILE_NAME" /> lataus epäonnistui, koska tallennustila ei riitä.</translation> <translation id="6496823230996795692">Muodosta internetyhteys, ennen kuin <ph name="APP_NAME" /> on käytössäsi ensimmäisen kerran.</translation> -<translation id="6508332297647760142">Fyysisen webin jakaminen</translation> <translation id="6527303717912515753">Jaa</translation> <translation id="6534565668554028783">Google ei vastannut riittävän nopeasti.</translation> <translation id="6538442820324228105">Ladattu: <ph name="GBS" /> Gt</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb index ee514dc..c6ec871 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Naka-off ang access sa lokasyon para sa device na ito. I-on ito sa <ph name="BEGIN_LINK" />Mga Setting ng Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886">Bubukas ang <ph name="APP_NAME" /> sa Chrome. Sa pamamagitan ng pagpapatuloy, sumasang-ayon ka sa <ph name="BEGIN_LINK1" />Mga Tuntunin ng Serbisyo<ph name="END_LINK1" /> at <ph name="BEGIN_LINK2" />Notification ng Privacy<ph name="END_LINK2" /> ng Chrome.</translation> <translation id="189172778771606813">Isara ang navigation drawer</translation> -<translation id="1897409700584096124">Nagbo-broadcast ang website</translation> <translation id="1919345977826869612">Mga Ad</translation> <translation id="1933845786846280168">Napiling Tab</translation> <translation id="1938981467853765413">Magbigay ng feedback</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Pinapayagan ang mga notification</translation> <translation id="3295602654194328831">Itago ang Impormasyon</translation> <translation id="3303414029551471755">Magpatuloy na i-download ang content?</translation> -<translation id="3321222012623826478">Kailangang ipadala nang anonymous ng serbisyong ito ang address ng website na ito sa mga server ng Google para sa pag-verify.</translation> <translation id="3328801116991980348">Impormasyon ng site</translation> <translation id="3341058695485821946">Tingnan kung gaano karaming data ang iyong natipid</translation> <translation id="3350687908700087792">Isara ang lahat ng incognito na tab</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">I-download ang video</translation> <translation id="6482749332252372425">Hindi na-download ang <ph name="FILE_NAME" /> dahil kulang ang espasyo sa storage.</translation> <translation id="6496823230996795692">Upang magamit ang <ph name="APP_NAME" /> sa unang pagkakataon, kumonekta sa internet.</translation> -<translation id="6508332297647760142">Pagbabahagi sa Pisikal na Web</translation> <translation id="6527303717912515753">Ibahagi</translation> <translation id="6534565668554028783">Masyadong matagal bago nakatugon ang Google</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB ang na-download</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb index 315143a..7a6f874 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">L'accès à la position est désactivé pour cet appareil. Activez-le dans les <ph name="BEGIN_LINK" />paramètres Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> va s'ouvrir dans Chrome. En continuant, vous acceptez les <ph name="BEGIN_LINK1" />Conditions d'utilisation<ph name="END_LINK1" /> et l'<ph name="BEGIN_LINK2" />Avis de confidentialité<ph name="END_LINK2" /> de Chrome.</translation> <translation id="189172778771606813">Fermer le panneau de navigation</translation> -<translation id="1897409700584096124">Le site Web est bien diffusé</translation> <translation id="1919345977826869612">Annonces</translation> <translation id="1933845786846280168">Onglet sélectionné</translation> <translation id="1938981467853765413">Envoyer des commentaires</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Les notifications sont autorisées</translation> <translation id="3295602654194328831">Masquer les informations</translation> <translation id="3303414029551471755">Poursuivre et télécharger le contenu ?</translation> -<translation id="3321222012623826478">Ce service doit envoyer de façon anonyme l'adresse de ce site Web aux serveurs Google pour vérification.</translation> <translation id="3328801116991980348">Informations sur le site</translation> <translation id="3341058695485821946">Découvrez la quantité de données économisées</translation> <translation id="3350687908700087792">Fermer tous les onglets de navigation privée</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Télécharger la vidéo</translation> <translation id="6482749332252372425">Échec du téléchargement du fichier "<ph name="FILE_NAME" />" en raison de l'espace de stockage insuffisant.</translation> <translation id="6496823230996795692">Pour utiliser <ph name="APP_NAME" /> pour la première fois, veuillez vous connecter à Internet.</translation> -<translation id="6508332297647760142">Partage du Web physique</translation> <translation id="6527303717912515753">Partager</translation> <translation id="6534565668554028783">Google a mis trop de temps à répondre</translation> <translation id="6538442820324228105"><ph name="GBS" /> Go téléchargé(s)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb b/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb index 8deb208..ef9b290 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">इस डिवाइस के लिए स्थान एक्सेस बंद है. उसे <ph name="BEGIN_LINK" />Android सेटिंग<ph name="END_LINK" /> में चालू करें.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> Chrome में खुलेगा. जारी रखकर, आप Chrome की <ph name="BEGIN_LINK1" />सेवा की शर्तों<ph name="END_LINK1" /> और <ph name="BEGIN_LINK2" />निजता सूचना<ph name="END_LINK2" /> से सहमत होते हैं.</translation> <translation id="189172778771606813">मार्गदर्शक ड्रॉवर बंद करें</translation> -<translation id="1897409700584096124">वेबसाइट प्रसारित हो रही है</translation> <translation id="1919345977826869612">विज्ञापन</translation> <translation id="1933845786846280168">चयनित टैब</translation> <translation id="1938981467853765413">फ़ीडबैक दें</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">सूचनाओं की अनुमति है</translation> <translation id="3295602654194328831">जानकारी छिपाएं</translation> <translation id="3303414029551471755">सामग्री डाउनलोड करने के लिए आगे बढ़ें?</translation> -<translation id="3321222012623826478">इस सेवा को इस वेबसाइट के पते की पुष्टि करने के लिए, पते को अनाम रूप से Google के सर्वर पर भेजना होगा.</translation> <translation id="3328801116991980348">साइट जानकारी</translation> <translation id="3341058695485821946">देखें कि आपने कितना डेटा बचाया है</translation> <translation id="3350687908700087792">सभी गुप्त टैब बंद करें</translation> @@ -320,7 +318,7 @@ <translation id="4042870126885713738">किसी वेब पते का समाधान ना होने या कनेक्शन ना हो सकने पर सुझाव दिखाएं</translation> <translation id="4046123991198612571">अगला ट्रैक</translation> <translation id="4056223980640387499">Sepia</translation> -<translation id="4062305924942672200">वैधानिक जानकारी</translation> +<translation id="4062305924942672200">कानूनी जानकारी</translation> <translation id="4084682180776658562">बुकमार्क</translation> <translation id="4084836577264234537"><ph name="MEGABYTES" /> MB डाउनलोड किया गया</translation> <translation id="4089831646916293264">यह सुविधा आपके वाहक द्वारा प्रदान की जाने वाली प्रीमियम डेटा सुविधाओं की ऐक्सेस में हस्तक्षेप कर सकती है.</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">वीडियो डाउनलोड करें</translation> <translation id="6482749332252372425">मेमोरी स्थान कम होने के कारण <ph name="FILE_NAME" /> डाउनलोड विफल रहा.</translation> <translation id="6496823230996795692">पहली बार <ph name="APP_NAME" /> का उपयोग करने के लिए, कृपया इंटरनेट चालू करें.</translation> -<translation id="6508332297647760142">जीता-जागता वेब साझा करना</translation> <translation id="6527303717912515753">साझा करें</translation> <translation id="6534565668554028783">Google को प्रतिक्रिया देने में बहुत अधिक समय लगा</translation> <translation id="6538442820324228105"><ph name="GBS" /> जीबी डाउनलोड किया गया</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb index 141f8e59..457fc2c4 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Pristup lokaciji isključen je za ovaj uređaj. Uključite ga u <ph name="BEGIN_LINK" />postavkama Androida<ph name="END_LINK" />.</translation> <translation id="1891331835972267886">Aplikacija <ph name="APP_NAME" /> otvorit će se u Chromeu. Nastavljanjem prihvaćate Chromeove <ph name="BEGIN_LINK1" />Uvjete pružanja usluge<ph name="END_LINK1" /> i <ph name="BEGIN_LINK2" />Obavijest o privatnosti<ph name="END_LINK2" />.</translation> <translation id="189172778771606813">Zatvori ladicu za navigaciju</translation> -<translation id="1897409700584096124">Web-lokacija emitira</translation> <translation id="1919345977826869612">Oglasi</translation> <translation id="1933845786846280168">Odabrana kartica</translation> <translation id="1938981467853765413">Pošalji povratne informacije</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Obavijesti su dopuštene</translation> <translation id="3295602654194328831">Sakrij informacije</translation> <translation id="3303414029551471755">Želite li nastaviti s preuzimanjem sadržaja?</translation> -<translation id="3321222012623826478">Ova usluga mora anonimno poslati adresu ove web-lokacije Googleovim poslužiteljima radi provjere.</translation> <translation id="3328801116991980348">Informacije o web-lokaciji</translation> <translation id="3341058695485821946">Pogledajte količinu ušteđenih podataka</translation> <translation id="3350687908700087792">Zatvori sve anonimne kartice</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Preuzmi videozapis</translation> <translation id="6482749332252372425">Preuzimanje datoteke <ph name="FILE_NAME" /> nije uspjelo zbog nedostatka prostora.</translation> <translation id="6496823230996795692">Za prvu upotrebu aplikacije <ph name="APP_NAME" /> povežite se s internetom.</translation> -<translation id="6508332297647760142">Dijeljenje s Fizičkim webom</translation> <translation id="6527303717912515753">Podijeli</translation> <translation id="6534565668554028783">Googleu je bilo potrebno previše vremena za odgovor</translation> <translation id="6538442820324228105">Preuzeto <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb b/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb index 6b56d32..43001b00 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">A helyhozzáférés ki van kapcsolva ennél az eszköznél. A funkciót az <ph name="BEGIN_LINK" />Android-beállításokban<ph name="END_LINK" /> tudja bekapcsolni.</translation> <translation id="1891331835972267886">A(z) <ph name="APP_NAME" /> a Chrome-ban nyílik meg. A folytatással elfogadja a Chrome <ph name="BEGIN_LINK1" />Általános Szerződési Feltételeit<ph name="END_LINK1" /> és <ph name="BEGIN_LINK2" />Adatvédelmi közleményét<ph name="END_LINK2" />.</translation> <translation id="189172778771606813">Navigációs fiók bezárása</translation> -<translation id="1897409700584096124">A webhely sugároz</translation> <translation id="1919345977826869612">Hirdetések</translation> <translation id="1933845786846280168">Kiválasztott lap</translation> <translation id="1938981467853765413">Visszajelzés küldése</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Értesítések engedélyezve</translation> <translation id="3295602654194328831">Információk elrejtése…</translation> <translation id="3303414029551471755">Biztosan letölti a tartalmat?</translation> -<translation id="3321222012623826478">A szolgáltatásnak ellenőrzés céljából névtelenül el kell küldenie a webhely címét a Google szervereinek.</translation> <translation id="3328801116991980348">Webhelyadatok</translation> <translation id="3341058695485821946">Megnézheti, mennyi adatot takarított meg</translation> <translation id="3350687908700087792">Az összes inkognitólap bezárása</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Videó letöltése</translation> <translation id="6482749332252372425">A következő fájl letöltése tárhelyhiány miatt nem sikerült: <ph name="FILE_NAME" />.</translation> <translation id="6496823230996795692">A(z) <ph name="APP_NAME" /> első használatakor internetkapcsolatra van szükség.</translation> -<translation id="6508332297647760142">Fizikai web megosztása</translation> <translation id="6527303717912515753">Megosztás</translation> <translation id="6534565668554028783">A Google túl hosszú ideje nem válaszol</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB letöltve</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_id.xtb b/chrome/android/java/strings/translations/android_chrome_strings_id.xtb index a12a6fd..8ee8b24 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_id.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_id.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Akses lokasi dinonaktifkan untuk perangkat ini. Aktifkan di <ph name="BEGIN_LINK" />Setelan Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> akan terbuka di Chrome. Dengan melanjutkan, Anda menyetujui <ph name="BEGIN_LINK1" />Persyaratan Layanan<ph name="END_LINK1" /> dan <ph name="BEGIN_LINK2" />Pemberitahuan Privasi<ph name="END_LINK2" /> Chrome.</translation> <translation id="189172778771606813">Tutup panel samping navigasi</translation> -<translation id="1897409700584096124">Situs sedang ditampilkan</translation> <translation id="1919345977826869612">Iklan</translation> <translation id="1933845786846280168">Tab yang Dipilih</translation> <translation id="1938981467853765413">Berikan masukan</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Notifikasi diizinkan</translation> <translation id="3295602654194328831">Sembunyikan Info</translation> <translation id="3303414029551471755">Lanjutkan untuk mendownload konten?</translation> -<translation id="3321222012623826478">Layanan ini perlu mengirimkan alamat situs ini secara anonim ke server Google untuk verifikasi.</translation> <translation id="3328801116991980348">Informasi situs</translation> <translation id="3341058695485821946">Lihat berapa banyak data yang dihemat</translation> <translation id="3350687908700087792">Tutup semua jendela penyamaran</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Download video</translation> <translation id="6482749332252372425">Download <ph name="FILE_NAME" /> gagal karena ruang penyimpanan tidak cukup.</translation> <translation id="6496823230996795692">Untuk menggunakan <ph name="APP_NAME" /> pertama kali, harap hubungkan ke internet.</translation> -<translation id="6508332297647760142">Berbagi Web Fisik</translation> <translation id="6527303717912515753">Bagikan</translation> <translation id="6534565668554028783">Google membutuhkan waktu terlalu lama untuk merespons</translation> <translation id="6538442820324228105">Terdownload <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_it.xtb b/chrome/android/java/strings/translations/android_chrome_strings_it.xtb index 0f780ec..970236be 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_it.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_it.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">L'accesso alla posizione è disattivato per questo dispositivo. Attivalo nelle <ph name="BEGIN_LINK" /> Impostazioni Android <ph name="END_LINK" />.</translation> <translation id="1891331835972267886">L'app <ph name="APP_NAME" /> verrà aperta in Chrome. Se continui, accetti i <ph name="BEGIN_LINK1" />Termini di servizio<ph name="END_LINK1" /> e l'<ph name="BEGIN_LINK2" />Informativa sulla Privacy<ph name="END_LINK2" /> di Chrome.</translation> <translation id="189172778771606813">Chiudi riquadro di navigazione a scomparsa</translation> -<translation id="1897409700584096124">Trasmissione del sito web in corso</translation> <translation id="1919345977826869612">Annunci</translation> <translation id="1933845786846280168">Scheda selezionata</translation> <translation id="1938981467853765413">Fornisci feedback</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Le notifiche sono consentite</translation> <translation id="3295602654194328831">Nascondi informazioni</translation> <translation id="3303414029551471755">Procedere al download dei contenuti?</translation> -<translation id="3321222012623826478">Il servizio invierà l'indirizzo del sito web ai server di Google in forma anonima per la verifica.</translation> <translation id="3328801116991980348">Informazioni sito</translation> <translation id="3341058695485821946">Scopri la quantità di dati risparmiata</translation> <translation id="3350687908700087792">Chiudi tutte le schede di navigazione in incognito</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Scarica video</translation> <translation id="6482749332252372425">Download di <ph name="FILE_NAME" /> non riuscito a causa dello spazio di archiviazione insufficiente.</translation> <translation id="6496823230996795692">Connettiti a Internet per usare <ph name="APP_NAME" /> per la prima volta.</translation> -<translation id="6508332297647760142">Condivisione Physical Web</translation> <translation id="6527303717912515753">Condividi</translation> <translation id="6534565668554028783">Google ha impiegato troppo tempo a rispondere</translation> <translation id="6538442820324228105">Sono stati scaricati <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb b/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb index a7384c3..313505d 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">הגישה למיקום כבויה בשביל המכשיר הזה. יש להפעיל אותה ב<ph name="BEGIN_LINK" />הגדרות Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886">האפליקציה <ph name="APP_NAME" /> תיפתח ב-Chrome. המשך השימוש מבטא את הסכמתך ל<ph name="BEGIN_LINK1" />תנאים ולהגבלות<ph name="END_LINK1" /> ול<ph name="BEGIN_LINK2" />הודעת הפרטיות<ph name="END_LINK2" /> של Chrome.</translation> <translation id="189172778771606813">סגור את חלונית ההזזה לניווט</translation> -<translation id="1897409700584096124">האתר משדר</translation> <translation id="1919345977826869612">מודעות</translation> <translation id="1933845786846280168">הכרטיסייה שנבחרה</translation> <translation id="1938981467853765413"> שליחת משוב</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">יש הרשאה להצגת הודעות</translation> <translation id="3295602654194328831">הסתר פרטים</translation> <translation id="3303414029551471755">האם להוריד את התוכן?</translation> -<translation id="3321222012623826478">שירות זה צריך לשלוח את כתובת האתר לשרתי Google באופן אנונימי כדי לאמת אותה.</translation> <translation id="3328801116991980348">פרטי אתר</translation> <translation id="3341058695485821946">בדיקת החיסכון בצריכת נתונים</translation> <translation id="3350687908700087792">סגור את כל כרטיסיות הגלישה בסתר</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">הורד סרטון</translation> <translation id="6482749332252372425">הורדת <ph name="FILE_NAME" /> נכשלה מאחר שחסר מקום אחסון.</translation> <translation id="6496823230996795692">כדי להשתמש באפליקציה <ph name="APP_NAME" /> בפעם הראשונה יש להתחבר לאינטרנט.</translation> -<translation id="6508332297647760142">שיתוף האינטרנט הווירטופיזי</translation> <translation id="6527303717912515753">שתף</translation> <translation id="6534565668554028783">ל-Google נדרש זמן רב מדי להגיב</translation> <translation id="6538442820324228105">בוצעה הורדה של GB <ph name="GBS" /></translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb index ce53728a..36281880 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">位置情報へのアクセスが端末でオフになっています。<ph name="BEGIN_LINK" />Android の設定<ph name="END_LINK" />でオンにしてください。</translation> <translation id="1891331835972267886">Chrome で <ph name="APP_NAME" /> を開きます。続行すると、Chrome の<ph name="BEGIN_LINK1" />利用規約<ph name="END_LINK1" />と<ph name="BEGIN_LINK2" />プライバシーに関するお知らせ<ph name="END_LINK2" />に同意したことになります。</translation> <translation id="189172778771606813">操作パネルを閉じる</translation> -<translation id="1897409700584096124">ウェブサイトが発信されています</translation> <translation id="1919345977826869612">広告</translation> <translation id="1933845786846280168">選択したタブ</translation> <translation id="1938981467853765413">フィードバックを送信</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">通知が許可されています</translation> <translation id="3295602654194328831">情報を表示しない</translation> <translation id="3303414029551471755">コンテンツのダウンロードに進みますか?</translation> -<translation id="3321222012623826478">このサービスでは、このウェブサイトのアドレスを Google サーバーに匿名で送信し、確認を行うことが必要になります。</translation> <translation id="3328801116991980348">サイト情報</translation> <translation id="3341058695485821946">データ削減量を確認できます</translation> <translation id="3350687908700087792">すべてのシークレット タブを閉じます</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">動画をダウンロード</translation> <translation id="6482749332252372425">ストレージの空き容量が不足しているため、<ph name="FILE_NAME" /> をダウンロードできませんでした。</translation> <translation id="6496823230996795692"><ph name="APP_NAME" /> を初めて使用する場合は、インターネットに接続してください。</translation> -<translation id="6508332297647760142">フィジカル ウェブの共有</translation> <translation id="6527303717912515753">共有</translation> <translation id="6534565668554028783">Google からの応答に時間がかかりすぎています</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB をダウンロード済み</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb index 15bdaa3..fd2599781 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">이 기기의 위치 액세스가 사용 중지되었습니다. <ph name="BEGIN_LINK" />Android 설정<ph name="END_LINK" />에서 사용 설정하세요.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" />이(가) Chrome에서 열립니다. 계속하면 Chrome의 <ph name="BEGIN_LINK1" />서비스 약관<ph name="END_LINK1" /> 및 <ph name="BEGIN_LINK2" />개인정보처리방침<ph name="END_LINK2" />에 동의하는 것으로 간주됩니다.</translation> <translation id="189172778771606813">탐색 창 닫기</translation> -<translation id="1897409700584096124">웹사이트에서 브로드캐스트 중입니다.</translation> <translation id="1919345977826869612">광고</translation> <translation id="1933845786846280168">선택된 탭</translation> <translation id="1938981467853765413">의견 보내기</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">알림이 허용되었습니다</translation> <translation id="3295602654194328831">정보 숨기기</translation> <translation id="3303414029551471755">콘텐츠를 다운로드하시겠습니까?</translation> -<translation id="3321222012623826478">이 서비스에서는 확인을 위해 웹사이트 주소를 Google 서버에 익명으로 전송해야 합니다.</translation> <translation id="3328801116991980348">사이트 정보</translation> <translation id="3341058695485821946">저장한 데이터의 양 보기</translation> <translation id="3350687908700087792">모든 시크릿 탭 닫기</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">동영상 다운로드</translation> <translation id="6482749332252372425">저장공간이 부족하여 <ph name="FILE_NAME" />을(를) 다운로드할 수 없습니다.</translation> <translation id="6496823230996795692">처음으로 <ph name="APP_NAME" />을(를) 사용하는 경우 인터넷에 연결하세요.</translation> -<translation id="6508332297647760142">피지컬 웹 공유</translation> <translation id="6527303717912515753">공유</translation> <translation id="6534565668554028783">Google에서 응답하는 데 시간이 너무 오래 걸립니다.</translation> <translation id="6538442820324228105"><ph name="GBS" />GB 다운로드됨</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb b/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb index e3a2141e..3560623 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Vietos prieiga išjungta šiame įrenginyje. Įjunkite ją skiltyje <ph name="BEGIN_LINK" />„Android“ nustatymai“<ph name="END_LINK" />.</translation> <translation id="1891331835972267886">Programa „<ph name="APP_NAME" />“ bus atidaryta naršyklėje „Chrome“. Tęsdami sutinkate su „Chrome“ <ph name="BEGIN_LINK1" />paslaugų teikimo sąlygomis<ph name="END_LINK1" /> ir <ph name="BEGIN_LINK2" />privatumo pranešimu<ph name="END_LINK2" />.</translation> <translation id="189172778771606813">Uždaryti naršymo skydelį</translation> -<translation id="1897409700584096124">Svetainė transliuoja</translation> <translation id="1919345977826869612">Skelbimai</translation> <translation id="1933845786846280168">Pasirinktas skirtukas</translation> <translation id="1938981467853765413">Pateikti atsiliepimą</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Pranešimai leidžiami</translation> <translation id="3295602654194328831">Slėpti informaciją</translation> <translation id="3303414029551471755">Tęsti turinio atsisiuntimo procesą?</translation> -<translation id="3321222012623826478">Šiai paslaugai reikia anonimiškai išsiųsti šios svetainės adresą į „Google“ serverius, kad būtų galima patvirtinti.</translation> <translation id="3328801116991980348">Svetainės informacija</translation> <translation id="3341058695485821946">Žr., kiek duomenų sutaupėte</translation> <translation id="3350687908700087792">Uždaryti visus inkognito skirtukų lapus</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Atsisiųsti vaizdo įrašą</translation> <translation id="6482749332252372425">Nepavyko atsisiųsti „<ph name="FILE_NAME" />“ dėl trūkstamos vietos saugykloje.</translation> <translation id="6496823230996795692">Jei „<ph name="APP_NAME" />“ norite naudoti pirmą kartą, prisijunkite prie interneto.</translation> -<translation id="6508332297647760142">Fizinio žiniatinklio bendrinimas</translation> <translation id="6527303717912515753">Bendrinti</translation> <translation id="6534565668554028783">Per ilgai laukta „Google“ atsako</translation> <translation id="6538442820324228105">Atsisiųsta <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb b/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb index 12b36f9c..232d3905e 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Piekļuve šīs ierīces atrašanās vietai ir izslēgta. Ieslēdziet to <ph name="BEGIN_LINK" />Android iestatījumos<ph name="END_LINK" />.</translation> <translation id="1891331835972267886">Lietotne <ph name="APP_NAME" /> tiks atvērta pārlūkā Chrome. Turpinot jūs piekrītat Chrome <ph name="BEGIN_LINK1" />pakalpojumu sniegšanas noteikumiem<ph name="END_LINK1" /> un <ph name="BEGIN_LINK2" />konfidencialitātes paziņojumam<ph name="END_LINK2" />.</translation> <translation id="189172778771606813">Aizvērt navigācijas atvilktni</translation> -<translation id="1897409700584096124">Vietne tiek apraidīta</translation> <translation id="1919345977826869612">Reklāmas</translation> <translation id="1933845786846280168">Atlasītā cilne</translation> <translation id="1938981467853765413">Sniegt atsauksmes</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Paziņojumi ir atļauti.</translation> <translation id="3295602654194328831">Slēpt informāciju</translation> <translation id="3303414029551471755">Vai turpināt ar satura lejupielādi?</translation> -<translation id="3321222012623826478">Šim pakalpojumam ir anonīmi jānosūta šī vietnes adrese Google serveriem verifikācijai.</translation> <translation id="3328801116991980348">Vietnes informācija</translation> <translation id="3341058695485821946">Uzziniet ietaupīto datu apjomu</translation> <translation id="3350687908700087792">Aizvērt visas inkognito režīma cilnes</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Lejupielādēt videoklipu</translation> <translation id="6482749332252372425">Neizdevās lejupielādēt failu <ph name="FILE_NAME" />, jo krātuvē nav pietiekami daudz vietas.</translation> <translation id="6496823230996795692">Lai pirmo reizi izmantotu lietotni <ph name="APP_NAME" />, lūdzu, izveidojiet savienojumu ar internetu.</translation> -<translation id="6508332297647760142">Kopīgošana fiziskajā tīmeklī</translation> <translation id="6527303717912515753">Kopīgot</translation> <translation id="6534565668554028783">Google pārāk ilgi nereaģēja</translation> <translation id="6538442820324228105">Lejupielādēts: <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb b/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb index ec5ca6c..af5d092 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Locatietoegang is uitgeschakeld voor dit apparaat. Schakel dit in via de <ph name="BEGIN_LINK" />Android-instellingen<ph name="END_LINK" />.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> wordt geopend in Chrome. Als je doorgaat, ga je akkoord met de <ph name="BEGIN_LINK1" />Servicevoorwaarden<ph name="END_LINK1" /> en het <ph name="BEGIN_LINK2" />Privacybeleid<ph name="END_LINK2" /> van Chrome.</translation> <translation id="189172778771606813">Zijmenu sluiten</translation> -<translation id="1897409700584096124">Website is aan het uitzenden</translation> <translation id="1919345977826869612">Advertenties</translation> <translation id="1933845786846280168">Geselecteerd tabblad</translation> <translation id="1938981467853765413">Feedback geven</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Meldingen zijn toegestaan</translation> <translation id="3295602654194328831">Informatie verbergen</translation> <translation id="3303414029551471755">Doorgaan met het downloaden van de content?</translation> -<translation id="3321222012623826478">Deze service moet dit websiteadres anoniem naar de servers van Google verzenden voor verificatie.</translation> <translation id="3328801116991980348">Site-informatie</translation> <translation id="3341058695485821946">Bekijk hoeveel data je hebt bespaard</translation> <translation id="3350687908700087792">Alle incognitotabbladen sluiten</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Video downloaden</translation> <translation id="6482749332252372425">Downloaden van <ph name="FILE_NAME" /> is mislukt door te weinig opslagruimte.</translation> <translation id="6496823230996795692">Maak verbinding met internet als je <ph name="APP_NAME" /> voor het eerst wilt gebruiken.</translation> -<translation id="6508332297647760142">Delen via Fysieke web</translation> <translation id="6527303717912515753">Delen</translation> <translation id="6534565668554028783">Het duurt te lang voordat Google reageert</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB gedownload</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_no.xtb b/chrome/android/java/strings/translations/android_chrome_strings_no.xtb index c5b4e66..c619aa9 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_no.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_no.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Posisjonstilgang er slått av for denne enheten. Slå den på i <ph name="BEGIN_LINK" />Android-innstillingene<ph name="END_LINK" />.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> åpnes i Chrome. Ved å fortsette godtar du <ph name="BEGIN_LINK1" />vilkårene for bruk<ph name="END_LINK1" /> av Chrome og <ph name="BEGIN_LINK2" />merknaden om personvern<ph name="END_LINK2" />.</translation> <translation id="189172778771606813">Lukk uttrekksmenyen</translation> -<translation id="1897409700584096124">Nettstedet kringkastes</translation> <translation id="1919345977826869612">Annonser</translation> <translation id="1933845786846280168">Valgt fane</translation> <translation id="1938981467853765413">Gi tilbakemelding</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Varsler er tillatt</translation> <translation id="3295602654194328831">Skjul informasjonen</translation> <translation id="3303414029551471755">Vil du gå videre med å laste ned innholdet?</translation> -<translation id="3321222012623826478">Denne tjenesten må sende dette nettstedets adresse til Google anonymt for bekreftelse.</translation> <translation id="3328801116991980348">Informasjon om nettstedet</translation> <translation id="3341058695485821946">Se hvor mye data du har spart</translation> <translation id="3350687908700087792">Lukk alle inkognitofaner</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Last ned videoen</translation> <translation id="6482749332252372425">Nedlastingen av <ph name="FILE_NAME" /> ble avbrutt på grunn av mangel på lagringsplass.</translation> <translation id="6496823230996795692">For å bruke <ph name="APP_NAME" /> for første gang, koble til Internett.</translation> -<translation id="6508332297647760142">Deling på det fysiske nettet</translation> <translation id="6527303717912515753">Del</translation> <translation id="6534565668554028783">Google brukte for lang tid på å svare</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB er lastet ned</translation> @@ -688,6 +685,7 @@ <translation id="7366340029385295517">Caster til <ph name="SCREEN_NAME" /></translation> <translation id="7375125077091615385">Type:</translation> <translation id="7400418766976504921">Nettadresse</translation> +<translation id="7400730245189251663">Mer om <ph name="TOPIC" /></translation> <translation id="7403691278183511381">Førsteinntrykk ved bruk av Chrome</translation> <translation id="7423098979219808738">Spør først.</translation> <translation id="7423538860840206698">Blokkert fra å lese utklippstavlen</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb b/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb index 29c12c39..01634a0f 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Dostęp do lokalizacji jest wyłączony na tym urządzeniu. Włącz go w <ph name="BEGIN_LINK" />Ustawieniach Androida<ph name="END_LINK" />.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> otworzy się w Chrome. Przechodząc dalej, akceptujesz <ph name="BEGIN_LINK1" />Warunki korzystania z usługi<ph name="END_LINK1" /> Chrome i <ph name="BEGIN_LINK2" />Informacje na temat ochrony prywatności<ph name="END_LINK2" />.</translation> <translation id="189172778771606813">Zamknij panel nawigacji</translation> -<translation id="1897409700584096124">Strona internetowa jest nadawana</translation> <translation id="1919345977826869612">Reklamy</translation> <translation id="1933845786846280168">Wybrana karta</translation> <translation id="1938981467853765413">Prześlij opinię</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Powiadomienia są włączone</translation> <translation id="3295602654194328831">Ukryj informacje</translation> <translation id="3303414029551471755">Przejść do pobrania treści?</translation> -<translation id="3321222012623826478">Usługa musi wysłać anonimowo adres tej strony na serwery Google w celu weryfikacji.</translation> <translation id="3328801116991980348">Informacje o witrynie</translation> <translation id="3341058695485821946">Sprawdź ilość zaoszczędzonych danych</translation> <translation id="3350687908700087792">Zamknij wszystkie karty incognito</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Pobierz film</translation> <translation id="6482749332252372425">Nie udało się pobrać pliku <ph name="FILE_NAME" /> z powodu braku miejsca.</translation> <translation id="6496823230996795692">Aby pierwszy raz skorzystać z aplikacji <ph name="APP_NAME" />, połącz się z internetem.</translation> -<translation id="6508332297647760142">Udostępnianie internetu rzeczy</translation> <translation id="6527303717912515753">Udostępnij</translation> <translation id="6534565668554028783">Google zbyt długo nie odpowiada</translation> <translation id="6538442820324228105">Pobrano <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb b/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb index 183d422..4f08e65 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">O acesso ao local está desativado para este dispositivo. Ative-o nas <ph name="BEGIN_LINK" />Configurações do Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886">O app <ph name="APP_NAME" /> será aberto no Chrome. Ao continuar, você concorda com os <ph name="BEGIN_LINK1" />Termos de Serviço<ph name="END_LINK1" /> e o <ph name="BEGIN_LINK2" />Aviso de Privacidade<ph name="END_LINK2" /> do Chrome.</translation> <translation id="189172778771606813">Fechar gaveta de navegação</translation> -<translation id="1897409700584096124">O website está transmitindo</translation> <translation id="1919345977826869612">Anúncios</translation> <translation id="1933845786846280168">Guia selecionada</translation> <translation id="1938981467853765413">Enviar feedback</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Notificações são permitidas</translation> <translation id="3295602654194328831">Ocultar informações</translation> <translation id="3303414029551471755">Continuar com o download do conteúdo?</translation> -<translation id="3321222012623826478">Esse serviço precisa enviar o endereço desse website anonimamente aos servidores do Google para verificação.</translation> <translation id="3328801116991980348">Informações do site</translation> <translation id="3341058695485821946">Veja a quantidade de dados que você salvou</translation> <translation id="3350687908700087792">Fechar todas as guias anônimas</translation> @@ -592,7 +590,6 @@ <translation id="6475951671322991020">Fazer o download do vídeo</translation> <translation id="6482749332252372425">Falha no download do arquivo <ph name="FILE_NAME" /> devido à falta de espaço de armazenamento.</translation> <translation id="6496823230996795692">Para usar o app <ph name="APP_NAME" /> pela primeira vez, conecte-se à Internet</translation> -<translation id="6508332297647760142">Compartilhamento da Web física</translation> <translation id="6527303717912515753">Compartilhar</translation> <translation id="6534565668554028783">O Google demorou muito para responder</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB transferido(s) por download</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb b/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb index ed36e93..1d3039e 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">O acesso à localização está desativado para este dispositivo. Ative-o nas <ph name="BEGIN_LINK" />Definições do Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886">A aplicação <ph name="APP_NAME" /> será aberta no Chrome. Ao continuar, aceita os <ph name="BEGIN_LINK1" />Termos de Utilização<ph name="END_LINK1" /> e o <ph name="BEGIN_LINK2" />Aviso de Privacidade<ph name="END_LINK2" /> do Chrome.</translation> <translation id="189172778771606813">Fechar a gaveta de navegação</translation> -<translation id="1897409700584096124">O Website está a transmitir</translation> <translation id="1919345977826869612">Anúncios</translation> <translation id="1933845786846280168">Separador selecionado</translation> <translation id="1938981467853765413">Fornecer comentário</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">As notificações são permitidas.</translation> <translation id="3295602654194328831">Ocultar informações</translation> <translation id="3303414029551471755">Pretende transferir o conteúdo?</translation> -<translation id="3321222012623826478">Este serviço precisa de enviar o endereço deste Website anonimamente para os servidores da Google para validação.</translation> <translation id="3328801116991980348">Informações do site</translation> <translation id="3341058695485821946">Veja a quantidade de dados que poupou.</translation> <translation id="3350687908700087792">Fechar todos os separadores de navegação anónima</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Transferir vídeo</translation> <translation id="6482749332252372425">A transferência de <ph name="FILE_NAME" /> falhou devido à falta de espaço de armazenamento.</translation> <translation id="6496823230996795692">Para utilizar a aplicação <ph name="APP_NAME" /> pela primeira vez, ligue-se à Internet.</translation> -<translation id="6508332297647760142">Partilha da Web física</translation> <translation id="6527303717912515753">Partilhar</translation> <translation id="6534565668554028783">A Google demorou demasiado tempo a responder</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB transferido(s)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb index aef59d4..66c28fb 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Accesul la locație este dezactivat pentru acest dispozitiv. Activează-l în <ph name="BEGIN_LINK" />Setări Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> se va deschide în Chrome. Continuând, ești de acord cu <ph name="BEGIN_LINK1" />Termenii și condițiile<ph name="END_LINK1" /> și <ph name="BEGIN_LINK2" />Notificarea privind confidențialitatea<ph name="END_LINK2" /> Chrome.</translation> <translation id="189172778771606813">Închide panoul de navigare</translation> -<translation id="1897409700584096124">Site-ul difuzează</translation> <translation id="1919345977826869612">Anunțuri</translation> <translation id="1933845786846280168">Fila selectată</translation> <translation id="1938981467853765413">Trimite feedback</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Notificările sunt permise</translation> <translation id="3295602654194328831">Ascunde informațiile</translation> <translation id="3303414029551471755">Continui pentru descărcarea conținutului?</translation> -<translation id="3321222012623826478">Acest serviciu trebuie să trimită anonim adresa site-ului la serverele Google pentru verificare.</translation> <translation id="3328801116991980348">Informații despre site</translation> <translation id="3341058695485821946">Vezi ce volum de date ai economisit</translation> <translation id="3350687908700087792">Închide toate filele incognito</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Descarcă videoclipul</translation> <translation id="6482749332252372425">Descărcarea fișierului <ph name="FILE_NAME" /> nu a reușit din cauza spațiului de stocare insuficient.</translation> <translation id="6496823230996795692">Ca să folosești <ph name="APP_NAME" /> pentru prima dată, conectează-te la internet.</translation> -<translation id="6508332297647760142">Permiterea accesului la Webul material</translation> <translation id="6527303717912515753">Trimite</translation> <translation id="6534565668554028783">Google a răspuns prea târziu</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB descărcați</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb index b6119353..e295cc05 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Для устройства отключено определение местоположения. Включите эту функцию в <ph name="BEGIN_LINK" />настройках Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886">Приложение "<ph name="APP_NAME" />" откроется в Chrome. Продолжая, вы соглашаетесь с <ph name="BEGIN_LINK1" />Условиями использования<ph name="END_LINK1" /> и <ph name="BEGIN_LINK2" />Примечанием о конфиденциальности<ph name="END_LINK2" /> Chrome.</translation> <translation id="189172778771606813">Закрыть панель навигации</translation> -<translation id="1897409700584096124">Идет трансляция с сайта</translation> <translation id="1919345977826869612">Реклама</translation> <translation id="1933845786846280168">Выбранная вкладка</translation> <translation id="1938981467853765413">Оставить отзыв</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Может отправлять уведомления</translation> <translation id="3295602654194328831">Скрыть информацию</translation> <translation id="3303414029551471755">Скачать?</translation> -<translation id="3321222012623826478">Этот сервис должен анонимно отправить данный веб-адрес на серверы Google для проверки.</translation> <translation id="3328801116991980348">Информация о сайте</translation> <translation id="3341058695485821946">Узнайте, сколько трафика вы сэкономили</translation> <translation id="3350687908700087792">Закрыть все вкладки инкогнито</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Скачать видео</translation> <translation id="6482749332252372425">Не удалось скачать файл <ph name="FILE_NAME" />, так как места для хранения данных недостаточно.</translation> <translation id="6496823230996795692">При первом запуске приложения "<ph name="APP_NAME" />" требуется подключение к Интернету.</translation> -<translation id="6508332297647760142">Интернет вокруг нас</translation> <translation id="6527303717912515753">Поделиться</translation> <translation id="6534565668554028783">Превышено время ожидания ответа от Google</translation> <translation id="6538442820324228105">Скачано <ph name="GBS" /> ГБ</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb index b93edde..7cdf1a5 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Prístup k polohe je v tomto zariadení vypnutý. Zapnite ho v <ph name="BEGIN_LINK" />Nastaveniach Androidu<ph name="END_LINK" />.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> sa otvorí v Chrome. Pokračovaním vyjadrujete súhlas so <ph name="BEGIN_LINK1" />zmluvnými podmienkami<ph name="END_LINK1" /> a <ph name="BEGIN_LINK2" />upozornením o ochrane súkromia<ph name="END_LINK2" /> Chromu.</translation> <translation id="189172778771606813">Zavrieť navigačný vysúvací panel</translation> -<translation id="1897409700584096124">Na webe prebieha vysielanie</translation> <translation id="1919345977826869612">Reklamy</translation> <translation id="1933845786846280168">Vybratá karta</translation> <translation id="1938981467853765413">Poskytnúť spätnú väzbu</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Upozornenia sú povolené</translation> <translation id="3295602654194328831">Skryť informácie</translation> <translation id="3303414029551471755">Pokračovať a stiahnuť obsah?</translation> -<translation id="3321222012623826478">Táto služba vyžaduje na účely overenia anonymné odoslanie webovej adresy na servery Google.</translation> <translation id="3328801116991980348">Informácie o stránkach</translation> <translation id="3341058695485821946">Zistite, koľko dát ste ušetrili</translation> <translation id="3350687908700087792">Zavrieť všetky karty inkognito</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Stiahnuť video</translation> <translation id="6482749332252372425">Súbor <ph name="FILE_NAME" /> sa nepodarilo stiahnuť z dôvodu nedostatku voľného miesta v úložisku.</translation> <translation id="6496823230996795692">Prvé spustenie aplikácie <ph name="APP_NAME" /> vyžaduje pripojenie k internetu.</translation> -<translation id="6508332297647760142">Zdieľanie fyzického webu</translation> <translation id="6527303717912515753">Zdieľať</translation> <translation id="6534565668554028783">Odpoveď Googlu trvala príliš dlho</translation> <translation id="6538442820324228105">Stiahnuté: <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb index 13c81f33..6f56462 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Dostop do lokacije je izklopljen za to napravo. Vklopite ga lahko v <ph name="BEGIN_LINK" />nastavitvah za Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886">Aplikacija <ph name="APP_NAME" /> se bo odprla v Chromu. Če nadaljujete, se strinjate s Chromovimi <ph name="BEGIN_LINK1" />pogoji storitve<ph name="END_LINK1" /> in <ph name="BEGIN_LINK2" />pravilnikom o zasebnosti<ph name="END_LINK2" />.</translation> <translation id="189172778771606813">Zapri predal za krmarjenje</translation> -<translation id="1897409700584096124">Spletno mesto oddaja</translation> <translation id="1919345977826869612">Oglasi</translation> <translation id="1933845786846280168">Izbrani zavihek</translation> <translation id="1938981467853765413">Povratne informacije</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Obvestila so dovoljena</translation> <translation id="3295602654194328831">Skrij informacije</translation> <translation id="3303414029551471755">Ali želite prenesti vsebino?</translation> -<translation id="3321222012623826478">Ta storitev mora Googlovim strežnikom anonimno poslati naslov tega spletnega mesta zaradi preverjanja.</translation> <translation id="3328801116991980348">Podatki o mestu</translation> <translation id="3341058695485821946">Oglejte si, koliko prenosa podatkov ste prihranili</translation> <translation id="3350687908700087792">Zapri vse zavihke brez beleženja zgodovine</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Prenos videoposnetka</translation> <translation id="6482749332252372425">Prenos datoteke <ph name="FILE_NAME" /> ni uspel zaradi pomanjkanja prostora za shranjevanje.</translation> <translation id="6496823230996795692">Pri prvi uporabi aplikacije <ph name="APP_NAME" /> se morate povezati v internet.</translation> -<translation id="6508332297647760142">Deljenje podatkov z drugimi v projektu Fizični splet</translation> <translation id="6527303717912515753">Skupna raba</translation> <translation id="6534565668554028783">Google se ni odzval v ustreznem času</translation> <translation id="6538442820324228105">Preneseno <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb index 1ec3a4c1..9213f11 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Приступ локацији је искључен за овај уређај. Укључите га у <ph name="BEGIN_LINK" />Android подешавањима<ph name="END_LINK" />.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> ће се отворити у Chrome-у. Ако наставите, прихватате Chrome <ph name="BEGIN_LINK1" />услове коришћења услуге<ph name="END_LINK1" /> и <ph name="BEGIN_LINK2" />обавештење о приватности<ph name="END_LINK2" />.</translation> <translation id="189172778771606813">Затвори фиоку за навигацију</translation> -<translation id="1897409700584096124">Веб-сајт се емитује</translation> <translation id="1919345977826869612">Огласи</translation> <translation id="1933845786846280168">Изабране картице</translation> <translation id="1938981467853765413">Наведите повратне информације</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Обавештења су дозвољена</translation> <translation id="3295602654194328831">Сакриј информације</translation> <translation id="3303414029551471755">Желите ли да наставите са преузимањем садржаја?</translation> -<translation id="3321222012623826478">Ова услуга мора анонимно да пошаље адресу овог веб-сајта Google серверима на верификацију.</translation> <translation id="3328801116991980348">Информације о сајту</translation> <translation id="3341058695485821946">Погледајте колико сте података уштедели</translation> <translation id="3350687908700087792">Затвори све картице без архивирања</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Преузми видео</translation> <translation id="6482749332252372425">Преузимање датотеке <ph name="FILE_NAME" /> није успело због недостатка меморијског простора.</translation> <translation id="6496823230996795692">Да бисте први пут користили <ph name="APP_NAME" />, повежите се на интернет.</translation> -<translation id="6508332297647760142">Дељење преко Интернета око нас</translation> <translation id="6527303717912515753">Дели</translation> <translation id="6534565668554028783">Google-у је требало предуго да одговори</translation> <translation id="6538442820324228105">Преузели сте <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb index ffa16698..e2cc383f 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Platsåtkomst har inaktiverats på enheten. Aktivera det i <ph name="BEGIN_LINK" />Android-inställningarna<ph name="END_LINK" />.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> öppnas i Chrome. Genom att fortsätta godkänner du Chromes <ph name="BEGIN_LINK1" />användarvillkor<ph name="END_LINK1" /> och <ph name="BEGIN_LINK2" />sekretesspolicy<ph name="END_LINK2" />.</translation> <translation id="189172778771606813">Stäng navigeringspanelen</translation> -<translation id="1897409700584096124">Webbplatsen sänds</translation> <translation id="1919345977826869612">Annonser</translation> <translation id="1933845786846280168">Vald flik</translation> <translation id="1938981467853765413">Ge feedback</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Aviseringar tillåts</translation> <translation id="3295602654194328831">Dölj info</translation> <translation id="3303414029551471755">Vill du ladda ned innehållet?</translation> -<translation id="3321222012623826478">Den här webbadressen måste skickas anonymt till Google-servrar för att verifieras i tjänsten.</translation> <translation id="3328801116991980348">Platsinformation</translation> <translation id="3341058695485821946">Se hur mycket data du har sparat</translation> <translation id="3350687908700087792">Stäng alla inkognitoflikar</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Ladda ned video</translation> <translation id="6482749332252372425">Det gick inte att ladda ned <ph name="FILE_NAME" /> eftersom det inte finns tillräckligt med lagringsutrymme.</translation> <translation id="6496823230996795692">Du behöver vara ansluten till internet när du använder <ph name="APP_NAME" /> för första gången.</translation> -<translation id="6508332297647760142">Physical Web-delning</translation> <translation id="6527303717912515753">Dela</translation> <translation id="6534565668554028783">Google tog för lång tid på sig att svara</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB har laddats ned</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb index 1b62fbd..c1c489e 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Kipengele cha mahali kimezimwa kwenye kifaa hiki. Kiwashe katika <ph name="BEGIN_LINK" />Mipangilio ya Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886">Itafungua <ph name="APP_NAME" /> katika Chrome. Kwa kuendelea, unakubali <ph name="BEGIN_LINK1" />Sheria na Masharti<ph name="END_LINK1" /> na <ph name="BEGIN_LINK2" />Ilani ya Faragha<ph name="END_LINK2" /> ya Chrome.</translation> <translation id="189172778771606813">Funga droo ya kusogeza</translation> -<translation id="1897409700584096124">Tovuti inatangaza</translation> <translation id="1919345977826869612">Matangazo</translation> <translation id="1933845786846280168">Kichupo Kilichochaguliwa</translation> <translation id="1938981467853765413">Toa maoni</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Arifa zinaruhusiwa</translation> <translation id="3295602654194328831">Ficha Maelezo</translation> <translation id="3303414029551471755">Ungependa kuendelea kupakua maudhui?</translation> -<translation id="3321222012623826478">Huduma hii inahitaji kutuma anwani ya tovuti hii kwenye seva za Google bila maelezo yanayoweza kukutambulisha kwa ajili ya uthibitishaji.</translation> <translation id="3328801116991980348">Maelezo ya tovuti</translation> <translation id="3341058695485821946">Ona kiasi cha data ulichookoa</translation> <translation id="3350687908700087792">Funga vichupo vyote fiche</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Pakua video</translation> <translation id="6482749332252372425">Kipakuliwa cha <ph name="FILE_NAME" /> hakijafaulu kwa sababu hakuna nafasi ya hifadhi ya kutosha.</translation> <translation id="6496823230996795692">Ili kutumia <ph name="APP_NAME" /> kwa mara ya kwanza, tafadhali unganisha kwenye intaneti.</translation> -<translation id="6508332297647760142">Kushiriki Wavuti kila Mahali</translation> <translation id="6527303717912515753">Shiriki</translation> <translation id="6534565668554028783">Google imechukua muda mrefu kujibu</translation> <translation id="6538442820324228105">Umepakua GB <ph name="GBS" /></translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_th.xtb b/chrome/android/java/strings/translations/android_chrome_strings_th.xtb index 1e66ac9..dda8002 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_th.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_th.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">ตอนนี้ตำแหน่งสำหรับอุปกรณ์เครื่องนี้ปิดอยู่ เปิดตำแหน่งได้ใน<ph name="BEGIN_LINK" />การตั้งค่า Android<ph name="END_LINK" /></translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> จะเปิดขึ้นใน Chrome การดำเนินการต่อแสดงว่าคุณยอมรับ<ph name="BEGIN_LINK1" />ข้อกำหนดในการให้บริการ<ph name="END_LINK1" />และ<ph name="BEGIN_LINK2" />ประกาศเกี่ยวกับนโยบายความเป็นส่วนตัว<ph name="END_LINK2" />ของ Chrome</translation> <translation id="189172778771606813">ปิดลิ้นชักการนำทาง</translation> -<translation id="1897409700584096124">เว็บไซต์กำลังออกอากาศ</translation> <translation id="1919345977826869612">โฆษณา</translation> <translation id="1933845786846280168">แท็บที่เลือก</translation> <translation id="1938981467853765413">แสดงความคิดเห็น</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">อนุญาตให้แสดงการแจ้งเตือน</translation> <translation id="3295602654194328831">ซ่อนข้อมูล</translation> <translation id="3303414029551471755">ต้องการดำเนินการดาวน์โหลดเนื้อหานี้ไหม</translation> -<translation id="3321222012623826478">บริการนี้ต้องส่งที่อยู่เว็บไซต์นี้แบบไม่ระบุตัวตนไปยังเซิร์ฟเวอร์ของ Google เพื่อการยืนยัน</translation> <translation id="3328801116991980348">ข้อมูลไซต์</translation> <translation id="3341058695485821946">ดูปริมาณอินเทอร์เน็ตที่คุณประหยัดไปได้</translation> <translation id="3350687908700087792">ปิดแท็บไม่ระบุตัวตนทั้งหมด</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">ดาวน์โหลดวิดีโอ</translation> <translation id="6482749332252372425">การดาวน์โหลด <ph name="FILE_NAME" /> ล้มเหลวเพราะพื้นที่เก็บข้อมูลไม่เพียงพอ</translation> <translation id="6496823230996795692">โปรดเชื่อมต่ออินเทอร์เน็ตเพื่อใช้ <ph name="APP_NAME" /> เป็นครั้งแรก</translation> -<translation id="6508332297647760142">การแชร์ Physical Web</translation> <translation id="6527303717912515753">แชร์</translation> <translation id="6534565668554028783">Google ใช้เวลาตอบกลับนานเกินไป</translation> <translation id="6538442820324228105">ดาวน์โหลดแล้ว <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb index 69b80d5c..152b703 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Konum erişimi bu cihaz için kapalı. Konum erişimini <ph name="BEGIN_LINK" />Android Ayarları<ph name="END_LINK" />'ndan açın.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> Chrome'da açılacak. Devam ederek Chrome'un <ph name="BEGIN_LINK1" />Hizmet Şartları<ph name="END_LINK1" />'nı ve <ph name="BEGIN_LINK2" />Gizlilik Uyarısı<ph name="END_LINK2" />'nı kabul etmiş olursunuz.</translation> <translation id="189172778771606813">Gezinme çekmecesini kapat</translation> -<translation id="1897409700584096124">Web sitesi yayında</translation> <translation id="1919345977826869612">Reklamlar</translation> <translation id="1933845786846280168">Seçili Sekme</translation> <translation id="1938981467853765413">Geri bildirim gönder</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Bildirimlere izin veriliyor</translation> <translation id="3295602654194328831">Bilgileri Gizle</translation> <translation id="3303414029551471755">İçeriği indirme işlemine başlansın mı?</translation> -<translation id="3321222012623826478">Bu hizmetin bu web sitesi adresini doğrulama için anonim olarak Google sunucularına göndermesi gerekir.</translation> <translation id="3328801116991980348">Site bilgileri</translation> <translation id="3341058695485821946">Ne kadar veri tasarrufu sağladığınıza bakın</translation> <translation id="3350687908700087792">Tüm gizli sekmeleri kapatın.</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Videoyu indir</translation> <translation id="6482749332252372425">Depolama alanı yetersiz olduğu için <ph name="FILE_NAME" /> dosyası indirilemedi.</translation> <translation id="6496823230996795692"><ph name="APP_NAME" /> uygulamasını ilk kez kullanmak için lütfen internete bağlanın.</translation> -<translation id="6508332297647760142">Fiziksel Web Paylaşımı</translation> <translation id="6527303717912515753">Paylaş</translation> <translation id="6534565668554028783">Google çok geç yanıt verdi</translation> <translation id="6538442820324228105"><ph name="GBS" /> GB indirildi</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb b/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb index 83be4c7..9619253d 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">На цьому пристрої вимкнено доступ до геоданих. Увімкніть його в <ph name="BEGIN_LINK" />налаштуваннях Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886">Додаток <ph name="APP_NAME" /> відкриватиметься в Chrome. Продовжуючи, ви приймаєте <ph name="BEGIN_LINK1" />Умови використання<ph name="END_LINK1" /> та <ph name="BEGIN_LINK2" />Примітку про конфіденційність<ph name="END_LINK2" /> Chrome.</translation> <translation id="189172778771606813">Закрити панель навігації</translation> -<translation id="1897409700584096124">Транслюється веб-сайт</translation> <translation id="1919345977826869612">Оголошення</translation> <translation id="1933845786846280168">Вибрана вкладка</translation> <translation id="1938981467853765413">Надіслати відгук</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Сповіщення дозволено</translation> <translation id="3295602654194328831">Сховати інформацію</translation> <translation id="3303414029551471755">Завантажити вміст?</translation> -<translation id="3321222012623826478">Цій службі потрібно анонімно надіслати адресу цього веб-сайту на сервери Google для перевірки.</translation> <translation id="3328801116991980348">Інформація про сайт</translation> <translation id="3341058695485821946">Перевірте обсяг збережених даних</translation> <translation id="3350687908700087792">Закрити всі анонімні вікна</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Завантажити відео</translation> <translation id="6482749332252372425">Не вдалося завантажити файл <ph name="FILE_NAME" />. Замало місця.</translation> <translation id="6496823230996795692">Щоб запустити додаток <ph name="APP_NAME" /> уперше, під’єднайте пристрій до Інтернету.</translation> -<translation id="6508332297647760142">Доступ до даних Інтернету навколо нас</translation> <translation id="6527303717912515753">Надіслати</translation> <translation id="6534565668554028783">Google довго не відповідає</translation> <translation id="6538442820324228105">Завантажено <ph name="GBS" /> ГБ</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb b/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb index 2238898..8cbb679f 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">Đã tắt quyền truy cập vị trí đối với thiết bị này. Hãy bật trong <ph name="BEGIN_LINK" />Cài đặt Android<ph name="END_LINK" />.</translation> <translation id="1891331835972267886"><ph name="APP_NAME" /> sẽ mở trong Chrome. Bằng việc tiếp tục, bạn đồng ý với <ph name="BEGIN_LINK1" />Điều khoản dịch vụ<ph name="END_LINK1" /> và <ph name="BEGIN_LINK2" />Thông báo bảo mật<ph name="END_LINK2" /> của Chrome.</translation> <translation id="189172778771606813">Đóng ngăn điều hướng</translation> -<translation id="1897409700584096124">Trang web đang phát</translation> <translation id="1919345977826869612">Quảng cáo</translation> <translation id="1933845786846280168">Tab được chọn</translation> <translation id="1938981467853765413">Cung cấp phản hồi</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">Cho phép thông báo</translation> <translation id="3295602654194328831">Ẩn thông tin</translation> <translation id="3303414029551471755">Tiếp tục tải xuống nội dung?</translation> -<translation id="3321222012623826478">Dịch vụ này cần gửi ẩn danh địa chỉ trang web này đến máy chủ của Google để xác minh.</translation> <translation id="3328801116991980348">Thông tin về trang web</translation> <translation id="3341058695485821946">Xem lượng dữ liệu bạn đã tiết kiệm được</translation> <translation id="3350687908700087792">Đóng tất cả các tab ẩn danh</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">Tải video xuống</translation> <translation id="6482749332252372425">Tải xuống <ph name="FILE_NAME" /> không thành công do thiếu dung lượng bộ nhớ.</translation> <translation id="6496823230996795692">Để sử dụng <ph name="APP_NAME" /> lần đầu tiên, vui lòng kết nối Internet.</translation> -<translation id="6508332297647760142">Chia sẻ Web trong cuộc sống</translation> <translation id="6527303717912515753">Chia sẻ</translation> <translation id="6534565668554028783">Google mất quá nhiều thời gian để phản hồi</translation> <translation id="6538442820324228105">Đã tải xuống <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb index 8d62a24..5a1c09cc 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">此设备的位置信息使用权已关闭;若想开启这项权限,请转到 <ph name="BEGIN_LINK" />Android 设置<ph name="END_LINK" />。</translation> <translation id="1891331835972267886"><ph name="APP_NAME" />将在 Chrome 中打开。继续操作即表示您同意 Chrome 的<ph name="BEGIN_LINK1" />服务条款<ph name="END_LINK1" />和<ph name="BEGIN_LINK2" />隐私权声明<ph name="END_LINK2" />。</translation> <translation id="189172778771606813">关闭抽屉式导航栏</translation> -<translation id="1897409700584096124">网站正在广播</translation> <translation id="1919345977826869612">广告</translation> <translation id="1933845786846280168">所选的标签页</translation> <translation id="1938981467853765413">提供反馈</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">允许显示通知</translation> <translation id="3295602654194328831">隐藏信息</translation> <translation id="3303414029551471755">要开始下载该内容吗?</translation> -<translation id="3321222012623826478">该服务需要以匿名方式将此网址发送到 Google 服务器进行验证。</translation> <translation id="3328801116991980348">网站信息</translation> <translation id="3341058695485821946">查看您已节省多少数据流量</translation> <translation id="3350687908700087792">关闭所有隐身标签页</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">下载视频</translation> <translation id="6482749332252372425">未能成功下载 <ph name="FILE_NAME" />,因为存储空间不足。</translation> <translation id="6496823230996795692">如果您是首次使用<ph name="APP_NAME" />,则需连接到互联网。</translation> -<translation id="6508332297647760142">实物网共享</translation> <translation id="6527303717912515753">分享</translation> <translation id="6534565668554028783">Google 的响应速度太慢</translation> <translation id="6538442820324228105">已下载 <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb index f74b50b..59d3fc7b 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb
@@ -98,7 +98,6 @@ <translation id="1887786770086287077">這部裝置的位置資訊存取權已關閉。請在 <ph name="BEGIN_LINK" />Android 設定<ph name="END_LINK" />中予以開啟。</translation> <translation id="1891331835972267886">「<ph name="APP_NAME" />」將在 Chrome 中開啟。繼續操作即表示您同意接受 Chrome 的《<ph name="BEGIN_LINK1" />服務條款<ph name="END_LINK1" />》和《<ph name="BEGIN_LINK2" />隱私權聲明<ph name="END_LINK2" />》。</translation> <translation id="189172778771606813">關閉導覽匣</translation> -<translation id="1897409700584096124">網站正在播送</translation> <translation id="1919345977826869612">廣告</translation> <translation id="1933845786846280168">選取的分頁</translation> <translation id="1938981467853765413">提供意見</translation> @@ -246,7 +245,6 @@ <translation id="32895400574683172">允許顯示通知</translation> <translation id="3295602654194328831">隱藏資訊</translation> <translation id="3303414029551471755">繼續下載這項內容?</translation> -<translation id="3321222012623826478">這項服務需要匿名傳送這個網址到 Google 伺服器,加以驗證。</translation> <translation id="3328801116991980348">網站資訊</translation> <translation id="3341058695485821946">查看節省的數據用量</translation> <translation id="3350687908700087792">關閉所有無痕式分頁</translation> @@ -593,7 +591,6 @@ <translation id="6475951671322991020">下載影片</translation> <translation id="6482749332252372425">儲存空間不足,因此無法下載 <ph name="FILE_NAME" />。</translation> <translation id="6496823230996795692">初次使用「<ph name="APP_NAME" />」時請連線至網際網路。</translation> -<translation id="6508332297647760142">實體化網路共用</translation> <translation id="6527303717912515753">分享</translation> <translation id="6534565668554028783">Google 的回應時間過長</translation> <translation id="6538442820324228105">已下載 <ph name="GBS" /> GB</translation>
diff --git a/chrome/android/java/version_strings.xml.template b/chrome/android/java/version_strings.xml.template new file mode 100644 index 0000000..3159ddfc --- /dev/null +++ b/chrome/android/java/version_strings.xml.template
@@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2018 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. +--> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools"> + <string name="product_version" translatable="false" tools:ignore="UnusedResources">@MAJOR@.@MINOR@.@BUILD@.@PATCH@</string> +</resources>
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni index 3741e19..ab695f44 100644 --- a/chrome/android/java_sources.gni +++ b/chrome/android/java_sources.gni
@@ -1120,6 +1120,7 @@ "java/src/org/chromium/chrome/browser/signin/AccountAdder.java", "java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java", "java/src/org/chromium/chrome/browser/signin/AccountManagementScreenHelper.java", + "java/src/org/chromium/chrome/browser/signin/AccountPickerDialogFragment.java", "java/src/org/chromium/chrome/browser/signin/AccountSigninActivity.java", "java/src/org/chromium/chrome/browser/signin/AccountSigninChooseView.java", "java/src/org/chromium/chrome/browser/signin/AccountSigninConfirmationView.java",
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java index 1e996a0..c4cf36ff 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java
@@ -2197,6 +2197,7 @@ * of selection bounds, so this helps prevent a regression with that. */ @Test + @DisabledTest(message = "crbug.com/828780") @LargeTest @Feature({"ContextualSearch"}) @DisableIf.Build(sdk_is_less_than = Build.VERSION_CODES.LOLLIPOP, message = "crbug.com/818897") @@ -2212,6 +2213,7 @@ * thread instead of the UI thread for some wait sequences. */ @Test + @DisabledTest(message = "crbug.com/828780") @LargeTest @Feature({"ContextualSearch"}) @DisableIf.Build(sdk_is_less_than = Build.VERSION_CODES.LOLLIPOP, message = "crbug.com/818897")
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageTest.java index b82c418..6df537a8 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageTest.java
@@ -4,11 +4,16 @@ package org.chromium.chrome.browser.ntp; +import static android.support.test.espresso.Espresso.onView; +import static android.support.test.espresso.action.ViewActions.click; +import static android.support.test.espresso.matcher.ViewMatchers.withId; + import android.graphics.Canvas; import android.support.test.InstrumentationRegistry; import android.support.test.filters.LargeTest; import android.support.test.filters.MediumTest; import android.support.test.filters.SmallTest; +import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.KeyEvent; import android.view.View; @@ -38,10 +43,16 @@ import org.chromium.chrome.browser.ChromeFeatureList; import org.chromium.chrome.browser.ChromeSwitches; import org.chromium.chrome.browser.UrlConstants; +import org.chromium.chrome.browser.ntp.cards.NewTabPageAdapter; import org.chromium.chrome.browser.ntp.cards.NewTabPageRecyclerView; +import org.chromium.chrome.browser.ntp.cards.SuggestionsSection; +import org.chromium.chrome.browser.ntp.snippets.KnownCategories; +import org.chromium.chrome.browser.ntp.snippets.SectionHeader; import org.chromium.chrome.browser.omnibox.LocationBarLayout; import org.chromium.chrome.browser.omnibox.UrlBar; import org.chromium.chrome.browser.preferences.ChromePreferenceManager; +import org.chromium.chrome.browser.preferences.Pref; +import org.chromium.chrome.browser.preferences.PrefServiceBridge; import org.chromium.chrome.browser.suggestions.SiteSuggestion; import org.chromium.chrome.browser.suggestions.TileSectionType; import org.chromium.chrome.browser.suggestions.TileSource; @@ -60,6 +71,7 @@ import org.chromium.chrome.test.util.browser.ChromeModernDesign; import org.chromium.chrome.test.util.browser.Features; import org.chromium.chrome.test.util.browser.Features.DisableFeatures; +import org.chromium.chrome.test.util.browser.Features.EnableFeatures; import org.chromium.chrome.test.util.browser.RecyclerViewTestUtils; import org.chromium.chrome.test.util.browser.suggestions.FakeMostVisitedSites; import org.chromium.chrome.test.util.browser.suggestions.SuggestionsDependenciesRule; @@ -569,6 +581,67 @@ mNtp.getManagerForTesting().getSuggestionsSource().areRemoteSuggestionsEnabled()); } + @Test + @SmallTest + @Feature({"NewTabPage"}) + @EnableFeatures(ChromeFeatureList.NTP_ARTICLE_SUGGESTIONS_EXPANDABLE_HEADER) + public void testArticleExpandableHeaderOnMultipleTabs() throws Exception { + // Open a new tab. + SuggestionsSection firstSection = getArticleSectionOnNewTab(); + SectionHeader firstHeader = firstSection.getHeaderItemForTesting(); + int firstTabId = mActivityTestRule.getActivity().getActivityTab().getId(); + // Check header is expanded. + Assert.assertTrue(firstHeader.isExpandable() && firstHeader.isExpanded()); + Assert.assertTrue(firstSection.getItemCount() > 1); + Assert.assertTrue(getPreferenceForExpandableHeader()); + // Toggle header on the current tab. + onView(withId(R.id.header_title)).perform(click()); + // Check header is collapsed. + Assert.assertTrue(firstHeader.isExpandable() && !firstHeader.isExpanded()); + Assert.assertEquals(1, firstSection.getItemCount()); + Assert.assertFalse(getPreferenceForExpandableHeader()); + + // Open a second new tab. + SuggestionsSection secondSection = getArticleSectionOnNewTab(); + SectionHeader secondHeader = secondSection.getHeaderItemForTesting(); + // Check header on the second tab is collapsed. + Assert.assertTrue(secondHeader.isExpandable() && !secondHeader.isExpanded()); + Assert.assertEquals(1, secondSection.getItemCount()); + Assert.assertFalse(getPreferenceForExpandableHeader()); + + // Toggle header on the second tab. + onView(withId(R.id.header_title)).perform(click()); + // Check header on the second tab is expanded. + Assert.assertTrue(secondHeader.isExpandable() && secondHeader.isExpanded()); + Assert.assertTrue(secondSection.getItemCount() > 1); + Assert.assertTrue(getPreferenceForExpandableHeader()); + // Go back to the first tab and check header is expanded. + ChromeTabUtils.switchTabInCurrentTabModel(mActivityTestRule.getActivity(), firstTabId); + Assert.assertTrue(firstHeader.isExpandable() && firstHeader.isExpanded()); + Assert.assertTrue(firstSection.getItemCount() > 1); + Assert.assertTrue(getPreferenceForExpandableHeader()); + } + + @Test + @SmallTest + @Feature({"NewTabPage", "RenderTest"}) + @EnableFeatures(ChromeFeatureList.NTP_ARTICLE_SUGGESTIONS_EXPANDABLE_HEADER) + public void testArticleExpandableHeaderAppearance() throws Exception { + NewTabPage ntp = + (NewTabPage) mActivityTestRule.getActivity().getActivityTab().getNativePage(); + RecyclerView recyclerView = ntp.getNewTabPageView().getRecyclerView(); + NewTabPageAdapter adapter = (NewTabPageAdapter) recyclerView.getAdapter(); + View view = recyclerView.findViewHolderForAdapterPosition( + adapter.getFirstHeaderPosition()).itemView; + + // Check header is expanded. + mRenderTestRule.render(view, "expandable_header_expanded"); + // Toggle header on the current tab. + onView(withId(R.id.header_title)).perform(click()); + // Check header is collapsed. + mRenderTestRule.render(view, "expandable_header_collapsed"); + } + private void assertThumbnailInvalidAndRecapture() { Assert.assertTrue(mNtp.shouldCaptureThumbnail()); captureThumbnail(); @@ -695,4 +768,17 @@ mActivityTestRule.getActivity().getTabModelSelector().isIncognitoSelected()); } } + + private SuggestionsSection getArticleSectionOnNewTab() throws Exception { + Tab tab = mActivityTestRule.loadUrlInNewTab(UrlConstants.NTP_URL); + NewTabPage ntp = (NewTabPage) tab.getNativePage(); + NewTabPageAdapter adapter = + (NewTabPageAdapter) ntp.getNewTabPageView().getRecyclerView().getAdapter(); + return adapter.getSectionListForTesting().getSection(KnownCategories.ARTICLES); + } + + private boolean getPreferenceForExpandableHeader() throws Exception { + return ThreadUtils.runOnUiThreadBlocking( + () -> PrefServiceBridge.getInstance().getBoolean(Pref.NTP_ARTICLES_LIST_VISIBLE)); + } }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/cards/NewTabPageRecyclerViewTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/cards/NewTabPageRecyclerViewTest.java index 9717f91..fbc37c28 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/cards/NewTabPageRecyclerViewTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/cards/NewTabPageRecyclerViewTest.java
@@ -21,12 +21,16 @@ import org.junit.runner.RunWith; import org.chromium.base.ThreadUtils; +import org.chromium.base.test.params.ParameterAnnotations; +import org.chromium.base.test.params.ParameterSet; +import org.chromium.base.test.params.ParameterizedRunner; import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Restriction; import org.chromium.base.test.util.RetryOnFailure; import org.chromium.chrome.R; +import org.chromium.chrome.browser.ChromeFeatureList; import org.chromium.chrome.browser.ChromeSwitches; import org.chromium.chrome.browser.UrlConstants; import org.chromium.chrome.browser.ntp.ContextMenuManager; @@ -39,7 +43,7 @@ import org.chromium.chrome.browser.ntp.snippets.SnippetArticle; import org.chromium.chrome.browser.suggestions.ContentSuggestionsAdditionalAction; import org.chromium.chrome.browser.tab.Tab; -import org.chromium.chrome.test.ChromeJUnit4ClassRunner; +import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate; import org.chromium.chrome.test.ChromeTabbedActivityTestRule; import org.chromium.chrome.test.util.ChromeTabUtils; import org.chromium.chrome.test.util.NewTabPageTestUtils; @@ -62,7 +66,8 @@ /** * Instrumentation tests for {@link NewTabPageRecyclerView}. */ -@RunWith(ChromeJUnit4ClassRunner.class) +@RunWith(ParameterizedRunner.class) +@ParameterAnnotations.UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class) @CommandLineFlags.Add(ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE) @Features.DisableFeatures("NetworkPrediction") @RetryOnFailure @@ -73,6 +78,11 @@ @Rule public SuggestionsDependenciesRule mSuggestionsDeps = new SuggestionsDependenciesRule(); + @ParameterAnnotations.ClassParameter + private static List<ParameterSet> sClassParams = + Arrays.asList(new ParameterSet().value(false).name("DisableExpandableHeader"), + new ParameterSet().value(true).name("EnableExpandableHeader")); + private static final String TEST_PAGE = "/chrome/test/data/android/navigate/simple.html"; private static final long FAKE_PUBLISH_TIMESTAMP = 1466614774; private static final long FAKE_FETCH_TIMESTAMP = 1466634774; @@ -84,13 +94,27 @@ @CategoryInt private static final int TEST_CATEGORY = KnownCategories.ARTICLES; + private final boolean mEnableExpandableHeader; + private Tab mTab; private NewTabPage mNtp; private EmbeddedTestServer mTestServer; private FakeSuggestionsSource mSource; + public NewTabPageRecyclerViewTest(boolean enableExpandableHeader) { + mEnableExpandableHeader = enableExpandableHeader; + } + @Before public void setUp() throws Exception { + if (mEnableExpandableHeader) { + Features.getInstance().enable( + ChromeFeatureList.NTP_ARTICLE_SUGGESTIONS_EXPANDABLE_HEADER); + } else { + Features.getInstance().disable( + ChromeFeatureList.NTP_ARTICLE_SUGGESTIONS_EXPANDABLE_HEADER); + } + mTestServer = EmbeddedTestServer.createAndStartServer(InstrumentationRegistry.getContext()); FakeMostVisitedSites mostVisitedSites = new FakeMostVisitedSites();
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/SectionListTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/SectionListTest.java index 4a03bbc..144b19e 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/SectionListTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/SectionListTest.java
@@ -394,6 +394,27 @@ @Test @Feature({"Ntp"}) @EnableFeatures(ChromeFeatureList.NTP_ARTICLE_SUGGESTIONS_EXPANDABLE_HEADER) + public void testArticlesHeaderExpandableWithOtherSections() { + registerCategory(mSuggestionSource, KnownCategories.ARTICLES, 1); + registerCategory(mSuggestionSource, CATEGORY1, 1); + + SectionList sectionList = new SectionList(mUiDelegate, mOfflinePageBridge); + sectionList.refreshSuggestions(); + + // Check article header is expandable. + SuggestionsSection articles = sectionList.getSection(KnownCategories.ARTICLES); + assertTrue(articles.getHeaderItemForTesting().isVisible()); + assertTrue(articles.getHeaderItemForTesting().isExpandable()); + + // Check header of other section is not expandable. + SuggestionsSection otherSection = sectionList.getSection(CATEGORY1); + assertTrue(otherSection.getHeaderItemForTesting().isVisible()); + assertFalse(otherSection.getHeaderItemForTesting().isExpandable()); + } + + @Test + @Feature({"Ntp"}) + @EnableFeatures(ChromeFeatureList.NTP_ARTICLE_SUGGESTIONS_EXPANDABLE_HEADER) public void testSuggestionsVisibilityOnPreferenceChanged() { when(mPrefServiceBridge.getBoolean(ARTICLES_SECTION_ENABLED_PREF)).thenReturn(true); when(mPrefServiceBridge.getBoolean(EXPANDABLE_HEADER_PREF)).thenReturn(true);
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp index 93cafa9e..4b47f0e 100644 --- a/chrome/app/chromeos_strings.grdp +++ b/chrome/app/chromeos_strings.grdp
@@ -560,7 +560,7 @@ Open with... </message> <message name="IDS_FILE_BROWSER_MORE_ACTIONS_BUTTON_LABEL" desc="Menu item label, showing dialog to choose extension to open/share/pack/etc... selected files or directories."> - More actions... + More actions </message> <message name="IDS_FILE_BROWSER_OPEN_WITH_VERB_BUTTON_LABEL" desc="Verb that describe the action of opening one or more files or directories with the given extension."> Open with <ph name="EXTENSION_NAME">$1<ex>Gallery</ex></ph>
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index a2649aa..8b4cb14 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -1638,7 +1638,7 @@ </message> <message name="IDS_DOWNLOAD_MORE_ACTIONS" desc="Tooltip of a button on the downloads page that shows a menu with actions like 'Open downloads folder' or 'Clear all'"> - More actions... + More actions </message> <message name="IDS_DOWNLOAD_BY_EXTENSION_URL" desc="Indicates which extension downloaded this file by name and URL.">
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb index 8f638bc..9667811 100644 --- a/chrome/app/resources/generated_resources_bn.xtb +++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -4121,7 +4121,7 @@ <translation id="7503191893372251637">Netscape শংসাপত্রের প্রকার</translation> <translation id="7503821294401948377">ব্রাউজার ক্রিয়ার জন্য '<ph name="ICON" />' আইকন লোড করা যায়নি৷</translation> <translation id="750509436279396091">ডাউনলোডগুলির ফোল্ডার খুলুন</translation> -<translation id="7505167922889582512">লুকানো ফাইলগুলি দেখান</translation> +<translation id="7505167922889582512">লুকানো ফাইল দেখুন</translation> <translation id="7506541170099744506">আপনার <ph name="DEVICE_TYPE" /> এন্টারপ্রাইজ পরিচালনার জন্য সফলভাবে নথিভুক্ত হয়েছে।</translation> <translation id="7507930499305566459">স্থিতি প্রতিক্রিয়া শংসাপত্র</translation> <translation id="7508545000531937079">স্লাইডশো</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb index 5f61e1d..924c0a4 100644 --- a/chrome/app/resources/generated_resources_ca.xtb +++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -2195,7 +2195,7 @@ <translation id="444134486829715816">Amplia...</translation> <translation id="4441548209689510310">Mostra les opcions del corrector ortogràfic</translation> <translation id="4442424173763614572">La cerca de DNS ha fallat</translation> -<translation id="4442498890824221158">Configuració de MultiDevice</translation> +<translation id="4442498890824221158">Configuració multidispositiu</translation> <translation id="444267095790823769">Excepcions de contingut protegit</translation> <translation id="4443536555189480885">&Ajuda</translation> <translation id="4444304522807523469">Accedir als escàners del document adjunts mitjançant USB o a la xarxa local</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index c0a68d9..f5ad6a66 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -1377,7 +1377,7 @@ <translation id="308330327687243295">https://mail.google.com/mail/?extsrc=mailto&url=%s</translation> <translation id="3084548735795614657">Slip for at installere</translation> <translation id="3084771660770137092">Chrome løb tør for hukommelse, eller processen for websiden blev afbrudt af en anden grund. Genindlæs eller gå til en anden side for at fortsætte.</translation> -<translation id="3085412380278336437">Websitet anvender muligvis dit kamera</translation> +<translation id="3085412380278336437">Websitet kan anvende dit kamera</translation> <translation id="3085752524577180175">SOCKS-host</translation> <translation id="3088325635286126843">&Omdøb...</translation> <translation id="3089231390674410424">Det ser ud til, at der er et problem med dine loginoplysninger. Sørg for, at du er logget ind på korrekt vis, og prøv igen.</translation> @@ -3578,7 +3578,7 @@ <translation id="661719348160586794">Dine gemte adgangskoder vises her.</translation> <translation id="6618097958368085618">Behold alligevel</translation> <translation id="6619058681307408113">Line Printer Daemon (LPD)</translation> -<translation id="661907246513853610">Websitet sporer muligvis din placering</translation> +<translation id="661907246513853610">Websitet kan spore din placering</translation> <translation id="6619801788773578757">Tilføj terminalapp</translation> <translation id="6619990499523117484">Bekræft din pinkode</translation> <translation id="662080504995468778">Bliv her</translation> @@ -4223,7 +4223,7 @@ <translation id="7665369617277396874">Tilføj konto</translation> <translation id="7671130400130574146">Brug systemets titellinje og rammer</translation> <translation id="7672520070349703697"><ph name="HUNG_IFRAME_URL" /> på <ph name="PAGE_TITLE" />.</translation> -<translation id="7681095912841365527">Websitet anvender muligvis Bluetooth</translation> +<translation id="7681095912841365527">Websitet kan anvende Bluetooth</translation> <translation id="7683373461016844951">Hvis du vil fortsætte, skal du klikke på Tilføj person for at oprette en ny profil til din mailadresse på <ph name="DOMAIN" />.</translation> <translation id="7684212569183643648">Installeret af din administrator</translation> <translation id="7684559058815332124">Gå til loginsiden for captive portal</translation> @@ -5045,7 +5045,7 @@ <translation id="8986362086234534611">Glem</translation> <translation id="8986494364107987395">Send automatisk brugsstatistikker og nedbrudsrapporter til Google</translation> <translation id="8987927404178983737">Måned</translation> -<translation id="8991520179165052608">Websitet anvender muligvis din mikrofon</translation> +<translation id="8991520179165052608">Websitet kan anvende din mikrofon</translation> <translation id="899403249577094719">Webadresse for Netscape-certifikatbase</translation> <translation id="8995603266996330174">Administreres af <ph name="DOMAIN" /></translation> <translation id="8996526648899750015">Tilføj konto...</translation> @@ -5169,7 +5169,7 @@ <translation id="9174212595744391062">Dette rydder cookies og cachen for alle websites, f.eks.</translation> <translation id="9176611096776448349"><ph name="WINDOW_TITLE" /> – en Bluetooth-enhed er forbundet</translation> <translation id="9177499212658576372">Du har i øjeblikket forbindelse til netværket <ph name="NETWORK_TYPE" />.</translation> -<translation id="9180380851667544951">Websitet deler muligvis din skærm</translation> +<translation id="9180380851667544951">Websitet kan dele din skærm</translation> <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> fra <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation> <translation id="9187210477874601037">Enheden kunne ikke knyttes til domænet. Dette kan skyldes utilstrækkelige privilegier for din konto på serveren.</translation> <translation id="9188441292293901223">Opdater din telefon til en nyere version af Android for at låse denne <ph name="DEVICE_TYPE" /> op.</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb index 3f698f29..84b1a800 100644 --- a/chrome/app/resources/generated_resources_es.xtb +++ b/chrome/app/resources/generated_resources_es.xtb
@@ -684,7 +684,7 @@ <translation id="2071393345806050157">No hay ningún archivo de registro local.</translation> <translation id="2074527029802029717">No fijar pestaña</translation> <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" />% de batería</translation> -<translation id="2075959085554270910">Te permite habilitar o inhabilitar las funciones tocar para hacer clic y Tocar y arrastrar</translation> +<translation id="2075959085554270910">Te permite habilitar o inhabilitar las funciones tocar para hacer clic y tocar y arrastrar</translation> <translation id="2076269580855484719">Ocultar este complemento</translation> <translation id="2076672359661571384">Medio (recomendado)</translation> <translation id="2077129598763517140">Utilizar aceleración por hardware cuando esté disponible</translation> @@ -1800,7 +1800,7 @@ <translation id="3752582316358263300">Aceptar...</translation> <translation id="3752673729237782832">Mis dispositivos</translation> <translation id="3755411799582650620">Tu <ph name="PHONE_NAME" /> ya puede desbloquear este <ph name="DEVICE_TYPE" /> también.</translation> -<translation id="375636864092143889">El sitio web está usando el micrófono</translation> +<translation id="375636864092143889">El sitio web está usando tu micrófono</translation> <translation id="3758201569871381925">Asegúrate de que el dispositivo Hotrod esté encendido y conectado a un televisor.</translation> <translation id="375841316537350618">Descargando secuencia de comandos proxy...</translation> <translation id="3758842566811519622">Cookies establecidas</translation> @@ -2197,7 +2197,7 @@ <translation id="444134486829715816">Ampliar...</translation> <translation id="4441548209689510310">Mostrar opciones de revisión ortográfica</translation> <translation id="4442424173763614572">Error al buscar DNS</translation> -<translation id="4442498890824221158">Configuración de la función de varios dispositivos</translation> +<translation id="4442498890824221158">Configuración multidispositivo</translation> <translation id="444267095790823769">Excepciones de contenido protegido</translation> <translation id="4443536555189480885">&Ayuda</translation> <translation id="4444304522807523469">Acceder a escáneres de documentos conectados a través de USB o en la red local</translation> @@ -3962,7 +3962,7 @@ <translation id="7254951428499890870">¿Seguro que quieres iniciar <ph name="APP_NAME" /> en modo de diagnóstico?</translation> <translation id="7255220508626648026">Enviando: <ph name="ROUTETITLE" /></translation> <translation id="7255935316994522020">Aplicar</translation> -<translation id="7256069762010468647">El sitio web está usando la cámara</translation> +<translation id="7256069762010468647">El sitio web está usando tu cámara</translation> <translation id="7256405249507348194">Error no reconocido: <ph name="DESC" /></translation> <translation id="7256710573727326513">Abrir en una pestaña</translation> <translation id="7257666756905341374">Leer los datos que copias y pegas</translation> @@ -4012,7 +4012,7 @@ <translation id="7339785458027436441">Comprobar ortografía al escribir</translation> <translation id="7339898014177206373">Nueva ventana</translation> <translation id="7340431621085453413"><ph name="FULLSCREEN_ORIGIN" /> se muestra ahora en pantalla completa.</translation> -<translation id="7340650977506865820">El sitio web está compartiendo la pantalla</translation> +<translation id="7340650977506865820">El sitio web está compartiendo tu pantalla</translation> <translation id="7345706641791090287">Confirma tu contraseña</translation> <translation id="7346909386216857016">Entendido</translation> <translation id="7347751611463936647">Para utilizar esta extensión, escribe "<ph name="EXTENSION_KEYWORD" />", pulsa el tabulador e introduce el comando o la búsqueda que desees.</translation> @@ -5040,7 +5040,7 @@ <translation id="8986362086234534611">Dejar de recordar</translation> <translation id="8986494364107987395">Enviar automáticamente estadísticas de uso e informes sobre fallos a Google</translation> <translation id="8987927404178983737">Mes</translation> -<translation id="8991520179165052608">El sitio web puede usar el micrófono</translation> +<translation id="8991520179165052608">El sitio web puede usar tu micrófono</translation> <translation id="899403249577094719">URL base de certificado de Netscape</translation> <translation id="8995603266996330174">Administrado por <ph name="DOMAIN" /></translation> <translation id="8996526648899750015">Añadir cuenta...</translation> @@ -5164,7 +5164,7 @@ <translation id="9174212595744391062">Se borrarán las cookies y la caché de todos los sitios web, incluidos</translation> <translation id="9176611096776448349"><ph name="WINDOW_TITLE" />: dispositivo Bluetooth conectado</translation> <translation id="9177499212658576372">Actualmente estás conectado a la red <ph name="NETWORK_TYPE" />.</translation> -<translation id="9180380851667544951">El sitio web puede compartir la pantalla</translation> +<translation id="9180380851667544951">El sitio web puede compartir tu pantalla</translation> <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> de <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation> <translation id="9187210477874601037">No se ha podido vincular la máquina con el dominio. Esto podría deberse a que la cuenta no tiene suficientes privilegios en el servidor.</translation> <translation id="9188441292293901223">Instala una versión más reciente de Android en el teléfono para desbloquear este <ph name="DEVICE_TYPE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb index 3606d3f6..e96a5ce0 100644 --- a/chrome/app/resources/generated_resources_fi.xtb +++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -3577,7 +3577,7 @@ <translation id="661719348160586794">Tässä näytetään tallennetut salasanasi.</translation> <translation id="6618097958368085618">Säilytä silti</translation> <translation id="6619058681307408113">Line Printer Daemon ‑protokolla (LPD)</translation> -<translation id="661907246513853610">Sivusto voi seurata sijaintisi</translation> +<translation id="661907246513853610">Sivusto voi seurata sijaintiasi</translation> <translation id="6619801788773578757">Lisää kioskisovellus</translation> <translation id="6619990499523117484">Vahvista PIN-koodi.</translation> <translation id="662080504995468778">Jää</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index 3dc340c2..9fe5e207 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -259,6 +259,7 @@ <translation id="1395730723686586365">અપડેટકર્તા પ્રારંભ કર્યું</translation> <translation id="1396139853388185343">પ્રિન્ટર સેટ કરવામાં ભૂલ</translation> <translation id="1396963298126346194">તમે દાખલ કરેલ વપરાશકર્તાનામ અને પાસવર્ડ મેળ ખાતા નથી</translation> +<translation id="1397854323885047133">સિંક અને વૈયક્તિકરણ</translation> <translation id="1398853756734560583">મોટું કરો</translation> <translation id="140250605646987970">તમારો ફોન મળ્યો. પરંતુ Smart Lock માત્ર Android 5.0 અને તેથી ઉપરના ઉપકરણો પર કાર્ય કરે છે. <a>વધુ જાણો</a></translation> <translation id="140520891692800925"><ph name="PROFILE_DISPLAY_NAME" /> (નિરીક્ષિત)</translation> @@ -448,6 +449,7 @@ <translation id="1665611772925418501">ફાઇલ સંશોધિત કરી શકાઈ નથી.</translation> <translation id="1670399744444387456">મૂળભૂત</translation> <translation id="1673103856845176271">સુરક્ષા કારણોસર ફાઇલ ઍક્સેસ કરી શકાઈ નથી.</translation> +<translation id="1673137583248014546"><ph name="URL" /> તમારી સુરક્ષા કીની બનાવટ અને મૉડલ જોવા માગે છે</translation> <translation id="167832068858235403">વૉલ્યુમ ઘટાડો</translation> <translation id="1679068421605151609">વિકાસકર્તા સાધનો</translation> <translation id="16815041330799488">સાઇટને ક્લિપબોર્ડ પર કૉપિ કરેલ ટેક્સ્ટ અને છબીઓ જોવાની મંજૂરી આપશો નહીં</translation> @@ -678,6 +680,7 @@ <translation id="2071393345806050157">કોઇ સ્થાનિક લૉગ ફાઇલ નથી.</translation> <translation id="2074527029802029717">ટૅબ અનપિન કરો</translation> <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" />% બૅટરી</translation> +<translation id="2075959085554270910">તમને ક્લિક કરવા ટૅપ કરોને અને ટૅપ કરીને ખેંચોને ચાલુ/બંધ કરવાની મંજૂરી આપે છે</translation> <translation id="2076269580855484719">આ પ્લગિન છુપાવો </translation> <translation id="2076672359661571384">મધ્યમ (ભલામણ કરેલ)</translation> <translation id="2077129598763517140">હાર્ડવેર ઍક્સિલરેશન ઉપલબ્ધ હોવા પર ઉપયોગ કરો</translation> @@ -710,6 +713,7 @@ <translation id="2114896190328250491"><ph name="NAME" /> દ્વારા ફોટો</translation> <translation id="2115103655317273167">ફોન પર મોકલો</translation> <translation id="2115946962706216358">મશીનને ડોમેન સાથે જોડવામાં નિષ્ફળ થયાં. આ, સર્વર પર તમારા એકાઉન્ટ માટે જોડવાની મંજૂર મશીનની સંખ્યા ઓળંગાઈ ગઈ હોવાને કારણે હોઈ શકે છે.</translation> +<translation id="2119349053129246860"><ph name="APP" />માં ખોલો</translation> <translation id="2121825465123208577">આકાર બદલો</translation> <translation id="2124930039827422115">{1,plural, =1{એક વપરાશકર્તાએ <ph name="AVERAGE_RATING" /> રેટ કરેલું.}one{# વપરાશકર્તાએ <ph name="AVERAGE_RATING" /> રેટ કરેલું.}other{# વપરાશકર્તાએ <ph name="AVERAGE_RATING" /> રેટ કરેલું.}}</translation> <translation id="2126167708562367080">સમન્વયન, તમારા વ્યવસ્થાપક દ્વારા અક્ષમ કરવામાં આવ્યું છે.</translation> @@ -1369,6 +1373,7 @@ <translation id="308330327687243295">https://mail.google.com/mail/?extsrc=mailto&url=%s</translation> <translation id="3084548735795614657">ઇન્સ્ટોલ કરવા છોડો</translation> <translation id="3084771660770137092">Chrome ની મેમરી સમાપ્ત થઈ ગઈ છે અથવા કોઈ અન્ય કારણસર વેબપૃષ્ઠની પ્રક્રિયા બંધ થઈ ગઈ છે. ચાલુ રાખવા માટે, ફરીથી લોડ કરો અથવા બીજા પૃષ્ઠ પર જાઓ.</translation> +<translation id="3085412380278336437">સાઇટ તમારા કૅમેરાનો ઉપયોગ કરી શકે છે</translation> <translation id="3085752524577180175">SOCKS હોસ્ટ</translation> <translation id="3088325635286126843">&નામ બદલો...</translation> <translation id="3089231390674410424">તમારા ઓળખપત્રમાં સમસ્યા હોય એવું લાગે છે. કૃપા કરીને ખાતરી કરો કે તમે ઠીકથી સાઇન ઇન થયાં છો અને ફરી પ્રયાસ કરો.</translation> @@ -1377,6 +1382,7 @@ <translation id="3090871774332213558">"<ph name="DEVICE_NAME" />"થી જોડી બનાવી</translation> <translation id="3100609564180505575">મોડ્યુલ્સ(<ph name="TOTAL_COUNT" />) - જાણીતા વિરોધાભાસો: <ph name="BAD_COUNT" />, શંકાસ્પદ: <ph name="SUSPICIOUS_COUNT" /></translation> <translation id="3101709781009526431">તારીખ અને સમય</translation> +<translation id="310671807099593501">સાઇટ બ્લૂટૂથનો ઉપયોગ કરી રહી છે</translation> <translation id="3108967419958202225">પસંદ કરો...</translation> <translation id="3115128645424181617">તમારો ફોન શોધી શકાતો નથી. ખાતરી કરો કે તે હાથવગો છે અને તેનું Bluetooth ચાલુ કરેલું છે.</translation> <translation id="3115147772012638511">કૅશ માટે રાહ જુએ છે...</translation> @@ -1790,6 +1796,7 @@ <translation id="3752582316358263300">બરાબર, સમજાઇ ગયું...</translation> <translation id="3752673729237782832">મારા ઉપકરણો</translation> <translation id="3755411799582650620">તમારો <ph name="PHONE_NAME" /> હવે આ <ph name="DEVICE_TYPE" /> ને પણ અનલૉક કરી શકે છે.</translation> +<translation id="375636864092143889">સાઇટ તમારા માઇક્રોફોનનો ઉપયોગ કરી રહી છે</translation> <translation id="3758201569871381925">કૃપા કરીને ખાતરી કરો કે તમારું Hotrod ઉપકરણ ચાલુ છે અને ટીવી સાથે કનેક્ટ થયેલું છે.</translation> <translation id="375841316537350618">પ્રોક્સી સ્ક્રિપ્ટ ડાઉનલોડ કરી રહ્યું છે...</translation> <translation id="3758842566811519622">કુકી સેટ કરી</translation> @@ -2187,6 +2194,7 @@ <translation id="444134486829715816">વિસ્તૃત કરો...</translation> <translation id="4441548209689510310">જોડણી તપાસણી વિકલ્પો બતાવો</translation> <translation id="4442424173763614572">DNS લુકઅપ નિષ્ફળ ગયું</translation> +<translation id="4442498890824221158">મલ્ટિ-ઉપકરણ સેટઅપ</translation> <translation id="444267095790823769">સંરક્ષિત સામગ્રી અપવાદો</translation> <translation id="4443536555189480885">&Help</translation> <translation id="4444304522807523469">USB અથવા સ્થાનિક નેટવર્ક મારફતે જોડાયેલ દસ્તાવેજ સ્કેનર્સની ઍક્સેસ</translation> @@ -3239,6 +3247,7 @@ <translation id="6105158702728922449">તમારા કૅમેરા અને માઇક્રોફોનનો ઉપયોગ કરો</translation> <translation id="6105877918873366097">છેલ્લે ઍક્સેસ કર્યાની તારીખ</translation> <translation id="6107012941649240045">આને રજૂ કરેલું</translation> +<translation id="6112294629795967147">કદ બદલવા માટે સ્પર્શ કરો</translation> <translation id="6112952769866305444">વ્યક્તિ, <ph name="PROFILE_NAME" />, <ph name="USERNAME" /> ને સંપાદિત કરો</translation> <translation id="6115424132962100663">પાછળ જવા માટે |<ph name="SHORTCUT" />| દબાવો</translation> <translation id="6116338172782435947">ક્લિપબોર્ડ પર કૉપિ કરેલ ટેક્સ્ટ અને છબીઓને જુઓ</translation> @@ -3565,6 +3574,7 @@ <translation id="661719348160586794">તમારા સાચવેલા પાસવર્ડ્સ અહીં દેખાશે. </translation> <translation id="6618097958368085618">તો પણ રાખો</translation> <translation id="6619058681307408113">લાઇન પ્રિન્ટર ડેમન (LPD)</translation> +<translation id="661907246513853610">સાઇટ તમારા સ્થાનને ટ્રૅક કરી શકે છે</translation> <translation id="6619801788773578757">કિઓસ્ક ઍપ્લિકેશન ઉમેરો</translation> <translation id="6619990499523117484">તમારા PIN ની પુષ્ટિ કરો</translation> <translation id="662080504995468778">પૃષ્ઠ પર રહો</translation> @@ -3624,6 +3634,7 @@ <translation id="6718273304615422081">ઝિપ કરી રહ્યાં છે...</translation> <translation id="671928215901716392">સ્ક્રીન લૉક કરો</translation> <translation id="67211069045302358">આ સાઇટ માટે સેટિંગ્સ રીસેટ કરીએ?</translation> +<translation id="6721678857435001674">તમારી સુરક્ષા કીની બનાવટ અને મૉડલ જુઓ</translation> <translation id="6721972322305477112">&File</translation> <translation id="672213144943476270">અતિથિ તરીકે બ્રાઉઝ કરતાં પહેલાં કૃપા કરીને તમારી પ્રોફાઇલ અનલૉક કરો.</translation> <translation id="6723354935081862304">Google દસ્તાવેજ અને અન્ય મેઘ ગંતવ્યો પર છાપો. Google મેઘ મુદ્રણમાં છાપવા માટે <ph name="BEGIN_LINK" />સાઇન ઇન<ph name="END_LINK" /> કરો.</translation> @@ -3951,6 +3962,7 @@ <translation id="7254951428499890870">શું તમે ખરેખર "<ph name="APP_NAME" />" ને ડાયગ્નોસ્ટિક મોડમાં લોંચ કરવા માગો છો?</translation> <translation id="7255220508626648026">કાસ્ટ કરી રહ્યાં છે: <ph name="ROUTETITLE" /></translation> <translation id="7255935316994522020">લાગુ કરો</translation> +<translation id="7256069762010468647">સાઇટ તમારા કૅમેરાનો ઉપયોગ કરી રહી છે</translation> <translation id="7256405249507348194">અજ્ઞાત ભૂલ: <ph name="DESC" /></translation> <translation id="7256710573727326513">એક ટેબમાં ખોલો</translation> <translation id="7257666756905341374">તમે કૉપિ અને પેસ્ટ કરો એ ડેટાને વાંચો</translation> @@ -4000,6 +4012,7 @@ <translation id="7339785458027436441">લખતી વખતે જોડણી તપાસો</translation> <translation id="7339898014177206373">નવી વિંડો</translation> <translation id="7340431621085453413"><ph name="FULLSCREEN_ORIGIN" /> હવે પૂર્ણ સ્ક્રીન છે.</translation> +<translation id="7340650977506865820">સાઇટ તમારી સ્ક્રીન શેર કરી રહી છે</translation> <translation id="7345706641791090287">તમારા પાસવર્ડની પુષ્ટિ કરો</translation> <translation id="7346909386216857016">બરાબર, સમજાઇ ગયું</translation> <translation id="7347751611463936647">આ એક્સ્ટેંશનનો ઉપયોગ કરવા, "<ph name="EXTENSION_KEYWORD" />" ટાઇપ કરો, તે પછી TAB, તે પછી તમારો આદેશ અથવા શોધ.</translation> @@ -4186,6 +4199,7 @@ <translation id="7629827748548208700">ટૅબ: <ph name="TAB_NAME" /></translation> <translation id="7631887513477658702">આ પ્રકારની ફાઇલો &હંમેશા ખોલો</translation> <translation id="7632948528260659758">નીચેની કિઓસ્ક ઍપ્લિકેશનો અપડેટ માટે નિષ્ફળ થઈ છે:</translation> +<translation id="7634373849852678655">પૂર્ણ સ્ક્રીનથી બહાર નીકળવા માટે ઍપ બટન દબાવો</translation> <translation id="7639178625568735185">સમજાઈ ગયું!</translation> <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" />, તમને તમે સાચવેલા પાસવર્ડ્સ વડે યોગ્ય હોય તેવી સાઇટ્સમાં આપમેળે સાઇન ઇન કરે છે.</translation> <translation id="7645176681409127223"><ph name="USER_NAME" /> (માલિક)</translation> @@ -4205,6 +4219,7 @@ <translation id="7665369617277396874">એકાઉન્ટ ઉમેરો</translation> <translation id="7671130400130574146">સિસ્ટમ શીર્ષક બાર અને બોર્ડર્સનો ઉપયોગ કરો</translation> <translation id="7672520070349703697"><ph name="PAGE_TITLE" />માં <ph name="HUNG_IFRAME_URL" />.</translation> +<translation id="7681095912841365527">સાઇટ બ્લૂટૂથનો ઉપયોગ કરી શકે છે</translation> <translation id="7683373461016844951">ચાલુ રાખવા માટે, ઓકે ક્લિક કરો, પછી તમારા <ph name="DOMAIN" /> ઇમેઇલ ઍડ્રેસ માટે નવી પ્રોફાઇલ બનાવવા માટે વ્યક્તિને ઉમેરો પર ક્લિક કરો.</translation> <translation id="7684212569183643648">તમારા વ્યવસ્થાપક દ્વારા ઇન્સ્ટોલ કરાયું</translation> <translation id="7684559058815332124">કેપ્ટિવ પોર્ટલ પ્રવેશ પૃષ્ઠની મુલાકાત લો</translation> @@ -4971,6 +4986,7 @@ <translation id="8904976895050290827">Chrome Sync</translation> <translation id="8908902564709148335">ચેતવણી: તમે આ કમ્પ્યુટર પર --scripts-require-action ફ્લેગ સક્ષમ કરેલ છે, જે આ એક્સ્ટેન્શનની ક્ષમતાઓને મર્યાદિત કરે છે. જો કે, અન્ય ઉપકરણો, આ ફ્લેગનું સમર્થન કરી શકશે નહીં અથવા તેમાં સક્ષમ કરેલ હોઈ શકે છે. આ ઉપકરણો પર, આ એક્સ્ટેન્શન આ પણ કરી શકે છે:</translation> <translation id="8909233240676134608">મશીનને ડોમેન સાથે જોડી શકતા નથી. સર્વર નિર્દિષ્ટ Kerberos એન્ક્રિપ્શન પ્રકારોને સહાય કરતું નથી. એન્ક્રિપ્શન સેટિંગ માટે "વધુ વિકલ્પો" તપાસો.</translation> +<translation id="8909833622202089127">સાઇટ તમારા સ્થાનને ટ્રૅક કરી રહી છે</translation> <translation id="8910146161325739742">તમારી સ્ક્રીન શેર કરો</translation> <translation id="8910222113987937043">તમારા બુકમાર્ક્સ, ઇતિહાસ, પાસવર્ડ્સ અને અન્ય સેટિંગ્સ પરના ફેરફારો હવે તમારો અસ્તિત્વમાંનો ડેટા, તમારા Google એકાઉન્ટમાં સંગ્રહિત રહેશે અને તે <ph name="BEGIN_LINK" />Google ડેશબોર્ડ<ph name="END_LINK" /> પર સંચાલિત કરવામાં આવી શકે છે.</translation> <translation id="8912793549644936705">ખેંચો</translation> @@ -5019,6 +5035,7 @@ <translation id="8986362086234534611">ભૂલી ગયા</translation> <translation id="8986494364107987395">ઉપયોગિતા આંકડાઓ અને ક્રેશ રિપોર્ટ્સ Google ને આપમેળે મોકલો</translation> <translation id="8987927404178983737">મહિનો</translation> +<translation id="8991520179165052608">સાઇટ તમારા માઇક્રોફોનનો ઉપયોગ કરી શકે છે</translation> <translation id="899403249577094719">નેટસ્કેપ પ્રમાણપત્ર બેઝ URL</translation> <translation id="8995603266996330174"><ph name="DOMAIN" /> દ્વારા સંચાલિત</translation> <translation id="8996526648899750015">એકાઉન્ટ ઉમેરો...</translation> @@ -5142,6 +5159,7 @@ <translation id="9174212595744391062">આનાથી બધી સાઇટમાંથી કુકી અને કૅશ સાફ થશે, જેમાં અહીં આપેલ પણ શામેલ છે</translation> <translation id="9176611096776448349"><ph name="WINDOW_TITLE" /> - Bluetooth ઉપકરણ કનેક્ટ કર્યું</translation> <translation id="9177499212658576372">તમે હાલમાં <ph name="NETWORK_TYPE" /> નેટવર્કથી કનેક્ટ કરેલું છે.</translation> +<translation id="9180380851667544951">સાઇટ તમારી સ્ક્રીનને શેર કરી શકે છે</translation> <translation id="9183836083779743117"><ph name="DOWNLOAD_DOMAIN" /> માંથી <ph name="DOWNLOAD_RECEIVED" />, <ph name="TIME_LEFT" /></translation> <translation id="9187210477874601037">મશીનને ડોમેન સાથે જોડવામાં નિષ્ફળ થયાં. આ, સર્વર પર તમારા એકાઉન્ટ માટે અપૂરતાં વિશેષાધિકારોને કારણે હોઈ શકે છે.</translation> <translation id="9188441292293901223">આ <ph name="DEVICE_TYPE" /> ને અનલૉક કરવા માટે, કૃપા કરીને તમારા ફોનને Android ના નવા સંસ્કરણ પર અપડેટ કરો.</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb index 39bef7f..2bd617f 100644 --- a/chrome/app/resources/generated_resources_id.xtb +++ b/chrome/app/resources/generated_resources_id.xtb
@@ -453,7 +453,7 @@ <translation id="1665611772925418501">File tidak dapat diubah.</translation> <translation id="1670399744444387456">Dasar</translation> <translation id="1673103856845176271">File tidak dapat diakses karena alasan keamanan.</translation> -<translation id="1673137583248014546"><ph name="URL" /> ingin melihat pembuatan dan model Kunci Keamanan Anda</translation> +<translation id="1673137583248014546"><ph name="URL" /> ingin melihat merek dan model Kunci Keamanan Anda</translation> <translation id="167832068858235403">kecilkan vol.</translation> <translation id="1679068421605151609">Alat Pengembang</translation> <translation id="16815041330799488">Jangan izinkan situs melihat teks dan gambar yang disalin ke papan klip</translation> @@ -3637,7 +3637,7 @@ <translation id="6718273304615422081">Membuat file zip...</translation> <translation id="671928215901716392">Kunci layar</translation> <translation id="67211069045302358">Setel ulang setelan situs ini?</translation> -<translation id="6721678857435001674">Lihat pembuatan dan model Kunci Keamanan Anda</translation> +<translation id="6721678857435001674">Lihat merek dan model Kunci Keamanan Anda</translation> <translation id="6721972322305477112">&Berkas</translation> <translation id="672213144943476270">Buka kunci profil sebelum menjelajah sebagai tamu.</translation> <translation id="6723354935081862304">Cetak ke Google Dokumen dan tujuan awan lainnya. <ph name="BEGIN_LINK" />Masuk<ph name="END_LINK" /> untuk mencetak ke Google Cloud Print.</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb index c188fbb..ecb0a60d 100644 --- a/chrome/app/resources/generated_resources_it.xtb +++ b/chrome/app/resources/generated_resources_it.xtb
@@ -717,7 +717,7 @@ <translation id="2114896190328250491">Foto di <ph name="NAME" /></translation> <translation id="2115103655317273167">Invia al telefono</translation> <translation id="2115946962706216358">Aggiunta della macchina al dominio non riuscita. Ciò potrebbe essere dovuto al superamento del numero massimo di aggiunte delle macchine consentito per il tuo account sul server.</translation> -<translation id="2119349053129246860">Apri nell'app <ph name="APP" /></translation> +<translation id="2119349053129246860">Apri in <ph name="APP" /></translation> <translation id="2121825465123208577">Ridimensiona</translation> <translation id="2124930039827422115">{1,plural, =1{Un utente ha dato una valutazione di <ph name="AVERAGE_RATING" />.}other{# utenti hanno dato una valutazione di <ph name="AVERAGE_RATING" />.}}</translation> <translation id="2126167708562367080">La sincronizzazione è stata disattivata dall'amministratore.</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb index 943f359..79480dd8 100644 --- a/chrome/app/resources/generated_resources_iw.xtb +++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -681,7 +681,7 @@ <translation id="2071393345806050157">אין קובץ יומן מקומי.</translation> <translation id="2074527029802029717">בטל הצמדה של כרטיסייה</translation> <translation id="2075474481720804517">%<ph name="BATTERY_PERCENTAGE" /> סוללה</translation> -<translation id="2075959085554270910">מאפשר לך להפעיל/להשבית את תכונות הנגיעה הקלה וההקשה לגרירה</translation> +<translation id="2075959085554270910">הגדרות אלה מאפשרות להפעיל או להשבית את תכונות הנגיעה הקלה וההקשה לגרירה</translation> <translation id="2076269580855484719">הסתר פלאגין זה</translation> <translation id="2076672359661571384">בינוני (מומלץ)</translation> <translation id="2077129598763517140">השתמש בהאצת חומרה כשניתן</translation> @@ -4191,7 +4191,7 @@ <translation id="7629827748548208700">כרטיסייה: <ph name="TAB_NAME" /></translation> <translation id="7631887513477658702">&פתח תמיד קבצים מסוג זה</translation> <translation id="7632948528260659758">עדכון יישומי הקיוסק הבאים נכשל:</translation> -<translation id="7634373849852678655">לחץ על לחצן האפליקציה כדי לצאת מהמסך המלא</translation> +<translation id="7634373849852678655">כדי לצאת מהמסך המלא יש ללחוץ על לחצן האפליקציה</translation> <translation id="7639178625568735185">הבנתי</translation> <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> מכניס אותך באופן אוטומטי לאתרים כשירים באמצעות סיסמאות ששמרת.</translation> <translation id="7645176681409127223"><ph name="USER_NAME" /> (בעלים)</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb index a0b631e..73f14b86 100644 --- a/chrome/app/resources/generated_resources_ja.xtb +++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -454,7 +454,7 @@ <translation id="1665611772925418501">ファイルを修正することができませんでした。</translation> <translation id="1670399744444387456">基本</translation> <translation id="1673103856845176271">セキュリティ上の理由で、ファイルにアクセスできませんでした。</translation> -<translation id="1673137583248014546"><ph name="URL" /> によりセキュリティ キーのメーカーとモデルの読み取り許可を求められています</translation> +<translation id="1673137583248014546"><ph name="URL" /> よりセキュリティ キーのメーカーとモデルの読み取り許可を求められています</translation> <translation id="167832068858235403">音量を下げる</translation> <translation id="1679068421605151609">デベロッパー ツール</translation> <translation id="16815041330799488">クリップボードにコピーされているテキストや画像へのアクセスをサイトに許可しない</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb index 728d24d..3530bfde 100644 --- a/chrome/app/resources/generated_resources_kn.xtb +++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -450,7 +450,7 @@ <translation id="1665611772925418501">ಫೈಲ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಲಾಗಲಿಲ್ಲ.</translation> <translation id="1670399744444387456">ಮೂಲ</translation> <translation id="1673103856845176271">ಸುರಕ್ಷತಾ ಕಾರಣಗಳಿಗಾಗಿ ಫೈಲ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲಾಗಲಿಲ್ಲ.</translation> -<translation id="1673137583248014546">ನಿಮ್ಮ ಸುರಕ್ಷತಾ ಕೀಗಾಗಿ ತಯಾರಿ ಮತ್ತು ಮಾದರಿಯನ್ನು <ph name="URL" /> ನೋಡಲು ಬಯಸುತ್ತದೆ</translation> +<translation id="1673137583248014546">ನಿಮ್ಮ ಸುರಕ್ಷತಾ ಕೀಯ ತಯಾರಕರ ಬ್ರಾಂಡ್ ಹೆಸರು ಮತ್ತು ಮಾದರಿಯನ್ನು <ph name="URL" /> ನೋಡಲು ಬಯಸುತ್ತದೆ</translation> <translation id="167832068858235403">ವಾ. ಕಡಿಮೆ ಮಾಡಿ</translation> <translation id="1679068421605151609">ಡೆವಲಪರ್ ಟೂಲ್ಸ್</translation> <translation id="16815041330799488">ಕ್ಲಿಪ್ಬೋರ್ಡ್ಗೆ ನಕಲಿಸಿರುವ ಪಠ್ಯ ಮತ್ತು ಚಿತ್ರಗಳನ್ನು ನೋಡಲು ಸೈಟ್ಗಳಿಗೆ ಅನುಮತಿ ನೀಡಬೇಡಿ</translation> @@ -3636,7 +3636,7 @@ <translation id="6718273304615422081">ಜಿಪ್ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation> <translation id="671928215901716392">ಪರದೆಯನ್ನು ಲಾಕ್ ಮಾಡಿ</translation> <translation id="67211069045302358">ಈ ಸೈಟ್ಗಾಗಿ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಮರುಹೊಂದಿಸಬೇಕೆ?</translation> -<translation id="6721678857435001674">ನಿಮ್ಮ ಸುರಕ್ಷತಾ ಕೀಗಾಗಿ ತಯಾರಿಕೆ ಮತ್ತು ಮಾದರಿಯನ್ನು ನೋಡಿ</translation> +<translation id="6721678857435001674">ನಿಮ್ಮ ಸುರಕ್ಷತಾ ಕೀಯ ತಯಾರಕರ ಬ್ರಾಂಡ್ ಹೆಸರು ಮತ್ತು ಮಾದರಿಯನ್ನು ನೋಡಿ</translation> <translation id="6721972322305477112">&ಫೈಲ್</translation> <translation id="672213144943476270">ಅಥಿತಿಯಾಗಿ ಬ್ರೌಸ್ ಮಾಡುವ ಮೊದಲು ದಯವಿಟ್ಟು ನಿಮ್ಮ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಿ.</translation> <translation id="6723354935081862304">Google ಡಾಕ್ಸ್ ಮತ್ತು ಇತರ ಮೇಘ ಗಮ್ಯಸ್ಥಾನಗಳಿಗೆ ಮುದ್ರಿಸಿ. Google ಮೇಘ ಮುದ್ರಣಕ್ಕೆ ಮುದ್ರಿಸಲು <ph name="BEGIN_LINK" />ಸೈನ್ ಇನ್<ph name="END_LINK" /> ಮಾಡಿ.</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb index 59d69fb5..be8b8c3 100644 --- a/chrome/app/resources/generated_resources_no.xtb +++ b/chrome/app/resources/generated_resources_no.xtb
@@ -259,6 +259,7 @@ <translation id="1395730723686586365">Oppdatereringsprogrammet er startet</translation> <translation id="1396139853388185343">Feil ved konfigurasjonen av skriveren</translation> <translation id="1396963298126346194">Brukernavnet og passordet du skrev inn, stemmer ikke overens</translation> +<translation id="1397854323885047133">Synkronisering og personlig tilpasning</translation> <translation id="1398853756734560583">Maksimer</translation> <translation id="140250605646987970">Telefonen din er funnet, men Smart Lock fungerer bare på enheter med Android 5.0 og nyere. <a>Finn ut mer</a></translation> <translation id="140520891692800925"><ph name="PROFILE_DISPLAY_NAME" /> (administrert)</translation> @@ -449,6 +450,7 @@ <translation id="1665611772925418501">Kunne ikke endre filen.</translation> <translation id="1670399744444387456">Enkle</translation> <translation id="1673103856845176271">Filen kunne ikke åpnes av sikkerhetsårsaker.</translation> +<translation id="1673137583248014546"><ph name="URL" /> ber om å se merket og modellen til sikkerhetsnøkkelen din</translation> <translation id="167832068858235403">redusert lydstyrke</translation> <translation id="1679068421605151609">Utviklerverktøy</translation> <translation id="16815041330799488">Ikke la nettsteder se tekst og bilder som er kopiert til utklippstavlen</translation> @@ -679,6 +681,7 @@ <translation id="2071393345806050157">Ingen lokal loggfil.</translation> <translation id="2074527029802029717">Løsne fanen</translation> <translation id="2075474481720804517"><ph name="BATTERY_PERCENTAGE" /> % batteri</translation> +<translation id="2075959085554270910">Lar deg slå på og av berøringsklikk og trykk-og-dra</translation> <translation id="2076269580855484719">Skjul dette programtillegget</translation> <translation id="2076672359661571384">Middels (anbefalt)</translation> <translation id="2077129598763517140">Bruk maskinvareakselerasjon når det er tilgjengelig</translation> @@ -711,6 +714,7 @@ <translation id="2114896190328250491">Bildet er tatt av <ph name="NAME" /></translation> <translation id="2115103655317273167">Send til telefon</translation> <translation id="2115946962706216358">Kunne ikke knytte maskinen til domenet. Årsaken kan være at det maksimale antallet tillate tilknyttede maskiner for kontoen din på tjeneren er overskredet.</translation> +<translation id="2119349053129246860">Åpne i <ph name="APP" /></translation> <translation id="2121825465123208577">Endre størrelse</translation> <translation id="2124930039827422115">{1,plural, =1{Vurdert som <ph name="AVERAGE_RATING" /> av 1 bruker.}other{Vurdert som <ph name="AVERAGE_RATING" /> av # brukere.}}</translation> <translation id="2126167708562367080">Administratoren din har slått av synkronisering.</translation> @@ -1369,6 +1373,7 @@ <translation id="308330327687243295">https://mail.google.com/mail/?extsrc=mailto&url=%s</translation> <translation id="3084548735795614657">Slipp for å installere</translation> <translation id="3084771660770137092">Chrome gikk tom for minne, eller prosessen for nettsiden ble avsluttet av andre årsaker. Hvis du vil fortsette, laster du inn siden på nytt, eller går til en annen side.</translation> +<translation id="3085412380278336437">Nettstedet kan bruke kameraet ditt</translation> <translation id="3085752524577180175">SOCKS-vert</translation> <translation id="3088325635286126843">&Gi nytt navn</translation> <translation id="3089231390674410424">Det ser ut til å være et problem med legitimasjonen din. Sjekk at du er logget på riktig, og prøv på nytt.</translation> @@ -1377,6 +1382,7 @@ <translation id="3090871774332213558">«<ph name="DEVICE_NAME" />» er tilkoblet</translation> <translation id="3100609564180505575">Moduler (<ph name="TOTAL_COUNT" />) – Kjente konflikter: <ph name="BAD_COUNT" />, mistenkte: <ph name="SUSPICIOUS_COUNT" /></translation> <translation id="3101709781009526431">Dato og klokkeslett</translation> +<translation id="310671807099593501">Nettstedet bruker Bluetooth</translation> <translation id="3108967419958202225">Velg</translation> <translation id="3115128645424181617">Finner ikke telefonen. Sørg for at den er i nærheten, og at Bluetooth er slått på.</translation> <translation id="3115147772012638511">Venter på buffer...</translation> @@ -1789,6 +1795,7 @@ <translation id="3752582316358263300">OK</translation> <translation id="3752673729237782832">Mine enheter</translation> <translation id="3755411799582650620">Du kan nå også låse opp <ph name="DEVICE_TYPE" /> med <ph name="PHONE_NAME" />.</translation> +<translation id="375636864092143889">Nettstedet bruker mikrofonen din</translation> <translation id="3758201569871381925">Sjekk at Hotrod-enheten din er slått på og tilkoblet en TV.</translation> <translation id="375841316537350618">Laster ned mellomtjenerskript ...</translation> <translation id="3758842566811519622">Informasjonskapsler er angitt</translation> @@ -2184,6 +2191,7 @@ <translation id="444134486829715816">Utvid</translation> <translation id="4441548209689510310">Vis alternativer for stavekontroll</translation> <translation id="4442424173763614572">DNS-søk mislyktes</translation> +<translation id="4442498890824221158">Konfigurering av flere enheter</translation> <translation id="444267095790823769">Unntak for beskyttet innhold</translation> <translation id="4443536555189480885">&Hjelp</translation> <translation id="4444304522807523469">Få tilgang til dokumentskannere som er tilkoblet via USB eller på det lokale nettverket</translation> @@ -3234,6 +3242,7 @@ <translation id="6105158702728922449">bruke kameraet og mikrofonen din</translation> <translation id="6105877918873366097">Sist åpnet</translation> <translation id="6107012941649240045">Utstedt til</translation> +<translation id="6112294629795967147">Trykk for å endre størrelsen</translation> <translation id="6112952769866305444">Endre personen <ph name="PROFILE_NAME" /> (<ph name="USERNAME" />)</translation> <translation id="6115424132962100663">Trykk på |<ph name="SHORTCUT" />| for å gå tilbake</translation> <translation id="6116338172782435947">Se tekst og bilder som er kopiert til utklippstavlen</translation> @@ -3559,6 +3568,7 @@ <translation id="661719348160586794">Dine lagrede passord vises her.</translation> <translation id="6618097958368085618">Behold likevel</translation> <translation id="6619058681307408113">Line Printer Daemon (LPD)</translation> +<translation id="661907246513853610">Nettstedet kan spore posisjonen din</translation> <translation id="6619801788773578757">Legg til kioskapp</translation> <translation id="6619990499523117484">Bekreft PIN-koden din</translation> <translation id="662080504995468778">Bli her</translation> @@ -3618,6 +3628,7 @@ <translation id="6718273304615422081">Zipper ...</translation> <translation id="671928215901716392">Lås skjerm</translation> <translation id="67211069045302358">Vil du tilbakestille innstillingene for dette nettstedet?</translation> +<translation id="6721678857435001674">se merket og modellen til sikkerhetsnøkkelen din</translation> <translation id="6721972322305477112">&Fil</translation> <translation id="672213144943476270">Du må låse opp profilen din før du kan surfe som gjest.</translation> <translation id="6723354935081862304">Skriv ut til Google Dokumenter og andre destinasjoner i nettskyen. <ph name="BEGIN_LINK" />Logg på<ph name="END_LINK" /> for å skrive ut med Google Cloud Print.</translation> @@ -3945,6 +3956,7 @@ <translation id="7254951428499890870">Er du sikker på at du ønsker å starte <ph name="APP_NAME" /> i diagnostikkmodus?</translation> <translation id="7255220508626648026">Caster <ph name="ROUTETITLE" /></translation> <translation id="7255935316994522020">Bruk</translation> +<translation id="7256069762010468647">Nettstedet bruker kameraet ditt</translation> <translation id="7256405249507348194">Ukjent feil: <ph name="DESC" /></translation> <translation id="7256710573727326513">Åpne i en fane</translation> <translation id="7257666756905341374">lese data du kopierer og limer inn</translation> @@ -3994,6 +4006,7 @@ <translation id="7339785458027436441">Kontroller staving mens du skriver</translation> <translation id="7339898014177206373">Nytt vindu</translation> <translation id="7340431621085453413"><ph name="FULLSCREEN_ORIGIN" /> kjører nå i full skjerm.</translation> +<translation id="7340650977506865820">Nettstedet deler skjermen din</translation> <translation id="7345706641791090287">Bekreft passordet</translation> <translation id="7346909386216857016">Greit</translation> <translation id="7347751611463936647">For å bruke denne utvidelsen, skriver du «<ph name="EXTENSION_KEYWORD" />» , trykker på TAB, og skriver kommandoordet eller søkeordet.</translation> @@ -4172,6 +4185,7 @@ <translation id="7629827748548208700">Fane: <ph name="TAB_NAME" /></translation> <translation id="7631887513477658702">Åpne &alltid filer av denne typen</translation> <translation id="7632948528260659758">Kunne ikke oppdatere de følgende kioskappene:</translation> +<translation id="7634373849852678655">Trykk på appknappen for å avslutte fullskjermvisningen</translation> <translation id="7639178625568735185">Skjønner!</translation> <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> logger deg på kvalifiserte nettsteder automatisk med passord du har lagret.</translation> <translation id="7645176681409127223"><ph name="USER_NAME" /> (eier)</translation> @@ -4191,6 +4205,7 @@ <translation id="7665369617277396874">Legg til konto</translation> <translation id="7671130400130574146">Bruk systemets tittellinje og kantlinjer</translation> <translation id="7672520070349703697"><ph name="HUNG_IFRAME_URL" /> på <ph name="PAGE_TITLE" />.</translation> +<translation id="7681095912841365527">Nettstedet kan bruke Bluetooth</translation> <translation id="7683373461016844951">For å fortsette, klikk på OK. Klikk deretter på Legg til person for å opprette en ny profil for <ph name="DOMAIN" />-e-postadressen din.</translation> <translation id="7684212569183643648">Installert av administratoren din</translation> <translation id="7684559058815332124">Besøk Captive Portal-påloggingssiden</translation> @@ -4963,6 +4978,7 @@ <translation id="8904976895050290827">Chrome-synkronisering</translation> <translation id="8908902564709148335">Advarsel: Du har aktivert --scripts-require-action-flagget på denne datamaskinen. Dette begrenser funksjonaliteten til denne utvidelsen. Andre enheter støtter kanskje ikke dette flagget, eventuelt er det ikke aktivert på dem. På disse enhetene kan denne utvidelsen også:</translation> <translation id="8909233240676134608">Kan ikke knytte maskinen til domenet. Tjeneren støtter ikke de angitte Kerberos-krypteringstypene. Du finner innstillinger for kryptering under «Flere alternativer».</translation> +<translation id="8909833622202089127">Nettstedet sporer posisjonen din</translation> <translation id="8910146161325739742">Del skjermen</translation> <translation id="8910222113987937043">Endringer i bokmerkene, loggen, passordene og andre innstillinger du har, blir ikke lenger synkronisert med Google-kontoen din. Data som allerede er lagret i Google-kontoen din, blir imidlertid værende og kan administreres ved hjelp av <ph name="BEGIN_LINK" />Google Oversikt<ph name="END_LINK" />.</translation> <translation id="8912793549644936705">Strekk ut</translation> @@ -5011,6 +5027,7 @@ <translation id="8986362086234534611">Glem</translation> <translation id="8986494364107987395">Send bruksstatistikk og programstopprapporter automatisk til Google</translation> <translation id="8987927404178983737">Måned</translation> +<translation id="8991520179165052608">Nettstedet kan bruke mikrofonen din</translation> <translation id="899403249577094719">Primære nettadresse for Netscape-sertifikat</translation> <translation id="8995603266996330174">Drevet av <ph name="DOMAIN" /></translation> <translation id="8996526648899750015">Legg til konto</translation> @@ -5134,6 +5151,7 @@ <translation id="9174212595744391062">Dette sletter alle informasjonskapslene og bufferne for alle nettsteder, deriblant</translation> <translation id="9176611096776448349"><ph name="WINDOW_TITLE" /> – en Bluetooth-enhet er tilkoblet</translation> <translation id="9177499212658576372">Du er for øyeblikket tilkoblet nettverket <ph name="NETWORK_TYPE" />.</translation> +<translation id="9180380851667544951">Nettstedet kan dele skjermen din</translation> <translation id="9183836083779743117"><ph name="DOWNLOAD_RECEIVED" /> fra <ph name="DOWNLOAD_DOMAIN" />, <ph name="TIME_LEFT" /></translation> <translation id="9187210477874601037">Kunne ikke knytte maskinen til domenet. Dette kan skyldes at kontoen din ikke har tilstrekkelige rettigheter på tjeneren.</translation> <translation id="9188441292293901223">Du må oppdatere telefonen til en nyere versjon av Android for å låse opp <ph name="DEVICE_TYPE" />.</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index 39d38df..d29ad1f 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -714,7 +714,7 @@ <translation id="2114896190328250491">Аутор слике: <ph name="NAME" /></translation> <translation id="2115103655317273167">Пошаљи на телефон</translation> <translation id="2115946962706216358">Придруживање уређаја домену није успело. Можда сте премашили максималан број дозвољених придруживања уређаја за налог на серверу.</translation> -<translation id="2119349053129246860">Отвори у апликацији <ph name="APP" /></translation> +<translation id="2119349053129246860">Отвори у <ph name="APP" /></translation> <translation id="2121825465123208577">Промени величину</translation> <translation id="2124930039827422115">{1,plural, =1{Један корисник је оценио са <ph name="AVERAGE_RATING" />.}one{# корисник је оценио са <ph name="AVERAGE_RATING" />.}few{# корисника су оценила са <ph name="AVERAGE_RATING" />.}other{# корисника је оценило са <ph name="AVERAGE_RATING" />.}}</translation> <translation id="2126167708562367080">Администратор је онемогућио синхронизацију.</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb index 86a547302..9f9b5b68 100644 --- a/chrome/app/resources/generated_resources_ta.xtb +++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -684,7 +684,7 @@ <translation id="2071393345806050157">அகப் பதிவு கோப்பு எதுவுமில்லை.</translation> <translation id="2074527029802029717">தாவல் வெளியே எடு</translation> <translation id="2075474481720804517">பேட்டரி: <ph name="BATTERY_PERCENTAGE" />%</translation> -<translation id="2075959085554270910">கிளிக் செய்ய தட்டு மற்றும் தட்டி நகர்த்துதலை இயக்க/முடக்க உங்களை அனுமதிக்கிறது</translation> +<translation id="2075959085554270910">"கிளிக் செய்ய தட்டு" மற்றும் தட்டி நகர்த்துதலை இயக்க/முடக்க உங்களை அனுமதிக்கிறது</translation> <translation id="2076269580855484719">செருகுநிரலை மறை</translation> <translation id="2076672359661571384">நடுத்தரம் (பரிந்துரைக்கப்படுவது)</translation> <translation id="2077129598763517140">கிடைக்கும்போது வன்பொருளின் முடுக்கத்தைப் பயன்படுத்தவும்</translation> @@ -3638,7 +3638,7 @@ <translation id="6718273304615422081">ஜிப் செய்கிறது...</translation> <translation id="671928215901716392">திரையைப் பூட்டு</translation> <translation id="67211069045302358">இந்தத் தளத்திற்கான அமைப்புகளை மீட்டமைக்கவா?</translation> -<translation id="6721678857435001674">உங்கள் பாதுகாப்பு விசையின் உற்பத்தியாளர் மற்றும் மாடலைப் பார்க்கவும்</translation> +<translation id="6721678857435001674">உங்கள் பாதுகாப்பு விசையின் உற்பத்தியாளர் மற்றும் மாடலைப் பார்க்க விரும்புகிறது</translation> <translation id="6721972322305477112">&File</translation> <translation id="672213144943476270">விருந்தினராக உலாவும் முன், உங்கள் சுயவிவரத்தைத் திறக்கவும்.</translation> <translation id="6723354935081862304">Google டாக்ஸ் மற்றும் பிற கிளவுடு இலக்குகளுக்கு அச்சிடுக. Google கிளவுடு அச்சில் அச்சிடுவதற்கு <ph name="BEGIN_LINK" />உள் நுழைக<ph name="END_LINK" />.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hi.xtb b/chrome/app/resources/google_chrome_strings_hi.xtb index db68828..df44c23e 100644 --- a/chrome/app/resources/google_chrome_strings_hi.xtb +++ b/chrome/app/resources/google_chrome_strings_hi.xtb
@@ -64,7 +64,7 @@ <translation id="2467438592969358367">Google Chrome आपके पासवर्ड निर्यात करना चाहता है. इसकी मंज़ूरी देने के लिए अपना Windows पासवर्ड लिखें.</translation> <translation id="2485422356828889247">विस्थापित करें</translation> <translation id="2534507159460261402">Google Pay (Chrome पर कॉपी किया गया)</translation> -<translation id="2535429035253759792">आपका एडमिन का कहना है कि यह अपडेट लागू करने के लिए आप Chrome को फिर से लॉन्च करें</translation> +<translation id="2535429035253759792">आपके एडमिन का कहना है कि यह अपडेट लागू करने के लिए आप Chrome को फिर से लॉन्च करें</translation> <translation id="2580411288591421699">Google Chrome के उस वर्शन के समान वर्शन को इंस्टॉल नहीं कर सकता, जो वर्तमान में चल रहा है. कृपया Google Chrome बंद करें और फिर से प्रयास करें.</translation> <translation id="2586406160782125153">ऐसा करने से इस डिवाइस से आपका ब्राउज़िंग डेटा हट जाएगा. बाद में अपना डेटा पाने के लिए, Chrome में <ph name="USER_EMAIL" /> के रूप में प्रवेश करें.</translation> <translation id="2588322182880276190">Chrome लोगो</translation>
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp index cfa3bb74..ee415fd 100644 --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp
@@ -10,7 +10,7 @@ <!-- Shared across multiple pages --> <message name="IDS_SETTINGS_MORE_ACTIONS" desc="Tooltip text (shows on hover or for screenreaders) for a button that shows a menu with more actions when clicked or tapped"> - More actions... + More actions </message> <!-- About Page -->
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index dc2720d..412ad37 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -1254,6 +1254,8 @@ "resource_coordinator/resource_coordinator_render_process_probe.h", "resource_coordinator/resource_coordinator_web_contents_observer.cc", "resource_coordinator/resource_coordinator_web_contents_observer.h", + "resource_coordinator/tab_load_tracker.cc", + "resource_coordinator/tab_load_tracker.h", "resources_util.cc", "resources_util.h", "safe_search_api/safe_search_url_checker.cc", @@ -1803,7 +1805,7 @@ "//sql", "//storage/browser", "//storage/common", - "//third_party/WebKit/public:features", + "//third_party/WebKit/public:buildflags", "//third_party/WebKit/public:resources", "//third_party/WebKit/public:scaled_resources", "//third_party/WebKit/public/common", @@ -2334,7 +2336,7 @@ "//components/web_contents_delegate_android", "//rlz:rlz_utils", "//sandbox", - "//sandbox:sandbox_features", + "//sandbox:sandbox_buildflags", "//services/proxy_resolver:lib", "//third_party/android_opengl/etc1", "//third_party/android_tools:cpu_features",
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS index 83457af..e1c7016 100644 --- a/chrome/browser/DEPS +++ b/chrome/browser/DEPS
@@ -153,7 +153,7 @@ "+third_party/WebKit/public/platform/modules/notifications/WebNotificationConstants.h", "+third_party/WebKit/public/platform/modules/remoteplayback/WebRemotePlaybackAvailability.h", "+third_party/WebKit/public/platform/modules/screen_orientation/WebScreenOrientationLockType.h", - "+third_party/WebKit/public/public_features.h", + "+third_party/WebKit/public/public_buildflags.h", "+third_party/WebKit/public/web/WebContextMenuData.h", "+third_party/WebKit/public/web/WebFindOptions.h", "+third_party/WebKit/public/web/WebMediaPlayerAction.h",
diff --git a/chrome/browser/android/DEPS b/chrome/browser/android/DEPS index 406038d..319f0e4 100644 --- a/chrome/browser/android/DEPS +++ b/chrome/browser/android/DEPS
@@ -12,7 +12,7 @@ "+device/vr/buildflags/buildflags.h", "+sandbox/linux/seccomp-bpf/sandbox_bpf.h", "+sandbox/linux/seccomp-bpf-helpers", - "+sandbox/sandbox_features.h", + "+sandbox/sandbox_buildflags.h", "+third_party/gvr-android-sdk", "+third_party/WebKit/public/platform/media_download_in_product_help.mojom.h", "+third_party/WebKit/public/platform/unhandled_tap_notifier.mojom.h",
diff --git a/chrome/browser/android/contextual_suggestions/contextual_suggestions_bridge.cc b/chrome/browser/android/contextual_suggestions/contextual_suggestions_bridge.cc index 19dc0b7..e7ad588a 100644 --- a/chrome/browser/android/contextual_suggestions/contextual_suggestions_bridge.cc +++ b/chrome/browser/android/contextual_suggestions/contextual_suggestions_bridge.cc
@@ -79,7 +79,7 @@ const JavaParamRef<jobject>& obj, const JavaParamRef<jstring>& j_url, const JavaParamRef<jobject>& j_callback) { - if (contextual_content_suggestions_service_ == nullptr) + if (!contextual_content_suggestions_service_) return; GURL url(ConvertJavaStringToUTF8(env, j_url)); @@ -94,7 +94,7 @@ const JavaParamRef<jobject>& obj, const JavaParamRef<jstring>& j_suggestion_id, const JavaParamRef<jobject>& j_callback) { - if (contextual_content_suggestions_service_ == nullptr) + if (!contextual_content_suggestions_service_) return; contextual_content_suggestions_service_->FetchContextualSuggestionImage( @@ -144,28 +144,24 @@ void ContextualSuggestionsBridge::OnSuggestionsAvailable( ScopedJavaGlobalRef<jobject> j_callback, + std::string peek_text, std::vector<Cluster> clusters) { JNIEnv* env = AttachCurrentThread(); - ScopedJavaLocalRef<jobject> j_clusters = - Java_ContextualSuggestionsBridge_createContextualSuggestionsClusterList( - env); + ScopedJavaLocalRef<jobject> j_result = + Java_ContextualSuggestionsBridge_createContextualSuggestionsResult( + env, ConvertUTF8ToJavaString(env, peek_text)); for (auto& cluster : clusters) { - Java_ContextualSuggestionsBridge_addNewClusterToList( - env, j_clusters, ConvertUTF8ToJavaString(env, cluster.title)); + Java_ContextualSuggestionsBridge_addNewClusterToResult( + env, j_result, ConvertUTF8ToJavaString(env, cluster.title)); for (auto& suggestion : cluster.suggestions) { Java_ContextualSuggestionsBridge_addSuggestionToLastCluster( - env, j_clusters, - ConvertUTF8ToJavaString(env, suggestion.id().id_within_category()), - ConvertUTF16ToJavaString(env, suggestion.title()), - ConvertUTF16ToJavaString(env, suggestion.publisher_name()), - ConvertUTF8ToJavaString(env, suggestion.url().spec()), - suggestion.publish_date().ToJavaTime(), suggestion.score(), - suggestion.fetch_date().ToJavaTime(), - suggestion.is_video_suggestion(), - suggestion.optional_image_dominant_color().value_or(0)); + env, j_result, ConvertUTF8ToJavaString(env, suggestion->id()), + ConvertUTF8ToJavaString(env, suggestion->title()), + ConvertUTF8ToJavaString(env, suggestion->publisher_name()), + ConvertUTF8ToJavaString(env, suggestion->url().spec())); } } - RunCallbackAndroid(j_callback, j_clusters); + RunCallbackAndroid(j_callback, j_result); } void ContextualSuggestionsBridge::OnImageFetched(
diff --git a/chrome/browser/android/contextual_suggestions/contextual_suggestions_bridge.h b/chrome/browser/android/contextual_suggestions/contextual_suggestions_bridge.h index 7e5d9cc..edcd9e6 100644 --- a/chrome/browser/android/contextual_suggestions/contextual_suggestions_bridge.h +++ b/chrome/browser/android/contextual_suggestions/contextual_suggestions_bridge.h
@@ -66,6 +66,7 @@ void OnSuggestionsAvailable( base::android::ScopedJavaGlobalRef<jobject> j_callback, + std::string peek_text, std::vector<ntp_snippets::ContextualContentSuggestionsService::Cluster> clusters);
diff --git a/chrome/browser/android/contextualsearch/unhandled_tap_web_contents_observer.cc b/chrome/browser/android/contextualsearch/unhandled_tap_web_contents_observer.cc index 74e86be..219eb3c 100644 --- a/chrome/browser/android/contextualsearch/unhandled_tap_web_contents_observer.cc +++ b/chrome/browser/android/contextualsearch/unhandled_tap_web_contents_observer.cc
@@ -8,7 +8,7 @@ #include "base/memory/ptr_util.h" #include "build/build_config.h" -#include "third_party/WebKit/public/public_features.h" +#include "third_party/WebKit/public/public_buildflags.h" #if BUILDFLAG(ENABLE_UNHANDLED_TAP) #include "chrome/browser/android/contextualsearch/unhandled_tap_notifier_impl.h"
diff --git a/chrome/browser/android/photo_picker_sandbox_bridge.cc b/chrome/browser/android/photo_picker_sandbox_bridge.cc index f28bdf7..c94e9fcd 100644 --- a/chrome/browser/android/photo_picker_sandbox_bridge.cc +++ b/chrome/browser/android/photo_picker_sandbox_bridge.cc
@@ -8,7 +8,7 @@ #include "base/metrics/histogram_macros.h" #include "jni/DecoderService_jni.h" #include "sandbox/linux/seccomp-bpf-helpers/seccomp_starter_android.h" -#include "sandbox/sandbox_features.h" +#include "sandbox/sandbox_buildflags.h" #if BUILDFLAG(USE_SECCOMP_BPF) #include "sandbox/linux/seccomp-bpf-helpers/baseline_policy_android.h"
diff --git a/chrome/browser/android/seccomp_support_detector.cc b/chrome/browser/android/seccomp_support_detector.cc index ef92b1d..9559594 100644 --- a/chrome/browser/android/seccomp_support_detector.cc +++ b/chrome/browser/android/seccomp_support_detector.cc
@@ -9,7 +9,7 @@ #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" -#include "sandbox/sandbox_features.h" +#include "sandbox/sandbox_buildflags.h" #if BUILDFLAG(USE_SECCOMP_BPF) #include "sandbox/linux/seccomp-bpf/sandbox_bpf.h"
diff --git a/chrome/browser/android/vr/vr_shell.cc b/chrome/browser/android/vr/vr_shell.cc index 03631539..72260bc 100644 --- a/chrome/browser/android/vr/vr_shell.cc +++ b/chrome/browser/android/vr/vr_shell.cc
@@ -764,7 +764,7 @@ LogUnsupportedModeUserMetric((UiUnsupportedMode)mode); } -void VrShell::RecordVrStartAction(PageSessionStartAction action) { +void VrShell::RecordVrStartAction(VrStartAction action) { SessionMetricsHelper* metrics_helper = SessionMetricsHelper::FromWebContents(web_contents_); if (metrics_helper) {
diff --git a/chrome/browser/android/vr/vr_shell.h b/chrome/browser/android/vr/vr_shell.h index 37c2e90..6e6c89c 100644 --- a/chrome/browser/android/vr/vr_shell.h +++ b/chrome/browser/android/vr/vr_shell.h
@@ -186,7 +186,7 @@ void ExitPresent(); void ExitFullscreen(); void LogUnsupportedModeUserMetric(UiUnsupportedMode mode); - void RecordVrStartAction(PageSessionStartAction action); + void RecordVrStartAction(VrStartAction action); void OnUnsupportedMode(UiUnsupportedMode mode); void OnExitVrPromptResult(UiUnsupportedMode reason, ExitVrPromptChoice choice);
diff --git a/chrome/browser/android/vr/vr_shell_delegate.cc b/chrome/browser/android/vr/vr_shell_delegate.cc index ed90758..a50d0ea7 100644 --- a/chrome/browser/android/vr/vr_shell_delegate.cc +++ b/chrome/browser/android/vr/vr_shell_delegate.cc
@@ -133,13 +133,11 @@ const base::android::JavaParamRef<jobject>& obj, jint start_action) { if (!vr_shell_) { - pending_vr_start_action_ = - static_cast<PageSessionStartAction>(start_action); + pending_vr_start_action_ = static_cast<VrStartAction>(start_action); return; } - vr_shell_->RecordVrStartAction( - static_cast<PageSessionStartAction>(start_action)); + vr_shell_->RecordVrStartAction(static_cast<VrStartAction>(start_action)); } void VrShellDelegate::OnPresentResult(
diff --git a/chrome/browser/android/vr/vr_shell_delegate.h b/chrome/browser/android/vr/vr_shell_delegate.h index a53a9284..e396ecd 100644 --- a/chrome/browser/android/vr/vr_shell_delegate.h +++ b/chrome/browser/android/vr/vr_shell_delegate.h
@@ -98,7 +98,7 @@ VrShell* vr_shell_ = nullptr; base::OnceCallback<void(bool)> on_present_result_callback_; bool pending_successful_present_request_ = false; - base::Optional<PageSessionStartAction> pending_vr_start_action_; + base::Optional<VrStartAction> pending_vr_start_action_; base::CancelableClosure clear_activate_task_; scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
diff --git a/chrome/browser/background/background_contents_service.cc b/chrome/browser/background/background_contents_service.cc index 646a4e6..dda086c4 100644 --- a/chrome/browser/background/background_contents_service.cc +++ b/chrome/browser/background/background_contents_service.cc
@@ -99,7 +99,8 @@ extension_id_(extension->id()) { } - void Click() override { + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override { // http://crbug.com/247790 involves a crash notification balloon being // clicked while the extension isn't in the TERMINATED state. In that case, // any of the "reload" methods called below can unload the extension, which
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index 81ec1e19..3b55aa6e 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -975,8 +975,8 @@ "login/quick_unlock/auth_token.h", "login/quick_unlock/fingerprint_storage.cc", "login/quick_unlock/fingerprint_storage.h", - "login/quick_unlock/pin_storage.cc", - "login/quick_unlock/pin_storage.h", + "login/quick_unlock/pin_storage_prefs.cc", + "login/quick_unlock/pin_storage_prefs.h", "login/quick_unlock/quick_unlock_factory.cc", "login/quick_unlock/quick_unlock_factory.h", "login/quick_unlock/quick_unlock_notification_controller.cc", @@ -1975,7 +1975,7 @@ "login/hwid_checker_unittest.cc", "login/profile_auth_data_unittest.cc", "login/quick_unlock/fingerprint_storage_unittest.cc", - "login/quick_unlock/pin_storage_unittest.cc", + "login/quick_unlock/pin_storage_prefs_unittest.cc", "login/quick_unlock/quick_unlock_storage_unittest.cc", "login/saml/saml_offline_signin_limiter_unittest.cc", "login/screens/network_screen_unittest.cc",
diff --git a/chrome/browser/chromeos/arc/arc_migration_guide_notification.cc b/chrome/browser/chromeos/arc/arc_migration_guide_notification.cc index e3b2309..5f5f93b 100644 --- a/chrome/browser/chromeos/arc/arc_migration_guide_notification.cc +++ b/chrome/browser/chromeos/arc/arc_migration_guide_notification.cc
@@ -37,60 +37,27 @@ constexpr base::TimeDelta kSuccessNotificationDelay = base::TimeDelta::FromSeconds(3); -class ArcMigrationGuideNotificationDelegate - : public message_center::NotificationDelegate { - public: - ArcMigrationGuideNotificationDelegate() = default; - - // message_center::NotificationDelegate - void ButtonClick(int button_index) override { chrome::AttemptUserExit(); } - void Click() override { chrome::AttemptUserExit(); } - - private: - ~ArcMigrationGuideNotificationDelegate() override = default; - - DISALLOW_COPY_AND_ASSIGN(ArcMigrationGuideNotificationDelegate); -}; - -class ArcMigrationCompletedNotificationDelegate - : public message_center::NotificationDelegate { - public: - explicit ArcMigrationCompletedNotificationDelegate(Profile* profile) - : profile_(profile) {} - - // message_center::NotificationDelegate - void ButtonClick(int button_index) override { - arc::SetArcPlayStoreEnabledForProfile(profile_, true); - } - - void Click() override { - arc::SetArcPlayStoreEnabledForProfile(profile_, true); - } - - private: - ~ArcMigrationCompletedNotificationDelegate() override = default; - - // Unowned pointer. - Profile* const profile_; - - DISALLOW_COPY_AND_ASSIGN(ArcMigrationCompletedNotificationDelegate); -}; - void DoShowArcMigrationSuccessNotification(Profile* profile) { message_center::NotifierId notifier_id( message_center::NotifierId::SYSTEM_COMPONENT, kNotifierId); notifier_id.profile_id = multi_user_util::GetAccountIdFromProfile(profile).GetUserEmail(); + auto delegate = + base::MakeRefCounted<message_center::HandleNotificationClickDelegate>( + base::BindRepeating( + [](Profile* profile) { + arc::SetArcPlayStoreEnabledForProfile(profile, true); + }, + profile)); + std::unique_ptr<message_center::Notification> notification = message_center::Notification::CreateSystemNotification( message_center::NOTIFICATION_TYPE_SIMPLE, kSuccessNotificationId, l10n_util::GetStringUTF16(IDS_ARC_MIGRATE_ENCRYPTION_SUCCESS_TITLE), l10n_util::GetStringUTF16(IDS_ARC_MIGRATE_ENCRYPTION_SUCCESS_MESSAGE), gfx::Image(), base::string16(), GURL(), notifier_id, - message_center::RichNotificationData(), - scoped_refptr<message_center::NotificationDelegate>( - new ArcMigrationCompletedNotificationDelegate(profile)), + message_center::RichNotificationData(), std::move(delegate), ash::kNotificationSettingsIcon, message_center::SystemNotificationWarningLevel::NORMAL); @@ -124,15 +91,17 @@ : l10n_util::GetStringUTF16( IDS_ARC_MIGRATE_ENCRYPTION_NOTIFICATION_MESSAGE); + auto delegate = + base::MakeRefCounted<message_center::HandleNotificationClickDelegate>( + base::BindRepeating(&chrome::AttemptUserExit)); + std::unique_ptr<message_center::Notification> notification = message_center::Notification::CreateSystemNotification( message_center::NOTIFICATION_TYPE_SIMPLE, kSuggestNotificationId, l10n_util::GetStringUTF16( IDS_ARC_MIGRATE_ENCRYPTION_NOTIFICATION_TITLE), message, gfx::Image(), base::string16(), GURL(), notifier_id, - message_center::RichNotificationData(), - scoped_refptr<message_center::NotificationDelegate>( - new ArcMigrationGuideNotificationDelegate()), + message_center::RichNotificationData(), std::move(delegate), ash::kNotificationSettingsIcon, message_center::SystemNotificationWarningLevel::NORMAL);
diff --git a/chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.cc b/chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.cc index cc57dab..ebabf12 100644 --- a/chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.cc +++ b/chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.cc
@@ -53,33 +53,6 @@ // Kerberos config file name. constexpr char kKrb5ConfFile[] = "krb5.conf"; -// A notification delegate for the sign-out button. -// TODO(estade): Can this be a HandleNotificationButtonClickDelegate? -class SigninNotificationDelegate : public message_center::NotificationDelegate { - public: - SigninNotificationDelegate(); - - // NotificationDelegate: - void Click() override; - void ButtonClick(int button_index) override; - - protected: - ~SigninNotificationDelegate() override = default; - - private: - DISALLOW_COPY_AND_ASSIGN(SigninNotificationDelegate); -}; - -SigninNotificationDelegate::SigninNotificationDelegate() {} - -void SigninNotificationDelegate::Click() { - chrome::AttemptUserExit(); -} - -void SigninNotificationDelegate::ButtonClick(int button_index) { - chrome::AttemptUserExit(); -} - // Writes |blob| into file <UserPath>/kerberos/|file_name|. First writes into // temporary file and then replaces existing one. void WriteFile(const std::string& file_name, const std::string& blob) { @@ -309,14 +282,20 @@ // Set |profile_id| for multi-user notification blocker. notifier_id.profile_id = profile_->GetProfileUserName(); + auto delegate = + base::MakeRefCounted<message_center::HandleNotificationClickDelegate>( + base::BindRepeating([](base::Optional<int> button_index) { + chrome::AttemptUserExit(); + })); + std::unique_ptr<message_center::Notification> notification = message_center::Notification::CreateSystemNotification( message_center::NOTIFICATION_TYPE_SIMPLE, notification_id, l10n_util::GetStringUTF16(IDS_SIGNIN_ERROR_BUBBLE_VIEW_TITLE), l10n_util::GetStringUTF16(message_id), gfx::Image(), l10n_util::GetStringUTF16(IDS_SIGNIN_ERROR_DISPLAY_SOURCE), - GURL(notification_id), notifier_id, data, - new SigninNotificationDelegate(), ash::kNotificationWarningIcon, + GURL(notification_id), notifier_id, data, std::move(delegate), + ash::kNotificationWarningIcon, message_center::SystemNotificationWarningLevel::WARNING); notification->SetSystemPriority();
diff --git a/chrome/browser/chromeos/eol_notification.cc b/chrome/browser/chromeos/eol_notification.cc index a7eae6d..83ffa78 100644 --- a/chrome/browser/chromeos/eol_notification.cc +++ b/chrome/browser/chromeos/eol_notification.cc
@@ -46,8 +46,12 @@ ~EolNotificationDelegate() override = default; // NotificationDelegate overrides: - void ButtonClick(int button_index) override { - switch (button_index) { + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override { + if (!button_index) + return; + + switch (*button_index) { case BUTTON_MORE_INFO: { // show eol link NavigateParams params(profile_, GURL(chrome::kEolNotificationURL),
diff --git a/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc b/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc index 964b2ee..2f6f1d0 100644 --- a/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc +++ b/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc
@@ -186,29 +186,27 @@ Service::Get(Profile::FromBrowserContext(browser_context())); DCHECK(service); + ProviderId provider_id = ProviderId::CreateFromExtensionId(extension_id()); const std::vector<ProvidedFileSystemInfo> file_systems = - service->GetProvidedFileSystemInfoList(); + service->GetProvidedFileSystemInfoList(provider_id); + std::vector<FileSystemInfo> items; - ProviderId provider_id = ProviderId::CreateFromExtensionId(extension_id()); for (const auto& file_system_info : file_systems) { - if (file_system_info.provider_id() == provider_id) { - FileSystemInfo item; + FileSystemInfo item; - chromeos::file_system_provider::ProvidedFileSystemInterface* const - file_system = - service->GetProvidedFileSystem(file_system_info.provider_id(), - file_system_info.file_system_id()); - DCHECK(file_system); + chromeos::file_system_provider::ProvidedFileSystemInterface* const + file_system = service->GetProvidedFileSystem( + file_system_info.provider_id(), file_system_info.file_system_id()); - FillFileSystemInfo(file_system_info, - file_system_info.watchable() - ? *file_system->GetWatchers() - : Watchers(), - file_system->GetOpenedFiles(), &item); + DCHECK(file_system); - items.push_back(std::move(item)); - } + FillFileSystemInfo( + file_system_info, + file_system_info.watchable() ? *file_system->GetWatchers() : Watchers(), + file_system->GetOpenedFiles(), &item); + + items.push_back(std::move(item)); } return RespondNow(
diff --git a/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc b/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc index f3f825e..9ba4c1b 100644 --- a/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc +++ b/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc
@@ -67,7 +67,7 @@ NotificationDisplayServiceTester::Get()->GetNotification( file_system_info_.mount_path().value()); if (notification) - notification->delegate()->ButtonClick(0); + notification->delegate()->Click(0, base::nullopt); } ProvidedFileSystemInfo file_system_info_;
diff --git a/chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api.cc b/chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api.cc index 0b98270..caab3bba 100644 --- a/chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api.cc +++ b/chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api.cc
@@ -75,7 +75,8 @@ QuickUnlockStorage* quick_unlock_storage = chromeos::quick_unlock::QuickUnlockFactory::GetForProfile(profile); - if (quick_unlock_storage && quick_unlock_storage->pin_storage()->IsPinSet()) + if (quick_unlock_storage && + quick_unlock_storage->pin_storage_prefs()->IsPinSet()) modes.push_back(quick_unlock_private::QUICK_UNLOCK_MODE_PIN); return modes; @@ -496,9 +497,9 @@ chromeos::quick_unlock::QuickUnlockFactory::GetForProfile(profile); if (pin_credential.empty()) { - quick_unlock_storage->pin_storage()->RemovePin(); + quick_unlock_storage->pin_storage_prefs()->RemovePin(); } else { - quick_unlock_storage->pin_storage()->SetPin(pin_credential); + quick_unlock_storage->pin_storage_prefs()->SetPin(pin_credential); quick_unlock_storage->MarkStrongAuth(); } }
diff --git a/chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api_unittest.cc b/chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api_unittest.cc index 6a82acc..883d5939 100644 --- a/chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api_unittest.cc +++ b/chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api_unittest.cc
@@ -511,7 +511,7 @@ } // Ensures that quick unlock can be enabled and disabled by checking the result -// of quickUnlockPrivate.GetActiveModes and PinStorage::IsPinSet. +// of quickUnlockPrivate.GetActiveModes and PinStoragePrefs::IsPinSet. TEST_F(QuickUnlockPrivateUnitTest, SetModesAndGetActiveModes) { quick_unlock::QuickUnlockStorage* quick_unlock_storage = quick_unlock::QuickUnlockFactory::GetForProfile(profile()); @@ -523,13 +523,13 @@ {"111111"}); EXPECT_EQ(GetActiveModes(), QuickUnlockModeList{QuickUnlockMode::QUICK_UNLOCK_MODE_PIN}); - EXPECT_TRUE(quick_unlock_storage->pin_storage()->IsPinSet()); + EXPECT_TRUE(quick_unlock_storage->pin_storage_prefs()->IsPinSet()); // SetModes can be used to turn off a quick unlock mode. ExpectModesChanged(QuickUnlockModeList{}); RunSetModes(QuickUnlockModeList{}, CredentialList{}); EXPECT_EQ(GetActiveModes(), QuickUnlockModeList{}); - EXPECT_FALSE(quick_unlock_storage->pin_storage()->IsPinSet()); + EXPECT_FALSE(quick_unlock_storage->pin_storage_prefs()->IsPinSet()); } // Verifies that enabling PIN quick unlock actually talks to the PIN subsystem. @@ -538,14 +538,14 @@ quick_unlock::QuickUnlockFactory::GetForProfile(profile()); RunSetModes(QuickUnlockModeList{}, CredentialList{}); - EXPECT_FALSE(quick_unlock_storage->pin_storage()->IsPinSet()); + EXPECT_FALSE(quick_unlock_storage->pin_storage_prefs()->IsPinSet()); RunSetModes(QuickUnlockModeList{QuickUnlockMode::QUICK_UNLOCK_MODE_PIN}, {"111111"}); - EXPECT_TRUE(quick_unlock_storage->pin_storage()->IsPinSet()); + EXPECT_TRUE(quick_unlock_storage->pin_storage_prefs()->IsPinSet()); quick_unlock_storage->MarkStrongAuth(); - quick_unlock_storage->pin_storage()->ResetUnlockAttemptCount(); + quick_unlock_storage->pin_storage_prefs()->ResetUnlockAttemptCount(); EXPECT_TRUE(quick_unlock_storage->TryAuthenticatePin( "111111", Key::KEY_TYPE_PASSWORD_PLAIN)); EXPECT_FALSE(quick_unlock_storage->TryAuthenticatePin(
diff --git a/chrome/browser/chromeos/file_system_provider/notification_manager.cc b/chrome/browser/chromeos/file_system_provider/notification_manager.cc index 4189dfcf..a3433506 100644 --- a/chrome/browser/chromeos/file_system_provider/notification_manager.cc +++ b/chrome/browser/chromeos/file_system_provider/notification_manager.cc
@@ -61,7 +61,11 @@ } } -void NotificationManager::ButtonClick(int button_index) { +void NotificationManager::Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { + if (!button_index) + return; + OnNotificationResult(ABORT); }
diff --git a/chrome/browser/chromeos/file_system_provider/notification_manager.h b/chrome/browser/chromeos/file_system_provider/notification_manager.h index 3652c38c..e19c624e 100644 --- a/chrome/browser/chromeos/file_system_provider/notification_manager.h +++ b/chrome/browser/chromeos/file_system_provider/notification_manager.h
@@ -49,7 +49,8 @@ const gfx::ImageSkia& image) override; // message_center::NotificationObserver overrides: - void ButtonClick(int button_index) override; + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; void Close(bool by_user) override; private:
diff --git a/chrome/browser/chromeos/file_system_provider/service.cc b/chrome/browser/chromeos/file_system_provider/service.cc index 8ca7af3..c97d451b 100644 --- a/chrome/browser/chromeos/file_system_provider/service.cc +++ b/chrome/browser/chromeos/file_system_provider/service.cc
@@ -275,6 +275,23 @@ return result; } +std::vector<ProvidedFileSystemInfo> Service::GetProvidedFileSystemInfoList( + const ProviderId& provider_id) { + DCHECK(thread_checker_.CalledOnValidThread()); + + const std::vector<ProvidedFileSystemInfo> full_list = + GetProvidedFileSystemInfoList(); + std::vector<ProvidedFileSystemInfo> filtered_list; + + for (const auto& file_system : full_list) { + if (file_system.provider_id() == provider_id) { + filtered_list.push_back(file_system); + } + } + + return filtered_list; +} + ProvidedFileSystemInterface* Service::GetProvidedFileSystem( const ProviderId& provider_id, const std::string& file_system_id) {
diff --git a/chrome/browser/chromeos/file_system_provider/service.h b/chrome/browser/chromeos/file_system_provider/service.h index f899d61..0da5dad 100644 --- a/chrome/browser/chromeos/file_system_provider/service.h +++ b/chrome/browser/chromeos/file_system_provider/service.h
@@ -111,6 +111,11 @@ // items are copied. std::vector<ProvidedFileSystemInfo> GetProvidedFileSystemInfoList(); + // Returns a list of information of the currently provided file systems for + // |provider_id|. All items are copied. + std::vector<ProvidedFileSystemInfo> GetProvidedFileSystemInfoList( + const ProviderId& provider_id); + // Returns an immutable map of all registered providers. const ProviderMap& GetProviders() const;
diff --git a/chrome/browser/chromeos/first_run/drive_first_run_controller.cc b/chrome/browser/chromeos/first_run/drive_first_run_controller.cc index cbcdf11..374c4f5 100644 --- a/chrome/browser/chromeos/first_run/drive_first_run_controller.cc +++ b/chrome/browser/chromeos/first_run/drive_first_run_controller.cc
@@ -76,42 +76,6 @@ } // namespace //////////////////////////////////////////////////////////////////////////////// -// DriveOfflineNotificationDelegate - -// NotificationDelegate for the notification that is displayed when Drive -// offline mode is enabled automatically. Clicking on the notification button -// will open the Drive settings page. -class DriveOfflineNotificationDelegate - : public message_center::NotificationDelegate { - public: - explicit DriveOfflineNotificationDelegate(Profile* profile) - : profile_(profile) {} - - // message_center::NotificationDelegate overrides: - void ButtonClick(int button_index) override; - - protected: - ~DriveOfflineNotificationDelegate() override {} - - private: - Profile* profile_; - - DISALLOW_COPY_AND_ASSIGN(DriveOfflineNotificationDelegate); -}; - -void DriveOfflineNotificationDelegate::ButtonClick(int button_index) { - DCHECK_EQ(0, button_index); - - // The support page will be localized based on the user's GAIA account. - const GURL url = GURL(kDriveOfflineSupportUrl); - - chrome::ScopedTabbedBrowserDisplayer displayer(profile_); - ShowSingletonTabOverwritingNTP( - displayer.browser(), - GetSingletonTabNavigateParams(displayer.browser(), url)); -} - -//////////////////////////////////////////////////////////////////////////////// // DriveWebContentsManager // Manages web contents that initializes Google Drive offline mode. We create @@ -460,6 +424,28 @@ data.buttons.push_back(message_center::ButtonInfo( l10n_util::GetStringUTF16(IDS_DRIVE_OFFLINE_NOTIFICATION_BUTTON))); ui::ResourceBundle& resource_bundle = ui::ResourceBundle::GetSharedInstance(); + + // Clicking on the notification button will open the Drive settings page. + auto delegate = + base::MakeRefCounted<message_center::HandleNotificationClickDelegate>( + base::BindRepeating( + [](Profile* profile, base::Optional<int> button_index) { + if (!button_index) + return; + + DCHECK_EQ(0, *button_index); + + // The support page will be localized based on the user's GAIA + // account. + const GURL url = GURL(kDriveOfflineSupportUrl); + + chrome::ScopedTabbedBrowserDisplayer displayer(profile); + ShowSingletonTabOverwritingNTP( + displayer.browser(), + GetSingletonTabNavigateParams(displayer.browser(), url)); + }, + profile_)); + message_center::Notification notification( message_center::NOTIFICATION_TYPE_SIMPLE, kDriveOfflineNotificationId, base::string16(), // title @@ -468,7 +454,7 @@ base::UTF8ToUTF16(extension->name()), GURL(), message_center::NotifierId(message_center::NotifierId::APPLICATION, kDriveHostedAppId), - data, new DriveOfflineNotificationDelegate(profile_)); + data, std::move(delegate)); notification.set_priority(message_center::LOW_PRIORITY); NotificationDisplayService::GetForProfile(profile_)->Display( NotificationHandler::Type::TRANSIENT, notification);
diff --git a/chrome/browser/chromeos/hats/hats_notification_controller.cc b/chrome/browser/chromeos/hats/hats_notification_controller.cc index 93d0f8a..9d19202 100644 --- a/chrome/browser/chromeos/hats/hats_notification_controller.cc +++ b/chrome/browser/chromeos/hats/hats_notification_controller.cc
@@ -156,13 +156,9 @@ return true; } -// message_center::NotificationDelegate override: -void HatsNotificationController::Click() { - ButtonClick(0 /* unused */); -} - -// message_center::NotificationDelegate override: -void HatsNotificationController::ButtonClick(int /* button_index */) { +void HatsNotificationController::Click( + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { UpdateLastInteractionTime(); // The dialog deletes itslef on close.
diff --git a/chrome/browser/chromeos/hats/hats_notification_controller.h b/chrome/browser/chromeos/hats/hats_notification_controller.h index 941572f..62a76176 100644 --- a/chrome/browser/chromeos/hats/hats_notification_controller.h +++ b/chrome/browser/chromeos/hats/hats_notification_controller.h
@@ -46,9 +46,9 @@ // NotificationDelegate overrides: void Initialize(bool is_new_device); - void ButtonClick(int button_index) override; void Close(bool by_user) override; - void Click() override; + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; // NetworkPortalDetector::Observer override: void OnPortalDetectionCompleted(
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_notification_controller.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_notification_controller.cc index 9d97654..8cafe49 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_notification_controller.cc +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_notification_controller.cc
@@ -172,32 +172,25 @@ EasyUnlockNotificationController::NotificationDelegate:: ~NotificationDelegate() {} -void EasyUnlockNotificationController::NotificationDelegate::Click() { +void EasyUnlockNotificationController::NotificationDelegate::Click( + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { if (!notification_controller_) return; - if (notification_id_ == kEasyUnlockChromebookAddedNotifierId || - notification_id_ == kEasyUnlockPairingChangeAppliedNotifierId || - notification_id_ == kEasyUnlockPromotionNotifierId) - notification_controller_->LaunchEasyUnlockSettings(); -} + if (notification_id_ == kEasyUnlockPairingChangeNotifierId) { + if (!button_index) + return; -void EasyUnlockNotificationController::NotificationDelegate::ButtonClick( - int button_index) { - if (!notification_controller_) - return; - - if (notification_id_ == kEasyUnlockChromebookAddedNotifierId || - notification_id_ == kEasyUnlockPairingChangeAppliedNotifierId || - notification_id_ == kEasyUnlockPromotionNotifierId) { - notification_controller_->LaunchEasyUnlockSettings(); - } else if (notification_id_ == kEasyUnlockPairingChangeNotifierId) { - if (button_index == 0) { + if (*button_index == 0) { notification_controller_->LockScreen(); - } else if (button_index == 1) { - notification_controller_->LaunchEasyUnlockSettings(); + return; } + + DCHECK_EQ(1, *button_index); } + + notification_controller_->LaunchEasyUnlockSettings(); } } // namespace chromeos
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_notification_controller.h b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_notification_controller.h index a68e99f6..60ff0a1 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_notification_controller.h +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_notification_controller.h
@@ -47,8 +47,8 @@ notification_controller); // message_center::NotificationDelegate: - void Click() override; - void ButtonClick(int button_index) override; + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; private: ~NotificationDelegate() override;
diff --git a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_notification_controller_chromeos_unittest.cc b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_notification_controller_chromeos_unittest.cc index f996c26..05539d1 100644 --- a/chrome/browser/chromeos/login/easy_unlock/easy_unlock_notification_controller_chromeos_unittest.cc +++ b/chrome/browser/chromeos/login/easy_unlock/easy_unlock_notification_controller_chromeos_unittest.cc
@@ -71,11 +71,11 @@ // Clicking notification button should launch settings. EXPECT_CALL(*notification_controller_, LaunchEasyUnlockSettings()); - notification->ButtonClick(0); + notification->delegate()->Click(0, base::nullopt); // Clicking the notification itself should also launch settings. EXPECT_CALL(*notification_controller_, LaunchEasyUnlockSettings()); - notification->Click(); + notification->delegate()->Click(base::nullopt, base::nullopt); } TEST_F(EasyUnlockNotificationControllerTest, @@ -91,14 +91,14 @@ // Clicking 1st notification button should lock screen settings. EXPECT_CALL(*notification_controller_, LockScreen()); - notification->ButtonClick(0); + notification->delegate()->Click(0, base::nullopt); // Clicking 2nd notification button should launch settings. EXPECT_CALL(*notification_controller_, LaunchEasyUnlockSettings()); - notification->ButtonClick(1); + notification->delegate()->Click(1, base::nullopt); // Clicking the notification itself should do nothing. - notification->Click(); + notification->delegate()->Click(base::nullopt, base::nullopt); } TEST_F(EasyUnlockNotificationControllerTest, @@ -119,11 +119,11 @@ // Clicking notification button should launch settings. EXPECT_CALL(*notification_controller_, LaunchEasyUnlockSettings()); - notification->ButtonClick(0); + notification->delegate()->Click(0, base::nullopt); // Clicking the notification itself should also launch settings. EXPECT_CALL(*notification_controller_, LaunchEasyUnlockSettings()); - notification->Click(); + notification->delegate()->Click(base::nullopt, base::nullopt); } TEST_F(EasyUnlockNotificationControllerTest, @@ -152,12 +152,12 @@ // Clicking notification button should launch settings. EXPECT_CALL(*notification_controller_, LaunchEasyUnlockSettings()); - notification->ButtonClick(0); + notification->delegate()->Click(0, base::nullopt); // Clicking the notification itself should also launch settings. EXPECT_CALL(*notification_controller_, LaunchEasyUnlockSettings()); - notification->Click(); + notification->delegate()->Click(base::nullopt, base::nullopt); } } // namespace -} // namespace chromeos \ No newline at end of file +} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/lock/screen_locker.cc b/chrome/browser/chromeos/login/lock/screen_locker.cc index e47cb9a5..7a02d4b 100644 --- a/chrome/browser/chromeos/login/lock/screen_locker.cc +++ b/chrome/browser/chromeos/login/lock/screen_locker.cc
@@ -297,7 +297,7 @@ quick_unlock::QuickUnlockStorage* quick_unlock_storage = quick_unlock::QuickUnlockFactory::GetForUser(user); if (quick_unlock_storage) { - quick_unlock_storage->pin_storage()->ResetUnlockAttemptCount(); + quick_unlock_storage->pin_storage_prefs()->ResetUnlockAttemptCount(); quick_unlock_storage->fingerprint_storage()->ResetUnlockAttemptCount(); }
diff --git a/chrome/browser/chromeos/login/quick_unlock/pin_storage.cc b/chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs.cc similarity index 79% rename from chrome/browser/chromeos/login/quick_unlock/pin_storage.cc rename to chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs.cc index d280eaf..f65f79d 100644 --- a/chrome/browser/chromeos/login/quick_unlock/pin_storage.cc +++ b/chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/login/quick_unlock/pin_storage.h" +#include "chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs.h" #include "ash/public/cpp/ash_pref_names.h" #include "base/base64.h" @@ -46,31 +46,31 @@ } // namespace // static -void PinStorage::RegisterProfilePrefs(PrefRegistrySimple* registry) { +void PinStoragePrefs::RegisterProfilePrefs(PrefRegistrySimple* registry) { // Mark it as PUBLIC so ash could access this pref. registry->RegisterStringPref(ash::prefs::kQuickUnlockPinSalt, "", PrefRegistry::PUBLIC); registry->RegisterStringPref(prefs::kQuickUnlockPinSecret, ""); } -PinStorage::PinStorage(PrefService* pref_service) +PinStoragePrefs::PinStoragePrefs(PrefService* pref_service) : pref_service_(pref_service) {} -PinStorage::~PinStorage() {} +PinStoragePrefs::~PinStoragePrefs() {} -void PinStorage::AddUnlockAttempt() { +void PinStoragePrefs::AddUnlockAttempt() { ++unlock_attempt_count_; } -void PinStorage::ResetUnlockAttemptCount() { +void PinStoragePrefs::ResetUnlockAttemptCount() { unlock_attempt_count_ = 0; } -bool PinStorage::IsPinSet() const { +bool PinStoragePrefs::IsPinSet() const { return !PinSalt().empty() && !PinSecret().empty(); } -void PinStorage::SetPin(const std::string& pin) { +void PinStoragePrefs::SetPin(const std::string& pin) { const std::string salt = CreateSalt(); const std::string secret = ComputeSecret(pin, salt, Key::KEY_TYPE_PASSWORD_PLAIN); @@ -79,20 +79,20 @@ pref_service_->SetString(prefs::kQuickUnlockPinSecret, secret); } -void PinStorage::RemovePin() { +void PinStoragePrefs::RemovePin() { pref_service_->SetString(ash::prefs::kQuickUnlockPinSalt, ""); pref_service_->SetString(prefs::kQuickUnlockPinSecret, ""); } -std::string PinStorage::PinSalt() const { +std::string PinStoragePrefs::PinSalt() const { return pref_service_->GetString(ash::prefs::kQuickUnlockPinSalt); } -std::string PinStorage::PinSecret() const { +std::string PinStoragePrefs::PinSecret() const { return pref_service_->GetString(prefs::kQuickUnlockPinSecret); } -bool PinStorage::IsPinAuthenticationAvailable() const { +bool PinStoragePrefs::IsPinAuthenticationAvailable() const { const bool exceeded_unlock_attempts = unlock_attempt_count() >= kMaximumUnlockAttempts; @@ -100,8 +100,8 @@ IsPinSet() && !exceeded_unlock_attempts; } -bool PinStorage::TryAuthenticatePin(const std::string& pin, - Key::KeyType key_type) { +bool PinStoragePrefs::TryAuthenticatePin(const std::string& pin, + Key::KeyType key_type) { if (!IsPinAuthenticationAvailable()) return false;
diff --git a/chrome/browser/chromeos/login/quick_unlock/pin_storage.h b/chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs.h similarity index 78% rename from chrome/browser/chromeos/login/quick_unlock/pin_storage.h rename to chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs.h index a80aa95e..39b212e 100644 --- a/chrome/browser/chromeos/login/quick_unlock/pin_storage.h +++ b/chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_QUICK_UNLOCK_PIN_STORAGE_H_ -#define CHROME_BROWSER_CHROMEOS_LOGIN_QUICK_UNLOCK_PIN_STORAGE_H_ +#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_QUICK_UNLOCK_PIN_STORAGE_PREFS_H_ +#define CHROME_BROWSER_CHROMEOS_LOGIN_QUICK_UNLOCK_PIN_STORAGE_PREFS_H_ #include <string> @@ -16,22 +16,23 @@ namespace chromeos { -class PinStorageTestApi; +class PinStoragePrefsTestApi; namespace quick_unlock { class QuickUnlockStorage; -class PinStorage { +class PinStoragePrefs { public: - // TODO(sammiequon): Pull this value in from policy. See crbug.com/612271. + // TODO(sammiequon): Pull this value in from policy. See + // https://crbug.com/612271. static const int kMaximumUnlockAttempts = 3; // Registers profile prefs. static void RegisterProfilePrefs(PrefRegistrySimple* registry); - explicit PinStorage(PrefService* pref_service); - ~PinStorage(); + explicit PinStoragePrefs(PrefService* pref_service); + ~PinStoragePrefs(); // Add a PIN unlock attempt count. void AddUnlockAttempt(); @@ -48,7 +49,7 @@ void RemovePin(); private: - friend class chromeos::PinStorageTestApi; + friend class chromeos::PinStoragePrefsTestApi; friend class QuickUnlockStorage; // Is PIN entry currently available? @@ -65,10 +66,10 @@ PrefService* pref_service_; int unlock_attempt_count_ = 0; - DISALLOW_COPY_AND_ASSIGN(PinStorage); + DISALLOW_COPY_AND_ASSIGN(PinStoragePrefs); }; } // namespace quick_unlock } // namespace chromeos -#endif // CHROME_BROWSER_CHROMEOS_LOGIN_QUICK_UNLOCK_PIN_STORAGE_H_ +#endif // CHROME_BROWSER_CHROMEOS_LOGIN_QUICK_UNLOCK_PIN_STORAGE_PREFS_H_
diff --git a/chrome/browser/chromeos/login/quick_unlock/pin_storage_unittest.cc b/chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs_unittest.cc similarity index 75% rename from chrome/browser/chromeos/login/quick_unlock/pin_storage_unittest.cc rename to chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs_unittest.cc index 22862c0..d6c6d51 100644 --- a/chrome/browser/chromeos/login/quick_unlock/pin_storage_unittest.cc +++ b/chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs_unittest.cc
@@ -16,10 +16,10 @@ namespace chromeos { namespace { -class PinStorageUnitTest : public testing::Test { +class PinStoragePrefsUnitTest : public testing::Test { protected: - PinStorageUnitTest() : profile_(std::make_unique<TestingProfile>()) {} - ~PinStorageUnitTest() override {} + PinStoragePrefsUnitTest() : profile_(std::make_unique<TestingProfile>()) {} + ~PinStoragePrefsUnitTest() override = default; // testing::Test: void SetUp() override { @@ -29,16 +29,16 @@ content::TestBrowserThreadBundle thread_bundle_; std::unique_ptr<TestingProfile> profile_; - DISALLOW_COPY_AND_ASSIGN(PinStorageUnitTest); + DISALLOW_COPY_AND_ASSIGN(PinStoragePrefsUnitTest); }; } // namespace -// Provides test-only PinStorage APIs. -class PinStorageTestApi { +// Provides test-only PinStoragePrefs APIs. +class PinStoragePrefsTestApi { public: // Does *not* take ownership over |pin_storage|. - explicit PinStorageTestApi(quick_unlock::PinStorage* pin_storage) + explicit PinStoragePrefsTestApi(quick_unlock::PinStoragePrefs* pin_storage) : pin_storage_(pin_storage) {} std::string PinSalt() const { return pin_storage_->PinSalt(); } @@ -53,25 +53,25 @@ } private: - quick_unlock::PinStorage* pin_storage_; + quick_unlock::PinStoragePrefs* pin_storage_; - DISALLOW_COPY_AND_ASSIGN(PinStorageTestApi); + DISALLOW_COPY_AND_ASSIGN(PinStoragePrefsTestApi); }; // Verifies that: // 1. Prefs are initially empty // 2. Setting a PIN will update the pref system. // 3. Removing a PIN clears prefs. -TEST_F(PinStorageUnitTest, PinStorageWritesToPrefs) { +TEST_F(PinStoragePrefsUnitTest, PinStorageWritesToPrefs) { PrefService* prefs = profile_->GetPrefs(); EXPECT_EQ("", prefs->GetString(ash::prefs::kQuickUnlockPinSalt)); EXPECT_EQ("", prefs->GetString(prefs::kQuickUnlockPinSecret)); - quick_unlock::PinStorage* pin_storage = + quick_unlock::PinStoragePrefs* pin_storage = quick_unlock::QuickUnlockFactory::GetForProfile(profile_.get()) - ->pin_storage(); - PinStorageTestApi pin_storage_test(pin_storage); + ->pin_storage_prefs(); + PinStoragePrefsTestApi pin_storage_test(pin_storage); pin_storage->SetPin("1111"); EXPECT_TRUE(pin_storage->IsPinSet()); @@ -92,10 +92,10 @@ // 1. Initial unlock attempt count is zero. // 2. Attempting unlock attempts correctly increases unlock attempt count. // 3. Resetting unlock attempt count correctly sets attempt count to 0. -TEST_F(PinStorageUnitTest, UnlockAttemptCount) { - quick_unlock::PinStorage* pin_storage = +TEST_F(PinStoragePrefsUnitTest, UnlockAttemptCount) { + quick_unlock::PinStoragePrefs* pin_storage = quick_unlock::QuickUnlockFactory::GetForProfile(profile_.get()) - ->pin_storage(); + ->pin_storage_prefs(); EXPECT_EQ(0, pin_storage->unlock_attempt_count()); @@ -109,11 +109,11 @@ } // Verifies that the correct pin can be used to authenticate. -TEST_F(PinStorageUnitTest, AuthenticationSucceedsWithRightPin) { - quick_unlock::PinStorage* pin_storage = +TEST_F(PinStoragePrefsUnitTest, AuthenticationSucceedsWithRightPin) { + quick_unlock::PinStoragePrefs* pin_storage = quick_unlock::QuickUnlockFactory::GetForProfile(profile_.get()) - ->pin_storage(); - PinStorageTestApi pin_storage_test(pin_storage); + ->pin_storage_prefs(); + PinStoragePrefsTestApi pin_storage_test(pin_storage); pin_storage->SetPin("1111"); @@ -123,17 +123,18 @@ // Verifies that the correct pin will fail to authenticate if too many // authentication attempts have been made. -TEST_F(PinStorageUnitTest, AuthenticationFailsFromTooManyAttempts) { - quick_unlock::PinStorage* pin_storage = +TEST_F(PinStoragePrefsUnitTest, AuthenticationFailsFromTooManyAttempts) { + quick_unlock::PinStoragePrefs* pin_storage = quick_unlock::QuickUnlockFactory::GetForProfile(profile_.get()) - ->pin_storage(); - PinStorageTestApi pin_storage_test(pin_storage); + ->pin_storage_prefs(); + PinStoragePrefsTestApi pin_storage_test(pin_storage); pin_storage->SetPin("1111"); // Use up all of the authentication attempts so authentication fails. EXPECT_TRUE(pin_storage_test.IsPinAuthenticationAvailable()); - for (int i = 0; i < quick_unlock::PinStorage::kMaximumUnlockAttempts; ++i) + for (int i = 0; i < quick_unlock::PinStoragePrefs::kMaximumUnlockAttempts; + ++i) EXPECT_FALSE(pin_storage_test.TryAuthenticatePin( "foobar", Key::KEY_TYPE_PASSWORD_PLAIN)); @@ -144,11 +145,11 @@ } // Verifies that hashed pin can be used to authenticate. -TEST_F(PinStorageUnitTest, AuthenticationWithHashedPin) { - quick_unlock::PinStorage* pin_storage = +TEST_F(PinStoragePrefsUnitTest, AuthenticationWithHashedPin) { + quick_unlock::PinStoragePrefs* pin_storage = quick_unlock::QuickUnlockFactory::GetForProfile(profile_.get()) - ->pin_storage(); - PinStorageTestApi pin_storage_test(pin_storage); + ->pin_storage_prefs(); + PinStoragePrefsTestApi pin_storage_test(pin_storage); pin_storage->SetPin("1111"); std::string hashed_pin = pin_storage_test.PinSecret();
diff --git a/chrome/browser/chromeos/login/quick_unlock/quick_unlock_notification_controller.cc b/chrome/browser/chromeos/login/quick_unlock/quick_unlock_notification_controller.cc index 13ea44e..45478a4 100644 --- a/chrome/browser/chromeos/login/quick_unlock/quick_unlock_notification_controller.cc +++ b/chrome/browser/chromeos/login/quick_unlock/quick_unlock_notification_controller.cc
@@ -93,12 +93,13 @@ } // Do not show the notification if the pin is already set. - PinStorage* pin_storage = - QuickUnlockFactory::GetForProfile(profile)->pin_storage(); + PinStoragePrefs* pin_storage = + QuickUnlockFactory::GetForProfile(profile)->pin_storage_prefs(); if (pin_storage->IsPinSet()) return false; - // TODO(jdufault): Enable once quick unlock settings land(crbug.com/291747). + // TODO(jdufault): Enable after PIN sign-in is supported. See + // https://crbug.com/826773. return false; } @@ -185,7 +186,9 @@ } // message_center::NotificationDelegate override: -void QuickUnlockNotificationController::Click() { +void QuickUnlockNotificationController::Click( + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { NavigateParams params(profile_, params_.url, ui::PAGE_TRANSITION_LINK); params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB; params.window_action = NavigateParams::SHOW_WINDOW;
diff --git a/chrome/browser/chromeos/login/quick_unlock/quick_unlock_notification_controller.h b/chrome/browser/chromeos/login/quick_unlock/quick_unlock_notification_controller.h index 38cbdc6..ffd2c62 100644 --- a/chrome/browser/chromeos/login/quick_unlock/quick_unlock_notification_controller.h +++ b/chrome/browser/chromeos/login/quick_unlock/quick_unlock_notification_controller.h
@@ -66,7 +66,8 @@ // NotificationDelegate: void Close(bool by_user) override; - void Click() override; + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; std::unique_ptr<message_center::Notification> CreateNotification(); void SetNotificationPreferenceWasShown();
diff --git a/chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.cc b/chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.cc index 15a9ef9a..0378b2a3 100644 --- a/chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.cc +++ b/chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.cc
@@ -17,7 +17,7 @@ QuickUnlockStorage::QuickUnlockStorage(PrefService* pref_service) : pref_service_(pref_service) { fingerprint_storage_ = std::make_unique<FingerprintStorage>(pref_service); - pin_storage_ = std::make_unique<PinStorage>(pref_service); + pin_storage_prefs_ = std::make_unique<PinStoragePrefs>(pref_service); } QuickUnlockStorage::~QuickUnlockStorage() {} @@ -25,7 +25,7 @@ void QuickUnlockStorage::MarkStrongAuth() { last_strong_auth_ = base::TimeTicks::Now(); fingerprint_storage()->ResetUnlockAttemptCount(); - pin_storage()->ResetUnlockAttemptCount(); + pin_storage_prefs()->ResetUnlockAttemptCount(); } bool QuickUnlockStorage::HasStrongAuth() const { @@ -53,12 +53,13 @@ } bool QuickUnlockStorage::IsPinAuthenticationAvailable() const { - return HasStrongAuth() && pin_storage_->IsPinAuthenticationAvailable(); + return HasStrongAuth() && pin_storage_prefs_->IsPinAuthenticationAvailable(); } bool QuickUnlockStorage::TryAuthenticatePin(const std::string& pin, Key::KeyType key_type) { - return HasStrongAuth() && pin_storage()->TryAuthenticatePin(pin, key_type); + return HasStrongAuth() && + pin_storage_prefs()->TryAuthenticatePin(pin, key_type); } std::string QuickUnlockStorage::CreateAuthToken( @@ -80,7 +81,7 @@ void QuickUnlockStorage::Shutdown() { fingerprint_storage_.reset(); - pin_storage_.reset(); + pin_storage_prefs_.reset(); } } // namespace quick_unlock
diff --git a/chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.h b/chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.h index 6b16a02d4..15792c5 100644 --- a/chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.h +++ b/chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.h
@@ -8,7 +8,7 @@ #include "base/memory/ptr_util.h" #include "chrome/browser/chromeos/login/quick_unlock/auth_token.h" #include "chrome/browser/chromeos/login/quick_unlock/fingerprint_storage.h" -#include "chrome/browser/chromeos/login/quick_unlock/pin_storage.h" +#include "chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs.h" #include "chromeos/login/auth/user_context.h" #include "components/keyed_service/core/keyed_service.h" @@ -70,7 +70,7 @@ FingerprintStorage* fingerprint_storage() { return fingerprint_storage_.get(); } - PinStorage* pin_storage() { return pin_storage_.get(); } + PinStoragePrefs* pin_storage_prefs() { return pin_storage_prefs_.get(); } private: friend class chromeos::QuickUnlockStorageTestApi; @@ -82,7 +82,7 @@ PrefService* pref_service_; base::TimeTicks last_strong_auth_; std::unique_ptr<FingerprintStorage> fingerprint_storage_; - std::unique_ptr<PinStorage> pin_storage_; + std::unique_ptr<PinStoragePrefs> pin_storage_prefs_; std::unique_ptr<AuthToken> auth_token_; DISALLOW_COPY_AND_ASSIGN(QuickUnlockStorage);
diff --git a/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc b/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc index 2c726dc..f3221ee 100644 --- a/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc +++ b/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc
@@ -242,7 +242,9 @@ ui_checker.Expect(Controller::NOTIFICATION_METRIC_DISPLAYED, 1)->Check()); EXPECT_TRUE(action_checker.Check()); - display_service_->GetNotification(kNotificationId)->delegate()->Click(); + display_service_->GetNotification(kNotificationId) + ->delegate() + ->Click(base::nullopt, base::nullopt); content::RunAllPendingInMessageLoop();
diff --git a/chrome/browser/chromeos/net/network_portal_notification_controller.cc b/chrome/browser/chromeos/net/network_portal_notification_controller.cc index 77ce869..86b4ecc6 100644 --- a/chrome/browser/chromeos/net/network_portal_notification_controller.cc +++ b/chrome/browser/chromeos/net/network_portal_notification_controller.cc
@@ -118,8 +118,8 @@ // Overridden from message_center::NotificationDelegate: void Close(bool by_user) override; - void Click() override; - void ButtonClick(int button_click) override; + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; private: ~NetworkPortalNotificationControllerDelegate() override {} @@ -149,7 +149,30 @@ NetworkPortalNotificationController::USER_ACTION_METRIC_COUNT); } -void NetworkPortalNotificationControllerDelegate::Click() { +void NetworkPortalNotificationControllerDelegate::Click( + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { + if (button_index && + *button_index == + NetworkPortalNotificationController::kUseExtensionButtonIndex) { + Profile* profile = GetProfileForPrimaryUser(); + // The user decided to notify the extension to authenticate to the captive + // portal. Notify the NetworkingConfigService, which in turn will notify the + // extension. OnExtensionFinsihedAuthentication will be called back if the + // authentication succeeded. + extensions::NetworkingConfigServiceFactory::GetForBrowserContext(profile) + ->DispatchPortalDetectedEvent( + extension_id_, guid_, + base::BindRepeating(&NetworkPortalNotificationController:: + OnExtensionFinishedAuthentication, + controller_)); + return; + } + + DCHECK(!button_index || + *button_index == + NetworkPortalNotificationController::kOpenPortalButtonIndex); + clicked_ = true; UMA_HISTOGRAM_ENUMERATION( NetworkPortalNotificationController::kUserActionMetric, @@ -181,27 +204,6 @@ CloseNotification(); } -void NetworkPortalNotificationControllerDelegate::ButtonClick( - int button_index) { - if (button_index == - NetworkPortalNotificationController::kUseExtensionButtonIndex) { - Profile* profile = GetProfileForPrimaryUser(); - // The user decided to notify the extension to authenticate to the captive - // portal. Notify the NetworkingConfigService, which in turn will notify the - // extension. OnExtensionFinsihedAuthentication will be called back if the - // authentication succeeded. - extensions::NetworkingConfigServiceFactory::GetForBrowserContext(profile) - ->DispatchPortalDetectedEvent( - extension_id_, guid_, - base::Bind(&NetworkPortalNotificationController:: - OnExtensionFinishedAuthentication, - controller_)); - } else if (button_index == - NetworkPortalNotificationController::kOpenPortalButtonIndex) { - Click(); - } -} - } // namespace // static @@ -322,9 +324,9 @@ NetworkPortalNotificationController::CreateDefaultCaptivePortalNotification( const NetworkState* network) { message_center::RichNotificationData data; - scoped_refptr<NetworkPortalNotificationControllerDelegate> delegate( - new NetworkPortalNotificationControllerDelegate( - std::string(), network->guid(), weak_factory_.GetWeakPtr())); + auto delegate = + base::MakeRefCounted<NetworkPortalNotificationControllerDelegate>( + std::string(), network->guid(), weak_factory_.GetWeakPtr()); message_center::NotifierId notifier_id( message_center::NotifierId::SYSTEM_COMPONENT, kNotifierNetworkPortalDetector); @@ -340,7 +342,7 @@ : IDS_PORTAL_DETECTION_NOTIFICATION_MESSAGE_WIRED, base::UTF8ToUTF16(network->name())), gfx::Image(), base::string16(), GURL(), notifier_id, data, - delegate.get(), ash::kNotificationCaptivePortalIcon, + std::move(delegate), ash::kNotificationCaptivePortalIcon, message_center::SystemNotificationWarningLevel::NORMAL); notification->SetSystemPriority(); return notification; @@ -353,9 +355,9 @@ extensions::NetworkingConfigService* networking_config_service, const extensions::Extension* extension) { message_center::RichNotificationData data; - scoped_refptr<NetworkPortalNotificationControllerDelegate> delegate( - new NetworkPortalNotificationControllerDelegate( - extension->id(), network->guid(), weak_factory_.GetWeakPtr())); + auto delegate = + base::MakeRefCounted<NetworkPortalNotificationControllerDelegate>( + extension->id(), network->guid(), weak_factory_.GetWeakPtr()); message_center::NotifierId notifier_id( message_center::NotifierId::SYSTEM_COMPONENT, kNotifierNetworkPortalDetector); @@ -394,7 +396,7 @@ IDS_PORTAL_DETECTION_NOTIFICATION_TITLE_WIFI), notification_text, gfx::Image(), base::string16() /* display_source */, GURL(), notifier_id, data, - delegate.get(), ash::kNotificationCaptivePortalIcon, + std::move(delegate), ash::kNotificationCaptivePortalIcon, message_center::SystemNotificationWarningLevel::NORMAL); notification->SetSystemPriority(); return notification;
diff --git a/chrome/browser/chromeos/printing/cups_print_job_notification.cc b/chrome/browser/chromeos/printing/cups_print_job_notification.cc index 000c931..92a2474b 100644 --- a/chrome/browser/chromeos/printing/cups_print_job_notification.cc +++ b/chrome/browser/chromeos/printing/cups_print_job_notification.cc
@@ -82,9 +82,14 @@ } } -void CupsPrintJobNotification::ButtonClick(int button_index) { - DCHECK(button_index >= 0 && - static_cast<size_t>(button_index) < button_commands_.size()); +void CupsPrintJobNotification::Click( + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { + if (!button_index) + return; + + DCHECK(*button_index >= 0 && + static_cast<size_t>(*button_index) < button_commands_.size()); CupsPrintJobManager* print_job_manager = CupsPrintJobManagerFactory::GetForBrowserContext(profile_); @@ -92,7 +97,7 @@ if (!print_job_) return; - switch (button_commands_[button_index]) { + switch (button_commands_[*button_index]) { case ButtonCommand::CANCEL_PRINTING: print_job_manager->CancelPrintJob(print_job_.get()); // print_job_ was deleted in CancelPrintJob. Forget the pointer.
diff --git a/chrome/browser/chromeos/printing/cups_print_job_notification.h b/chrome/browser/chromeos/printing/cups_print_job_notification.h index 8531386b..d7a1cb2 100644 --- a/chrome/browser/chromeos/printing/cups_print_job_notification.h +++ b/chrome/browser/chromeos/printing/cups_print_job_notification.h
@@ -44,7 +44,8 @@ // message_center::NotificationObserver void Close(bool by_user) override; - void ButtonClick(int button_index) override; + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; private: // Update the notification based on the print job's status.
diff --git a/chrome/browser/devtools/BUILD.gn b/chrome/browser/devtools/BUILD.gn index a1264b2e..8c728737 100644 --- a/chrome/browser/devtools/BUILD.gn +++ b/chrome/browser/devtools/BUILD.gn
@@ -118,7 +118,7 @@ "//content/public/browser", "//net", "//services/viz/privileged/interfaces/compositing", - "//third_party/WebKit/public:features", + "//third_party/WebKit/public:buildflags", "//ui/events:dom_keycode_converter", ]
diff --git a/chrome/browser/devtools/device/port_forwarding_controller.cc b/chrome/browser/devtools/device/port_forwarding_controller.cc index 55e64f29..2be73ab 100644 --- a/chrome/browser/devtools/device/port_forwarding_controller.cc +++ b/chrome/browser/devtools/device/port_forwarding_controller.cc
@@ -30,7 +30,7 @@ #include "net/log/net_log_with_source.h" #include "net/socket/tcp_client_socket.h" #include "net/traffic_annotation/network_traffic_annotation.h" -#include "third_party/WebKit/public/public_features.h" +#include "third_party/WebKit/public/public_buildflags.h" using content::BrowserThread;
diff --git a/chrome/browser/devtools/devtools_ui_bindings.cc b/chrome/browser/devtools/devtools_ui_bindings.cc index 576edfd2..143ad34 100644 --- a/chrome/browser/devtools/devtools_ui_bindings.cc +++ b/chrome/browser/devtools/devtools_ui_bindings.cc
@@ -75,7 +75,7 @@ #include "services/network/public/cpp/features.h" #include "services/network/public/cpp/simple_url_loader.h" #include "services/network/public/cpp/simple_url_loader_stream_consumer.h" -#include "third_party/WebKit/public/public_features.h" +#include "third_party/WebKit/public/public_buildflags.h" #include "ui/base/page_transition_types.h" using base::DictionaryValue;
diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc index 29fbdeb..db7beaa 100644 --- a/chrome/browser/devtools/devtools_window.cc +++ b/chrome/browser/devtools/devtools_window.cc
@@ -62,7 +62,7 @@ #include "net/base/escape.h" #include "third_party/WebKit/public/platform/WebGestureEvent.h" #include "third_party/WebKit/public/platform/WebInputEvent.h" -#include "third_party/WebKit/public/public_features.h" +#include "third_party/WebKit/public/public_buildflags.h" #include "ui/base/page_transition_types.h" #include "ui/events/keycodes/dom/keycode_converter.h" #include "ui/events/keycodes/keyboard_code_conversion.h"
diff --git a/chrome/browser/devtools/remote_debugging_server.cc b/chrome/browser/devtools/remote_debugging_server.cc index 3650e41..2dd4669 100644 --- a/chrome/browser/devtools/remote_debugging_server.cc +++ b/chrome/browser/devtools/remote_debugging_server.cc
@@ -23,7 +23,7 @@ #include "net/base/net_errors.h" #include "net/log/net_log_source.h" #include "net/socket/tcp_server_socket.h" -#include "third_party/WebKit/public/public_features.h" +#include "third_party/WebKit/public/public_buildflags.h" #include "ui/base/resource/resource_bundle.h" namespace {
diff --git a/chrome/browser/download/notification/download_item_notification.cc b/chrome/browser/download/notification/download_item_notification.cc index 56887ccb..e11aecb 100644 --- a/chrome/browser/download/notification/download_item_notification.cc +++ b/chrome/browser/download/notification/download_item_notification.cc
@@ -251,7 +251,38 @@ } } -void DownloadItemNotification::Click() { +void DownloadItemNotification::Click( + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { + if (button_index) { + if (*button_index < 0 || + static_cast<size_t>(*button_index) >= button_actions_->size()) { + // Out of boundary. + NOTREACHED(); + return; + } + + DownloadCommands::Command command = button_actions_->at(*button_index); + RecordButtonClickAction(command); + + DownloadCommands(item_).ExecuteCommand(command); + + // ExecuteCommand() might cause |item_| to be destroyed. + if (item_ && command != DownloadCommands::PAUSE && + command != DownloadCommands::RESUME) { + CloseNotification(); + } + + // Shows the notification again after clicking "Keep" on dangerous download. + if (command == DownloadCommands::KEEP) { + show_next_ = true; + Update(); + } + + return; + } + + // Handle a click on the notification's body. if (item_->IsDangerous()) { base::RecordAction( UserMetricsAction("DownloadNotification.Click_Dangerous")); @@ -286,32 +317,6 @@ } } -void DownloadItemNotification::ButtonClick(int button_index) { - if (button_index < 0 || - static_cast<size_t>(button_index) >= button_actions_->size()) { - // Out of boundary. - NOTREACHED(); - return; - } - - DownloadCommands::Command command = button_actions_->at(button_index); - RecordButtonClickAction(command); - - DownloadCommands(item_).ExecuteCommand(command); - - // ExecuteCommand() might cause |item_| to be destroyed. - if (item_ && command != DownloadCommands::PAUSE && - command != DownloadCommands::RESUME) { - CloseNotification(); - } - - // Shows the notification again after clicking "Keep" on dangerous download. - if (command == DownloadCommands::KEEP) { - show_next_ = true; - Update(); - } -} - std::string DownloadItemNotification::GetNotificationId() const { return item_->GetGuid(); }
diff --git a/chrome/browser/download/notification/download_item_notification.h b/chrome/browser/download/notification/download_item_notification.h index cfeb50b..c79abb8 100644 --- a/chrome/browser/download/notification/download_item_notification.h +++ b/chrome/browser/download/notification/download_item_notification.h
@@ -38,8 +38,8 @@ // NotificationObserver: void Close(bool by_user) override; - void Click() override; - void ButtonClick(int button_index) override; + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; private: friend class test::DownloadItemNotificationTest;
diff --git a/chrome/browser/download/notification/download_item_notification_unittest.cc b/chrome/browser/download/notification/download_item_notification_unittest.cc index 056be9a4..9d27059c 100644 --- a/chrome/browser/download/notification/download_item_notification_unittest.cc +++ b/chrome/browser/download/notification/download_item_notification_unittest.cc
@@ -169,13 +169,13 @@ // Pauses and makes sure the DownloadItem::Pause() is called. EXPECT_CALL(*download_item_, Pause()).Times(1); EXPECT_CALL(*download_item_, IsPaused()).WillRepeatedly(Return(true)); - download_item_notification_->ButtonClick(0); + download_item_notification_->Click(0, base::nullopt); download_item_->NotifyObserversDownloadUpdated(); // Resumes and makes sure the DownloadItem::Resume() is called. EXPECT_CALL(*download_item_, Resume()).Times(1); EXPECT_CALL(*download_item_, IsPaused()).WillRepeatedly(Return(false)); - download_item_notification_->ButtonClick(0); + download_item_notification_->Click(0, base::nullopt); download_item_->NotifyObserversDownloadUpdated(); } @@ -192,7 +192,7 @@ // Clicks and confirms that the OpenDownload() is called. EXPECT_CALL(*download_item_, OpenDownload()).Times(1); EXPECT_CALL(*download_item_, SetOpenWhenComplete(_)).Times(0); - download_item_notification_->Click(); + download_item_notification_->Click(base::nullopt, base::nullopt); } TEST_F(DownloadItemNotificationTest, OpenWhenComplete) { @@ -206,7 +206,7 @@ EXPECT_CALL(*download_item_, SetOpenWhenComplete(true)) .Times(1) .WillOnce(Return()); - download_item_notification_->Click(); + download_item_notification_->Click(base::nullopt, base::nullopt); EXPECT_CALL(*download_item_, GetOpenWhenComplete()) .WillRepeatedly(Return(true)); @@ -214,7 +214,7 @@ EXPECT_CALL(*download_item_, SetOpenWhenComplete(false)) .Times(1) .WillOnce(Return()); - download_item_notification_->Click(); + download_item_notification_->Click(base::nullopt, base::nullopt); EXPECT_CALL(*download_item_, GetOpenWhenComplete()) .WillRepeatedly(Return(false)); @@ -222,7 +222,7 @@ EXPECT_CALL(*download_item_, SetOpenWhenComplete(true)) .Times(1) .WillOnce(Return()); - download_item_notification_->Click(); + download_item_notification_->Click(base::nullopt, base::nullopt); EXPECT_CALL(*download_item_, GetOpenWhenComplete()) .WillRepeatedly(Return(true));
diff --git a/chrome/browser/extensions/api/networking_config_chromeos_apitest_chromeos.cc b/chrome/browser/extensions/api/networking_config_chromeos_apitest_chromeos.cc index ae13ce0..2dea3a79 100644 --- a/chrome/browser/extensions/api/networking_config_chromeos_apitest_chromeos.cc +++ b/chrome/browser/extensions/api/networking_config_chromeos_apitest_chromeos.cc
@@ -150,8 +150,9 @@ ASSERT_TRUE(notification); // Simulate the user click which leads to the extension being notified. - notification->delegate()->ButtonClick( - NetworkPortalNotificationController::kUseExtensionButtonIndex); + notification->delegate()->Click( + NetworkPortalNotificationController::kUseExtensionButtonIndex, + base::nullopt); extensions::ResultCatcher catcher; EXPECT_TRUE(catcher.GetNextResult());
diff --git a/chrome/browser/extensions/api/web_request/web_request_apitest.cc b/chrome/browser/extensions/api/web_request/web_request_apitest.cc index 8f3d556..1446ca5 100644 --- a/chrome/browser/extensions/api/web_request/web_request_apitest.cc +++ b/chrome/browser/extensions/api/web_request/web_request_apitest.cc
@@ -45,9 +45,11 @@ #include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/render_widget_host.h" +#include "content/public/browser/storage_partition.h" #include "content/public/browser/web_contents.h" #include "content/public/common/page_type.h" #include "content/public/test/browser_test_utils.h" +#include "content/public/test/simple_url_loader_test_helper.h" #include "content/public/test/url_loader_interceptor.h" #include "extensions/browser/api/web_request/web_request_api.h" #include "extensions/browser/blocked_action_type.h" @@ -72,6 +74,8 @@ #include "net/url_request/url_request_filter.h" #include "net/url_request/url_request_interceptor.h" #include "services/network/public/cpp/features.h" +#include "services/network/public/cpp/resource_request.h" +#include "services/network/public/cpp/simple_url_loader.h" #include "third_party/WebKit/public/platform/WebInputEvent.h" #if defined(OS_CHROMEOS) @@ -908,12 +912,11 @@ } // Verify that requests to clientsX.google.com are protected properly. -// First test requests from a standard renderer and a webui renderer. -// Then test a request from the browser process. +// First test requests from a standard renderer and then a request from the +// browser process. IN_PROC_BROWSER_TEST_F(ExtensionWebRequestApiTest, WebRequestClientsGoogleComProtection) { ASSERT_TRUE(embedded_test_server()->Start()); - int port = embedded_test_server()->port(); // Load an extension that registers a listener for webRequest events, and // wait until it's initialized. @@ -923,96 +926,60 @@ ASSERT_TRUE(extension) << message_; EXPECT_TRUE(listener.WaitUntilSatisfied()); - // Perform requests to https://client1.google.com from renderer processes. + EXPECT_EQ(0, GetWebRequestCountFromBackgroundPage(extension, profile())); - struct TestCase { - const char* main_frame_url; - bool request_to_clients1_google_com_visible; - } testcases[] = { - {"http://www.example.com", true}, {"chrome://settings", false}, - }; + GURL main_frame_url = + embedded_test_server()->GetURL("www.example.com", "/simple.html"); + NavigateParams params(browser(), main_frame_url, ui::PAGE_TRANSITION_TYPED); + ui_test_utils::NavigateToURL(¶ms); - // Expected number of requests to clients1.google.com observed so far. - int expected_requests_observed = 0; - EXPECT_EQ(expected_requests_observed, - GetWebRequestCountFromBackgroundPage(extension, profile())); + EXPECT_EQ(0, GetWebRequestCountFromBackgroundPage(extension, profile())); - for (const auto& testcase : testcases) { - SCOPED_TRACE(testcase.main_frame_url); + content::WebContents* web_contents = + browser()->tab_strip_model()->GetActiveWebContents(); + ASSERT_TRUE(web_contents); - GURL url; - if (base::StartsWith(testcase.main_frame_url, "chrome://", - base::CompareCase::INSENSITIVE_ASCII)) { - url = GURL(testcase.main_frame_url); - } else { - url = GURL(base::StringPrintf("%s:%d/simple.html", - testcase.main_frame_url, port)); - } + // Attempt to issue a request to clients1.google.com from the renderer. This + // will fail, but should still be visible to the WebRequest API. + const char kRequest[] = R"( + var xhr = new XMLHttpRequest(); + xhr.open('GET', 'http://clients1.google.com'); + xhr.onload = () => {window.domAutomationController.send(true);}; + xhr.onerror = () => {window.domAutomationController.send(false);}; + xhr.send();)"; + bool success = false; + EXPECT_TRUE(ExecuteScriptAndExtractBool(web_contents->GetMainFrame(), + kRequest, &success)); + // Requests always fail due to cross origin nature. + EXPECT_FALSE(success); - NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED); - ui_test_utils::NavigateToURL(¶ms); + EXPECT_EQ(1, GetWebRequestCountFromBackgroundPage(extension, profile())); - EXPECT_EQ(expected_requests_observed, - GetWebRequestCountFromBackgroundPage(extension, profile())); + // Now perform a request to client1.google.com from the browser process. This + // should *not* be visible to the WebRequest API. - content::WebContents* web_contents = - browser()->tab_strip_model()->GetActiveWebContents(); - ASSERT_TRUE(web_contents); + auto request = std::make_unique<network::ResourceRequest>(); + request->url = + embedded_test_server()->GetURL("clients1.google.com", "/simple.html"); - const char kRequest[] = - "var xhr = new XMLHttpRequest();\n" - "xhr.open('GET', 'https://clients1.google.com');\n" - "xhr.onload = () => {window.domAutomationController.send(true);};\n" - "xhr.onerror = () => {window.domAutomationController.send(false);};\n" - "xhr.send();\n"; + auto* url_loader_factory = + content::BrowserContext::GetDefaultStoragePartition(profile()) + ->GetURLLoaderFactoryForBrowserProcess() + .get(); + content::SimpleURLLoaderTestHelper loader_helper; + auto loader = network::SimpleURLLoader::Create(std::move(request), + TRAFFIC_ANNOTATION_FOR_TESTS); + loader->DownloadToStringOfUnboundedSizeUntilCrashAndDie( + url_loader_factory, loader_helper.GetCallback()); - bool success = false; - EXPECT_TRUE(ExecuteScriptAndExtractBool(web_contents->GetMainFrame(), - kRequest, &success)); - // Requests always fail due to cross origin nature. - EXPECT_FALSE(success); + // Wait for the response to complete. + loader_helper.WaitForCallback(); + EXPECT_TRUE(loader_helper.response_body()); + EXPECT_EQ(200, loader->ResponseInfo()->headers->response_code()); - if (testcase.request_to_clients1_google_com_visible) - ++expected_requests_observed; - - EXPECT_EQ(expected_requests_observed, - GetWebRequestCountFromBackgroundPage(extension, profile())); - } - - // Perform request to https://client1.google.com from browser process. - - class TestURLFetcherDelegate : public net::URLFetcherDelegate { - public: - explicit TestURLFetcherDelegate(const base::Closure& quit_loop_func) - : quit_loop_func_(quit_loop_func) {} - ~TestURLFetcherDelegate() override {} - - void OnURLFetchComplete(const net::URLFetcher* source) override { - EXPECT_EQ(net::HTTP_OK, source->GetResponseCode()); - quit_loop_func_.Run(); - } - - private: - base::Closure quit_loop_func_; - }; - base::RunLoop run_loop; - TestURLFetcherDelegate delegate(run_loop.QuitClosure()); - - net::URLFetcherImplFactory url_fetcher_impl_factory; - net::FakeURLFetcherFactory url_fetcher_factory(&url_fetcher_impl_factory); - url_fetcher_factory.SetFakeResponse(GURL("https://client1.google.com"), - "hello my friend", net::HTTP_OK, - net::URLRequestStatus::SUCCESS); - std::unique_ptr<net::URLFetcher> fetcher = - url_fetcher_factory.CreateURLFetcher( - 1, GURL("https://client1.google.com"), net::URLFetcher::GET, - &delegate, TRAFFIC_ANNOTATION_FOR_TESTS); - fetcher->Start(); - run_loop.Run(); - - // This request should not be observed by the extension. - EXPECT_EQ(expected_requests_observed, - GetWebRequestCountFromBackgroundPage(extension, profile())); + // We should still have only seen the single render-initiated request from the + // first half of the test. + EXPECT_EQ(1, GetWebRequestCountFromBackgroundPage(extension, profile())); } // Verify that requests for PAC scripts are protected properly.
diff --git a/chrome/browser/extensions/extension_storage_monitor_browsertest.cc b/chrome/browser/extensions/extension_storage_monitor_browsertest.cc index 0a139d60..edb1dd2 100644 --- a/chrome/browser/extensions/extension_storage_monitor_browsertest.cc +++ b/chrome/browser/extensions/extension_storage_monitor_browsertest.cc
@@ -319,7 +319,8 @@ // Fake clicking the notification button to disable notifications. display_service_->GetNotification(GetNotificationId(extension->id())) ->delegate() - ->ButtonClick(ExtensionStorageMonitor::BUTTON_DISABLE_NOTIFICATION); + ->Click(ExtensionStorageMonitor::BUTTON_DISABLE_NOTIFICATION, + base::nullopt); EXPECT_FALSE(IsStorageNotificationEnabled(extension->id())); @@ -424,7 +425,7 @@ extension->id()); display_service_->GetNotification(GetNotificationId(extension->id())) ->delegate() - ->ButtonClick(ExtensionStorageMonitor::BUTTON_UNINSTALL); + ->Click(ExtensionStorageMonitor::BUTTON_UNINSTALL, base::nullopt); observer.WaitForExtensionUninstalled(); }
diff --git a/chrome/browser/infobars/infobar_observer.cc b/chrome/browser/infobars/infobar_observer.cc index 05ac7c6..ebd8ef1 100644 --- a/chrome/browser/infobars/infobar_observer.cc +++ b/chrome/browser/infobars/infobar_observer.cc
@@ -32,6 +32,12 @@ OnNotified(Type::kInfoBarReplaced); } +void InfoBarObserver::OnManagerShuttingDown(infobars::InfoBarManager* manager) { + if (run_loop_.running()) + run_loop_.Quit(); + infobar_observer_.Remove(manager); +} + void InfoBarObserver::OnNotified(Type type) { if (type == type_) run_loop_.Quit();
diff --git a/chrome/browser/infobars/infobar_observer.h b/chrome/browser/infobars/infobar_observer.h index 21833d8..09a7760 100644 --- a/chrome/browser/infobars/infobar_observer.h +++ b/chrome/browser/infobars/infobar_observer.h
@@ -35,6 +35,7 @@ void OnInfoBarRemoved(infobars::InfoBar* infobar, bool animate) override; void OnInfoBarReplaced(infobars::InfoBar* old_infobar, infobars::InfoBar* new_infobar) override; + void OnManagerShuttingDown(infobars::InfoBarManager* manager) override; void OnNotified(Type type);
diff --git a/chrome/browser/net/proxy_browsertest.cc b/chrome/browser/net/proxy_browsertest.cc index 8d55d0e..0876e89a 100644 --- a/chrome/browser/net/proxy_browsertest.cc +++ b/chrome/browser/net/proxy_browsertest.cc
@@ -112,7 +112,7 @@ // We bypass manually installed proxy for localhost on chromeos. // TODO(crbug.com/822614): Flaky on Windows Debug and ASAN bots. #if (defined(OS_CHROMEOS) || defined(ADDRESS_SANITIZER) || \ - (defined(OS_WIN) && !defined(NDEBUG))) + defined(OS_WIN) || defined(OS_MACOSX)) #define MAYBE_BasicAuthWSConnect DISABLED_BasicAuthWSConnect #else #define MAYBE_BasicAuthWSConnect BasicAuthWSConnect
diff --git a/chrome/browser/notifications/message_center_notifications_browsertest.cc b/chrome/browser/notifications/message_center_notifications_browsertest.cc index 1b4e9d1..1ac8e4c 100644 --- a/chrome/browser/notifications/message_center_notifications_browsertest.cc +++ b/chrome/browser/notifications/message_center_notifications_browsertest.cc
@@ -83,12 +83,15 @@ log_ += "Close_"; log_ += (by_user ? "by_user_" : "programmatically_"); } - void Click() override { log_ += "Click_"; } - void ButtonClick(int button_index) override { - log_ += "ButtonClick_"; - log_ += base::IntToString(button_index) + "_"; + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override { + if (button_index) { + log_ += "ButtonClick_"; + log_ += base::IntToString(*button_index) + "_"; + } else { + log_ += "Click_"; + } } - const std::string& log() { return log_; } private:
diff --git a/chrome/browser/notifications/notification_interactive_uitest_support.cc b/chrome/browser/notifications/notification_interactive_uitest_support.cc index f5ab636..ecdc4bcf 100644 --- a/chrome/browser/notifications/notification_interactive_uitest_support.cc +++ b/chrome/browser/notifications/notification_interactive_uitest_support.cc
@@ -92,7 +92,10 @@ OnMessageCenterChanged(); } - void OnNotificationClicked(const std::string& notification_id) override { + void OnNotificationClicked( + const std::string& notification_id, + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override { OnMessageCenterChanged(); }
diff --git a/chrome/browser/notifications/notification_platform_bridge_chromeos.cc b/chrome/browser/notifications/notification_platform_bridge_chromeos.cc index dc30f8cab..37e955d7 100644 --- a/chrome/browser/notifications/notification_platform_bridge_chromeos.cc +++ b/chrome/browser/notifications/notification_platform_bridge_chromeos.cc
@@ -102,7 +102,8 @@ const std::string& id) { ProfileNotification* notification = GetProfileNotification(id); if (notification->type() == NotificationHandler::Type::TRANSIENT) { - notification->notification().delegate()->Click(); + notification->notification().delegate()->Click(base::nullopt, + base::nullopt); } else { NotificationDisplayServiceImpl::GetForProfile(notification->profile()) ->ProcessNotificationOperation( @@ -119,12 +120,7 @@ const base::Optional<base::string16>& reply) { ProfileNotification* notification = GetProfileNotification(id); if (notification->type() == NotificationHandler::Type::TRANSIENT) { - if (reply) { - notification->notification().delegate()->ButtonClickWithReply( - button_index, *reply); - } else { - notification->notification().delegate()->ButtonClick(button_index); - } + notification->notification().delegate()->Click(button_index, reply); } else { NotificationDisplayServiceImpl::GetForProfile(notification->profile()) ->ProcessNotificationOperation(
diff --git a/chrome/browser/notifications/notification_platform_bridge_message_center.cc b/chrome/browser/notifications/notification_platform_bridge_message_center.cc index e476d50b..501308e2 100644 --- a/chrome/browser/notifications/notification_platform_bridge_message_center.cc +++ b/chrome/browser/notifications/notification_platform_bridge_message_center.cc
@@ -57,29 +57,12 @@ by_user); } - void Click() override { + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override { NotificationDisplayServiceImpl::GetForProfile(profile_) ->ProcessNotificationOperation( NotificationCommon::CLICK, notification_type_, - notification_.origin_url(), notification_.id(), - base::nullopt /* action_index */, base::nullopt /* reply */, - base::nullopt /* by_user */); - } - - void ButtonClick(int action_index) override { - NotificationDisplayServiceImpl::GetForProfile(profile_) - ->ProcessNotificationOperation( - NotificationCommon::CLICK, notification_type_, - notification_.origin_url(), notification_.id(), action_index, - base::nullopt /* reply */, base::nullopt /* by_user */); - } - - void ButtonClickWithReply(int action_index, - const base::string16& reply) override { - NotificationDisplayServiceImpl::GetForProfile(profile_) - ->ProcessNotificationOperation( - NotificationCommon::CLICK, notification_type_, - notification_.origin_url(), notification_.id(), action_index, reply, + notification_.origin_url(), notification_.id(), button_index, reply, base::nullopt /* by_user */); }
diff --git a/chrome/browser/notifications/stub_notification_display_service.cc b/chrome/browser/notifications/stub_notification_display_service.cc index b468b34..bca44c17 100644 --- a/chrome/browser/notifications/stub_notification_display_service.cc +++ b/chrome/browser/notifications/stub_notification_display_service.cc
@@ -86,17 +86,8 @@ DCHECK(!handler); auto* delegate = iter->notification.delegate(); - if (!delegate) - return; - - if (reply.has_value()) { - DCHECK(action_index.has_value()); - delegate->ButtonClickWithReply(action_index.value(), reply.value()); - } else if (action_index.has_value()) { - delegate->ButtonClick(action_index.value()); - } else { - delegate->Click(); - } + if (delegate) + delegate->Click(action_index, reply); return; }
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc index 3872ca0a..b2f4591 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc
@@ -211,7 +211,7 @@ #include "chrome/browser/chromeos/lock_screen_apps/state_controller.h" #include "chrome/browser/chromeos/login/demo_mode/demo_mode_detector.h" #include "chrome/browser/chromeos/login/quick_unlock/fingerprint_storage.h" -#include "chrome/browser/chromeos/login/quick_unlock/pin_storage.h" +#include "chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs.h" #include "chrome/browser/chromeos/login/quick_unlock/quick_unlock_utils.h" #include "chrome/browser/chromeos/login/saml/saml_offline_signin_limiter.h" #include "chrome/browser/chromeos/login/screens/reset_screen.h" @@ -634,7 +634,7 @@ chromeos::KeyPermissions::RegisterProfilePrefs(registry); chromeos::MultiProfileUserController::RegisterProfilePrefs(registry); chromeos::quick_unlock::FingerprintStorage::RegisterProfilePrefs(registry); - chromeos::quick_unlock::PinStorage::RegisterProfilePrefs(registry); + chromeos::quick_unlock::PinStoragePrefs::RegisterProfilePrefs(registry); chromeos::Preferences::RegisterProfilePrefs(registry); chromeos::SyncedPrintersManager::RegisterProfilePrefs(registry); chromeos::quick_unlock::RegisterProfilePrefs(registry);
diff --git a/chrome/browser/printing/cloud_print/privet_notifications.cc b/chrome/browser/printing/cloud_print/privet_notifications.cc index 7b94ba8..58917cc 100644 --- a/chrome/browser/printing/cloud_print/privet_notifications.cc +++ b/chrome/browser/printing/cloud_print/privet_notifications.cc
@@ -382,12 +382,17 @@ PrivetNotificationDelegate::~PrivetNotificationDelegate() { } -void PrivetNotificationDelegate::ButtonClick(int button_index) { - if (button_index == 0) { +void PrivetNotificationDelegate::Click( + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { + if (!button_index) + return; + + if (*button_index == 0) { ReportPrivetUmaEvent(PRIVET_NOTIFICATION_CLICKED); OpenTab(GURL(kPrivetNotificationOriginUrl)); } else { - DCHECK_EQ(1, button_index); + DCHECK_EQ(1, *button_index); ReportPrivetUmaEvent(PRIVET_DISABLE_NOTIFICATIONS_CLICKED); DisableNotifications(); }
diff --git a/chrome/browser/printing/cloud_print/privet_notifications.h b/chrome/browser/printing/cloud_print/privet_notifications.h index 6b9bbcb..d94cf49 100644 --- a/chrome/browser/printing/cloud_print/privet_notifications.h +++ b/chrome/browser/printing/cloud_print/privet_notifications.h
@@ -148,14 +148,15 @@ explicit PrivetNotificationDelegate(Profile* profile); // NotificationDelegate implementation. - void ButtonClick(int button_index) override; + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; protected: // Refcounted. ~PrivetNotificationDelegate() override; private: - // ButtonClick() response handlers. Virtual for testing. + // Click() response handlers. Virtual for testing. virtual void OpenTab(const GURL& url); virtual void DisableNotifications();
diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc index ebc60e5e..4981d9d4 100644 --- a/chrome/browser/profiles/profile_io_data.cc +++ b/chrome/browser/profiles/profile_io_data.cc
@@ -113,7 +113,7 @@ #include "services/network/public/cpp/features.h" #include "services/network/public/cpp/proxy_config_mojom_traits.h" #include "services/network/url_request_context_builder_mojo.h" -#include "third_party/WebKit/public/public_features.h" +#include "third_party/WebKit/public/public_buildflags.h" #if BUILDFLAG(ENABLE_EXTENSIONS) #include "extensions/browser/extension_protocols.h"
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc index 4a0c764..7ba83d0 100644 --- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc +++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
@@ -123,7 +123,7 @@ #include "printing/buildflags/buildflags.h" #include "services/service_manager/public/cpp/interface_provider.h" #include "third_party/WebKit/public/common/associated_interfaces/associated_interface_provider.h" -#include "third_party/WebKit/public/public_features.h" +#include "third_party/WebKit/public/public_buildflags.h" #include "third_party/WebKit/public/web/WebContextMenuData.h" #include "third_party/WebKit/public/web/WebMediaPlayerAction.h" #include "third_party/WebKit/public/web/WebPluginAction.h"
diff --git a/chrome/browser/renderer_preferences_util.cc b/chrome/browser/renderer_preferences_util.cc index c5311e6..540fd90 100644 --- a/chrome/browser/renderer_preferences_util.cc +++ b/chrome/browser/renderer_preferences_util.cc
@@ -17,7 +17,7 @@ #include "content/public/common/renderer_preferences.h" #include "content/public/common/webrtc_ip_handling_policy.h" #include "media/media_buildflags.h" -#include "third_party/WebKit/public/public_features.h" +#include "third_party/WebKit/public/public_buildflags.h" #include "third_party/skia/include/core/SkColor.h" #if defined(OS_LINUX) || defined(OS_ANDROID)
diff --git a/chrome/browser/resource_coordinator/resource_coordinator_web_contents_observer.cc b/chrome/browser/resource_coordinator/resource_coordinator_web_contents_observer.cc index 49bf618..bf69dde5 100644 --- a/chrome/browser/resource_coordinator/resource_coordinator_web_contents_observer.cc +++ b/chrome/browser/resource_coordinator/resource_coordinator_web_contents_observer.cc
@@ -10,7 +10,10 @@ #include "base/feature_list.h" #include "base/strings/string_number_conversions.h" #include "build/build_config.h" +#include "chrome/browser/browser_process.h" #include "chrome/browser/resource_coordinator/page_signal_receiver.h" +#include "chrome/browser/resource_coordinator/tab_load_tracker.h" +#include "chrome/browser/resource_coordinator/tab_manager.h" #include "content/public/browser/navigation_handle.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_process_host.h" @@ -23,6 +26,21 @@ #include "services/resource_coordinator/public/mojom/service_constants.mojom.h" #include "services/service_manager/public/cpp/connector.h" +namespace { + +// The manager currently doesn't exist on all platforms, which means the +// tab load tracker will not either. +// TODO(chrisha): Make the tab manager exist everywhere. It's going to start +// making scheduling decisions that apply to mobile devices as well, so there's +// no longer any reason for it to be mobile only. +resource_coordinator::TabLoadTracker* GetTabLoadTracker() { + if (auto* manager = g_browser_process->GetTabManager()) + return &(manager->tab_load_tracker()); + return nullptr; +} + +} // namespace + DEFINE_WEB_CONTENTS_USER_DATA_KEY(ResourceCoordinatorWebContentsObserver); ResourceCoordinatorWebContentsObserver::ResourceCoordinatorWebContentsObserver( @@ -52,6 +70,9 @@ page_signal_receiver->AssociateCoordinationUnitIDWithWebContents( page_resource_coordinator_->id(), web_contents); } + + if (auto* tracker = GetTabLoadTracker()) + tracker->StartTracking(web_contents); } ResourceCoordinatorWebContentsObserver:: @@ -66,10 +87,29 @@ void ResourceCoordinatorWebContentsObserver::DidStartLoading() { page_resource_coordinator_->SetIsLoading(true); + + if (auto* tracker = GetTabLoadTracker()) + tracker->DidStartLoading(web_contents()); +} + +void ResourceCoordinatorWebContentsObserver::DidReceiveResponse() { + if (auto* tracker = GetTabLoadTracker()) + tracker->DidReceiveResponse(web_contents()); } void ResourceCoordinatorWebContentsObserver::DidStopLoading() { page_resource_coordinator_->SetIsLoading(false); + if (auto* tracker = GetTabLoadTracker()) + tracker->DidStopLoading(web_contents()); +} + +void ResourceCoordinatorWebContentsObserver::DidFailLoad( + content::RenderFrameHost* render_frame_host, + const GURL& validated_url, + int error_code, + const base::string16& error_description) { + if (auto* tracker = GetTabLoadTracker()) + tracker->DidFailLoad(web_contents()); } void ResourceCoordinatorWebContentsObserver::OnVisibilityChanged( @@ -87,6 +127,8 @@ page_signal_receiver->RemoveCoordinationUnitID( page_resource_coordinator_->id()); } + if (auto* tracker = GetTabLoadTracker()) + tracker->StopTracking(web_contents()); } void ResourceCoordinatorWebContentsObserver::DidFinishNavigation(
diff --git a/chrome/browser/resource_coordinator/resource_coordinator_web_contents_observer.h b/chrome/browser/resource_coordinator/resource_coordinator_web_contents_observer.h index a5faa62..ddf6560 100644 --- a/chrome/browser/resource_coordinator/resource_coordinator_web_contents_observer.h +++ b/chrome/browser/resource_coordinator/resource_coordinator_web_contents_observer.h
@@ -35,7 +35,12 @@ // WebContentsObserver implementation. void DidStartLoading() override; + void DidReceiveResponse() override; void DidStopLoading() override; + void DidFailLoad(content::RenderFrameHost* render_frame_host, + const GURL& validated_url, + int error_code, + const base::string16& error_description) override; void OnVisibilityChanged(content::Visibility visibility) override; void WebContentsDestroyed() override; void DidFinishNavigation(
diff --git a/chrome/browser/resource_coordinator/tab_load_tracker.cc b/chrome/browser/resource_coordinator/tab_load_tracker.cc new file mode 100644 index 0000000..c674600 --- /dev/null +++ b/chrome/browser/resource_coordinator/tab_load_tracker.cc
@@ -0,0 +1,222 @@ +// Copyright 2018 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 "chrome/browser/resource_coordinator/tab_load_tracker.h" + +#include "base/stl_util.h" +#include "chrome/browser/ui/browser_tab_strip_tracker.h" +#include "content/public/browser/navigation_controller.h" +#include "content/public/browser/navigation_entry.h" +#include "content/public/browser/web_contents.h" +#include "content/public/browser/web_contents_observer.h" +#include "services/resource_coordinator/public/cpp/resource_coordinator_features.h" + +namespace resource_coordinator { + +TabLoadTracker::TabLoadTracker() {} + +TabLoadTracker::~TabLoadTracker() {} + +TabLoadTracker::LoadingState TabLoadTracker::GetLoadingState( + content::WebContents* web_contents) const { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + auto it = tabs_.find(web_contents); + DCHECK(it != tabs_.end()); + return it->second.loading_state; +} + +size_t TabLoadTracker::GetTabCount() const { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + return tabs_.size(); +} + +size_t TabLoadTracker::GetTabCount(LoadingState loading_state) const { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + return state_counts_[loading_state]; +} + +size_t TabLoadTracker::GetUnloadedTabCount() const { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + return state_counts_[UNLOADED]; +} + +size_t TabLoadTracker::GetLoadingTabCount() const { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + return state_counts_[LOADING]; +} + +size_t TabLoadTracker::GetLoadedTabCount() const { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + return state_counts_[LOADED]; +} + +void TabLoadTracker::AddObserver(Observer* observer) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + observers_.AddObserver(observer); +} + +void TabLoadTracker::RemoveObserver(Observer* observer) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + observers_.RemoveObserver(observer); +} + +void TabLoadTracker::StartTracking(content::WebContents* web_contents) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(!base::ContainsKey(tabs_, web_contents)); + + LoadingState loading_state = DetermineLoadingState(web_contents); + + // Insert the tab, making sure it's state is consistent with the valid states + // documented in TransitionState. + WebContentsData data; + data.loading_state = loading_state; + if (data.loading_state == LOADING) + data.did_start_loading_seen = true; + tabs_.insert(std::make_pair(web_contents, data)); + ++state_counts_[data.loading_state]; + + for (Observer& observer : observers_) + observer.OnStartTracking(web_contents, loading_state); +} + +void TabLoadTracker::StopTracking(content::WebContents* web_contents) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + auto it = tabs_.find(web_contents); + DCHECK(it != tabs_.end()); + + auto loading_state = it->second.loading_state; + DCHECK_NE(0u, state_counts_[it->second.loading_state]); + --state_counts_[it->second.loading_state]; + tabs_.erase(it); + + for (Observer& observer : observers_) + observer.OnStopTracking(web_contents, loading_state); +} + +void TabLoadTracker::DidStartLoading(content::WebContents* web_contents) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + if (!web_contents->IsLoadingToDifferentDocument()) + return; + auto it = tabs_.find(web_contents); + DCHECK(it != tabs_.end()); + if (it->second.loading_state == LOADING) { + DCHECK(it->second.did_start_loading_seen); + return; + } + it->second.did_start_loading_seen = true; +} + +void TabLoadTracker::DidReceiveResponse(content::WebContents* web_contents) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + auto it = tabs_.find(web_contents); + DCHECK(it != tabs_.end()); + if (it->second.loading_state == LOADING) { + DCHECK(it->second.did_start_loading_seen); + return; + } + // A transition to loading requires both DidStartLoading (navigation + // committed) and DidReceiveResponse (data has been trasmitted over the + // network) events to occur. This is because NavigationThrottles can block + // actual network requests, but not the rest of the state machinery. + if (!it->second.did_start_loading_seen) + return; + TransitionState(it, LOADING); +} + +void TabLoadTracker::DidStopLoading(content::WebContents* web_contents) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + if (resource_coordinator::IsPageAlmostIdleSignalEnabled()) + return; + MaybeTransitionToLoaded(web_contents); +} + +void TabLoadTracker::DidFailLoad(content::WebContents* web_contents) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + MaybeTransitionToLoaded(web_contents); +} + +void TabLoadTracker::OnPageAlmostIdle(content::WebContents* web_contents) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(resource_coordinator::IsPageAlmostIdleSignalEnabled()); + // PageAlmostIdle signals can be arbitrarily delayed as they are asynchronous. + // As such, they can arrive after the web contents in question no longer + // exists. + if (!base::ContainsKey(tabs_, web_contents)) + return; + MaybeTransitionToLoaded(web_contents); +} + +TabLoadTracker::LoadingState TabLoadTracker::DetermineLoadingState( + content::WebContents* web_contents) { + // Determine if the WebContents is actively loading, using our definition of + // loading. Start from the assumption that it is UNLOADED. + LoadingState loading_state = UNLOADED; + if (web_contents->IsLoadingToDifferentDocument() && + !web_contents->IsWaitingForResponse()) { + loading_state = LOADING; + } else { + // Determine if the WebContents is already loaded. A loaded WebContents has + // a committed navigation entry, is not in an initial navigation, and + // doesn't require a reload. This can occur during prerendering, when an + // already rendered WebContents is swapped in at the moment of a navigation. + content::NavigationController& controller = web_contents->GetController(); + if (controller.GetLastCommittedEntry() != nullptr && + !controller.IsInitialNavigation() && !controller.NeedsReload()) { + loading_state = LOADED; + } + } + + return loading_state; +} + +void TabLoadTracker::MaybeTransitionToLoaded( + content::WebContents* web_contents) { + auto it = tabs_.find(web_contents); + DCHECK(it != tabs_.end()); + if (it->second.loading_state != LOADING) + return; + TransitionState(it, LOADED); +} + +void TabLoadTracker::TransitionState(TabMap::iterator it, + LoadingState loading_state) { +#if DCHECK_IS_ON() + // Validate the transition. + switch (loading_state) { + case LOADING: { + DCHECK_NE(LOADING, it->second.loading_state); + DCHECK(it->second.did_start_loading_seen); + break; + } + + case LOADED: { + DCHECK_EQ(LOADING, it->second.loading_state); + DCHECK(it->second.did_start_loading_seen); + break; + } + + case UNLOADED: // It never makes sense to transition to UNLOADED. + case LOADING_STATE_MAX: + NOTREACHED(); + } +#endif + + --state_counts_[it->second.loading_state]; + it->second.loading_state = loading_state; + ++state_counts_[loading_state]; + + // If the destination state is LOADED, then also clear the + // |did_start_loading_seen| state. + if (loading_state == LOADED) + it->second.did_start_loading_seen = false; + + for (Observer& observer : observers_) + observer.OnLoadingStateChange(it->first, loading_state); +} + +TabLoadTracker::Observer::Observer() {} + +TabLoadTracker::Observer::~Observer() {} + +} // namespace resource_coordinator
diff --git a/chrome/browser/resource_coordinator/tab_load_tracker.h b/chrome/browser/resource_coordinator/tab_load_tracker.h new file mode 100644 index 0000000..5b724cc --- /dev/null +++ b/chrome/browser/resource_coordinator/tab_load_tracker.h
@@ -0,0 +1,191 @@ +// Copyright 2018 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_BROWSER_RESOURCE_COORDINATOR_TAB_LOAD_TRACKER_H_ +#define CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_LOAD_TRACKER_H_ + +#include "base/callback.h" +#include "base/containers/flat_map.h" +#include "base/macros.h" +#include "base/observer_list.h" +#include "base/sequence_checker.h" +#include "base/strings/string16.h" + +class ResourceCoordinatorWebContentsObserver; + +namespace content { +class WebContents; +} // namespace content + +namespace resource_coordinator { + +class TabManagerResourceCoordinatorSignalObserverHelper; + +// This class has the sole purpose of tracking the state of all tab-related +// WebContents, and whether or not they are in an unloaded, currently loading, +// or loaded state. +// +// This class must be bound to a given Sequence and all access to it must +// occur on that Sequence. In practice, this is intended to be on the UI +// thread as the notifications of interest occur natively on that thread. All +// calculations are very short and quick, so it is suitable for use on that +// thread. +// +// This class is intended to be created in early startup and persists as a +// singleton in the browser process, owned by the TabManager. It is deliberately +// leaked at shutdown. +// +// This class isn't directly an observer of anything. An external source must +// invoke the callbacks in the protected section of the class. In the case of +// the TabManager this is done by a combination of the +// ResourceCoordinatorWebContentsObserver and the +// TabManagerResourceCoordinatorSignalObserver. +class TabLoadTracker { + public: + // An observer class. This allows external classes to be notified of loading + // state changes. + class Observer; + + // Indicates the loading state of a WebContents. + enum LoadingState { + // An initially constructed WebContents with no loaded content is UNLOADED. + // A WebContents that started loading but that errored out before receiving + // sufficient content to render is also considered UNLOADED. + // Can only transition from here to LOADING. + UNLOADED, + // A WebContents with an ongoing main-frame navigation (to a new document) + // is in a loading state. More precisely, it is considered loading once + // network data has started to be transmitted, and not simply when the + // navigation has started. This considers throttled navigations as not yet + // loading, and will only transition to loading once the throttle has been + // removed. + // Can transition from here to UNLOADED or LOADED. + LOADING, + // A WebContents with a committed navigation whose + // DidStopLoading/PageAlmostIdle event (depending on mode) or DidFailLoad + // event has fired is no longer considered to be LOADING. If any content has + // been rendered prior to the failure the document is considered LOADED, + // otherwise it is considered UNLOADED. + // Can transition from here to LOADING. + LOADED, + + // This must be last. + LOADING_STATE_MAX + }; + + TabLoadTracker(); + ~TabLoadTracker(); + + // Allows querying the state of a tab. The provided |web_contents| must be + // actively tracked. + LoadingState GetLoadingState(content::WebContents* web_contents) const; + + // Returns the total number of tabs that are being tracked by this class. + size_t GetTabCount() const; + + // Returns the number of tabs in each state. + size_t GetTabCount(LoadingState loading_state) const; + size_t GetUnloadedTabCount() const; + size_t GetLoadingTabCount() const; + size_t GetLoadedTabCount() const; + + // Adds/removes an observer. It is up to the observer to ensure their lifetime + // exceeds that of the TabLoadTracker, as is removed prior to its destruction. + void AddObserver(Observer* observer); + void RemoveObserver(Observer* observer); + + protected: + // This allows the various bits of TabManager plubming to forward + // notifications to the TabLoadTracker. + friend class ::ResourceCoordinatorWebContentsObserver; + friend class ::resource_coordinator:: + TabManagerResourceCoordinatorSignalObserverHelper; + + // Initiates tracking of a WebContents. This is fully able to determine the + // initial state of the WebContents, even if it was created long ago + // (is LOADING or LOADED) and only just attached to the tracker. See the + // implementation of DetermineLoadingState for details. + void StartTracking(content::WebContents* web_contents); + + // Stops tracking a |web_contents|. + void StopTracking(content::WebContents* web_contents); + + // These are analogs of WebContentsObserver functions. This class is not + // actually an observer, but the relevant events are forwarded to it from + // the TabManager. + void DidStartLoading(content::WebContents* web_contents); + void DidReceiveResponse(content::WebContents* web_contents); + void DidStopLoading(content::WebContents* web_contents); + void DidFailLoad(content::WebContents* web_contents); + + // This is an analog of a PageSignalObserver function. This class is not + // actually a PageSignalObserver, but these notifications are forwarded to it + // from the TabManager. + void OnPageAlmostIdle(content::WebContents* web_contents); + + private: + // For unittesting. + friend class TestTabLoadTracker; + + // Some metadata used to track the current state of the WebContents. + struct WebContentsData { + LoadingState loading_state = UNLOADED; + bool did_start_loading_seen = false; + }; + + using TabMap = base::flat_map<content::WebContents*, WebContentsData>; + + // Helper function for determining the current state of a |web_contents|. + LoadingState DetermineLoadingState(content::WebContents* web_contents); + + // Helper function for marking a load as finished, if possible. If the tab + // isn't currently marked as loading then this does nothing. + void MaybeTransitionToLoaded(content::WebContents* web_contents); + + // Transitions a web contents to the given state. This updates the various + // |state_counts_| and |tabs_| data. + void TransitionState(TabMap::iterator it, LoadingState loading_state); + + // The list of known WebContents and their states. + TabMap tabs_; + + // The counts of tabs in each state. + size_t state_counts_[LOADING_STATE_MAX] = {0}; + + base::ObserverList<Observer> observers_; + + SEQUENCE_CHECKER(sequence_checker_); + + DISALLOW_COPY_AND_ASSIGN(TabLoadTracker); +}; + +// A class for observing loading state changes of WebContents under observation +// by a given TabLoadTracker. All of the callbacks will be invoked on the +// sequence to which the TabLoadTracker is bound. +class TabLoadTracker::Observer { + public: + using LoadingState = TabLoadTracker::LoadingState; + + Observer(); + virtual ~Observer(); + + // Called when a |web_contents| is starting to be tracked. + virtual void OnStartTracking(content::WebContents* web_contents, + LoadingState loading_state) {} + + // Called for every loading state change observed on a |web_contents|. + virtual void OnLoadingStateChange(content::WebContents* web_contents, + LoadingState loading_state) {} + + // Called when a |web_contents| is no longer being tracked. + virtual void OnStopTracking(content::WebContents* web_contents, + LoadingState loading_state) {} + + private: + DISALLOW_COPY_AND_ASSIGN(Observer); +}; + +} // namespace resource_coordinator + +#endif // CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_LOAD_TRACKER_H_
diff --git a/chrome/browser/resource_coordinator/tab_load_tracker_unittest.cc b/chrome/browser/resource_coordinator/tab_load_tracker_unittest.cc new file mode 100644 index 0000000..c47138f --- /dev/null +++ b/chrome/browser/resource_coordinator/tab_load_tracker_unittest.cc
@@ -0,0 +1,257 @@ +// Copyright 2018 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 "chrome/browser/resource_coordinator/tab_load_tracker.h" + +#include "base/strings/utf_string_conversions.h" +#include "base/test/scoped_feature_list.h" +#include "chrome/test/base/chrome_render_view_host_test_harness.h" +#include "content/public/browser/web_contents_observer.h" +#include "content/public/test/web_contents_tester.h" +#include "services/resource_coordinator/public/cpp/resource_coordinator_features.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "url/gurl.h" + +namespace resource_coordinator { + +using testing::_; +using testing::StrictMock; + +// Test wrapper of TabLoadTracker that exposes some internals. +class TestTabLoadTracker : public TabLoadTracker { + public: + using TabLoadTracker::StartTracking; + using TabLoadTracker::StopTracking; + using TabLoadTracker::DidStartLoading; + using TabLoadTracker::DidReceiveResponse; + using TabLoadTracker::DidStopLoading; + using TabLoadTracker::DidFailLoad; + using TabLoadTracker::OnPageAlmostIdle; + using TabLoadTracker::DetermineLoadingState; + + TestTabLoadTracker() {} + virtual ~TestTabLoadTracker() {} + + // Some accessors for TabLoadTracker internals. + const TabMap& tabs() const { return tabs_; } + + // Determines if the tab has been marked as having received the + // DidStartLoading event. + bool DidStartLoadingSeen(content::WebContents* web_contents) { + auto it = tabs_.find(web_contents); + if (it == tabs_.end()) + return false; + return it->second.did_start_loading_seen; + } +}; + +// A mock observer class. +class LenientMockObserver : public TabLoadTracker::Observer { + public: + LenientMockObserver() {} + ~LenientMockObserver() override {} + + // TabLoadTracker::Observer implementation: + MOCK_METHOD2(OnStartTracking, void(content::WebContents*, LoadingState)); + MOCK_METHOD2(OnLoadingStateChange, void(content::WebContents*, LoadingState)); + MOCK_METHOD2(OnStopTracking, void(content::WebContents*, LoadingState)); + + private: + DISALLOW_COPY_AND_ASSIGN(LenientMockObserver); +}; +using MockObserver = testing::StrictMock<LenientMockObserver>; + +// A WebContentsObserver that forwards relevant WebContents events to the +// provided tracker. +class TestWebContentsObserver : public content::WebContentsObserver { + public: + TestWebContentsObserver(content::WebContents* web_contents, + TestTabLoadTracker* tracker) + : content::WebContentsObserver(web_contents), tracker_(tracker) {} + + ~TestWebContentsObserver() override {} + + // content::WebContentsObserver: + void DidStartLoading() override { tracker_->DidStartLoading(web_contents()); } + void DidReceiveResponse() override { + tracker_->DidReceiveResponse(web_contents()); + } + void DidStopLoading() override { tracker_->DidStopLoading(web_contents()); } + void DidFailLoad(content::RenderFrameHost* render_frame_host, + const GURL& validated_url, + int error_code, + const base::string16& error_description) override { + tracker_->DidFailLoad(web_contents()); + } + + private: + TestTabLoadTracker* tracker_; +}; + +// The test harness. +class TabLoadTrackerTest : public ChromeRenderViewHostTestHarness { + public: + void SetUp() override { + ChromeRenderViewHostTestHarness::SetUp(); + + contents1_.reset(CreateTestWebContents()); + contents2_.reset(CreateTestWebContents()); + contents3_.reset(CreateTestWebContents()); + + tracker_.AddObserver(&observer_); + } + + void TearDown() override { + // The WebContents must be deleted before the test harness deletes the + // RenderProcessHost. + contents1_.reset(); + contents2_.reset(); + contents3_.reset(); + + ChromeRenderViewHostTestHarness::TearDown(); + } + + // Enables the PAI feature so that the TabLoadTracker can be tested in both + // modes. + void EnablePAI() { + feature_list_ = std::make_unique<base::test::ScopedFeatureList>(); + feature_list_->InitAndEnableFeature(features::kPageAlmostIdle); + ASSERT_TRUE(resource_coordinator::IsPageAlmostIdleSignalEnabled()); + } + + void ExpectTabCounts(size_t tabs, + size_t unloaded, + size_t loading, + size_t loaded) { + EXPECT_EQ(tabs, unloaded + loading + loaded); + EXPECT_EQ(tabs, tracker().GetTabCount()); + EXPECT_EQ(unloaded, tracker().GetUnloadedTabCount()); + EXPECT_EQ(loading, tracker().GetLoadingTabCount()); + EXPECT_EQ(loaded, tracker().GetLoadedTabCount()); + } + + void StateTransitionsTest(bool enable_pai); + + TestTabLoadTracker& tracker() { return tracker_; } + MockObserver& observer() { return observer_; } + + content::WebContents* contents1() { return contents1_.get(); } + content::WebContents* contents2() { return contents2_.get(); } + content::WebContents* contents3() { return contents3_.get(); } + + private: + TestTabLoadTracker tracker_; + std::unique_ptr<base::test::ScopedFeatureList> feature_list_; + MockObserver observer_; + + std::unique_ptr<content::WebContents> contents1_; + std::unique_ptr<content::WebContents> contents2_; + std::unique_ptr<content::WebContents> contents3_; +}; + +// A macro that ensures that a meaningful line number gets included in the +// stack trace when ExpectTabCounts fails. +#define EXPECT_TAB_COUNTS(a, b, c, d) \ + { \ + SCOPED_TRACE(""); \ + ExpectTabCounts(a, b, c, d); \ + } + +TEST_F(TabLoadTrackerTest, DetermineLoadingState) { + auto* tester1 = content::WebContentsTester::For(contents1()); + + EXPECT_EQ(TestTabLoadTracker::UNLOADED, + tracker().DetermineLoadingState(contents1())); + + // Navigate to a page and expect it to be loading. + tester1->NavigateAndCommit(GURL("http://chromium.org")); + EXPECT_EQ(TestTabLoadTracker::LOADING, + tracker().DetermineLoadingState(contents1())); + + // Indicate that loading is finished and expect the state to transition. + tester1->TestSetIsLoading(false); + EXPECT_EQ(TestTabLoadTracker::LOADED, + tracker().DetermineLoadingState(contents1())); +} + +void TabLoadTrackerTest::StateTransitionsTest(bool enable_pai) { + if (enable_pai) + EnablePAI(); + + auto* tester1 = content::WebContentsTester::For(contents1()); + auto* tester2 = content::WebContentsTester::For(contents2()); + auto* tester3 = content::WebContentsTester::For(contents3()); + + // Set up the contents in UNLOADED, LOADING and LOADED states. This tests + // each possible "entry" state. + tester2->NavigateAndCommit(GURL("http://foo.com")); + tester3->NavigateAndCommit(GURL("http://bar.com")); + tester3->TestSetIsLoading(false); + + // Add the contents to the trackers. + EXPECT_CALL(observer(), + OnStartTracking(contents1(), TestTabLoadTracker::UNLOADED)); + tracker().StartTracking(contents1()); + EXPECT_TAB_COUNTS(1, 1, 0, 0); + testing::Mock::VerifyAndClearExpectations(&observer()); + + EXPECT_CALL(observer(), + OnStartTracking(contents2(), TestTabLoadTracker::LOADING)); + tracker().StartTracking(contents2()); + EXPECT_TAB_COUNTS(2, 1, 1, 0); + testing::Mock::VerifyAndClearExpectations(&observer()); + + EXPECT_CALL(observer(), + OnStartTracking(contents3(), TestTabLoadTracker::LOADED)); + tracker().StartTracking(contents3()); + EXPECT_TAB_COUNTS(3, 1, 1, 1); + testing::Mock::VerifyAndClearExpectations(&observer()); + + // Start observers for the contents. + TestWebContentsObserver observer1(contents1(), &tracker()); + TestWebContentsObserver observer2(contents2(), &tracker()); + TestWebContentsObserver observer3(contents3(), &tracker()); + + // Now test all of the possible state transitions. + + // Finish the loading for contents2. + EXPECT_CALL(observer(), + OnLoadingStateChange(contents2(), TestTabLoadTracker::LOADED)); + tester2->TestSetIsLoading(false); + if (enable_pai) { + // The state transition should only occur *after* the PAI signal when that + // feature is enabled. + EXPECT_TAB_COUNTS(3, 1, 1, 1); + tracker().OnPageAlmostIdle(contents2()); + } + EXPECT_TAB_COUNTS(3, 1, 0, 2); + testing::Mock::VerifyAndClearExpectations(&observer()); + + // Start the loading for contents1. + EXPECT_CALL(observer(), + OnLoadingStateChange(contents1(), TestTabLoadTracker::LOADING)); + tester1->NavigateAndCommit(GURL("http://baz.com")); + EXPECT_TAB_COUNTS(3, 0, 1, 2); + testing::Mock::VerifyAndClearExpectations(&observer()); + + // Stop the loading with an error. The tab should go back to a LOADED + // state. + EXPECT_CALL(observer(), + OnLoadingStateChange(contents1(), TestTabLoadTracker::LOADED)); + tester1->TestDidFailLoadWithError(GURL("http://baz.com"), 500, + base::UTF8ToUTF16("server error")); + ExpectTabCounts(3, 0, 0, 3); + testing::Mock::VerifyAndClearExpectations(&observer()); +} + +TEST_F(TabLoadTrackerTest, StateTransitions) { + StateTransitionsTest(false); +} + +TEST_F(TabLoadTrackerTest, StateTransitionsPAI) { + StateTransitionsTest(true); +} + +} // namespace resource_coordinator
diff --git a/chrome/browser/resource_coordinator/tab_manager.h b/chrome/browser/resource_coordinator/tab_manager.h index 323a31e..594b2ea 100644 --- a/chrome/browser/resource_coordinator/tab_manager.h +++ b/chrome/browser/resource_coordinator/tab_manager.h
@@ -25,6 +25,7 @@ #include "chrome/browser/resource_coordinator/lifecycle_unit_observer.h" #include "chrome/browser/resource_coordinator/lifecycle_unit_source_observer.h" #include "chrome/browser/resource_coordinator/tab_lifecycle_observer.h" +#include "chrome/browser/resource_coordinator/tab_load_tracker.h" #include "chrome/browser/sessions/session_restore_observer.h" #include "chrome/browser/ui/browser_tab_strip_tracker.h" #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" @@ -205,6 +206,11 @@ // non-zero only during session restore. int restored_tab_count() const; + // Accessor for the tab load tracker. This lets interested external classes + // add themselves as observers. + TabLoadTracker& tab_load_tracker() { return tab_load_tracker_; } + const TabLoadTracker& tab_load_tracker() const { return tab_load_tracker_; } + // Duration during which a tab cannot be automatically discarded after having // been active. static constexpr base::TimeDelta kDiscardProtectionTime = @@ -472,6 +478,10 @@ // session restore. std::unique_ptr<TabManagerStatsCollector> stats_collector_; + // Tracks tab loads, taking into account PageAlmostIdle, NavigationThrottles + // and other complications. + TabLoadTracker tab_load_tracker_; + // Weak pointer factory used for posting delayed tasks. base::WeakPtrFactory<TabManager> weak_ptr_factory_;
diff --git a/chrome/browser/resource_coordinator/tab_manager_resource_coordinator_signal_observer.cc b/chrome/browser/resource_coordinator/tab_manager_resource_coordinator_signal_observer.cc index a2d9927..ef69bec 100644 --- a/chrome/browser/resource_coordinator/tab_manager_resource_coordinator_signal_observer.cc +++ b/chrome/browser/resource_coordinator/tab_manager_resource_coordinator_signal_observer.cc
@@ -6,11 +6,30 @@ #include "base/time/time.h" #include "chrome/browser/browser_process.h" +#include "chrome/browser/resource_coordinator/tab_load_tracker.h" #include "chrome/browser/resource_coordinator/tab_manager_stats_collector.h" #include "chrome/browser/resource_coordinator/tab_manager_web_contents_data.h" namespace resource_coordinator { +namespace { + +TabLoadTracker& GetTabLoadTracker() { + return g_browser_process->GetTabManager()->tab_load_tracker(); +} + +} // namespace + +// A helper class for accessing TabLoadTracker. TabLoadTracker can't directly +// friend TabManager::ResourceCoordinatorSignalObserver as it's a nested class +// and can't be forward declared. +class TabManagerResourceCoordinatorSignalObserverHelper { + public: + static void OnPageAlmostIdle(content::WebContents* web_contents) { + GetTabLoadTracker().OnPageAlmostIdle(web_contents); + } +}; + TabManager::ResourceCoordinatorSignalObserver:: ResourceCoordinatorSignalObserver() { if (auto* page_signal_receiver = PageSignalReceiver::GetInstance()) @@ -25,6 +44,8 @@ void TabManager::ResourceCoordinatorSignalObserver::OnPageAlmostIdle( content::WebContents* web_contents) { + TabManagerResourceCoordinatorSignalObserverHelper::OnPageAlmostIdle( + web_contents); auto* web_contents_data = TabManager::WebContentsData::FromWebContents(web_contents); if (!web_contents_data)
diff --git a/chrome/browser/resources/settings/a11y_page/manage_a11y_page.html b/chrome/browser/resources/settings/a11y_page/manage_a11y_page.html index d4551ef..b55a80e0e 100644 --- a/chrome/browser/resources/settings/a11y_page/manage_a11y_page.html +++ b/chrome/browser/resources/settings/a11y_page/manage_a11y_page.html
@@ -120,7 +120,9 @@ <div class="settings-box two-line" on-click="onDisplayTap_" actionable> <div class="start"> $i18n{displaySettingsTitle} - <div class="secondary">$i18n{displaySettingsDescription}</div> + <div class="secondary" id="displaySettingsSecondary"> + $i18n{displaySettingsDescription} + </div> </div> <paper-icon-button-light class="subpage-arrow"> <button aria-label="$i18n{displaySettingsTitle}"
diff --git a/chrome/browser/resources/settings/passwords_and_forms_page/password_edit_dialog.js b/chrome/browser/resources/settings/passwords_and_forms_page/password_edit_dialog.js index 553ba111..8ea5c3f 100644 --- a/chrome/browser/resources/settings/passwords_and_forms_page/password_edit_dialog.js +++ b/chrome/browser/resources/settings/passwords_and_forms_page/password_edit_dialog.js
@@ -38,8 +38,12 @@ * @private */ onInputFocus_: function(event) { - /** @type {!PaperInputElement} */ (Polymer.dom(event).localTarget) - .inputElement.select(); + const inputElement = + /** @type {!PaperInputElement} */ (Polymer.dom(event).localTarget) + .inputElement; + inputElement.setSelectionRange(0, 0); + inputElement.focus(); + inputElement.select(); } }); })();
diff --git a/chrome/browser/resources/settings/passwords_and_forms_page/password_list_item.html b/chrome/browser/resources/settings/passwords_and_forms_page/password_list_item.html index 9551b369..126b704 100644 --- a/chrome/browser/resources/settings/passwords_and_forms_page/password_list_item.html +++ b/chrome/browser/resources/settings/passwords_and_forms_page/password_list_item.html
@@ -20,6 +20,7 @@ display: flex; } + #username, #password { /* Since #password is an input element this is necessary to prevent * Chrome from using the operating system's font instead of the Material @@ -27,6 +28,7 @@ */ font-family: inherit; font-size: inherit; + line-height: inherit; text-overflow: ellipsis; } </style> @@ -43,7 +45,7 @@ </span> </a> </div> - <input id="username" class="username-column text-elide password-field" + <input id="username" class="username-column password-field" readonly tabindex="-1" value="[[item.entry.loginPair.username]]"> <div class="password-column"> <template is="dom-if" if="[[!item.entry.federationText]]">
diff --git a/chrome/browser/resources/settings/printing_page/cups_edit_printer_dialog.html b/chrome/browser/resources/settings/printing_page/cups_edit_printer_dialog.html index 8f0c517..3e2cbde 100644 --- a/chrome/browser/resources/settings/printing_page/cups_edit_printer_dialog.html +++ b/chrome/browser/resources/settings/printing_page/cups_edit_printer_dialog.html
@@ -99,7 +99,9 @@ <div class="label">$i18n{selectDriver}</div> <div class="secondary"> <paper-input class="browse-file-input" no-label-float readonly - value="[[getBaseName_(activePrinter.printerPPDPath)]]"> + value="[[getBaseName_(activePrinter.printerPPDPath)]]" + error-message="$i18n{selectDriverErrorMessage}" + invalid="[[invalidPPD]]"> <paper-button class="browse-button" slot="suffix" on-click="onBrowseFile_"> $i18n{selectDriverButtonText} @@ -114,7 +116,8 @@ on-click="onCancelTap_"> $i18n{cancel} </paper-button> - <paper-button class="action-button" on-click="onSaveTap_"> + <paper-button class="action-button" on-click="onSaveTap_" + disabled="[[invalidPPD]]"> $i18n{editPrinterButtonText} </paper-button> </div>
diff --git a/chrome/browser/signin/dice_browsertest.cc b/chrome/browser/signin/dice_browsertest.cc index 2a89fe6a..e9a500a 100644 --- a/chrome/browser/signin/dice_browsertest.cc +++ b/chrome/browser/signin/dice_browsertest.cc
@@ -440,19 +440,6 @@ // stable state. reconcilor->AbortReconcile(); reconcilor->AddObserver(this); - - // TODO(crbug.com/709094, crbug.com/761485): This browsertest exercises - // the Sync confirmation dialog and thus triggers consent recording. For - // that to happen successfully, UserEventSyncBridge must be ready to - // receive events. UserEventSyncBridge initializes asynchronously which - // is not a problem for regular usage, but in this browsertest, we must - // give it enough time to do so. - while (!browser_sync::UserEventServiceFactory::GetForProfile( - browser()->profile()) - ->GetSyncBridge() - ->change_processor() - ->IsTrackingMetadata()) - base::RunLoop().RunUntilIdle(); } void TearDownOnMainThread() override {
diff --git a/chrome/browser/sync/sync_error_notifier_ash.cc b/chrome/browser/sync/sync_error_notifier_ash.cc index 2e683c4c..98dfef0 100644 --- a/chrome/browser/sync/sync_error_notifier_ash.cc +++ b/chrome/browser/sync/sync_error_notifier_ash.cc
@@ -32,38 +32,8 @@ const char kProfileSyncNotificationId[] = "chrome://settings/sync/"; -// A simple notification delegate for the sync setup button. -// TODO(estade): should this use a generic notification delegate? -class SyncNotificationDelegate : public message_center::NotificationDelegate { - public: - explicit SyncNotificationDelegate(Profile* profile); - - // NotificationDelegate: - void Click() override; - - protected: - ~SyncNotificationDelegate() override; - - private: - void ShowSyncSetup(); - - Profile* profile_; - - DISALLOW_COPY_AND_ASSIGN(SyncNotificationDelegate); -}; - -SyncNotificationDelegate::SyncNotificationDelegate(Profile* profile) - : profile_(profile) {} - -SyncNotificationDelegate::~SyncNotificationDelegate() { -} - -void SyncNotificationDelegate::Click() { - ShowSyncSetup(); -} - -void SyncNotificationDelegate::ShowSyncSetup() { - LoginUIService* login_ui = LoginUIServiceFactory::GetForProfile(profile_); +void ShowSyncSetup(Profile* profile) { + LoginUIService* login_ui = LoginUIServiceFactory::GetForProfile(profile); if (login_ui->current_login_ui()) { // TODO(michaelpg): The LoginUI might be on an inactive desktop. // See crbug.com/354280. @@ -71,7 +41,7 @@ return; } - chrome::ShowSettingsSubPageForProfile(profile_, chrome::kSyncSetupSubPage); + chrome::ShowSettingsSubPageForProfile(profile, chrome::kSyncSetupSubPage); } } // namespace @@ -144,7 +114,9 @@ l10n_util::GetStringUTF16(IDS_SIGNIN_ERROR_DISPLAY_SOURCE), GURL(notification_id_), notifier_id, message_center::RichNotificationData(), - new SyncNotificationDelegate(profile_), ash::kNotificationWarningIcon, + base::MakeRefCounted<message_center::HandleNotificationClickDelegate>( + base::BindRepeating(&ShowSyncSetup, profile_)), + ash::kNotificationWarningIcon, message_center::SystemNotificationWarningLevel::WARNING); display_service->Display(NotificationHandler::Type::TRANSIENT, *notification);
diff --git a/chrome/browser/sync/test/integration/single_client_user_events_sync_test.cc b/chrome/browser/sync/test/integration/single_client_user_events_sync_test.cc index 2c486475..2f085df 100644 --- a/chrome/browser/sync/test/integration/single_client_user_events_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_user_events_sync_test.cc
@@ -270,20 +270,17 @@ EXPECT_TRUE(ExpectUserEvents({testEvent1, consent1, consent2, testEvent3})); } -// Test that events that are logged before sync is enabled. +// Test that events that are logged before sync is enabled don't get lost. IN_PROC_BROWSER_TEST_F(SingleClientUserEventsSyncTest, LoggedBeforeSyncSetup) { const UserEventSpecifics consent1 = CreateUserConsent(1); const UserEventSpecifics consent2 = CreateUserConsent(2); ASSERT_TRUE(SetupClients()); syncer::UserEventService* event_service = browser_sync::UserEventServiceFactory::GetForProfile(GetProfile(0)); - auto bridge = event_service->GetSyncBridge(); - // Wait for UserEventSyncBridge to be ready to receive events. - // TODO(crbug.com/761485): Remove when the store is initialized instantly. - while (!bridge->change_processor()->IsTrackingMetadata()) - base::RunLoop().RunUntilIdle(); event_service->RecordUserEvent(consent1); + EXPECT_TRUE(ExpectUserEvents({})); ASSERT_TRUE(SetupSync()); + EXPECT_TRUE(ExpectUserEvents({consent1})); event_service->RecordUserEvent(consent2); EXPECT_TRUE(ExpectUserEvents({consent1, consent2})); }
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index f754afc..8477ee1 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -1062,7 +1062,7 @@ "//skia", "//storage/browser", "//storage/common", - "//third_party/WebKit/public:features", + "//third_party/WebKit/public:buildflags", "//third_party/WebKit/public:resources", "//third_party/WebKit/public/common", "//third_party/adobe/flash:flapper_version_h",
diff --git a/chrome/browser/ui/ash/chrome_screenshot_grabber.cc b/chrome/browser/ui/ash/chrome_screenshot_grabber.cc index ccb078f0..dc00eb4f 100644 --- a/chrome/browser/ui/ash/chrome_screenshot_grabber.cc +++ b/chrome/browser/ui/ash/chrome_screenshot_grabber.cc
@@ -152,18 +152,22 @@ screenshot_path_(screenshot_path) {} // message_center::NotificationDelegate: - void Click() override { - if (!success_) + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override { + if (!button_index) { + // TODO(estade): this conditional can be a DCHECK after + // NotificationDelegate::Click() is not called for notifications that are + // not set clickable. + if (success_) { + platform_util::ShowItemInFolder(profile_, screenshot_path_); + NotificationDisplayService::GetForProfile(profile_)->Close( + NotificationHandler::Type::TRANSIENT, kNotificationId); + } return; - platform_util::ShowItemInFolder(profile_, screenshot_path_); - NotificationDisplayService::GetForProfile(profile_)->Close( - NotificationHandler::Type::TRANSIENT, kNotificationId); - } - - void ButtonClick(int button_index) override { + } DCHECK(success_); - switch (button_index) { + switch (*button_index) { case BUTTON_COPY_TO_CLIPBOARD: { // To avoid keeping the screenshot image in memory, re-read the // screenshot file and copy it to the clipboard. @@ -188,7 +192,7 @@ break; } default: - NOTREACHED() << "Unhandled button index " << button_index; + NOTREACHED() << "Unhandled button index " << *button_index; } }
diff --git a/chrome/browser/ui/ash/launcher/settings_window_observer.cc b/chrome/browser/ui/ash/launcher/settings_window_observer.cc index 76f71cc..3ea75f6 100644 --- a/chrome/browser/ui/ash/launcher/settings_window_observer.cc +++ b/chrome/browser/ui/ash/launcher/settings_window_observer.cc
@@ -62,5 +62,6 @@ window->SetProperty( aura::client::kWindowIconKey, new gfx::ImageSkia(*rb.GetImageSkiaNamed(IDR_ASH_SHELF_ICON_SETTINGS))); + window->SetProperty(aura::client::kHasOverviewIcon, true); aura_window_tracker_->Add(window); }
diff --git a/chrome/browser/ui/ash/network/tether_notification_presenter_unittest.cc b/chrome/browser/ui/ash/network/tether_notification_presenter_unittest.cc index 4bca7268..e3d0674 100644 --- a/chrome/browser/ui/ash/network/tether_notification_presenter_unittest.cc +++ b/chrome/browser/ui/ash/network/tether_notification_presenter_unittest.cc
@@ -234,7 +234,7 @@ // Tap the notification. ASSERT_TRUE(notification->delegate()); - notification->delegate()->Click(); + notification->delegate()->Click(base::nullopt, base::nullopt); VerifySettingsOpened(kTetherSettingsSubpage); EXPECT_FALSE( display_service_->GetNotification(GetActiveHostNotificationId())); @@ -280,7 +280,7 @@ // Tap the notification. ASSERT_TRUE(notification->delegate()); - notification->delegate()->Click(); + notification->delegate()->Click(base::nullopt, base::nullopt); VerifySettingsOpened(kTetherSettingsSubpage); EXPECT_FALSE( display_service_->GetNotification(GetSetupRequiredNotificationId())); @@ -326,7 +326,7 @@ // Tap the notification. ASSERT_TRUE(notification->delegate()); - notification->delegate()->Click(); + notification->delegate()->Click(base::nullopt, base::nullopt); VerifySettingsOpened(kTetherSettingsSubpage); EXPECT_FALSE( display_service_->GetNotification(GetPotentialHotspotNotificationId())); @@ -352,7 +352,7 @@ // Tap the notification's button. ASSERT_TRUE(notification->delegate()); - notification->delegate()->ButtonClick(0); + notification->delegate()->Click(0, base::nullopt); EXPECT_FALSE( display_service_->GetNotification(GetPotentialHotspotNotificationId())); @@ -398,7 +398,7 @@ // Tap the notification. ASSERT_TRUE(notification->delegate()); - notification->delegate()->Click(); + notification->delegate()->Click(base::nullopt, base::nullopt); VerifySettingsOpened(kTetherSettingsSubpage); EXPECT_FALSE( display_service_->GetNotification(GetPotentialHotspotNotificationId())); @@ -466,7 +466,7 @@ SINGLE_HOTSPOT_NEARBY_SHOWN); display_service_->GetNotification(GetPotentialHotspotNotificationId()) ->delegate() - ->Click(); + ->Click(base::nullopt, base::nullopt); EXPECT_EQ(notification_presenter_->GetPotentialHotspotNotificationState(), NotificationPresenter::PotentialHotspotNotificationState:: NO_HOTSPOT_NOTIFICATION_SHOWN); @@ -479,7 +479,7 @@ SINGLE_HOTSPOT_NEARBY_SHOWN); display_service_->GetNotification(GetPotentialHotspotNotificationId()) ->delegate() - ->ButtonClick(0); + ->Click(0, base::nullopt); EXPECT_EQ(notification_presenter_->GetPotentialHotspotNotificationState(), NotificationPresenter::PotentialHotspotNotificationState:: NO_HOTSPOT_NOTIFICATION_SHOWN); @@ -512,7 +512,7 @@ MULTIPLE_HOTSPOTS_NEARBY_SHOWN); display_service_->GetNotification(GetPotentialHotspotNotificationId()) ->delegate() - ->Click(); + ->Click(base::nullopt, base::nullopt); EXPECT_EQ(notification_presenter_->GetPotentialHotspotNotificationState(), NotificationPresenter::PotentialHotspotNotificationState:: NO_HOTSPOT_NOTIFICATION_SHOWN);
diff --git a/chrome/browser/ui/cocoa/apps/quit_with_apps_controller_mac.cc b/chrome/browser/ui/cocoa/apps/quit_with_apps_controller_mac.cc index ddeee6e..03a25179 100644 --- a/chrome/browser/ui/cocoa/apps/quit_with_apps_controller_mac.cc +++ b/chrome/browser/ui/cocoa/apps/quit_with_apps_controller_mac.cc
@@ -92,14 +92,15 @@ suppress_for_session_ = !hosted_app_quit_notification_; } -void QuitWithAppsController::Click() { - CloseNotification(notification_profile_); -} - -void QuitWithAppsController::ButtonClick(int button_index) { +void QuitWithAppsController::Click( + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { CloseNotification(notification_profile_); - if (button_index == kQuitAllAppsButtonIndex) { + if (!button_index) + return; + + if (*button_index == kQuitAllAppsButtonIndex) { if (hosted_app_quit_notification_) { content::NotificationService::current()->Notify( chrome::NOTIFICATION_CLOSE_ALL_BROWSERS_REQUEST, @@ -108,7 +109,7 @@ chrome::CloseAllBrowsers(); } AppWindowRegistryUtil::CloseAllAppWindows(); - } else if (button_index == kDontShowAgainButtonIndex && + } else if (*button_index == kDontShowAgainButtonIndex && !hosted_app_quit_notification_) { g_browser_process->local_state()->SetBoolean( prefs::kNotifyWhenAppsKeepChromeAlive, false);
diff --git a/chrome/browser/ui/cocoa/apps/quit_with_apps_controller_mac.h b/chrome/browser/ui/cocoa/apps/quit_with_apps_controller_mac.h index f54dec4..5ee6210 100644 --- a/chrome/browser/ui/cocoa/apps/quit_with_apps_controller_mac.h +++ b/chrome/browser/ui/cocoa/apps/quit_with_apps_controller_mac.h
@@ -27,8 +27,8 @@ // NotificationDelegate interface. void Close(bool by_user) override; - void Click() override; - void ButtonClick(int button_index) override; + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; // Attempt to quit Chrome. This will display a notification and return false // if there are apps running.
diff --git a/chrome/browser/ui/cocoa/browser_window_controller.h b/chrome/browser/ui/cocoa/browser_window_controller.h index b4dd6a4b..640650e 100644 --- a/chrome/browser/ui/cocoa/browser_window_controller.h +++ b/chrome/browser/ui/cocoa/browser_window_controller.h
@@ -67,10 +67,6 @@ class Command; } -namespace { -class OmniboxPopupModelObserverBridge; -} - constexpr const gfx::Size kMinCocoaTabbedWindowSize(400, 272); constexpr const gfx::Size kMinCocoaPopupWindowSize(100, 122); @@ -201,10 +197,6 @@ // handle. std::unique_ptr<ExtensionKeybindingRegistryCocoa> extensionKeybindingRegistry_; - - // Observes whether the omnibox popup is shown or hidden. - std::unique_ptr<OmniboxPopupModelObserverBridge> - omniboxPopupModelObserverBridge_; } // A convenience class method which returns the |BrowserWindowController| for
diff --git a/chrome/browser/ui/cocoa/browser_window_controller.mm b/chrome/browser/ui/cocoa/browser_window_controller.mm index 2e3381a..f2e106d 100644 --- a/chrome/browser/ui/cocoa/browser_window_controller.mm +++ b/chrome/browser/ui/cocoa/browser_window_controller.mm
@@ -13,7 +13,6 @@ #import "base/mac/foundation_util.h" #include "base/mac/mac_util.h" #import "base/mac/sdk_forward_declarations.h" -#include "base/scoped_observer.h" #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #include "build/buildflag.h" @@ -95,7 +94,6 @@ #include "components/bookmarks/managed/managed_bookmark_service.h" #include "components/omnibox/browser/omnibox_edit_model.h" #include "components/omnibox/browser/omnibox_popup_model.h" -#include "components/omnibox/browser/omnibox_popup_model_observer.h" #include "components/signin/core/browser/profile_management_switches.h" #include "components/translate/core/browser/translate_manager.h" #include "components/translate/core/browser/translate_ui_delegate.h" @@ -195,43 +193,6 @@ namespace { -// This class shows or hides the top arrow of the infobar in accordance with the -// visibility of the omnibox popup. It hides the top arrow when the omnibox -// popup is shown, and vice versa. -class OmniboxPopupModelObserverBridge final : public OmniboxPopupModelObserver { - public: - explicit OmniboxPopupModelObserverBridge(BrowserWindowController* controller) - : controller_(controller), - omnibox_popup_model_([controller_ locationBarBridge] - ->GetOmniboxView() - ->model() - ->popup_model()), - omnibox_popup_model_observer_(this) { - DCHECK(omnibox_popup_model_); - omnibox_popup_model_observer_.Add(omnibox_popup_model_); - } - - void OnOmniboxPopupShownOrHidden() override { - int max_top_arrow_height = 0; - if (!omnibox_popup_model_->IsOpen()) { - base::scoped_nsobject<BrowserWindowLayout> layout( - [[BrowserWindowLayout alloc] init]); - [controller_ updateLayoutParameters:layout]; - max_top_arrow_height = [layout computeLayout].infoBarMaxTopArrowHeight; - } - [[controller_ infoBarContainerController] - setMaxTopArrowHeight:max_top_arrow_height]; - } - - private: - BrowserWindowController* controller_; - OmniboxPopupModel* omnibox_popup_model_; - ScopedObserver<OmniboxPopupModel, OmniboxPopupModelObserver> - omnibox_popup_model_observer_; - - DISALLOW_COPY_AND_ASSIGN(OmniboxPopupModelObserverBridge); -}; - void SetUpBrowserWindowCommandHandler(NSWindow* window) { // Make the window handle browser window commands. [base::mac::ObjCCastStrict<ChromeEventProcessingWindow>(window) @@ -384,7 +345,6 @@ // ToolbarController. infoBarContainerController_.reset( [[InfoBarContainerController alloc] initWithResizeDelegate:self]); - [self updateInfoBarTipVisibility]; // We don't want to try and show the bar before it gets placed in its parent // view, so this step shoudn't be inside the bookmark bar controller's @@ -431,9 +391,6 @@ extensions::ExtensionKeybindingRegistry::ALL_EXTENSIONS, windowShim_.get())); - omniboxPopupModelObserverBridge_ = - std::make_unique<OmniboxPopupModelObserverBridge>(self); - blockLayoutSubviews_ = NO; // We are done initializing now. @@ -463,10 +420,6 @@ [[NSNotificationCenter defaultCenter] removeObserver:self]; - // Explicitly release |omniboxPopupModelObserverBridge_| before sending - // |browserWillBeDestroyed| to prevent it from UAFing OmniboxPopupModel. - omniboxPopupModelObserverBridge_.reset(); - // Inform reference counted objects that the Browser will be destroyed. This // ensures they invalidate their weak Browser* to prevent use-after-free. // These may outlive the Browser if they are retained by something else. For
diff --git a/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm b/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm index 8d61a9f..81071199 100644 --- a/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm +++ b/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm
@@ -17,7 +17,6 @@ #include "chrome/app/chrome_command_ids.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/devtools/devtools_window_testing.h" -#include "chrome/browser/infobars/infobar_service.h" #include "chrome/browser/lifetime/application_lifetime.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" @@ -34,9 +33,7 @@ #import "chrome/browser/ui/cocoa/fast_resize_view.h" #import "chrome/browser/ui/cocoa/fullscreen/fullscreen_toolbar_controller.h" #import "chrome/browser/ui/cocoa/history_overlay_controller.h" -#import "chrome/browser/ui/cocoa/infobars/infobar_cocoa.h" #import "chrome/browser/ui/cocoa/infobars/infobar_container_controller.h" -#import "chrome/browser/ui/cocoa/infobars/infobar_controller.h" #import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h" #import "chrome/browser/ui/cocoa/profiles/avatar_base_controller.h" #import "chrome/browser/ui/cocoa/tab_contents/overlayable_contents_controller.h" @@ -47,13 +44,10 @@ #include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/find_bar/find_bar.h" #include "chrome/browser/ui/find_bar/find_bar_controller.h" -#include "chrome/browser/ui/infobar_container_delegate.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/common/pref_names.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/testing_profile.h" -#include "components/infobars/core/infobar_delegate.h" -#include "components/infobars/core/simple_alert_infobar_delegate.h" #include "components/prefs/pref_registry_simple.h" #include "components/prefs/testing_pref_service.h" #include "content/public/browser/web_contents.h" @@ -221,23 +215,6 @@ @end -@interface InfoBarContainerController(TestingAPI) -- (BOOL)isTopInfoBarAnimationRunning; -@end - -@implementation InfoBarContainerController(TestingAPI) -- (BOOL)isTopInfoBarAnimationRunning { - InfoBarController* infoBarController = [infobarControllers_ objectAtIndex:0]; - if (infoBarController) { - const gfx::SlideAnimation& infobarAnimation = - static_cast<const InfoBarCocoa*>( - infoBarController.infobar)->animation(); - return infobarAnimation.is_animating(); - } - return NO; -} -@end - class BrowserWindowControllerTest : public InProcessBrowserTest { public: BrowserWindowControllerTest() : InProcessBrowserTest() { @@ -253,14 +230,6 @@ browser()->window()->GetNativeWindow()]; } - static void ShowInfoBar(Browser* browser) { - SimpleAlertInfoBarDelegate::Create( - InfoBarService::FromWebContents( - browser->tab_strip_model()->GetActiveWebContents()), - infobars::InfoBarDelegate::TEST_INFOBAR, nullptr, base::string16(), - false); - } - NSView* GetViewWithID(BrowserViewID view_id) const { switch (view_id) { case BROWSER_VIEW_ID_FULLSCREEN_FLOATING_BAR: @@ -308,22 +277,6 @@ } } - CGFloat GetViewHeight(BrowserViewID viewID) const { - CGFloat height = NSHeight([GetViewWithID(viewID) frame]); - if (viewID == BROWSER_VIEW_ID_INFO_BAR) { - height -= [[controller() infoBarContainerController] - overlappingTipHeight]; - } - return height; - } - - static void CheckTopInfoBarAnimation( - InfoBarContainerController* info_bar_container_controller, - const base::Closure& quit_task) { - if (![info_bar_container_controller isTopInfoBarAnimationRunning]) - quit_task.Run(); - } - static void CheckBookmarkBarAnimation( BookmarkBarController* bookmark_bar_controller, const base::Closure& quit_task) { @@ -331,20 +284,6 @@ quit_task.Run(); } - void WaitForTopInfoBarAnimationToFinish() { - scoped_refptr<content::MessageLoopRunner> runner = - new content::MessageLoopRunner; - - base::Timer timer(false, true); - timer.Start( - FROM_HERE, - base::TimeDelta::FromMilliseconds(15), - base::Bind(&CheckTopInfoBarAnimation, - [controller() infoBarContainerController], - runner->QuitClosure())); - runner->Run(); - } - void WaitForBookmarkBarAnimationToFinish() { scoped_refptr<content::MessageLoopRunner> runner = new content::MessageLoopRunner; @@ -359,22 +298,6 @@ runner->Run(); } - NSInteger GetExpectedTopInfoBarTipHeight() { - InfoBarContainerController* info_bar_container_controller = - [controller() infoBarContainerController]; - CGFloat overlapping_tip_height = - [info_bar_container_controller overlappingTipHeight]; - LocationBarViewMac* location_bar_view = [controller() locationBarBridge]; - NSPoint icon_bottom = location_bar_view->GetInfoBarAnchorPoint(); - - NSPoint info_bar_top = NSMakePoint(0, - NSHeight([info_bar_container_controller view].frame) - - overlapping_tip_height); - info_bar_top = [[info_bar_container_controller view] - convertPoint:info_bar_top toView:nil]; - return icon_bottom.y - info_bar_top.y; - } - // Nothing should draw on top of the window controls. void VerifyWindowControlsZOrder() { NSWindow* window = [controller() window]; @@ -652,27 +575,6 @@ [nsWindowController close]; } -// Verify that the info bar tip is hidden when the toolbar is not visible. -IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, - InfoBarTipHiddenForWindowWithoutToolbar) { - ShowInfoBar(browser()); - EXPECT_FALSE( - [[controller() infoBarContainerController] shouldSuppressTopInfoBarTip]); - - OpenAppShortcutWindow(browser()->profile(), GURL("about:blank")); - Browser* popup_browser = BrowserList::GetInstance()->GetLastActive(); - NSWindow* popupWindow = popup_browser->window()->GetNativeWindow(); - BrowserWindowController* popupController = - [BrowserWindowController browserWindowControllerForWindow:popupWindow]; - EXPECT_FALSE([popupController hasToolbar]); - - // Show infobar for controller. - ShowInfoBar(popup_browser); - EXPECT_TRUE( - [[popupController infoBarContainerController] - shouldSuppressTopInfoBarTip]); -} - // Tests that status bubble's base frame does move when devTools are docked. IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, StatusBubblePositioning) { @@ -689,35 +591,6 @@ DevToolsWindowTesting::CloseDevToolsWindowSync(devtools_window); } -// Tests that top infobar tip is streched when bookmark bar becomes SHOWN/HIDDEN -IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, - InfoBarTipStretchedWhenBookmarkBarStatusChanged) { - EXPECT_FALSE([controller() isBookmarkBarVisible]); - ShowInfoBar(browser()); - // The infobar tip is animated during the infobar is being added, wait until - // it completes. - WaitForTopInfoBarAnimationToFinish(); - - EXPECT_FALSE([[controller() infoBarContainerController] - shouldSuppressTopInfoBarTip]); - - NSInteger max_tip_height = - InfoBarContainerDelegate::kMaximumArrowTargetHeight + - InfoBarContainerDelegate::kSeparatorLineHeight; - - chrome::ExecuteCommand(browser(), IDC_SHOW_BOOKMARK_BAR); - WaitForBookmarkBarAnimationToFinish(); - EXPECT_TRUE([controller() isBookmarkBarVisible]); - EXPECT_EQ(std::min(GetExpectedTopInfoBarTipHeight(), max_tip_height), - [[controller() infoBarContainerController] overlappingTipHeight]); - - chrome::ExecuteCommand(browser(), IDC_SHOW_BOOKMARK_BAR); - WaitForBookmarkBarAnimationToFinish(); - EXPECT_FALSE([controller() isBookmarkBarVisible]); - EXPECT_EQ(std::min(GetExpectedTopInfoBarTipHeight(), max_tip_height), - [[controller() infoBarContainerController] overlappingTipHeight]); -} - IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, TrafficLightZOrder) { // Verify z order immediately after creation. VerifyWindowControlsZOrder();
diff --git a/chrome/browser/ui/cocoa/browser_window_controller_private.h b/chrome/browser/ui/cocoa/browser_window_controller_private.h index 2fbf7252..85bad1a 100644 --- a/chrome/browser/ui/cocoa/browser_window_controller_private.h +++ b/chrome/browser/ui/cocoa/browser_window_controller_private.h
@@ -108,12 +108,6 @@ // The opacity for the toolbar divider; 0 means that it shouldn't be shown. - (CGFloat)toolbarDividerOpacity; -// Update visibility of the infobar tip, depending on the state of the window. -- (void)updateInfoBarTipVisibility; - -// The distance from the toolbar bottom to the anchor point for InfoBars. -- (NSInteger)infoBarAnchorPointY; - // Enter fullscreen by toggling the AppKit Fullscreen API. - (void)enterAppKitFullscreen;
diff --git a/chrome/browser/ui/cocoa/browser_window_controller_private.mm b/chrome/browser/ui/cocoa/browser_window_controller_private.mm index 312fc85..4ee0b6e 100644 --- a/chrome/browser/ui/cocoa/browser_window_controller_private.mm +++ b/chrome/browser/ui/cocoa/browser_window_controller_private.mm
@@ -850,25 +850,6 @@ return [bookmarkBarController_ toolbarDividerOpacity]; } -- (void)updateInfoBarTipVisibility { - // If there's no toolbar then hide the infobar tip. - [infoBarContainerController_ - setShouldSuppressTopInfoBarTip:![self hasToolbar]]; -} - -- (NSInteger)infoBarAnchorPointY { - LocationBarViewMac* locationBarView = [self locationBarBridge]; - - // The point, in window coordinates. - NSPoint iconBottom = locationBarView->GetInfoBarAnchorPoint(); - - // The toolbar, in window coordinates. - NSView* toolbar = [toolbarController_ view]; - CGFloat toolbarY = NSMinY([toolbar convertRect:[toolbar bounds] toView:nil]); - - return iconBottom.y - toolbarY; -} - - (void)enterAppKitFullscreen { [[self window] toggleFullScreen:nil]; } @@ -950,7 +931,6 @@ NSHeight([[bookmarkBarController_ view] bounds])]; [layout setInfoBarHeight:[infoBarContainerController_ heightOfInfoBars]]; - [layout setInfoBarAnchorPointY:[self infoBarAnchorPointY]]; [layout setHasDownloadShelf:(downloadShelfController_.get() != nil)]; [layout setDownloadShelfHeight: @@ -971,10 +951,6 @@ // The info bar is never hidden. Sometimes it has zero effective height. [[infoBarContainerController_ view] setFrame:output.infoBarFrame]; - [infoBarContainerController_ - setMaxTopArrowHeight:output.infoBarMaxTopArrowHeight]; - [infoBarContainerController_ - setInfobarArrowX:[self locationBarBridge]->GetInfoBarAnchorPoint().x]; [[downloadShelfController_ view] setFrame:output.downloadShelfFrame];
diff --git a/chrome/browser/ui/cocoa/browser_window_layout.h b/chrome/browser/ui/cocoa/browser_window_layout.h index b154fe0e..23024c6b 100644 --- a/chrome/browser/ui/cocoa/browser_window_layout.h +++ b/chrome/browser/ui/cocoa/browser_window_layout.h
@@ -69,12 +69,7 @@ BOOL placeBookmarkBarBelowInfoBar; CGFloat bookmarkBarHeight; - // The height of the info bar, not including the top arrow. CGFloat infoBarHeight; - // The distance from the bottom of the location icon to the bottom of the - // toolbar. Only needs to be set if infoBarHeight is not 0 and hasToolbar is - // YES. - CGFloat infoBarAnchorPointY; BOOL hasDownloadShelf; CGFloat downloadShelfHeight; @@ -108,7 +103,6 @@ NSRect fullscreenBackingBarFrame; CGFloat findBarMaxY; NSRect infoBarFrame; - CGFloat infoBarMaxTopArrowHeight; NSRect downloadShelfFrame; NSRect contentAreaFrame; }; @@ -173,10 +167,7 @@ - (void)setPlaceBookmarkBarBelowInfoBar:(BOOL)placeBookmarkBarBelowInfoBar; - (void)setBookmarkBarHeight:(CGFloat)bookmarkBarHeight; -// The height of the info bar, not including the top arrow. - (void)setInfoBarHeight:(CGFloat)infoBarHeight; -// The min Y of the infobar anchor point, relative to the toolbar. -- (void)setInfoBarAnchorPointY:(CGFloat)infoBarAnchorPointY; - (void)setHasDownloadShelf:(BOOL)hasDownloadShelf; - (void)setDownloadShelfHeight:(CGFloat)downloadShelfHeight;
diff --git a/chrome/browser/ui/cocoa/browser_window_layout.mm b/chrome/browser/ui/cocoa/browser_window_layout.mm index 250db99d..75cbe82 100644 --- a/chrome/browser/ui/cocoa/browser_window_layout.mm +++ b/chrome/browser/ui/cocoa/browser_window_layout.mm
@@ -173,10 +173,6 @@ parameters_.infoBarHeight = infoBarHeight; } -- (void)setInfoBarAnchorPointY:(CGFloat)infoBarAnchorPointY { - parameters_.infoBarAnchorPointY = infoBarAnchorPointY; -} - - (void)setHasDownloadShelf:(BOOL)hasDownloadShelf { parameters_.hasDownloadShelf = hasDownloadShelf; } @@ -345,18 +341,8 @@ CGFloat infoBarMaxY = maxY; CGFloat infoBarMinY = maxY - parameters_.infoBarHeight; - // If there's a toolbar, then the frame needs to be high enough to - // accomodate the top arrow, which might stretch all the way to the page - // info bubble icon. - if (parameters_.hasToolbar) { - infoBarMaxY = - NSMinY(output_.toolbarFrame) + parameters.infoBarAnchorPointY; - } - output_.infoBarFrame = NSMakeRect(0, infoBarMinY, width, infoBarMaxY - infoBarMinY); - output_.infoBarMaxTopArrowHeight = - NSHeight(output_.infoBarFrame) - parameters_.infoBarHeight; maxY = NSMinY(output_.infoBarFrame); } else { // The info bar has 0 height, but tests still expect it in the right
diff --git a/chrome/browser/ui/cocoa/browser_window_layout_unittest.mm b/chrome/browser/ui/cocoa/browser_window_layout_unittest.mm index d9e4f68..6805c4b 100644 --- a/chrome/browser/ui/cocoa/browser_window_layout_unittest.mm +++ b/chrome/browser/ui/cocoa/browser_window_layout_unittest.mm
@@ -32,7 +32,6 @@ [layout setBookmarkBarHidden:NO]; [layout setBookmarkBarHeight:26]; [layout setInfoBarHeight:72]; - [layout setInfoBarAnchorPointY:13]; [layout setHasDownloadShelf:YES]; [layout setDownloadShelfHeight:44]; [layout setOSYosemiteOrLater:NO]; @@ -67,7 +66,7 @@ EXPECT_NSEQ(NSMakeRect(0, 527, 600, 26), output.bookmarkFrame); EXPECT_NSEQ(NSZeroRect, output.fullscreenBackingBarFrame); EXPECT_EQ(527, output.findBarMaxY); - EXPECT_NSEQ(NSMakeRect(0, 455, 600, 111), output.infoBarFrame); + EXPECT_NSEQ(NSMakeRect(0, 455, 600, 72), output.infoBarFrame); EXPECT_NSEQ(NSMakeRect(0, 0, 600, 44), output.downloadShelfFrame); EXPECT_NSEQ(NSMakeRect(0, 44, 600, 411), output.contentAreaFrame); } @@ -86,7 +85,7 @@ EXPECT_NSEQ(NSMakeRect(0, 527, 600, 26), output.bookmarkFrame); EXPECT_NSEQ(NSMakeRect(0, 527, 600, 95), output.fullscreenBackingBarFrame); EXPECT_EQ(527, output.findBarMaxY); - EXPECT_NSEQ(NSMakeRect(0, 455, 600, 111), output.infoBarFrame); + EXPECT_NSEQ(NSMakeRect(0, 455, 600, 72), output.infoBarFrame); EXPECT_NSEQ(NSMakeRect(0, 0, 600, 44), output.downloadShelfFrame); EXPECT_NSEQ(NSMakeRect(0, 44, 600, 411), output.contentAreaFrame); } @@ -118,7 +117,7 @@ EXPECT_NSEQ(NSMakeRect(0, 517, 600, 26), output.bookmarkFrame); EXPECT_NSEQ(NSMakeRect(0, 517, 600, 95), output.fullscreenBackingBarFrame); EXPECT_EQ(517, output.findBarMaxY); - EXPECT_NSEQ(NSMakeRect(0, 445, 600, 111), output.infoBarFrame); + EXPECT_NSEQ(NSMakeRect(0, 445, 600, 72), output.infoBarFrame); EXPECT_NSEQ(NSMakeRect(0, 0, 600, 44), output.downloadShelfFrame); EXPECT_NSEQ(NSMakeRect(0, 44, 600, 411), output.contentAreaFrame); }
diff --git a/chrome/browser/ui/cocoa/infobars/confirm_infobar_controller_unittest.mm b/chrome/browser/ui/cocoa/infobars/confirm_infobar_controller_unittest.mm index 25514e7..4a73c86 100644 --- a/chrome/browser/ui/cocoa/infobars/confirm_infobar_controller_unittest.mm +++ b/chrome/browser/ui/cocoa/infobars/confirm_infobar_controller_unittest.mm
@@ -11,7 +11,6 @@ #include "base/strings/sys_string_conversions.h" #include "chrome/browser/infobars/infobar_service.h" #import "chrome/browser/ui/cocoa/infobars/infobar_cocoa.h" -#import "chrome/browser/ui/cocoa/infobars/infobar_container_controller.h" #include "chrome/browser/ui/cocoa/infobars/mock_confirm_infobar_delegate.h" #include "chrome/browser/ui/cocoa/test/cocoa_profile_test.h" #include "chrome/browser/ui/cocoa/test/run_loop_testing.h" @@ -39,37 +38,6 @@ @end -@interface InfoBarContainerTest : NSObject<InfoBarContainerControllerBase> { - InfoBarController* controller_; -} - -- (id)initWithController:(InfoBarController*)controller; - -@end - -@implementation InfoBarContainerTest - -- (id)initWithController:(InfoBarController*)controller { - if ((self = [super init])) { - controller_ = controller; - } - return self; -} - -- (BrowserWindowController*)browserWindowController { - return nil; -} - -- (BOOL)shouldSuppressTopInfoBarTip { - return NO; -} - -- (CGFloat)infobarArrowX { - return 0; -} - -@end - @interface TestConfirmInfoBarController : ConfirmInfoBarController - (void)removeSelf; @end @@ -102,9 +70,6 @@ initWithInfoBar:infobar_]); infobar_->set_controller(controller_); - container_.reset( - [[InfoBarContainerTest alloc] initWithController:controller_]); - [controller_ setContainerController:container_]; [[test_window() contentView] addSubview:[controller_ view]]; closed_delegate_ok_clicked_ = false; closed_delegate_cancel_clicked_ = false; @@ -125,7 +90,6 @@ return static_cast<MockConfirmInfoBarDelegate*>(infobar_->delegate()); } - base::scoped_nsobject<id> container_; base::scoped_nsobject<ConfirmInfoBarController> controller_; bool closed_delegate_ok_clicked_; bool closed_delegate_cancel_clicked_;
diff --git a/chrome/browser/ui/cocoa/infobars/infobar_container_cocoa.h b/chrome/browser/ui/cocoa/infobars/infobar_container_cocoa.h index 13bec578..ea7f9a24 100644 --- a/chrome/browser/ui/cocoa/infobars/infobar_container_cocoa.h +++ b/chrome/browser/ui/cocoa/infobars/infobar_container_cocoa.h
@@ -8,14 +8,14 @@ #include <stddef.h> #include "base/macros.h" -#include "chrome/browser/ui/infobar_container_delegate.h" +#include "components/infobars/core/infobar_container.h" @class InfoBarContainerController; // The cocoa specific implementation of InfoBarContainer. This mostly serves as // a bridge for InfoBarContainerController. class InfoBarContainerCocoa : public infobars::InfoBarContainer, - public InfoBarContainerDelegate { + public infobars::InfoBarContainer::Delegate { public: explicit InfoBarContainerCocoa(InfoBarContainerController* controller); ~InfoBarContainerCocoa() override; @@ -26,9 +26,8 @@ size_t position) override; void PlatformSpecificRemoveInfoBar(infobars::InfoBar* infobar) override; - // InfoBarContainerDelegate: + // InfoBarContainer::Delegate: void InfoBarContainerStateChanged(bool is_animating) override; - bool DrawInfoBarArrows(int* x) const override; InfoBarContainerController* controller_; // weak, owns us.
diff --git a/chrome/browser/ui/cocoa/infobars/infobar_container_cocoa.mm b/chrome/browser/ui/cocoa/infobars/infobar_container_cocoa.mm index bcfe2bc..d666242 100644 --- a/chrome/browser/ui/cocoa/infobars/infobar_container_cocoa.mm +++ b/chrome/browser/ui/cocoa/infobars/infobar_container_cocoa.mm
@@ -33,7 +33,3 @@ void InfoBarContainerCocoa::InfoBarContainerStateChanged(bool is_animating) { [controller_ positionInfoBarsAndRedraw:is_animating]; } - -bool InfoBarContainerCocoa::DrawInfoBarArrows(int* x) const { - return false; -}
diff --git a/chrome/browser/ui/cocoa/infobars/infobar_container_controller.h b/chrome/browser/ui/cocoa/infobars/infobar_container_controller.h index 0946ce6..51aa57f4 100644 --- a/chrome/browser/ui/cocoa/infobars/infobar_container_controller.h +++ b/chrome/browser/ui/cocoa/infobars/infobar_container_controller.h
@@ -21,20 +21,12 @@ class WebContents; } -// Protocol for basic container methods, as needed by an InfoBarController. -// This protocol exists to make mocking easier in unittests. -@protocol InfoBarContainerControllerBase -- (BOOL)shouldSuppressTopInfoBarTip; -- (CGFloat)infobarArrowX; -@end - // Controller for the infobar container view, which is the superview // of all the infobar views. This class owns zero or more // InfoBarControllers, which manage the infobar views. This class // also receives tab strip model notifications and handles // adding/removing infobars when needed. -@interface InfoBarContainerController - : NSViewController<InfoBarContainerControllerBase> { +@interface InfoBarContainerController : NSViewController { @private // Needed to send resize messages when infobars are added or removed. id<ViewResizer> resizeDelegate_; // weak @@ -48,19 +40,10 @@ // The C++ instance that bridges to the cross platform code. std::unique_ptr<InfoBarContainerCocoa> containerCocoa_; - // If YES then the first info bar doesn't draw a tip. - BOOL shouldSuppressTopInfoBarTip_; - - // The x-position of the infobar arrow. - CGFloat infobarArrowX_; - // If YES then an infobar animation is in progress. BOOL isAnimating_; } -@property(nonatomic, assign) BOOL shouldSuppressTopInfoBarTip; -@property(nonatomic, assign) CGFloat infobarArrowX; - - (id)initWithResizeDelegate:(id<ViewResizer>)resizeDelegate; // Modifies this container to display infobars for the given |contents|. @@ -71,10 +54,6 @@ // contents. - (void)tabDetachedWithContents:(content::WebContents*)contents; -// Returns the amount of additional height the container view needs to draw the -// anti-spoofing tip. This is the total amount of overlap for all infobars. -- (CGFloat)overlappingTipHeight; - // Adds the given infobar. - (void)addInfoBar:(InfoBarCocoa*)infobar position:(NSUInteger)position; @@ -86,10 +65,7 @@ // |browser_controller_| that it needs to resize the container view. - (void)positionInfoBarsAndRedraw:(BOOL)isAnimating; -// Set the max arrow height of the top infobar. -- (void)setMaxTopArrowHeight:(NSInteger)height; - -// The height of all the info bars. Does not include the top arrow. +// The height of all the info bars. - (CGFloat)heightOfInfoBars; @end
diff --git a/chrome/browser/ui/cocoa/infobars/infobar_container_controller.mm b/chrome/browser/ui/cocoa/infobars/infobar_container_controller.mm index 8caa878b..c3b5a51 100644 --- a/chrome/browser/ui/cocoa/infobars/infobar_container_controller.mm +++ b/chrome/browser/ui/cocoa/infobars/infobar_container_controller.mm
@@ -24,9 +24,6 @@ @implementation InfoBarContainerController -@synthesize shouldSuppressTopInfoBarTip = shouldSuppressTopInfoBarTip_; -@synthesize infobarArrowX = infobarArrowX_; - - (id)initWithResizeDelegate:(id<ViewResizer>)resizeDelegate { DCHECK(resizeDelegate); if ((self = [super initWithNibName:nil bundle:nil])) { @@ -66,20 +63,14 @@ [self changeWebContents:NULL]; } -- (CGFloat)overlappingTipHeight { - return containerCocoa_->GetVerticalOverlap(NULL); -} - - (void)addInfoBar:(InfoBarCocoa*)infobar position:(NSUInteger)position { - InfoBarController* controller = infobar->controller(); - [controller setContainerController:self]; - [infobarControllers_ insertObject:controller atIndex:position]; + [infobarControllers_ insertObject:infobar->controller() atIndex:position]; NSView* relativeView = nil; if (position > 0) relativeView = [[infobarControllers_ objectAtIndex:position - 1] view]; - [[self view] addSubview:[controller view] + [[self view] addSubview:[infobar->controller() view] positioned:NSWindowAbove relativeTo:relativeView]; } @@ -109,21 +100,13 @@ frame.origin.x = NSMinX(containerBounds); frame.origin.y = minY; frame.size.width = NSWidth(containerBounds); - frame.size.height = [controller infobar]->total_height(); + frame.size.height = [controller infobar]->computed_height(); [[controller view] setFrame:frame]; - minY += NSHeight(frame) - [controller infobar]->arrow_height(); - [controller layoutArrow]; + minY += NSHeight(frame); } - [resizeDelegate_ resizeView:[self view] newHeight:[self heightOfInfoBars]]; -} - -- (void)setShouldSuppressTopInfoBarTip:(BOOL)flag { - if (shouldSuppressTopInfoBarTip_ == flag) - return; - shouldSuppressTopInfoBarTip_ = flag; - [self positionInfoBarsAndRedraw:isAnimating_]; + [resizeDelegate_ resizeView:[self view] newHeight:minY]; } - (void)removeController:(InfoBarController*)controller { @@ -138,16 +121,10 @@ [infobarControllers_ removeObject:controller]; } -- (void)setMaxTopArrowHeight:(NSInteger)height { - containerCocoa_->SetMaxTopArrowHeight(height, containerCocoa_.get()); -} - - (CGFloat)heightOfInfoBars { CGFloat totalHeight = 0; - for (InfoBarController* controller in infobarControllers_.get()) { - totalHeight += [controller infobar]->total_height() - - [controller infobar]->arrow_height(); - } + for (InfoBarController* controller in infobarControllers_.get()) + totalHeight += [controller infobar]->computed_height(); return totalHeight; }
diff --git a/chrome/browser/ui/cocoa/infobars/infobar_controller.h b/chrome/browser/ui/cocoa/infobars/infobar_controller.h index 94e48527..1668aad6 100644 --- a/chrome/browser/ui/cocoa/infobars/infobar_controller.h +++ b/chrome/browser/ui/cocoa/infobars/infobar_controller.h
@@ -10,7 +10,6 @@ #include "base/mac/scoped_nsobject.h" #include "base/memory/weak_ptr.h" -@protocol InfoBarContainerControllerBase; class InfoBarCocoa; @class InfoBarGradientView; @@ -24,7 +23,6 @@ // override addAdditionalControls to customize the UI. @interface InfoBarController : NSViewController<NSTextViewDelegate> { @private - id<InfoBarContainerControllerBase> containerController_; // weak, owns us base::WeakPtr<InfoBarCocoa> infobar_; @protected @@ -42,8 +40,6 @@ base::scoped_nsobject<NSTextView> label_; } -@property(nonatomic, assign) - id<InfoBarContainerControllerBase> containerController; @property(nonatomic, readonly) infobars::InfoBarDelegate* delegate; @property(nonatomic, readonly) InfoBarCocoa* infobar; @@ -88,9 +84,6 @@ // space. - (void)removeButtons; -// Updates the view's arrow position. -- (void)layoutArrow; - @end @interface InfoBarController (Protected)
diff --git a/chrome/browser/ui/cocoa/infobars/infobar_controller.mm b/chrome/browser/ui/cocoa/infobars/infobar_controller.mm index 0628db8a..90f026eb 100644 --- a/chrome/browser/ui/cocoa/infobars/infobar_controller.mm +++ b/chrome/browser/ui/cocoa/infobars/infobar_controller.mm
@@ -31,8 +31,6 @@ @implementation InfoBarController -@synthesize containerController = containerController_; - - (id)initWithInfoBar:(InfoBarCocoa*)infobar { if ((self = [super initWithNibName:@"InfoBar" bundle:base::mac::FrameworkBundle()])) { @@ -87,6 +85,9 @@ [infoBarView_ setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; cocoa_l10n_util::FlipAllSubviewsIfNecessary( base::mac::ObjCCast<NSView>(infoBarView_)); + + constexpr int kDefaultBarTargetHeight = 40; + infobar_->SetTargetHeight(kDefaultBarTargetHeight); } - (void)dealloc { @@ -158,17 +159,6 @@ [label_.get() setFrame:labelFrame]; } -- (void)layoutArrow { - [infoBarView_ setArrowHeight:infobar_->arrow_height()]; - [infoBarView_ setArrowHalfWidth:infobar_->arrow_half_width()]; - [infoBarView_ setHasTip:![containerController_ shouldSuppressTopInfoBarTip]]; - - // Convert from window to view coordinates. - NSPoint point = NSMakePoint([containerController_ infobarArrowX], 0); - point = [infoBarView_ convertPoint:point fromView:nil]; - [infoBarView_ setArrowX:point.x]; -} - - (void)disablePopUpMenu:(NSMenu*)menu { // If the menu is re-opened, prevent queries to update items. [menu setDelegate:nil];
diff --git a/chrome/browser/ui/cocoa/infobars/infobar_gradient_view.h b/chrome/browser/ui/cocoa/infobars/infobar_gradient_view.h index 6da46b4..be72e4a5 100644 --- a/chrome/browser/ui/cocoa/infobars/infobar_gradient_view.h +++ b/chrome/browser/ui/cocoa/infobars/infobar_gradient_view.h
@@ -11,18 +11,7 @@ #import <Cocoa/Cocoa.h> // A custom view that draws the background gradient for an infobar. -@interface InfoBarGradientView : VerticalGradientView { - @private - CGFloat arrowHeight_; - CGFloat arrowHalfWidth_; - CGFloat arrowX_; - BOOL hasTip_; -} - -@property(assign, nonatomic) CGFloat arrowHeight; -@property(assign, nonatomic) CGFloat arrowHalfWidth; -@property(assign, nonatomic) CGFloat arrowX; -@property(assign, nonatomic) BOOL hasTip; +@interface InfoBarGradientView : VerticalGradientView // Sets the infobar background color. - (void)setInfobarBackgroundColor:(SkColor)color;
diff --git a/chrome/browser/ui/cocoa/infobars/infobar_gradient_view.mm b/chrome/browser/ui/cocoa/infobars/infobar_gradient_view.mm index a1e99a8..148ecdf 100644 --- a/chrome/browser/ui/cocoa/infobars/infobar_gradient_view.mm +++ b/chrome/browser/ui/cocoa/infobars/infobar_gradient_view.mm
@@ -9,7 +9,6 @@ #import "chrome/browser/ui/cocoa/browser_window_controller.h" #import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h" #import "chrome/browser/ui/cocoa/themed_window.h" -#include "chrome/browser/ui/infobar_container_delegate.h" #include "skia/ext/skia_utils_mac.h" #import "ui/base/cocoa/nsview_additions.h" #include "ui/base/material_design/material_design_controller.h" @@ -17,22 +16,13 @@ @implementation InfoBarGradientView -@synthesize arrowHeight = arrowHeight_; -@synthesize arrowHalfWidth = arrowHalfWidth_; -@synthesize arrowX = arrowX_; -@synthesize hasTip = hasTip_; - - (id)initWithFrame:(NSRect)frame { - if ((self = [super initWithFrame:frame])) { - hasTip_ = YES; - } + self = [super initWithFrame:frame]; return self; } - (id)initWithCoder:(NSCoder*)decoder { - if ((self = [super initWithCoder:decoder])) { - hasTip_ = YES; - } + self = [super initWithCoder:decoder]; return self; } @@ -57,27 +47,12 @@ - (void)drawRect:(NSRect)rect { NSRect bounds = [self bounds]; - bounds.size.height = InfoBarContainerDelegate::kDefaultBarTargetHeight; - CGFloat tipXOffset = arrowX_ - arrowHalfWidth_; // Around the bounds of the infobar, continue drawing the path into which the // gradient will be drawn. NSBezierPath* infoBarPath = [NSBezierPath bezierPath]; [infoBarPath moveToPoint:NSMakePoint(NSMinX(bounds), NSMaxY(bounds))]; - - // Draw the tip. - if (hasTip_) { - [infoBarPath lineToPoint:NSMakePoint(tipXOffset, NSMaxY(bounds))]; - [infoBarPath relativeLineToPoint:NSMakePoint(arrowHalfWidth_, - arrowHeight_)]; - [infoBarPath relativeLineToPoint:NSMakePoint(arrowHalfWidth_, - -arrowHeight_)]; - } [infoBarPath lineToPoint:NSMakePoint(NSMaxX(bounds), NSMaxY(bounds))]; - - // Save off the top path of the infobar. - base::scoped_nsobject<NSBezierPath> topPath([infoBarPath copy]); - [infoBarPath lineToPoint:NSMakePoint(NSMaxX(bounds), NSMinY(bounds))]; [infoBarPath lineToPoint:NSMakePoint(NSMinX(bounds), NSMinY(bounds))]; [infoBarPath closePath]; @@ -93,23 +68,11 @@ NSRect borderRect, contentRect; NSDivideRect(bounds, &borderRect, &contentRect, 1, NSMinYEdge); NSRectFillUsingOperation(borderRect, NSCompositeSourceOver); - - // Re-stroke the top because the tip will have no stroke. This will draw - // over the divider drawn by the bottom of the tabstrip. - [topPath stroke]; } // Add an inner stroke. - const CGFloat kHighlightTipHeight = arrowHeight_ - 1; NSBezierPath* highlightPath = [NSBezierPath bezierPath]; [highlightPath moveToPoint:NSMakePoint(NSMinX(bounds), NSMaxY(bounds) - 1)]; - if (hasTip_) { - [highlightPath relativeLineToPoint:NSMakePoint(tipXOffset + 1, 0)]; - [highlightPath relativeLineToPoint:NSMakePoint(arrowHalfWidth_ - 1, - kHighlightTipHeight)]; - [highlightPath relativeLineToPoint:NSMakePoint(arrowHalfWidth_ - 1, - -kHighlightTipHeight)]; - } [highlightPath lineToPoint:NSMakePoint(NSMaxX(bounds), NSMaxY(bounds) - 1)]; [[NSColor colorWithDeviceWhite:1.0 alpha:1.0] setStroke]; @@ -133,11 +96,4 @@ return [super accessibilityAttributeValue:attribute]; } -- (void)setHasTip:(BOOL)hasTip { - if (hasTip_ == hasTip) - return; - hasTip_ = hasTip; - [self setNeedsDisplay:YES]; -} - @end
diff --git a/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field.h b/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field.h index b4e0a74..7057e734 100644 --- a/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field.h +++ b/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field.h
@@ -169,10 +169,6 @@ // Obtain the bubble anchor point for |decoration| in window coordinates. - (NSPoint)bubblePointForDecoration:(LocationBarDecoration*)decoration; -// Returns the anchor point for arrows pointing to |decoration| in window -// coordinates. -- (NSPoint)arrowAnchorPointForDecoration:(LocationBarDecoration*)decoration; - @end #endif // CHROME_BROWSER_UI_COCOA_LOCATION_BAR_AUTOCOMPLETE_TEXT_FIELD_H_
diff --git a/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field.mm b/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field.mm index 7800dc4..5de540a 100644 --- a/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field.mm +++ b/chrome/browser/ui/cocoa/location_bar/autocomplete_text_field.mm
@@ -296,8 +296,12 @@ // Use MD-style anchoring, even if only pilot dialogs are enabled. MD dialogs // have no arrow and align corners. Cocoa dialogs will always have an arrow. // This causes the arrows on Cocoa dialogs to align to the omnibox corner. - if (!chrome::ShowPilotDialogsWithViewsToolkit()) - return [self arrowAnchorPointForDecoration:decoration]; + if (!chrome::ShowPilotDialogsWithViewsToolkit()) { + const NSRect frame = + [[self cell] frameForDecoration:decoration inFrame:[self bounds]]; + NSPoint point = decoration->GetBubblePointInFrame(frame); + return [self convertPoint:point toView:nil]; + } // Under MD, dialogs have no arrow and anchor to corner of the location bar // frame, not a specific point within it. See http://crbug.com/566115. @@ -322,13 +326,6 @@ return [self convertPoint:point toView:nil]; } -- (NSPoint)arrowAnchorPointForDecoration:(LocationBarDecoration*)decoration { - const NSRect frame = - [[self cell] frameForDecoration:decoration inFrame:[self bounds]]; - NSPoint point = decoration->GetBubblePointInFrame(frame); - return [self convertPoint:point toView:nil]; -} - // TODO(shess): -resetFieldEditorFrameIfNeeded is the place where // changes to the cell layout should be flushed. LocationBarViewMac // and ToolbarController are calling this routine directly, and I
diff --git a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h index c438d7f8..4421958 100644 --- a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h +++ b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h
@@ -122,10 +122,6 @@ // Get the point in window coordinates for the page info bubble anchor. NSPoint GetPageInfoBubblePoint() const; - // Get the point in window coordinates in the page info icon at which infobar - // arrows should point. - NSPoint GetInfoBarAnchorPoint() const; - // When any image decorations change, call this to ensure everything is // redrawn and laid out if necessary. void OnDecorationsChanged();
diff --git a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm index bc70bf1..1fdc9b7 100644 --- a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm +++ b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm
@@ -335,10 +335,6 @@ return [field_ bubblePointForDecoration:page_info_decoration_.get()]; } -NSPoint LocationBarViewMac::GetInfoBarAnchorPoint() const { - return [field_ arrowAnchorPointForDecoration:page_info_decoration_.get()]; -} - void LocationBarViewMac::OnDecorationsChanged() { // TODO(shess): The field-editor frame and cursor rects should not // change, here.
diff --git a/chrome/browser/ui/extensions/extension_installed_notification.cc b/chrome/browser/ui/extensions/extension_installed_notification.cc index 0bb3bbe9..c660f52 100644 --- a/chrome/browser/ui/extensions/extension_installed_notification.cc +++ b/chrome/browser/ui/extensions/extension_installed_notification.cc
@@ -59,7 +59,9 @@ ExtensionInstalledNotification::~ExtensionInstalledNotification() {} -void ExtensionInstalledNotification::Click() { +void ExtensionInstalledNotification::Click( + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { if (!extensions::util::IsAppLaunchable(extension_id_, profile_)) return;
diff --git a/chrome/browser/ui/extensions/extension_installed_notification.h b/chrome/browser/ui/extensions/extension_installed_notification.h index 0cc024f2..2b34b13 100644 --- a/chrome/browser/ui/extensions/extension_installed_notification.h +++ b/chrome/browser/ui/extensions/extension_installed_notification.h
@@ -20,7 +20,8 @@ Profile* profile); // NotificationDelegate override: - void Click() override; + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; protected: // This class is ref-counted.
diff --git a/chrome/browser/ui/infobar_container_delegate.cc b/chrome/browser/ui/infobar_container_delegate.cc index 235ae53..9009035 100644 --- a/chrome/browser/ui/infobar_container_delegate.cc +++ b/chrome/browser/ui/infobar_container_delegate.cc
@@ -4,9 +4,6 @@ #include "chrome/browser/ui/infobar_container_delegate.h" -#include "build/build_config.h" -#include "ui/gfx/animation/slide_animation.h" - #if defined(TOOLKIT_VIEWS) #include "ui/views/window/non_client_view.h" #endif @@ -18,75 +15,3 @@ const int InfoBarContainerDelegate::kSeparatorLineHeight = views::NonClientFrameView::kClientEdgeThickness; #endif -const int InfoBarContainerDelegate::kDefaultArrowTargetHeight = 11; - -const int InfoBarContainerDelegate::kDefaultBarTargetHeight = 40; -const int InfoBarContainerDelegate::kMaximumArrowTargetHeight = 24; -const int InfoBarContainerDelegate::kDefaultArrowTargetHalfWidth = - kDefaultArrowTargetHeight; -const int InfoBarContainerDelegate::kMaximumArrowTargetHalfWidth = 14; - -InfoBarContainerDelegate::InfoBarContainerDelegate() - : top_arrow_target_height_(kDefaultArrowTargetHeight) {} - -InfoBarContainerDelegate::~InfoBarContainerDelegate() { -} - -void InfoBarContainerDelegate::SetMaxTopArrowHeight( - int height, - infobars::InfoBarContainer* container) { - top_arrow_target_height_ = - std::min(std::max(height, 0), kMaximumArrowTargetHeight); - container->UpdateInfoBarArrowTargetHeights(); -} - -int InfoBarContainerDelegate::ArrowTargetHeightForInfoBar( - size_t index, - const gfx::SlideAnimation& animation) const { - if (!DrawInfoBarArrows(nullptr)) - return 0; - if (index == 0) - return top_arrow_target_height_; - if ((index > 1) || animation.IsShowing()) - return kDefaultArrowTargetHeight; - // When the first infobar is animating closed, we animate the second infobar's - // arrow target height from the default to the top target height. Note that - // the animation values here are going from 1.0 -> 0.0 as the top bar closes. - return top_arrow_target_height_ + - static_cast<int>( - (kDefaultArrowTargetHeight - top_arrow_target_height_) * - animation.GetCurrentValue()); -} - -void InfoBarContainerDelegate::ComputeInfoBarElementSizes( - const gfx::SlideAnimation& animation, - int arrow_target_height, - int bar_target_height, - int* arrow_height, - int* arrow_half_width, - int* bar_height) const { - // Find the desired arrow height/half-width. The arrow area is - // *arrow_height * *arrow_half_width. When the bar is opening or closing, - // scaling each of these with the square root of the animation value causes a - // linear animation of the area, which matches the perception of the animation - // of the bar portion. - double scale_factor = sqrt(animation.GetCurrentValue()); - *arrow_height = static_cast<int>(arrow_target_height * scale_factor); - if (animation.is_animating()) { - *arrow_half_width = static_cast<int>( - std::min(arrow_target_height, kMaximumArrowTargetHalfWidth) * - scale_factor); - } else { - // When the infobar is not animating (i.e. fully open), we set the - // half-width to be proportionally the same distance between its default and - // maximum values as the height is between its. - *arrow_half_width = - kDefaultArrowTargetHalfWidth + - ((kMaximumArrowTargetHalfWidth - kDefaultArrowTargetHalfWidth) * - ((*arrow_height - kDefaultArrowTargetHeight) / - (kMaximumArrowTargetHeight - kDefaultArrowTargetHeight))); - } - int target_height = - bar_target_height == -1 ? kDefaultBarTargetHeight : bar_target_height; - *bar_height = animation.CurrentValueBetween(0, target_height); -}
diff --git a/chrome/browser/ui/infobar_container_delegate.h b/chrome/browser/ui/infobar_container_delegate.h index 9b2474b4..a4e3c78 100644 --- a/chrome/browser/ui/infobar_container_delegate.h +++ b/chrome/browser/ui/infobar_container_delegate.h
@@ -5,46 +5,11 @@ #ifndef CHROME_BROWSER_UI_INFOBAR_CONTAINER_DELEGATE_H_ #define CHROME_BROWSER_UI_INFOBAR_CONTAINER_DELEGATE_H_ -#include <stddef.h> - -#include "base/macros.h" #include "components/infobars/core/infobar_container.h" class InfoBarContainerDelegate : public infobars::InfoBarContainer::Delegate { public: - static const int kDefaultBarTargetHeight; static const int kSeparatorLineHeight; - static const int kDefaultArrowTargetHeight; - static const int kMaximumArrowTargetHeight; - static const int kDefaultArrowTargetHalfWidth; - static const int kMaximumArrowTargetHalfWidth; - - InfoBarContainerDelegate(); - ~InfoBarContainerDelegate() override; - - // Called when the distance between what the top infobar's "unspoofable" arrow - // would point to and the top infobar itself changes. Sets the maximum height - // of the top arrow to the new |height| and asks |container| to update its - // infobars accordingly. This enables the top infobar to show a longer arrow - // (e.g. because of a visible bookmark bar) or shorter (e.g. due to being in a - // popup window) if desired. - void SetMaxTopArrowHeight(int height, infobars::InfoBarContainer* container); - - // infobars::InfoBarContainer::Delegate: - int ArrowTargetHeightForInfoBar( - size_t index, - const gfx::SlideAnimation& animation) const override; - void ComputeInfoBarElementSizes(const gfx::SlideAnimation& animation, - int arrow_target_height, - int bar_target_height, - int* arrow_height, - int* arrow_half_width, - int* bar_height) const override; - - private: - int top_arrow_target_height_; - - DISALLOW_COPY_AND_ASSIGN(InfoBarContainerDelegate); }; #endif // CHROME_BROWSER_UI_INFOBAR_CONTAINER_DELEGATE_H_
diff --git a/chrome/browser/ui/views/first_run_dialog.cc b/chrome/browser/ui/views/first_run_dialog.cc index ce5f152..97232460 100644 --- a/chrome/browser/ui/views/first_run_dialog.cc +++ b/chrome/browser/ui/views/first_run_dialog.cc
@@ -7,7 +7,6 @@ #include <string> #include "base/bind.h" -#include "base/message_loop/message_loop.h" #include "base/run_loop.h" #include "chrome/browser/first_run/first_run.h" #include "chrome/browser/metrics/metrics_reporting_state.h" @@ -59,9 +58,7 @@ FirstRunDialog* dialog = new FirstRunDialog(profile); views::DialogDelegate::CreateDialogWidget(dialog, NULL, NULL)->Show(); - base::MessageLoopForUI* loop = base::MessageLoopForUI::current(); - base::MessageLoopForUI::ScopedNestableTaskAllower allow_nested(loop); - base::RunLoop run_loop; + base::RunLoop run_loop(base::RunLoop::Type::kNestableTasksAllowed); dialog->quit_runloop_ = run_loop.QuitClosure(); run_loop.Run(); }
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc index 8dbe82d..c364d70c 100644 --- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc +++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc
@@ -441,10 +441,13 @@ void BrowserNonClientFrameViewAsh::OnOverviewModeStarting() { in_overview_mode_ = true; - // Update the window icon so that overview mode can grab the icon from - // aura::client::kWindowIcon to display. - if (base::FeatureList::IsEnabled(ash::features::kNewOverviewUi)) + // Update the window icon if needed so that overview mode can grab the icon + // from kAppIconKey or kWindowIconKey to display. + if (base::FeatureList::IsEnabled(ash::features::kNewOverviewUi) && + !frame()->GetNativeWindow()->GetProperty( + aura::client::kHasOverviewIcon)) { frame()->UpdateWindowIcon(); + } frame()->GetNativeWindow()->SetProperty(aura::client::kTopViewColor, GetFrameColor());
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc index 45da0b4..c173bb1 100644 --- a/chrome/browser/ui/views/frame/browser_view.cc +++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -682,12 +682,6 @@ return status_bubble_.get(); } -namespace { - // Only used by ToolbarSizeChanged() below, but placed here because template - // arguments (to base::AutoReset<>) must have external linkage. - enum CallState { NORMAL, REENTRANT, REENTRANT_FORCE_FAST_RESIZE }; -} - void BrowserView::UpdateTitleBar() { frame_->UpdateWindowTitle(); if (ShouldShowWindowIcon() && !loading_animation_timer_.IsRunning()) @@ -1044,38 +1038,17 @@ } void BrowserView::ToolbarSizeChanged(bool is_animating) { - // The call to SetMaxTopArrowHeight() below can result in reentrancy; - // |call_state| tracks whether we're reentrant. We can't just early-return in - // this case because we need to layout again so the infobar container's bounds - // are set correctly. - static CallState call_state = NORMAL; - - // A reentrant call can (and should) use the fast resize path unless both it - // and the normal call are both non-animating. - bool use_fast_resize = - is_animating || (call_state == REENTRANT_FORCE_FAST_RESIZE); - if (use_fast_resize) + if (is_animating) contents_web_view_->SetFastResize(true); UpdateUIForContents(GetActiveWebContents()); - if (use_fast_resize) + if (is_animating) contents_web_view_->SetFastResize(false); - // Inform the InfoBarContainer that the distance to the location icon may have - // changed. We have to do this after the block above so that the toolbars are - // laid out correctly for calculating the maximum arrow height below. - { - base::AutoReset<CallState> resetter(&call_state, - is_animating ? REENTRANT_FORCE_FAST_RESIZE : REENTRANT); - SetMaxTopArrowHeight(GetMaxTopInfoBarArrowHeight(), infobar_container_); - } - // When transitioning from animating to not animating we need to make sure the // contents_container_ gets layed out. If we don't do this and the bounds - // haven't changed contents_container_ won't get a Layout out and we'll end up - // with a gray rect because the clip wasn't updated. Note that a reentrant - // call never needs to do this, because after it returns, the normal call - // wrapping it will do it. - if ((call_state == NORMAL) && !is_animating) { + // haven't changed contents_container_ won't get a Layout and we'll end up + // with a gray rect because the clip wasn't updated. + if (!is_animating) { contents_web_view_->InvalidateLayout(); contents_container_->Layout(); } @@ -1133,8 +1106,6 @@ // the window now so that we are deleted immediately and aren't left holding // references to deleted objects. GetWidget()->RemoveObserver(this); - GetLocationBar()->GetOmniboxView()->model()->popup_model()->RemoveObserver( - this); frame_->CloseNow(); } @@ -2141,22 +2112,12 @@ } /////////////////////////////////////////////////////////////////////////////// -// BrowserView, OmniboxPopupModelObserver overrides: -void BrowserView::OnOmniboxPopupShownOrHidden() { - SetMaxTopArrowHeight(GetMaxTopInfoBarArrowHeight(), infobar_container_); -} - -/////////////////////////////////////////////////////////////////////////////// -// BrowserView, InfoBarContainerDelegate overrides: +// BrowserView, infobars::InfoBarContainer::Delegate overrides: void BrowserView::InfoBarContainerStateChanged(bool is_animating) { ToolbarSizeChanged(is_animating); } -bool BrowserView::DrawInfoBarArrows(int* x) const { - return false; -} - void BrowserView::InitViews() { GetWidget()->AddObserver(this); @@ -2220,8 +2181,6 @@ if (!button_provider_) SetButtonProvider(toolbar_); - // The infobar container must come after the toolbar so its arrow paints on - // top. infobar_container_ = new InfoBarContainerView(this); AddChildView(infobar_container_); @@ -2255,8 +2214,6 @@ } #endif - GetLocationBar()->GetOmniboxView()->model()->popup_model()->AddObserver(this); - frame_->OnBrowserViewInitViewsComplete(); frame_->GetFrameView()->UpdateMinimumSize(); } @@ -2481,12 +2438,7 @@ ExclusiveAccessBubbleHideCallback()); } - // Undo our anti-jankiness hacks and force a re-layout. We also need to - // recompute the height of the infobar top arrow because toggling in and out - // of fullscreen changes it. Calling ToolbarSizeChanged() will do both these - // things since it computes the arrow height directly and forces a layout - // indirectly via UpdateUIForContents(). Reset |in_process_fullscreen_| in - // order to let the layout occur. + // Undo our anti-jankiness hacks and force a re-layout. in_process_fullscreen_ = false; ToolbarSizeChanged(false); @@ -2716,21 +2668,6 @@ app_modal::AppModalDialogQueue::GetInstance()->ActivateModalDialog(); } -int BrowserView::GetMaxTopInfoBarArrowHeight() { - int top_arrow_height = 0; - // Only show the arrows when not in fullscreen and when there's no omnibox - // popup. - if (!IsFullscreen() && - !GetLocationBar()->GetOmniboxView()->model()->popup_model()->IsOpen()) { - gfx::Point icon_bottom(toolbar_->location_bar()->GetInfoBarAnchorPoint()); - ConvertPointToTarget(toolbar_->location_bar(), this, &icon_bottom); - gfx::Point infobar_top; - ConvertPointToTarget(infobar_container_, this, &infobar_top); - top_arrow_height = infobar_top.y() - icon_bottom.y(); - } - return top_arrow_height; -} - bool BrowserView::FindCommandIdForAccelerator( const ui::Accelerator& accelerator, int* command_id) const {
diff --git a/chrome/browser/ui/views/frame/browser_view.h b/chrome/browser/ui/views/frame/browser_view.h index ce69278..03166c6 100644 --- a/chrome/browser/ui/views/frame/browser_view.h +++ b/chrome/browser/ui/views/frame/browser_view.h
@@ -23,7 +23,6 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/exclusive_access/exclusive_access_context.h" -#include "chrome/browser/ui/infobar_container_delegate.h" #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" #include "chrome/browser/ui/views/exclusive_access_bubble_views_context.h" #include "chrome/browser/ui/views/extensions/extension_keybinding_registry_views.h" @@ -35,7 +34,7 @@ #include "chrome/browser/ui/views/tabs/tab.h" #include "chrome/browser/ui/views/tabs/tab_renderer_data.h" #include "chrome/common/buildflags.h" -#include "components/omnibox/browser/omnibox_popup_model_observer.h" +#include "components/infobars/core/infobar_container.h" #include "ui/base/accelerators/accelerator.h" #include "ui/base/models/simple_menu_model.h" #include "ui/gfx/native_widget_types.h" @@ -95,9 +94,8 @@ public views::WidgetDelegate, public views::WidgetObserver, public views::ClientView, - public InfoBarContainerDelegate, + public infobars::InfoBarContainer::Delegate, public LoadCompleteListener::Delegate, - public OmniboxPopupModelObserver, public ExclusiveAccessContext, public ExclusiveAccessBubbleViewsContext, public extensions::ExtensionKeybindingRegistry::Delegate { @@ -444,9 +442,8 @@ int NonClientHitTest(const gfx::Point& point) override; gfx::Size GetMinimumSize() const override; - // InfoBarContainerDelegate: + // infobars::InfoBarContainer::Delegate: void InfoBarContainerStateChanged(bool is_animating) override; - bool DrawInfoBarArrows(int* x) const override; // Overridden from views::View: const char* GetClassName() const override; @@ -463,9 +460,6 @@ // Overridden from ui::AcceleratorTarget: bool AcceleratorPressed(const ui::Accelerator& accelerator) override; - // OmniboxPopupModelObserver overrides - void OnOmniboxPopupShownOrHidden() override; - // ExclusiveAccessContext overrides Profile* GetProfile() override; content::WebContents* GetActiveWebContents() override; @@ -607,9 +601,6 @@ // an existing showing one to the front. void ActivateAppModalDialog() const; - // Returns the max top arrow height for infobar. - int GetMaxTopInfoBarArrowHeight(); - // Retrieves the chrome command id associated with |accelerator|. The function // returns false if |accelerator| is unknown. Otherwise |command_id| will be // set to the chrome command id defined in //chrome/app/chrome_command_ids.h.
diff --git a/chrome/browser/ui/views/infobars/infobar_background.cc b/chrome/browser/ui/views/infobars/infobar_background.cc index b699470..a8e5f50 100644 --- a/chrome/browser/ui/views/infobars/infobar_background.cc +++ b/chrome/browser/ui/views/infobars/infobar_background.cc
@@ -7,7 +7,6 @@ #include "cc/paint/paint_canvas.h" #include "cc/paint/paint_flags.h" #include "chrome/browser/themes/theme_properties.h" -#include "chrome/browser/ui/infobar_container_delegate.h" #include "chrome/browser/ui/views/infobars/infobar_view.h" #include "components/infobars/core/infobar.h" #include "ui/base/material_design/material_design_controller.h" @@ -24,10 +23,6 @@ void InfoBarBackground::Paint(gfx::Canvas* canvas, views::View* view) const { InfoBarView* infobar = static_cast<InfoBarView*>(view); - const infobars::InfoBarContainer::Delegate* delegate = - infobar->container_delegate(); - SkPath stroke_path, fill_path; - SkColor separator_color = SK_ColorBLACK; gfx::ScopedCanvas scoped(canvas); // Undo the scale factor so we can stroke with a width of 1px (not 1dp). const float dsf = canvas->UndoDeviceScaleFactor(); @@ -40,46 +35,21 @@ // operation has covered it up. For whole-number DSFs, the floor should have // no effect. auto scale = [dsf](int dimension) { return std::floor(dimension * dsf); }; - SkScalar arrow_height = scale(infobar->arrow_height()); - SkScalar infobar_width = scale(infobar->width()); - if (delegate) { - separator_color = view->GetThemeProvider()->GetColor( - ThemeProperties::COLOR_DETACHED_BOOKMARK_BAR_SEPARATOR); - int arrow_x; - if (delegate->DrawInfoBarArrows(&arrow_x) && infobar->arrow_height() > 0) { - // Compensate for the fact that a relative movement of n creates a line of - // length n + 1 once the path is placed on pixel centers and stroked. - SkScalar r_arrow_half_width = scale(infobar->arrow_half_width()) - 1; - SkScalar r_arrow_height = arrow_height - 1; - SkScalar arrow_tip_x = scale(arrow_x); - stroke_path.moveTo(0, r_arrow_height); - stroke_path.lineTo(arrow_tip_x - r_arrow_half_width, r_arrow_height); - stroke_path.lineTo(arrow_tip_x, 0); - stroke_path.lineTo(arrow_tip_x + r_arrow_half_width, r_arrow_height); - stroke_path.lineTo(infobar_width - 1, r_arrow_height); - - // Add SK_ScalarHalf to both axes to place the path on pixel centers. - stroke_path.offset(SK_ScalarHalf, SK_ScalarHalf); - - fill_path = stroke_path; - fill_path.close(); - } - } - fill_path.addRect(0, arrow_height, infobar_width, scale(infobar->height())); + SkPath fill_path; + fill_path.addRect(0, 0, scale(infobar->width()), scale(infobar->height())); cc::PaintFlags fill; fill.setStyle(cc::PaintFlags::kFill_Style); fill.setColor(get_color()); canvas->DrawPath(fill_path, fill); + // Bottom separator. cc::PaintFlags stroke; stroke.setStyle(cc::PaintFlags::kStroke_Style); const int kSeparatorThicknessPx = 1; stroke.setStrokeWidth(SkIntToScalar(kSeparatorThicknessPx)); + SkColor separator_color = view->GetThemeProvider()->GetColor( + ThemeProperties::COLOR_DETACHED_BOOKMARK_BAR_SEPARATOR); stroke.setColor(separator_color); - stroke.setAntiAlias(true); - canvas->DrawPath(stroke_path, stroke); - - // Bottom separator. stroke.setAntiAlias(false); gfx::SizeF view_size_px = gfx::ScaleSize(gfx::SizeF(view->size()), dsf); SkScalar y = SkIntToScalar(view_size_px.height() - kSeparatorThicknessPx) +
diff --git a/chrome/browser/ui/views/infobars/infobar_container_view.cc b/chrome/browser/ui/views/infobars/infobar_container_view.cc index 39ed5d9..299d0d0d 100644 --- a/chrome/browser/ui/views/infobars/infobar_container_view.cc +++ b/chrome/browser/ui/views/infobars/infobar_container_view.cc
@@ -15,7 +15,6 @@ #include "ui/gfx/canvas.h" #include "ui/gfx/skia_paint_util.h" #include "ui/views/bubble/bubble_border.h" -#include "ui/views/view_targeter.h" namespace { @@ -65,17 +64,18 @@ } gfx::Size InfoBarContainerView::CalculatePreferredSize() const { - int total_height; - int overlap = GetVerticalOverlap(&total_height); - total_height -= overlap; + gfx::Size size; + + // Iterate over all infobars; the last child is the content shadow. + for (int i = 0; i < child_count() - 1; ++i) { + const gfx::Size child_size = child_at(i)->GetPreferredSize(); + size.Enlarge(0, child_size.height()); + size.SetToMax(child_size); // Only affects our width. + } // No need to reserve space for the bottom bar's separator; the shadow is good // enough. - total_height -= InfoBarContainerDelegate::kSeparatorLineHeight; - - gfx::Size size(0, total_height); - for (int i = 0; i < child_count(); ++i) - size.SetToMax(gfx::Size(child_at(i)->GetPreferredSize().width(), 0)); + size.Enlarge(0, -InfoBarContainerDelegate::kSeparatorLineHeight); // Don't reserve space for the bottom shadow here. Because the shadow paints // to its own layer and this class doesn't, it can paint outside the size @@ -96,10 +96,10 @@ void InfoBarContainerView::Layout() { int top = 0; + // Iterate over all infobars; the last child is the content shadow. for (int i = 0; i < child_count() - 1; ++i) { InfoBarView* child = static_cast<InfoBarView*>(child_at(i)); - top -= child->arrow_height(); - int child_height = child->total_height(); + int child_height = child->computed_height(); // Trim off the bottom bar's separator; the shadow is good enough. // The last infobar is the second to last child overall (followed by @@ -107,7 +107,7 @@ if (i == child_count() - 2) child_height -= InfoBarContainerDelegate::kSeparatorLineHeight; child->SetBounds(0, top, width(), child_height); - top += child_height; + top = child->bounds().bottom(); } // The shadow is positioned flush with the bottom infobar, with the separator
diff --git a/chrome/browser/ui/views/infobars/infobar_view.cc b/chrome/browser/ui/views/infobars/infobar_view.cc index a5ade7d..1d582bd 100644 --- a/chrome/browser/ui/views/infobars/infobar_view.cc +++ b/chrome/browser/ui/views/infobars/infobar_view.cc
@@ -92,7 +92,6 @@ views::ExternalFocusTracker(this, nullptr) { set_owned_by_client(); // InfoBar deletes itself at the appropriate time. SetBackground(std::make_unique<InfoBarBackground>()); - SetEventTargeter(std::make_unique<views::ViewTargeter>(this)); // Clip child layers; without this, buttons won't look correct during // animation. @@ -100,12 +99,6 @@ layer()->SetMasksToBounds(true); } -const infobars::InfoBarContainer::Delegate* InfoBarView::container_delegate() - const { - const infobars::InfoBarContainer* infobar_container = container(); - return infobar_container ? infobar_container->delegate() : NULL; -} - InfoBarView::~InfoBarView() { // We should have closed any open menus in PlatformSpecificHide(), then // subclasses' RunMenu() functions should have prevented opening any new ones @@ -201,7 +194,7 @@ const int margin_height = margins ? margins->height() : 0; height = std::max(height, child->height() + margin_height); } - SetBarTargetHeight(height + InfoBarContainerDelegate::kSeparatorLineHeight); + SetTargetHeight(height + InfoBarContainerDelegate::kSeparatorLineHeight); } void InfoBarView::OnThemeChanged() { @@ -257,8 +250,8 @@ } int InfoBarView::OffsetY(views::View* view) const { - return std::max((bar_target_height() - view->height()) / 2, 0) - - (bar_target_height() - bar_height()); + return std::max((target_height() - view->height()) / 2, 0) - + (target_height() - height()); } // static @@ -304,7 +297,7 @@ FocusLastFocusedExternalView(); } -void InfoBarView::PlatformSpecificOnHeightsRecalculated() { +void InfoBarView::PlatformSpecificOnHeightRecalculated() { // Ensure that notifying our container of our size change will result in a // re-layout. InvalidateLayout(); @@ -330,7 +323,7 @@ return gfx::Size( width + GetCloseButtonSpacing().width() + close_button_->width(), - total_height()); + computed_height()); } void InfoBarView::OnWillChangeFocus(View* focused_before, View* focused_now) { @@ -344,15 +337,6 @@ } } -bool InfoBarView::DoesIntersectRect(const View* target, - const gfx::Rect& rect) const { - DCHECK_EQ(this, target); - // Only events that intersect the portion below the arrow are interesting. - gfx::Rect non_arrow_bounds = GetLocalBounds(); - non_arrow_bounds.Inset(0, arrow_height(), 0, 0); - return rect.Intersects(non_arrow_bounds); -} - SkColor InfoBarView::GetColor(int id) const { const auto* theme_provider = GetThemeProvider(); // When there's no theme provider, this color will never be used; it will be
diff --git a/chrome/browser/ui/views/infobars/infobar_view.h b/chrome/browser/ui/views/infobars/infobar_view.h index 6ff5184..9768a3f2 100644 --- a/chrome/browser/ui/views/infobars/infobar_view.h +++ b/chrome/browser/ui/views/infobars/infobar_view.h
@@ -13,7 +13,6 @@ #include "ui/views/controls/button/button.h" #include "ui/views/controls/menu/menu_types.h" #include "ui/views/focus/external_focus_tracker.h" -#include "ui/views/view_targeter_delegate.h" namespace views { class ImageButton; @@ -27,13 +26,10 @@ class InfoBarView : public infobars::InfoBar, public views::View, public views::ButtonListener, - public views::ExternalFocusTracker, - public views::ViewTargeterDelegate { + public views::ExternalFocusTracker { public: explicit InfoBarView(std::unique_ptr<infobars::InfoBarDelegate> delegate); - const infobars::InfoBarContainer::Delegate* container_delegate() const; - protected: using Labels = std::vector<views::Label*>; @@ -88,7 +84,7 @@ // InfoBar: void PlatformSpecificShow(bool animate) override; void PlatformSpecificHide(bool animate) override; - void PlatformSpecificOnHeightsRecalculated() override; + void PlatformSpecificOnHeightRecalculated() override; // views::View: void GetAccessibleNodeData(ui::AXNodeData* node_data) override; @@ -97,9 +93,6 @@ // views::ExternalFocusTracker: void OnWillChangeFocus(View* focused_before, View* focused_now) override; - // views::ViewTargeterDelegate: - bool DoesIntersectRect(const View* target, - const gfx::Rect& rect) const override; // Returns the current color for the theme property |id|. Will return the // wrong value if no theme provider is available.
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc index cb7960c..b8af4509 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_view.cc +++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc
@@ -163,8 +163,7 @@ browser_(browser), delegate_(delegate), is_popup_mode_(is_popup_mode), - tint_(GetTintForProfile(profile)), - popup_observer_(this) { + tint_(GetTintForProfile(profile)) { edit_bookmarks_enabled_.Init( bookmarks::prefs::kEditBookmarksEnabled, profile->GetPrefs(), base::Bind(&LocationBarView::UpdateWithoutTabRestore, @@ -209,7 +208,6 @@ AddChildView(omnibox_view_); RefreshBackground(); - popup_observer_.Add(omnibox_view_->model()->popup_model()); // Initialize the inline autocomplete view which is visible only when IME is // turned on. Use the same font with the omnibox and highlighted background. @@ -369,14 +367,6 @@ omnibox_view_->SelectAll(true); } -gfx::Point LocationBarView::GetInfoBarAnchorPoint() const { - const views::ImageView* image = location_icon_view_->GetImageView(); - const gfx::Rect image_bounds(image->GetImageBounds()); - gfx::Point point(image_bounds.CenterPoint().x(), image_bounds.bottom()); - ConvertPointToTarget(image, this, &point); - return point; -} - views::View* LocationBarView::GetSecurityBubbleAnchorView() { if (ui::MaterialDesignController::IsSecondaryUiMaterial()) return this; @@ -1156,6 +1146,10 @@ SchedulePaint(); } +void LocationBarView::OnPopupVisibilityChanged() { + RefreshBackground(); +} + const ToolbarModel* LocationBarView::GetToolbarModel() const { return delegate_->GetToolbarModel(); } @@ -1168,13 +1162,6 @@ } //////////////////////////////////////////////////////////////////////////////// -// LocationBarView, private OmniboxPopupModelObserver implementation: - -void LocationBarView::OnOmniboxPopupShownOrHidden() { - RefreshBackground(); -} - -//////////////////////////////////////////////////////////////////////////////// // LocationBarView, private static methods: // static
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.h b/chrome/browser/ui/views/location_bar/location_bar_view.h index 8894c46..5cf31f9 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_view.h +++ b/chrome/browser/ui/views/location_bar/location_bar_view.h
@@ -13,7 +13,6 @@ #include "base/compiler_specific.h" #include "base/gtest_prod_util.h" #include "base/macros.h" -#include "base/scoped_observer.h" #include "chrome/browser/extensions/extension_context_menu_model.h" #include "chrome/browser/ui/location_bar/location_bar.h" #include "chrome/browser/ui/omnibox/chrome_omnibox_edit_controller.h" @@ -23,7 +22,6 @@ #include "chrome/browser/ui/views/location_bar/bubble_icon_view.h" #include "chrome/browser/ui/views/location_bar/content_setting_image_view.h" #include "chrome/browser/ui/views/omnibox/omnibox_view_views.h" -#include "components/omnibox/browser/omnibox_popup_model_observer.h" #include "components/prefs/pref_member.h" #include "components/security_state/core/security_state.h" #include "components/zoom/zoom_event_manager_observer.h" @@ -43,7 +41,6 @@ class LocationIconView; class ManagePasswordsIconViews; enum class OmniboxPart; -class OmniboxPopupModel; class OmniboxPopupView; enum class OmniboxTint; class Profile; @@ -79,8 +76,7 @@ public zoom::ZoomEventManagerObserver, public views::ButtonListener, public ContentSettingImageView::Delegate, - public BubbleIconView::Delegate, - public OmniboxPopupModelObserver { + public BubbleIconView::Delegate { public: class Delegate { public: @@ -194,10 +190,6 @@ return selected_keyword_view_; } - // Where InfoBar arrows should point. The point will be returned in the - // coordinates of the LocationBarView. - gfx::Point GetInfoBarAnchorPoint() const; - // The anchor view for security-related bubbles. That is, those anchored to // the leading edge of the Omnibox, under the padlock. views::View* GetSecurityBubbleAnchorView(); @@ -366,14 +358,12 @@ // ChromeOmniboxEditController: void OnChanged() override; + void OnPopupVisibilityChanged() override; const ToolbarModel* GetToolbarModel() const override; // DropdownBarHostDelegate: void SetFocusAndSelection(bool select_all) override; - // OmniboxPopupModelObserver: - void OnOmniboxPopupShownOrHidden() override; - // Returns the total amount of space reserved above or below the content, // which is the vertical edge thickness plus the padding next to it. static int GetTotalVerticalPadding(); @@ -466,8 +456,6 @@ security_state::SecurityLevel last_update_security_level_ = security_state::NONE; - ScopedObserver<OmniboxPopupModel, LocationBarView> popup_observer_; - DISALLOW_COPY_AND_ASSIGN(LocationBarView); };
diff --git a/chrome/browser/ui/webui/devtools_ui.cc b/chrome/browser/ui/webui/devtools_ui.cc index 54408f8..c8e821d 100644 --- a/chrome/browser/ui/webui/devtools_ui.cc +++ b/chrome/browser/ui/webui/devtools_ui.cc
@@ -28,7 +28,7 @@ #include "net/traffic_annotation/network_traffic_annotation.h" #include "services/network/public/cpp/resource_request.h" #include "services/network/public/cpp/simple_url_loader.h" -#include "third_party/WebKit/public/public_features.h" +#include "third_party/WebKit/public/public_buildflags.h" using content::BrowserThread; using content::WebContents;
diff --git a/chrome/browser/usb/web_usb_detector.cc b/chrome/browser/usb/web_usb_detector.cc index d934e2a5..36ebd699 100644 --- a/chrome/browser/usb/web_usb_detector.cc +++ b/chrome/browser/usb/web_usb_detector.cc
@@ -113,7 +113,8 @@ } } - void Click() override { + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override { disposition_ = WEBUSB_NOTIFICATION_CLOSED_CLICKED; // If the URL is already open, activate that tab. @@ -212,7 +213,8 @@ message_center::NotifierId(message_center::NotifierId::SYSTEM_COMPONENT, kNotifierWebUsb), rich_notification_data, - new WebUsbNotificationDelegate(landing_page, notification_id)); + base::MakeRefCounted<WebUsbNotificationDelegate>(landing_page, + notification_id)); notification.SetSystemPriority(); SystemNotificationHelper::GetInstance()->Display(notification); }
diff --git a/chrome/browser/usb/web_usb_detector_unittest.cc b/chrome/browser/usb/web_usb_detector_unittest.cc index 9ec5b65..077193a 100644 --- a/chrome/browser/usb/web_usb_detector_unittest.cc +++ b/chrome/browser/usb/web_usb_detector_unittest.cc
@@ -473,7 +473,7 @@ ASSERT_TRUE(notification_1); EXPECT_EQ(2, tab_strip_model->count()); - notification_1->Click(); + notification_1->delegate()->Click(base::nullopt, base::nullopt); EXPECT_EQ(2, tab_strip_model->count()); content::WebContents* web_contents = tab_strip_model->GetWebContentsAt(tab_strip_model->active_index()); @@ -499,7 +499,7 @@ ASSERT_TRUE(notification_1); EXPECT_EQ(0, tab_strip_model->count()); - notification_1->Click(); + notification_1->delegate()->Click(base::nullopt, base::nullopt); EXPECT_EQ(1, tab_strip_model->count()); content::WebContents* web_contents = tab_strip_model->GetWebContentsAt(tab_strip_model->active_index());
diff --git a/chrome/browser/vr/metrics/session_metrics_helper.cc b/chrome/browser/vr/metrics/session_metrics_helper.cc index 6fee8d3e..f9494060 100644 --- a/chrome/browser/vr/metrics/session_metrics_helper.cc +++ b/chrome/browser/vr/metrics/session_metrics_helper.cc
@@ -282,30 +282,29 @@ SetVrMode(mode); } -void SessionMetricsHelper::RecordVrStartAction(PageSessionStartAction action) { +void SessionMetricsHelper::RecordVrStartAction(VrStartAction action) { if (!page_session_tracker_ || mode_ == Mode::kNoVr) { pending_page_session_start_action_ = action; } else { - MaybeSetPageSessionStartAction(action); + MaybeSetVrStartAction(action); } - - // TODO(offenwanger): Add UMA logging here. } void SessionMetricsHelper::ReportRequestPresent() { // If we're not in VR, log this as an entry into VR from 2D. if (mode_ == Mode::kNoVr) { - RecordVrStartAction(PageSessionStartAction::kPresentationRequest); + RecordVrStartAction(VrStartAction::kPresentationRequest); // TODO(offenwanger): Record entered presentation from 2D. } // TODO(offenwanger): Else record entered presentation from VR. } -void SessionMetricsHelper::MaybeSetPageSessionStartAction( - PageSessionStartAction action) { +void SessionMetricsHelper::MaybeSetVrStartAction(VrStartAction action) { + UMA_HISTOGRAM_ENUMERATION("XR.VRSession.StartAction", action, + VrStartAction::kVrStartActionLast); DCHECK(page_session_tracker_); - if (action == PageSessionStartAction::kHeadsetActivation || - action == PageSessionStartAction::kPresentationRequest) { + if (action == VrStartAction::kHeadsetActivation || + action == VrStartAction::kPresentationRequest) { page_session_tracker_->ukm_entry()->SetEnteredVROnPageReason( static_cast<int>(action)); } @@ -411,7 +410,7 @@ std::make_unique<ukm::builders::XR_PageSession>( ukm::GetSourceIdForWebContentsDocument(web_contents()))); if (pending_page_session_start_action_) { - MaybeSetPageSessionStartAction(*pending_page_session_start_action_); + MaybeSetVrStartAction(*pending_page_session_start_action_); pending_page_session_start_action_ = base::nullopt; } } @@ -592,7 +591,7 @@ std::make_unique<ukm::builders::XR_PageSession>( ukm::GetSourceIdForWebContentsDocument(web_contents()))); if (pending_page_session_start_action_) { - MaybeSetPageSessionStartAction(*pending_page_session_start_action_); + MaybeSetVrStartAction(*pending_page_session_start_action_); pending_page_session_start_action_ = base::nullopt; }
diff --git a/chrome/browser/vr/metrics/session_metrics_helper.h b/chrome/browser/vr/metrics/session_metrics_helper.h index 3996d90..90864cfc9 100644 --- a/chrome/browser/vr/metrics/session_metrics_helper.h +++ b/chrome/browser/vr/metrics/session_metrics_helper.h
@@ -18,8 +18,11 @@ namespace vr { // This enum describes various ways a Chrome VR session started. +// These values are persisted to logs. Entries should not be renumbered and +// numeric values should never be reused. +// Ensure that this stays in sync with VRSessionStartAction in enums.xml // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.vr_shell -enum class PageSessionStartAction : int { +enum class VrStartAction : int { // The user activated a headset. For example, inserted phone in Daydream, or // put on an Occulus or Vive. kHeadsetActivation = 1, @@ -31,6 +34,7 @@ // Chrome VR was started by an intent from another app. Most likely the user // clicked the icon in Daydream home. kIntentLaunch = 4, + kVrStartActionLast = kIntentLaunch, }; // SessionTimer will monitor the time between calls to StartSession and @@ -137,7 +141,7 @@ void RecordVoiceSearchStarted(); void RecordUrlRequested(GURL url, NavigationMethod method); - void RecordVrStartAction(PageSessionStartAction action); + void RecordVrStartAction(VrStartAction action); void ReportRequestPresent(); private: @@ -160,7 +164,7 @@ void SetVrMode(Mode mode); void UpdateMode(); - void MaybeSetPageSessionStartAction(PageSessionStartAction action); + void MaybeSetVrStartAction(VrStartAction action); void OnEnterAnyVr(); void OnExitAllVr(); @@ -190,7 +194,7 @@ GURL last_requested_url_; NavigationMethod last_url_request_method_; - base::Optional<PageSessionStartAction> pending_page_session_start_action_; + base::Optional<VrStartAction> pending_page_session_start_action_; int num_videos_playing_ = 0; int num_session_navigation_ = 0;
diff --git a/chrome/common/extensions/docs/templates/json/chrome_sidenav.json b/chrome/common/extensions/docs/templates/json/chrome_sidenav.json index 194ebd7..7cd0d0ff 100644 --- a/chrome/common/extensions/docs/templates/json/chrome_sidenav.json +++ b/chrome/common/extensions/docs/templates/json/chrome_sidenav.json
@@ -32,6 +32,10 @@ "href": "/extensions/content_scripts" }, { + "title": "Design User Interface", + "href": "/extensions/user_interface" + }, + { "title": "Protect User Privacy", "href": "/extensions/user_privacy" }, @@ -301,18 +305,6 @@ "href": "/apps/about_apps" }, { - "title": "Design User Interface", - "href": "/extensions/user_interface" - }, - { - "title": "Design User Interface", - "href": "/extensions/user_interface" - }, - { - "title": "Design User Interface", - "href": "/extensions/user_interface" - }, - { "title": "Extension Quality Guidelines FAQ", "href": "/extensions/single_purpose" },
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 6d8d787..87ee270b 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -368,7 +368,7 @@ "//ppapi/buildflags", "//printing/buildflags", "//rlz/buildflags", - "//third_party/WebKit/public:features", + "//third_party/WebKit/public:buildflags", ] data_deps = [ @@ -2907,6 +2907,7 @@ "../browser/resource_coordinator/tab_activity_watcher_unittest.cc", "../browser/resource_coordinator/tab_lifecycle_unit_source_unittest.cc", "../browser/resource_coordinator/tab_lifecycle_unit_unittest.cc", + "../browser/resource_coordinator/tab_load_tracker_unittest.cc", "../browser/resource_coordinator/tab_manager_delegate_chromeos_unittest.cc", "../browser/resource_coordinator/tab_manager_features_unittest.cc", "../browser/resource_coordinator/tab_manager_stats_collector_unittest.cc",
diff --git a/chrome/test/chromedriver/BUILD.gn b/chrome/test/chromedriver/BUILD.gn index 74dd8bb..8ab01c60 100644 --- a/chrome/test/chromedriver/BUILD.gn +++ b/chrome/test/chromedriver/BUILD.gn
@@ -182,7 +182,7 @@ "//base", "//base/third_party/dynamic_annotations", "//net", - "//third_party/WebKit/public:features", + "//third_party/WebKit/public:buildflags", "//third_party/zlib:minizip", "//third_party/zlib/google:zip", "//ui/accessibility:ax_enums_mojo",
diff --git a/chrome/test/chromedriver/net/adb_client_socket.cc b/chrome/test/chromedriver/net/adb_client_socket.cc index 68e8dae..75678c05 100644 --- a/chrome/test/chromedriver/net/adb_client_socket.cc +++ b/chrome/test/chromedriver/net/adb_client_socket.cc
@@ -19,7 +19,7 @@ #include "net/log/net_log_source.h" #include "net/socket/tcp_client_socket.h" #include "net/traffic_annotation/network_traffic_annotation_test_helper.h" -#include "third_party/WebKit/public/public_features.h" +#include "third_party/WebKit/public/public_buildflags.h" namespace {
diff --git a/chrome/test/data/android/render_tests/NewTabPageTest.expandable_header_collapsed.Nexus_5-19.png b/chrome/test/data/android/render_tests/NewTabPageTest.expandable_header_collapsed.Nexus_5-19.png new file mode 100644 index 0000000..e361a8b4 --- /dev/null +++ b/chrome/test/data/android/render_tests/NewTabPageTest.expandable_header_collapsed.Nexus_5-19.png Binary files differ
diff --git a/chrome/test/data/android/render_tests/NewTabPageTest.expandable_header_expanded.Nexus_5-19.png b/chrome/test/data/android/render_tests/NewTabPageTest.expandable_header_expanded.Nexus_5-19.png new file mode 100644 index 0000000..70844988 --- /dev/null +++ b/chrome/test/data/android/render_tests/NewTabPageTest.expandable_header_expanded.Nexus_5-19.png Binary files differ
diff --git a/chrome/test/data/extensions/api_test/webrequest_clients_google_com/background.js b/chrome/test/data/extensions/api_test/webrequest_clients_google_com/background.js index 9419edd..bafc3fd0 100644 --- a/chrome/test/data/extensions/api_test/webrequest_clients_google_com/background.js +++ b/chrome/test/data/extensions/api_test/webrequest_clients_google_com/background.js
@@ -6,6 +6,6 @@ chrome.webRequest.onBeforeRequest.addListener(function(details) { ++window.webRequestCount; -}, {urls: ['https://clients1.google.com/']}); +}, {urls: ['http://clients1.google.com/']}); chrome.test.sendMessage('ready');
diff --git a/chrome/test/data/webui/BUILD.gn b/chrome/test/data/webui/BUILD.gn index 89561c9..3c15d643 100644 --- a/chrome/test/data/webui/BUILD.gn +++ b/chrome/test/data/webui/BUILD.gn
@@ -81,12 +81,15 @@ "polymer_browser_test_base.js", "sandboxstatus_browsertest.js", "settings/a11y/about_a11y_test.js", + "settings/a11y/accessibility_a11y_test.js", "settings/a11y/basic_a11y_test.js", "settings/a11y/edit_dictionary_a11y_test.js", + "settings/a11y/manage_accessibility_a11y_test.js", "settings/a11y/manage_profile_a11y_test.js", "settings/a11y/passwords_a11y_test.js", "settings/a11y/settings_accessibility_test.js", "settings/a11y/sign_out_a11y_test.js", + "settings/a11y/tts_subpage_a11y_test.js", "settings/advanced_page_browsertest.js", "settings/animation_browsertest.js", "settings/basic_page_browsertest.js",
diff --git a/chrome/test/data/webui/settings/a11y/accessibility_a11y_test.js b/chrome/test/data/webui/settings/a11y/accessibility_a11y_test.js new file mode 100644 index 0000000..5373ef31 --- /dev/null +++ b/chrome/test/data/webui/settings/a11y/accessibility_a11y_test.js
@@ -0,0 +1,28 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/** + * @fileoverview Define accessibility tests for the ACCESSIBILITY route. + */ + +// SettingsAccessibilityTest fixture. +GEN_INCLUDE([ + 'settings_accessibility_test.js', +]); + +AccessibilityTest.define('SettingsAccessibilityTest', { + /** @override */ + name: 'ACCESSIBILITY', + /** @override */ + axeOptions: SettingsAccessibilityTest.axeOptions, + /** @override */ + setup: function() { + settings.router.navigateTo(settings.routes.ACCESSIBILITY); + Polymer.dom.flush(); + }, + /** @override */ + tests: {'Accessible with No Changes': function() {}}, + /** @override */ + violationFilter: SettingsAccessibilityTest.violationFilter, +});
diff --git a/chrome/test/data/webui/settings/a11y/manage_accessibility_a11y_test.js b/chrome/test/data/webui/settings/a11y/manage_accessibility_a11y_test.js new file mode 100644 index 0000000..66454f2 --- /dev/null +++ b/chrome/test/data/webui/settings/a11y/manage_accessibility_a11y_test.js
@@ -0,0 +1,33 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/** + * @fileoverview Define accessibility tests for the MANAGE_ACCESSIBILITY route. + */ + +// This is only for Chrome OS. +GEN('#if defined(OS_CHROMEOS)'); + +// SettingsAccessibilityTest fixture. +GEN_INCLUDE([ + 'settings_accessibility_test.js', +]); + +AccessibilityTest.define('SettingsAccessibilityTest', { + /** @override */ + name: 'MANAGE_ACCESSIBILITY', + /** @override */ + axeOptions: SettingsAccessibilityTest.axeOptions, + /** @override */ + setup: function() { + settings.router.navigateTo(settings.routes.MANAGE_ACCESSIBILITY); + Polymer.dom.flush(); + }, + /** @override */ + tests: {'Accessible with No Changes': function() {}}, + /** @override */ + violationFilter: SettingsAccessibilityTest.violationFilter, +}); + +GEN('#endif // defined(OS_CHROMEOS)');
diff --git a/chrome/test/data/webui/settings/a11y/sign_out_a11y_test.js b/chrome/test/data/webui/settings/a11y/sign_out_a11y_test.js index e055ede..a1b29bc7 100644 --- a/chrome/test/data/webui/settings/a11y/sign_out_a11y_test.js +++ b/chrome/test/data/webui/settings/a11y/sign_out_a11y_test.js
@@ -78,4 +78,4 @@ violationFilter: SettingsAccessibilityTest.violationFilter, }); -GEN('#endif // defined(OS_CHROMEOS)'); +GEN('#endif // !defined(OS_CHROMEOS)');
diff --git a/chrome/test/data/webui/settings/a11y/tts_subpage_a11y_test.js b/chrome/test/data/webui/settings/a11y/tts_subpage_a11y_test.js new file mode 100644 index 0000000..6179228a --- /dev/null +++ b/chrome/test/data/webui/settings/a11y/tts_subpage_a11y_test.js
@@ -0,0 +1,40 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/** + * @fileoverview Define accessibility tests for the MANAGE_TTS_SETINGS route. + */ + +// This is only for Chrome OS. +GEN('#if defined(OS_CHROMEOS)'); + +// SettingsAccessibilityTest fixture. +GEN_INCLUDE([ + 'settings_accessibility_test.js', +]); + +TtsAccessibilityTest = class extends SettingsAccessibilityTest { + /** @override */ + get commandLineSwitches() { + return ['enable-experimental-a11y-features']; + } +}; + +AccessibilityTest.define('TtsAccessibilityTest', { + /** @override */ + name: 'MANAGE_TTS_SETTINGS', + /** @override */ + axeOptions: SettingsAccessibilityTest.axeOptions, + /** @override */ + setup: function() { + settings.router.navigateTo(settings.routes.MANAGE_TTS_SETTINGS); + Polymer.dom.flush(); + }, + /** @override */ + tests: {'Accessible with No Changes': function() {}}, + /** @override */ + violationFilter: SettingsAccessibilityTest.violationFilter, +}); + +GEN('#endif // defined(OS_CHROMEOS)');
diff --git a/chromecast/base/BUILD.gn b/chromecast/base/BUILD.gn index aa5079c..bd3d580 100644 --- a/chromecast/base/BUILD.gn +++ b/chromecast/base/BUILD.gn
@@ -281,6 +281,7 @@ java_files = [ "$java_src_dir/org/chromium/chromecast/base/BiConsumer.java", "$java_src_dir/org/chromium/chromecast/base/BiFunction.java", + "$java_src_dir/org/chromium/chromecast/base/BiPredicate.java", "$java_src_dir/org/chromium/chromecast/base/Both.java", "$java_src_dir/org/chromium/chromecast/base/CircularBuffer.java", "$java_src_dir/org/chromium/chromecast/base/Controller.java",
diff --git a/chromecast/base/java/src/org/chromium/chromecast/base/BiPredicate.java b/chromecast/base/java/src/org/chromium/chromecast/base/BiPredicate.java new file mode 100644 index 0000000..e29e393b --- /dev/null +++ b/chromecast/base/java/src/org/chromium/chromecast/base/BiPredicate.java
@@ -0,0 +1,15 @@ +// Copyright 2018 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. + +package org.chromium.chromecast.base; + +/** + * A function that takes two arguments and returns a boolean. + * + * TODO(sanfin): replace with Java 8 library if we're ever able to use the Java 8 library. + * + * @param <A> The first argument type. + * @param <B> The second argument type. + */ +public interface BiPredicate<A, B> { public boolean test(A a, B b); }
diff --git a/chromecast/base/java/src/org/chromium/chromecast/base/Both.java b/chromecast/base/java/src/org/chromium/chromecast/base/Both.java index 0ea3847..00991c0 100644 --- a/chromecast/base/java/src/org/chromium/chromecast/base/Both.java +++ b/chromecast/base/java/src/org/chromium/chromecast/base/Both.java
@@ -67,4 +67,11 @@ public static <A, B> Consumer<Both<A, B>> adapt(BiConsumer<A, B> consumer) { return (Both<A, B> data) -> consumer.accept(data.first, data.second); } + + /** + * Turns a predicate of two arguments into a predicate of a single Both argument. + */ + public static <A, B> Predicate<Both<A, B>> adapt(BiPredicate<A, B> predicate) { + return (Both<A, B> data) -> predicate.test(data.first, data.second); + } }
diff --git a/chromecast/base/java/src/org/chromium/chromecast/base/Observable.java b/chromecast/base/java/src/org/chromium/chromecast/base/Observable.java index 7705a83..1ff7137 100644 --- a/chromecast/base/java/src/org/chromium/chromecast/base/Observable.java +++ b/chromecast/base/java/src/org/chromium/chromecast/base/Observable.java
@@ -97,6 +97,61 @@ } /** + * Returns an Observable that is activated only when `this` is first activated, and is not + * activated an subsequent activations of `this`. + * + * This is useful for ensuring that a callback registered with watch() is only run once. + */ + public final Observable<T> first() { + return new FirstActivationStateObserver<>(this).asObservable(); + } + + /** + * Returns an Observable that is activated when `this` is activated any time besides the first, + * and provides as activation data a `Both` object containing the previous and new activation + * data of `this`. + * + * This is useful if registered callbacks need to know the data of the previous activation. + */ + public final Observable<Both<T, T>> changes() { + return new ChangeStateObserver<>(this).asObservable(); + } + + /** + * Returns an Observable that does not activate if `this` is set with a value such that the + * given predicate returns true for the previous value and the current value. + * + * Can be used to ignore repeat activations that contain the same data. Beware that even though + * a repeat activation that passes the given predicate will not re-activate the new Observable, + * it will deactivate it. + */ + public final Observable<T> unique(BiPredicate<? super T, ? super T> predicate) { + Controller<T> controller = new Controller<>(); + ScopeFactory<T> pipeToController = (T value) -> { + controller.set(value); + return controller::reset; + }; + first().watch(pipeToController); + changes() + .filter(Both.adapt((T a, T b) -> !predicate.test(a, b))) + .map(Both::getSecond) + .watch(pipeToController); + return controller; + } + + /** + * Returns an Observable that does not activate if `this` is activated with a value that is + * equal to the data of a previous activation, according to that data's `equals()` method. + * + * Can be used to ignore repeat activations that contain the same data. Beware that even though + * a repeat activation that passes the given predicate will not re-activate the new Observable, + * it will deactivate it. + */ + public final Observable<T> unique() { + return unique(Object::equals); + } + + /** * Returns an Observable that is activated only when the given Observable is not activated. */ public static Observable<Unit> not(Observable<?> observable) { @@ -166,4 +221,45 @@ return mController; } } + + // Owns a Controller that is activated only on the Observable's first activation. + private static class FirstActivationStateObserver<T> { + private final Controller<T> mController = new Controller<>(); + private boolean mIsActivated = false; + + private FirstActivationStateObserver(Observable<T> state) { + state.watch((T value) -> { + if (!mIsActivated) { + mController.set(value); + mIsActivated = true; + } + return mController::reset; + }); + } + + private Observable<T> asObservable() { + return mController; + } + } + + // Owns a Controller that is activated on non-first activations with the previous and new + // activation data. + private static class ChangeStateObserver<T> { + private final Controller<Both<T, T>> mController = new Controller<>(); + private T mCurrent = null; + + private ChangeStateObserver(Observable<T> state) { + state.watch((T value) -> { + if (mCurrent != null) { + mController.set(Both.both(mCurrent, value)); + } + mCurrent = value; + return mController::reset; + }); + } + + private Observable<Both<T, T>> asObservable() { + return mController; + } + } }
diff --git a/chromecast/base/java/test/org/chromium/chromecast/base/BothTest.java b/chromecast/base/java/test/org/chromium/chromecast/base/BothTest.java index fff1c80..21dcbf0 100644 --- a/chromecast/base/java/test/org/chromium/chromecast/base/BothTest.java +++ b/chromecast/base/java/test/org/chromium/chromecast/base/BothTest.java
@@ -6,7 +6,9 @@ import static org.hamcrest.Matchers.contains; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; import org.junit.Test; import org.junit.runner.RunWith; @@ -67,7 +69,14 @@ @Test public void testAdaptBiConsumer() { List<String> result = new ArrayList<>(); - Both.adapt((String a, String b) -> result.add(a + b)).apply(Both.both("A", "B")); + Both.adapt((String a, String b) -> { result.add(a + b); }).accept(Both.both("A", "B")); assertThat(result, contains("AB")); } + + @Test + public void testAdaptBiPredicate() { + Predicate<Both<String, String>> p = Both.adapt(String::equals); + assertTrue(p.test(Both.both("a", "a"))); + assertFalse(p.test(Both.both("a", "b"))); + } }
diff --git a/chromecast/base/java/test/org/chromium/chromecast/base/ObservableAndControllerTest.java b/chromecast/base/java/test/org/chromium/chromecast/base/ObservableAndControllerTest.java index 87d8f40..74f6713f 100644 --- a/chromecast/base/java/test/org/chromium/chromecast/base/ObservableAndControllerTest.java +++ b/chromecast/base/java/test/org/chromium/chromecast/base/ObservableAndControllerTest.java
@@ -262,6 +262,72 @@ } @Test + public void testFirst() { + Controller<String> a = new Controller<>(); + List<String> result = new ArrayList<>(); + a.first().watch(report(result, "first")); + a.set("first"); + a.set("second"); + assertThat(result, contains("enter first: first", "exit first")); + } + + @Test + public void testChanges() { + Controller<String> a = new Controller<>(); + List<String> result = new ArrayList<>(); + a.changes().watch(report(result, "changes")); + a.set("first"); + a.set("second"); + a.set("third"); + assertThat(result, + contains("enter changes: first, second", "exit changes", + "enter changes: second, third")); + } + + @Test + public void testChangesIsResetWhenSourceIsReset() { + Controller<String> a = new Controller<>(); + List<String> result = new ArrayList<>(); + a.changes().watch(report(result, "changes")); + a.set("first"); + a.set("second"); + a.reset(); + assertThat(result, contains("enter changes: first, second", "exit changes")); + } + + @Test + public void testUniqueDefault() { + Controller<String> a = new Controller<>(); + List<String> result = new ArrayList<>(); + a.unique().watch(report(result, "unique")); + a.set("hi"); + a.set("ho"); + a.set("hey"); + a.set("hey"); + a.set("hey"); + a.set("hi"); + assertThat(result, + contains("enter unique: hi", "exit unique", "enter unique: ho", "exit unique", + "enter unique: hey", "exit unique", "enter unique: hi")); + } + + @Test + public void testUniqueWithCustomPredicate() { + Controller<String> a = new Controller<>(); + List<String> result = new ArrayList<>(); + a.unique((p, s) -> p.equalsIgnoreCase(s)).watch(report(result, "unique ignore case")); + a.set("kale"); + a.set("KALE"); + a.set("steamed kale"); + a.set("STEAMED"); + a.set("sTeAmEd"); + assertThat(result, + contains("enter unique ignore case: kale", "exit unique ignore case", + "enter unique ignore case: steamed kale", "exit unique ignore case", + "enter unique ignore case: STEAMED", "exit unique ignore case")); + } + + @Test public void testMap() { Controller<String> a = new Controller<>(); List<String> result = new ArrayList<>();
diff --git a/chromecast/base/reactive_java.md b/chromecast/base/reactive_java.md index 56c213d..830e1eaf 100644 --- a/chromecast/base/reactive_java.md +++ b/chromecast/base/reactive_java.md
@@ -383,7 +383,7 @@ } ``` -### Composing Observables with and() +### Composing Observables with `and()` In the motivating example, we wanted to invoke a callback once *two* independent states have been activated. @@ -469,7 +469,7 @@ that this much work is required to read the compound data. Some methods for alleviating this are described below. -### Imposing order dependency +### Imposing order dependency with `andThen()` Every composition of states up to this point has been *time-independent*. For example, `stateA.and(stateB)` doesn't care if `stateA` or `stateB` was activated @@ -502,6 +502,151 @@ on the transition between `(just A)` and `(A and then B)`, and will not activate on the transition between `(just B)` and `(B and then A)`. +### One-time callbacks with `first()` + +Sometimes you want to ensure that an action is only performed once, even if it's +triggered by something that might happen more than once. With the `first()` +method, doing so is a breeze: + +```java + Controller<Unit> windowFocusState = new Controller<>(); + windowFocusState.first().watch(ScopeFactories.onEnter(this:: createWindow); + windowFocusState.set(Unit.unit()); // Will invoke createWindow() + windowFocusState.reset(); + windowFocusState.set(Unit.unit()); // Does not invoke createWindow() +``` + +Note that the `Observable` created by `first()` will be deactivated the first +time that the source `Observable` is deactivated: + +```java + Controller<String> messageState = new Controller<>(); + messageState.first().watch(message -> { + Log.d(TAG, "first message: " + message); + return () -> Log.d(TAG, "first message discarded"); + }); + messageState.set("hello"); // Logs "first message: hello" + messageState.reset(); // Logs "first message discarded" + messageState.set("hello?"); // Nothing gets logged +``` + +### Compare old and new activation values with `changes()` + +One drawback of the `watch()` method is that it provides only the activation +data with no other context. This is usually a good thing in that it helps with +encapsulation, but there are a number of applications where information about +the *previous activation* is useful. For example, say we want to log the delta +between volume levels: + +```java + private final Controller<Integer> mVolumeLevel = new Controller<>(); + + private void logVolumeChanges(int oldLevel, int newLevel) { + if (newLevel > oldLevel) { + Log.d(TAG, "Volume increased by " + (newLevel - oldLevel)); + } else if (newLevel < oldLevel) { + Log.d(TAG, "Volume decreased by " + (oldLevel - newLevel)); + } + } + + { + // How do we react to mVolumeLevel with logVolumeChanges()? + mVolumeLevel.set(0); + } + + public void setVolume(int volume) { + mVolumeLevel.set(volume); + } +``` + +The problem here is that if you `watch()` `mVolumeLevel`, you will know the new +volume, but not the old volume, so a stateless lambda will not know enough to +call `logVolumeChanges()`. + +If you tried, you'd probably have to end up creating a custom `ScopeFactory` +implementation that stores some internal state that is changed when activated. + +But fortunately, an easier way is provided that doesn't force you to put state +into your `ScopeFactory`: the `changes()` method. + +When you call `changes()` on an `Observable`, the resulting `Observable` will +be activated with a `Both` object containing the previous and new activation +data. Here's how you would use it in the above example: + +```java + { + Observable<Both<Integer, Integer>> volumeChanges = + mVolumeLevel.changes() + volumeChanges.watch(ScopeFactories.onEnter((oldLevel, newLevel) -> { + logVolumeChanges(oldLevel, newLevel); + })); + } +``` + +Note: the above is using the `BiConsumer` version of `ScopeFactories.onEnter()`, +so it creates a `ScopeFactory<Both<Integer, Integer>>`, which is just the type +that we need. More info is given in the section on `ScopeFactories`. + +### Ignore duplicates with `unique()` + +Consider this: + +```java + Controller<Intege> volumeLevel = new Controller<>(); + volumeLevel.watch(ScopeFactories.onEnter(level -> { + Log.d(TAG, "New volume level: " + level); + })); + volumeLevel.set(3); // Logs "New volume level: 3" + volumeLevel.set(3); // Logs "New volume level: 3"... again + volumeLevel.set(3); // Logs "New volume level: 3"... yet again + volumeLevel.set(4); // Logs "New volume level: 4"... finally something new! +``` + +What if we only care about *changes* to the volume? Well, we could modify the +above section on `changes()` a bit, but it means we'd have to work with +two-argument functions when we really only care about one. + +Fortunately, the `unique()` method is here to help: + +```java + Controller<Intege> volumeLevel = new Controller<>(); + Observable<Integer> uniqueVolumeLevel = volumeLevel.unique(); + uniqueVolumeLevel.watch(ScopeFactories.onEnter(level -> { + Log.d(TAG, "New volume level: " + level); + })); + volumeLevel.set(3); // Logs "New volume level: 3" + volumeLevel.set(3); // Does not log. + volumeLevel.set(3); // Does not log. + volumeLevel.set(4); // Logs "New volume level: 4" +``` + +The `unique()` method returns an `Observable` that is only activated when the +source `Observable` gets *fresh* activation data, and ignores duplicate +activations. + +By default `unique()` filters objects using the `equals()` method, but you can +optionally supply a custom `BiPredicate<T, T>`, a function that compares two +instances of `T` and returns `true` if, for your purposes, they should be +considered "equal". + +For example, let's say we want to log *severe* volume changes, such as changes +by more than 10 steps at a time: + +```java + Controller<Intege> volumeLevel = new Controller<>(); + Observable<Integer> similarVolumeLevels = volumeLevel.unique( + (oldLevel, newLevel) -> { + return Math.abs(oldLevel - newLevel) < 10; + }); + similarVolumeLevels.watch(ScopeFactories.onEnter(level -> { + Log.d(TAG, "Radically new volume level: " + level); + })); + volumeLevel.set(3); // Logs "Radically new volume level: 3" + volumeLevel.set(4); // Does not log. + volumeLevel.set(5); // Does not log. + volumeLevel.set(30); // Logs "Radically new volume level: 30" +``` + ### Increase readability for ScopeFactories with wrapper methods The `ScopeFactories` class contains several helper methods to increase the
diff --git a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsActivity.java b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsActivity.java index 7f7caf7..85f14a3 100644 --- a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsActivity.java +++ b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsActivity.java
@@ -8,7 +8,6 @@ import android.content.Intent; import android.content.IntentFilter; import android.media.AudioManager; -import android.net.Uri; import android.os.Bundle; import android.view.KeyEvent; import android.view.MotionEvent; @@ -24,7 +23,6 @@ import org.chromium.chromecast.base.Observable; import org.chromium.chromecast.base.ScopeFactories; import org.chromium.chromecast.base.Unit; -import org.chromium.content_public.browser.WebContents; /** * Activity for displaying a WebContents in CastShell. @@ -110,7 +108,10 @@ })); // Handle each new Intent. - hasIntentState.watch(ScopeFactories.onEnter(this ::handleIntent)); + hasIntentState.map(Intent::getExtras) + .map(CastWebContentsSurfaceHelper.StartParams::fromBundle) + .unique((previous, current) -> previous.uri.equals(current.uri)) + .watch(ScopeFactories.onEnter(this ::notifyNewWebContents)); mIsFinishingState.watch(ScopeFactories.onEnter((String reason) -> { if (DEBUG) Log.d(TAG, "Finishing activity: " + reason); @@ -135,32 +136,8 @@ mGotIntentState.set(getIntent()); } - private void handleIntent(Intent intent) { - final Bundle bundle = intent.getExtras(); - if (bundle == null) { - Log.i(TAG, "Intent without bundle received!"); - return; - } - final String uriString = CastWebContentsIntentUtils.getUriString(intent); - if (uriString == null) { - Log.i(TAG, "Intent without uri received!"); - return; - } - final Uri uri = Uri.parse(uriString); - - // Do not load the WebContents if we are simply bringing the same - // activity to the foreground. - if (mSurfaceHelper.getInstanceId() != null - && mSurfaceHelper.getInstanceId().equals(uri.getPath())) { - Log.i(TAG, "Duplicated intent received!"); - return; - } - - bundle.setClassLoader(WebContents.class.getClassLoader()); - final WebContents webContents = CastWebContentsIntentUtils.getWebContents(intent); - - final boolean touchInputEnabled = CastWebContentsIntentUtils.isTouchable(intent); - mSurfaceHelper.onNewWebContents(uri, webContents, touchInputEnabled); + private void notifyNewWebContents(CastWebContentsSurfaceHelper.StartParams params) { + if (mSurfaceHelper != null) mSurfaceHelper.onNewStartParams(params); } @Override @@ -294,4 +271,9 @@ public void setAudioManagerForTesting(CastAudioManager audioManager) { mAudioManagerState.set(audioManager); } + + @RemovableInRelease + public void setSurfaceHelperForTesting(CastWebContentsSurfaceHelper surfaceHelper) { + mSurfaceHelper = surfaceHelper; + } }
diff --git a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsFragment.java b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsFragment.java index b6e9f37..433f6f7 100644 --- a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsFragment.java +++ b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsFragment.java
@@ -7,7 +7,6 @@ import android.app.Fragment; import android.content.Context; import android.content.Intent; -import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -17,7 +16,6 @@ import org.chromium.base.ContextUtils; import org.chromium.base.Log; -import org.chromium.content_public.browser.WebContents; /** * Fragment for displaying a WebContents in CastShell. @@ -93,30 +91,18 @@ (FrameLayout) getView().findViewById(R.id.web_contents_container), true /* showInFragment */); Bundle bundle = getArguments(); + CastWebContentsSurfaceHelper.StartParams params = + CastWebContentsSurfaceHelper.StartParams.fromBundle(bundle); + if (params == null) return; - String uriString = CastWebContentsIntentUtils.getUriString(bundle); - if (uriString == null) { - return; - } - Uri uri = Uri.parse(uriString); - - WebContents webContents = CastWebContentsIntentUtils.getWebContents(bundle); mAppId = CastWebContentsIntentUtils.getAppId(bundle); mInitialVisiblityPriority = CastWebContentsIntentUtils.getVisibilityPriority(bundle); - boolean touchInputEnabled = CastWebContentsIntentUtils.isTouchable(bundle); - - mSurfaceHelper.onNewWebContents(uri, webContents, touchInputEnabled); + mSurfaceHelper.onNewStartParams(params); sendIntentSync(CastWebContentsIntentUtils.onVisibilityChange(mSurfaceHelper.getInstanceId(), CastWebContentsIntentUtils.VISIBITY_TYPE_FULL_SCREEN)); } @Override - public void setArguments(Bundle args) { - super.setArguments(args); - args.setClassLoader(WebContents.class.getClassLoader()); - } - - @Override public void onPause() { Log.d(TAG, "onPause"); super.onPause();
diff --git a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsSurfaceHelper.java b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsSurfaceHelper.java index 5090a87..1307367 100644 --- a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsSurfaceHelper.java +++ b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastWebContentsSurfaceHelper.java
@@ -11,6 +11,7 @@ import android.graphics.Color; import android.media.AudioManager; import android.net.Uri; +import android.os.Bundle; import android.os.Handler; import android.widget.FrameLayout; @@ -64,6 +65,50 @@ // TODO(vincentli) interrupt touch event from Fragment's root view when it's false. private boolean mTouchInputEnabled = false; + public static class StartParams { + public final Uri uri; + public final WebContents webContents; + public final boolean touchInputEnabled; + + public StartParams(Uri uri, WebContents webContents, boolean touchInputEnabled) { + this.uri = uri; + this.webContents = webContents; + this.touchInputEnabled = touchInputEnabled; + } + + @Override + public boolean equals(Object other) { + if (other instanceof StartParams) { + StartParams that = (StartParams) other; + return this.uri.equals(that.uri) && this.webContents.equals(that.webContents) + && this.touchInputEnabled == that.touchInputEnabled; + } + return false; + } + + public static StartParams fromBundle(Bundle bundle) { + final String uriString = CastWebContentsIntentUtils.getUriString(bundle); + if (uriString == null) { + Log.i(TAG, "Intent without uri received!"); + return null; + } + final Uri uri = Uri.parse(uriString); + if (uri == null) { + Log.i(TAG, "Invalid URI string: %s", uriString); + return null; + } + bundle.setClassLoader(WebContents.class.getClassLoader()); + final WebContents webContents = CastWebContentsIntentUtils.getWebContents(bundle); + if (webContents == null) { + Log.e(TAG, "Received null WebContents in bundle."); + return null; + } + + final boolean touchInputEnabled = CastWebContentsIntentUtils.isTouchable(bundle); + return new StartParams(uri, webContents, touchInputEnabled); + } + } + /** * @param hostActivity Activity hosts the view showing WebContents * @param castWebContentsLayout view group to add ContentViewRenderView and ContentView @@ -133,19 +178,11 @@ }); } - void onNewWebContents( - final Uri uri, final WebContents webContents, final boolean touchInputEnabled) { - if (webContents == null) { - Log.e(TAG, "Received null WebContents in bundle."); - maybeFinishLater(); - return; - } - - mTouchInputEnabled = touchInputEnabled; - - Log.d(TAG, "content_uri=" + uri); - mUri = uri; - mInstanceId = uri.getPath(); + void onNewStartParams(final StartParams params) { + mTouchInputEnabled = params.touchInputEnabled; + Log.d(TAG, "content_uri=" + params.uri); + mUri = params.uri; + mInstanceId = params.uri.getPath(); // Whenever our app is visible, volume controls should modify the music stream. // For more information read: @@ -154,7 +191,7 @@ mHasUriState.set(mUri); - showWebContents(webContents); + showWebContents(params.webContents); } // Closes this activity if a new WebContents is not being displayed.
diff --git a/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsActivityTest.java b/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsActivityTest.java index 0a2c02ba..6c97a71 100644 --- a/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsActivityTest.java +++ b/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsActivityTest.java
@@ -7,7 +7,10 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNull; +import static org.mockito.Mockito.anyObject; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.reset; import static org.mockito.Mockito.verify; import android.content.Intent; @@ -16,6 +19,8 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; import org.robolectric.Shadows; @@ -24,6 +29,7 @@ import org.robolectric.shadows.ShadowActivity; import org.robolectric.shadows.ShadowAudioManager; +import org.chromium.content_public.browser.WebContents; import org.chromium.testing.local.LocalRobolectricTestRunner; /** @@ -37,10 +43,18 @@ private ActivityController<CastWebContentsActivity> mActivityLifecycle; private CastWebContentsActivity mActivity; private ShadowActivity mShadowActivity; + private @Mock WebContents mWebContents; + + private static Intent defaultIntentForCastWebContentsActivity(WebContents webContents) { + return CastWebContentsIntentUtils.requestStartCastActivity( + RuntimeEnvironment.application, webContents, true, "0"); + } @Before public void setUp() { - mActivityLifecycle = Robolectric.buildActivity(CastWebContentsActivity.class); + MockitoAnnotations.initMocks(this); + mActivityLifecycle = Robolectric.buildActivity(CastWebContentsActivity.class, + defaultIntentForCastWebContentsActivity(mWebContents)); mActivity = mActivityLifecycle.get(); mActivity.testingModeForTesting(); mShadowActivity = Shadows.shadowOf(mActivity); @@ -104,4 +118,57 @@ mActivityLifecycle.pause(); verify(mockAudioManager).releaseStreamMuteIfNecessary(AudioManager.STREAM_MUSIC); } + + @Test + public void testDropsIntentWithoutUri() { + CastWebContentsSurfaceHelper surfaceHelper = mock(CastWebContentsSurfaceHelper.class); + WebContents newWebContents = mock(WebContents.class); + Intent intent = CastWebContentsIntentUtils.requestStartCastActivity( + RuntimeEnvironment.application, newWebContents, true, null); + intent.removeExtra(CastWebContentsIntentUtils.INTENT_EXTRA_URI); + mActivity.setSurfaceHelperForTesting(surfaceHelper); + mActivityLifecycle.create(); + reset(surfaceHelper); + mActivityLifecycle.newIntent(intent); + verify(surfaceHelper, never()).onNewStartParams(anyObject()); + } + + @Test + public void testDropsIntentWithoutWebContents() { + CastWebContentsSurfaceHelper surfaceHelper = mock(CastWebContentsSurfaceHelper.class); + Intent intent = CastWebContentsIntentUtils.requestStartCastActivity( + RuntimeEnvironment.application, null, true, "1"); + mActivity.setSurfaceHelperForTesting(surfaceHelper); + mActivityLifecycle.create(); + reset(surfaceHelper); + mActivityLifecycle.newIntent(intent); + verify(surfaceHelper, never()).onNewStartParams(anyObject()); + } + + @Test + public void testNotifiesSurfaceHelperWithValidIntent() { + CastWebContentsSurfaceHelper surfaceHelper = mock(CastWebContentsSurfaceHelper.class); + WebContents newWebContents = mock(WebContents.class); + Intent intent = CastWebContentsIntentUtils.requestStartCastActivity( + RuntimeEnvironment.application, newWebContents, true, "2"); + mActivity.setSurfaceHelperForTesting(surfaceHelper); + mActivityLifecycle.create(); + reset(surfaceHelper); + mActivityLifecycle.newIntent(intent); + verify(surfaceHelper) + .onNewStartParams(new CastWebContentsSurfaceHelper.StartParams( + CastWebContentsIntentUtils.getInstanceUri("2"), newWebContents, true)); + } + + @Test + public void testDropsIntentWithDuplicateUri() { + CastWebContentsSurfaceHelper surfaceHelper = mock(CastWebContentsSurfaceHelper.class); + mActivity.setSurfaceHelperForTesting(surfaceHelper); + mActivityLifecycle.create(); + reset(surfaceHelper); + // Send duplicate Intent. + Intent intent = defaultIntentForCastWebContentsActivity(mWebContents); + mActivityLifecycle.newIntent(intent); + verify(surfaceHelper, never()).onNewStartParams(anyObject()); + } }
diff --git a/chromecast/media/cma/backend/post_processors/post_processor_unittest.cc b/chromecast/media/cma/backend/post_processors/post_processor_unittest.cc index 005a38d..8e19271a 100644 --- a/chromecast/media/cma/backend/post_processors/post_processor_unittest.cc +++ b/chromecast/media/cma/backend/post_processors/post_processor_unittest.cc
@@ -61,7 +61,7 @@ EXPECT_TRUE(pp->SetSampleRate(sample_rate)); const int num_output_channels = pp->NumOutputChannels(); - const int test_size_frames = kBufSizeFrames * 10; + const int test_size_frames = kBufSizeFrames * 100; std::vector<float> data_in = LinearChirp( test_size_frames, std::vector<double>(num_input_channels, 0.0), std::vector<double>(num_input_channels, 1.0));
diff --git a/chromeos/dbus/debug_daemon_client.cc b/chromeos/dbus/debug_daemon_client.cc index 8ccdfd5..5645abf 100644 --- a/chromeos/dbus/debug_daemon_client.cc +++ b/chromeos/dbus/debug_daemon_client.cc
@@ -521,6 +521,16 @@ weak_ptr_factory_.GetWeakPtr(), std::move(callback))); } + void SetRlzPingSent(SetRlzPingSentCallback callback) override { + dbus::MethodCall method_call(debugd::kDebugdInterface, + debugd::kSetRlzPingSent); + dbus::MessageWriter writer(&method_call); + debugdaemon_proxy_->CallMethod( + &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, + base::BindOnce(&DebugDaemonClientImpl::OnSetRlzPingSent, + weak_ptr_factory_.GetWeakPtr(), std::move(callback))); + } + protected: void Init(dbus::Bus* bus) override { debugdaemon_proxy_ = @@ -737,6 +747,16 @@ std::move(callback).Run(result); } + void OnSetRlzPingSent(SetRlzPingSentCallback callback, + dbus::Response* response) { + bool result = false; + dbus::MessageReader reader(response); + if (response) { + reader.PopBool(&result); + } + std::move(callback).Run(result); + } + dbus::ObjectProxy* debugdaemon_proxy_; std::unique_ptr<PipeReader> pipe_reader_; StopAgentTracingCallback callback_;
diff --git a/chromeos/dbus/debug_daemon_client.h b/chromeos/dbus/debug_daemon_client.h index ebd548b..c5f5224 100644 --- a/chromeos/dbus/debug_daemon_client.h +++ b/chromeos/dbus/debug_daemon_client.h
@@ -224,6 +224,12 @@ // |callback| is called when the method finishes. virtual void StopVmConcierge(VmConciergeCallback callback) = 0; + // A callback to handle the result of SetRlzPingSent. + using SetRlzPingSentCallback = base::OnceCallback<void(bool success)>; + // Calls debugd::kSetRlzPingSent, which sets |should_send_rlz_ping| in RW_VPD + // to 0. + virtual void SetRlzPingSent(SetRlzPingSentCallback callback) = 0; + // Factory function, creates a new instance and returns ownership. // For normal usage, access the singleton via DBusThreadManager::Get(). static DebugDaemonClient* Create();
diff --git a/chromeos/dbus/fake_debug_daemon_client.cc b/chromeos/dbus/fake_debug_daemon_client.cc index ac511b8f..546c0a0 100644 --- a/chromeos/dbus/fake_debug_daemon_client.cc +++ b/chromeos/dbus/fake_debug_daemon_client.cc
@@ -268,4 +268,9 @@ FROM_HERE, base::BindOnce(std::move(callback), true)); } +void FakeDebugDaemonClient::SetRlzPingSent(SetRlzPingSentCallback callback) { + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce(std::move(callback), true)); +} + } // namespace chromeos
diff --git a/chromeos/dbus/fake_debug_daemon_client.h b/chromeos/dbus/fake_debug_daemon_client.h index 969e18afc..66b8463 100644 --- a/chromeos/dbus/fake_debug_daemon_client.h +++ b/chromeos/dbus/fake_debug_daemon_client.h
@@ -88,6 +88,7 @@ const base::Closure& error_callback) override; void StartVmConcierge(VmConciergeCallback callback) override; void StopVmConcierge(VmConciergeCallback callback) override; + void SetRlzPingSent(SetRlzPingSentCallback callback) override; // Sets debugging features mask for testing. virtual void SetDebuggingFeaturesStatus(int featues_mask);
diff --git a/chromeos/dbus/fake_smb_provider_client.cc b/chromeos/dbus/fake_smb_provider_client.cc index 4b26d5a..7cdb570 100644 --- a/chromeos/dbus/fake_smb_provider_client.cc +++ b/chromeos/dbus/fake_smb_provider_client.cc
@@ -24,6 +24,13 @@ FROM_HERE, base::BindOnce(std::move(callback), smbprovider::ERROR_OK, 1)); } +void FakeSmbProviderClient::Remount(const base::FilePath& share_path, + int32_t mount_id, + StatusCallback callback) { + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce(std::move(callback), smbprovider::ERROR_OK)); +} + void FakeSmbProviderClient::Unmount(int32_t mount_id, StatusCallback callback) { base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(std::move(callback), smbprovider::ERROR_OK));
diff --git a/chromeos/dbus/fake_smb_provider_client.h b/chromeos/dbus/fake_smb_provider_client.h index 2a3b3d07..c3fc069c 100644 --- a/chromeos/dbus/fake_smb_provider_client.h +++ b/chromeos/dbus/fake_smb_provider_client.h
@@ -20,6 +20,9 @@ // SmbProviderClient override. void Mount(const base::FilePath& share_path, MountCallback callback) override; + void Remount(const base::FilePath& share_path, + int32_t mount_id, + StatusCallback callback) override; void Unmount(int32_t mount_id, StatusCallback callback) override; void ReadDirectory(int32_t mount_id, const base::FilePath& directory_path,
diff --git a/chromeos/dbus/smb_provider_client.cc b/chromeos/dbus/smb_provider_client.cc index 7d3944f..76a271f 100644 --- a/chromeos/dbus/smb_provider_client.cc +++ b/chromeos/dbus/smb_provider_client.cc
@@ -70,6 +70,15 @@ &SmbProviderClientImpl::HandleMountCallback, &callback); } + void Remount(const base::FilePath& share_path, + int32_t mount_id, + StatusCallback callback) override { + smbprovider::RemountOptionsProto options; + options.set_path(share_path.value()); + options.set_mount_id(mount_id); + CallDefaultMethod(smbprovider::kRemountMethod, options, &callback); + } + void Unmount(int32_t mount_id, StatusCallback callback) override { smbprovider::UnmountOptionsProto options; options.set_mount_id(mount_id);
diff --git a/chromeos/dbus/smb_provider_client.h b/chromeos/dbus/smb_provider_client.h index 8f3fbcf..ca41e35 100644 --- a/chromeos/dbus/smb_provider_client.h +++ b/chromeos/dbus/smb_provider_client.h
@@ -53,6 +53,12 @@ virtual void Mount(const base::FilePath& share_path, MountCallback callback) = 0; + // Calls Remount. This attempts to remount the share at |share_path| with its + // original |mount_id|. + virtual void Remount(const base::FilePath& share_path, + int32_t mount_id, + StatusCallback callback) = 0; + // Calls Unmount. This removes the corresponding mount of |mount_id| from // the list of valid mounts. Subsequent operations on |mount_id| will fail. virtual void Unmount(int32_t mount_id, StatusCallback callback) = 0;
diff --git a/components/cast_channel/cast_message_fuzzer.cc b/components/cast_channel/cast_message_fuzzer.cc index 69500a0b..b4fa7ed 100644 --- a/components/cast_channel/cast_message_fuzzer.cc +++ b/components/cast_channel/cast_message_fuzzer.cc
@@ -20,6 +20,9 @@ namespace cast_channel { extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + if (size > MessageFramer::MessageHeader::max_message_size()) + return 0; + scoped_refptr<net::GrowableIOBuffer> buffer = base::MakeRefCounted<net::GrowableIOBuffer>(); buffer->SetCapacity(MessageFramer::MessageHeader::max_message_size());
diff --git a/components/consent_auditor/consent_auditor.cc b/components/consent_auditor/consent_auditor.cc index 5e49fd4..1165f2ff 100644 --- a/components/consent_auditor/consent_auditor.cc +++ b/components/consent_auditor/consent_auditor.cc
@@ -105,26 +105,6 @@ std::unique_ptr<sync_pb::UserEventSpecifics> specifics = ConstructUserConsent( feature, description_grd_ids, confirmation_grd_id, status); - // UserEventSyncBridge initializes asynchronously. Currently, instantiating - // UserEventService early in the Profile lifetime bootstraps - // the initialization so that it should be ready in practice, but this is - // not certain. Exit if it is not the case. Record a histogram to measure - // how often that happens. - // TODO(crbug.com/709094, crbug.com/761485): Remove this check and histogram - // when the store initializes synchronously and is instantly ready to receive - // data. - bool event_service_ready = !user_event_service_->GetSyncBridge() || - user_event_service_->GetSyncBridge() - ->change_processor() - ->IsTrackingMetadata(); - UMA_HISTOGRAM_BOOLEAN("Privacy.ConsentAuditor.UserEventServiceReady", - event_service_ready); - if (!event_service_ready) { - VLOG(1) << "Consent recording failed. The UserEventService has not been " - "initialized."; - return; - } - user_event_service_->RecordUserEvent(std::move(specifics)); }
diff --git a/components/crash/content/app/breakpad_linux.cc b/components/crash/content/app/breakpad_linux.cc index 389bc0c..7d0aa51 100644 --- a/components/crash/content/app/breakpad_linux.cc +++ b/components/crash/content/app/breakpad_linux.cc
@@ -1713,6 +1713,8 @@ static const char brand[] = "brand"; static const char board[] = "board"; static const char exception_info[] = "exception_info"; + static const char custom_themes[] = "custom_themes"; + static const char resources_version[] = "resources_version"; base::android::BuildInfo* android_build_info = base::android::BuildInfo::GetInstance(); @@ -1738,6 +1740,11 @@ writer.AddBoundary(); writer.AddPairString(abi_name, android_build_info->abi_name()); writer.AddBoundary(); + writer.AddPairString(custom_themes, android_build_info->custom_themes()); + writer.AddBoundary(); + writer.AddPairString(resources_version, + android_build_info->resources_version()); + writer.AddBoundary(); WriteAndroidPackage(writer, android_build_info); writer.AddBoundary(); if (android_build_info->java_exception_info() != nullptr) {
diff --git a/components/cronet/BUILD.gn b/components/cronet/BUILD.gn index afab9f8e3..8665bc2 100644 --- a/components/cronet/BUILD.gn +++ b/components/cronet/BUILD.gn
@@ -70,6 +70,17 @@ # a cronet_tests binary that exercises it, and a unit-tests binary. # Android and iOS have their own platform-specific rules to build Cronet. if (!is_ios && !is_android) { + config("shared_library_public_config") { + if (is_mac && !is_component_build) { + # Executable targets that depend on the shared libraries below need to have + # the rpath setup in non-component build configurations. + ldflags = [ + "-rpath", + "@executable_path/", + ] + } + } + shared_library("cronet") { deps = [ "//base", @@ -85,6 +96,14 @@ sources = [ "cronet_global_state_stubs.cc", ] + + if (is_mac && !is_component_build) { + ldflags = [ + "-install_name", + "@rpath/lib${target_name}.dylib", + ] + public_configs = [ ":shared_library_public_config" ] + } } test("cronet_tests") {
diff --git a/components/cronet/cronet_global_state_stubs.cc b/components/cronet/cronet_global_state_stubs.cc index 7f8776db..12f9dca 100644 --- a/components/cronet/cronet_global_state_stubs.cc +++ b/components/cronet/cronet_global_state_stubs.cc
@@ -21,6 +21,8 @@ scoped_refptr<base::SingleThreadTaskRunner> InitializeAndCreateTaskRunner() { // TODO(wez): Remove this once AtExitManager dependencies are gone. + // This fails cronet_test in component builds, which are not supported. + // See https://crbug.com/816705. ignore_result(new base::AtExitManager); url::Initialize();
diff --git a/components/cronet/stale_host_resolver_unittest.cc b/components/cronet/stale_host_resolver_unittest.cc index 93dc491..c7fae00f 100644 --- a/components/cronet/stale_host_resolver_unittest.cc +++ b/components/cronet/stale_host_resolver_unittest.cc
@@ -379,9 +379,9 @@ // CancelWithFreshCache makes no sense; the request would've returned // synchronously. -// Limited expired time cases are flaky under iOS (crbug.com/792173). +// Limited expired time cases are flaky under iOS and MACOS (crbug.com/792173). // Disallow other networks cases fail under Fuchsia (crbug.com/816143). -#if defined(OS_IOS) || defined(OS_FUCHSIA) +#if defined(OS_IOS) || defined(OS_FUCHSIA) || defined(OS_MACOSX) #define MAYBE_StaleUsability DISABLED_StaleUsability #else #define MAYBE_StaleUsability StaleUsability
diff --git a/components/domain_reliability/google_configs.cc b/components/domain_reliability/google_configs.cc index 5dd88ee..31ad3f1 100644 --- a/components/domain_reliability/google_configs.cc +++ b/components/domain_reliability/google_configs.cc
@@ -351,6 +351,7 @@ {"googletagmanager.com", true, false, false}, {"googletagservices.com", true, false, false}, {"googleusercontent.com", true, false, false}, + {"googlezip.net", true, false, false}, {"gstatic.cn", true, false, false}, {"gstatic.com", true, false, false}, {"gvt3.com", true, false, false},
diff --git a/components/infobars/core/infobar.cc b/components/infobars/core/infobar.cc index 1859ce1..f4dc0b77 100644 --- a/components/infobars/core/infobar.cc +++ b/components/infobars/core/infobar.cc
@@ -20,11 +20,8 @@ delegate_(std::move(delegate)), container_(nullptr), animation_(this), - arrow_height_(0), - arrow_target_height_(0), - arrow_half_width_(0), - bar_height_(0), - bar_target_height_(-1) { + height_(0), + target_height_(0) { DCHECK(delegate_ != nullptr); animation_.SetTweenType(gfx::Tween::LINEAR); delegate_->set_infobar(this); @@ -47,7 +44,7 @@ animation_.Show(); } else { animation_.Reset(1.0); - RecalculateHeights(true); + RecalculateHeight(true); } } @@ -65,15 +62,6 @@ } } -void InfoBar::SetArrowTargetHeight(int height) { - // Once the closing animation starts, we ignore further requests to change the - // target height. - if ((arrow_target_height_ != height) && !animation_.IsClosing()) { - arrow_target_height_ = height; - RecalculateHeights(false); - } -} - void InfoBar::CloseSoon() { owner_ = nullptr; PlatformSpecificOnCloseSoon(); @@ -85,15 +73,15 @@ owner_->RemoveInfoBar(this); } -void InfoBar::SetBarTargetHeight(int height) { - if (bar_target_height_ != height) { - bar_target_height_ = height; - RecalculateHeights(false); +void InfoBar::SetTargetHeight(int height) { + if (target_height_ != height) { + target_height_ = height; + RecalculateHeight(false); } } void InfoBar::AnimationProgressed(const gfx::Animation* animation) { - RecalculateHeights(false); + RecalculateHeight(false); } void InfoBar::AnimationEnded(const gfx::Animation* animation) { @@ -101,34 +89,29 @@ // the heights haven't changed, lest it never get an "animation finished" // notification. (If the browser doesn't get this notification, it will not // bother to re-layout the content area for the new infobar size.) - RecalculateHeights(true); + RecalculateHeight(true); MaybeDelete(); } -void InfoBar::RecalculateHeights(bool force_notify) { - // If there's no container delegate, there's no way to compute new element - // sizes, so return immediately. We don't need to worry that this might leave - // us with bogus sizes, because if we're ever re-added to a container, it will +void InfoBar::RecalculateHeight(bool force_notify) { + // If there's no container delegate, there's no way to compute the new height, + // so return immediately. We don't need to worry that this might leave us + // with bogus sizes, because if we're ever re-added to a container, it will // call Show(false) while re-adding us, which will compute a correct set of // sizes. if (!container_ || !container_->delegate()) return; - int old_arrow_height = arrow_height_; - int old_bar_height = bar_height_; - - container_->delegate()->ComputeInfoBarElementSizes( - animation_, arrow_target_height_, bar_target_height_, &arrow_height_, - &arrow_half_width_, &bar_height_); + int old_height = height_; + height_ = animation_.CurrentValueBetween(0, target_height_); // Don't re-layout if nothing has changed, e.g. because the animation step was - // not large enough to actually change the heights by at least a pixel. - bool heights_differ = - (old_arrow_height != arrow_height_) || (old_bar_height != bar_height_); - if (heights_differ) - PlatformSpecificOnHeightsRecalculated(); + // not large enough to actually change the height by at least a pixel. + bool height_differs = old_height != height_; + if (height_differs) + PlatformSpecificOnHeightRecalculated(); - if (heights_differ || force_notify) + if (height_differs || force_notify) container_->OnInfoBarStateChanged(animation_.is_animating()); }
diff --git a/components/infobars/core/infobar.h b/components/infobars/core/infobar.h index 5fd15da..5ed53c7 100644 --- a/components/infobars/core/infobar.h +++ b/components/infobars/core/infobar.h
@@ -10,7 +10,6 @@ #include "base/macros.h" #include "components/infobars/core/infobar_delegate.h" -#include "third_party/skia/include/core/SkColor.h" #include "ui/gfx/animation/animation_delegate.h" #include "ui/gfx/animation/slide_animation.h" #include "ui/gfx/geometry/size.h" @@ -59,10 +58,6 @@ // triggering a call to AnimationEnded(). void Hide(bool animate); - // Changes the target height of the arrow portion of the infobar. This has no - // effect once the infobar is animating closed. - void SetArrowTargetHeight(int height); - // Notifies the infobar that it is no longer owned and should delete itself // once it is invisible. void CloseSoon(); @@ -71,14 +66,11 @@ // unowned. void RemoveSelf(); - // Changes the target height of the main ("bar") portion of the infobar. - void SetBarTargetHeight(int height); + // Changes the target height of the infobar. + void SetTargetHeight(int height); const gfx::SlideAnimation& animation() const { return animation_; } - int arrow_height() const { return arrow_height_; } - int arrow_target_height() const { return arrow_target_height_; } - int arrow_half_width() const { return arrow_half_width_; } - int total_height() const { return arrow_height_ + bar_height_; } + int computed_height() const { return height_; } protected: // gfx::AnimationDelegate: @@ -87,8 +79,7 @@ const InfoBarContainer* container() const { return container_; } InfoBarContainer* container() { return container_; } gfx::SlideAnimation* animation() { return &animation_; } - int bar_height() const { return bar_height_; } - int bar_target_height() const { return bar_target_height_; } + int target_height() const { return target_height_; } // Platforms may optionally override these if they need to do work during // processing of the given calls. @@ -96,17 +87,17 @@ virtual void PlatformSpecificShow(bool animate) {} virtual void PlatformSpecificHide(bool animate) {} virtual void PlatformSpecificOnCloseSoon() {} - virtual void PlatformSpecificOnHeightsRecalculated() {} + virtual void PlatformSpecificOnHeightRecalculated() {} private: // gfx::AnimationDelegate: void AnimationEnded(const gfx::Animation* animation) override; - // Finds the new desired arrow and bar heights, and if they differ from the - // current ones, calls PlatformSpecificOnHeightRecalculated(). Informs our - // container our state has changed if either the heights have changed or - // |force_notify| is set. - void RecalculateHeights(bool force_notify); + // Finds the new desired height, and if it differs from the current height, + // calls PlatformSpecificOnHeightRecalculated(). Informs our container our + // state has changed if either the height has changed or |force_notify| is + // set. + void RecalculateHeight(bool force_notify); // Checks whether the infobar is unowned and done with all animations. If so, // notifies the container that it should remove this infobar, and deletes @@ -118,15 +109,9 @@ InfoBarContainer* container_; gfx::SlideAnimation animation_; - // The current and target heights of the arrow and bar portions, and half the - // current arrow width. (It's easier to work in half-widths as we draw the - // arrow as two halves on either side of a center point.) All these values - // scale in unison to the container delegate's default and maximum values. - int arrow_height_; // Includes both fill and top stroke. - int arrow_target_height_; // Should always be set by the time we read it. - int arrow_half_width_; // Includes only fill. - int bar_height_; // Includes both fill and bottom separator. - int bar_target_height_; // May be left as -1, meaning "use default". + // The current and target heights. + int height_; // Includes both fill and bottom separator. + int target_height_; DISALLOW_COPY_AND_ASSIGN(InfoBar); };
diff --git a/components/infobars/core/infobar_container.cc b/components/infobars/core/infobar_container.cc index 2c8cc25..20678aaf 100644 --- a/components/infobars/core/infobar_container.cc +++ b/components/infobars/core/infobar_container.cc
@@ -68,39 +68,11 @@ OnInfoBarStateChanged(false); } -int InfoBarContainer::GetVerticalOverlap(int* total_height) const { - // Our |total_height| is the sum of the preferred heights of the InfoBars - // contained within us plus the |vertical_overlap|. - int vertical_overlap = 0; - int next_infobar_y = 0; - - for (InfoBars::const_iterator i(infobars_.begin()); i != infobars_.end(); - ++i) { - InfoBar* infobar = *i; - next_infobar_y -= infobar->arrow_height(); - vertical_overlap = std::max(vertical_overlap, -next_infobar_y); - next_infobar_y += infobar->total_height(); - } - - if (total_height) - *total_height = next_infobar_y + vertical_overlap; - return vertical_overlap; -} - -void InfoBarContainer::UpdateInfoBarArrowTargetHeights() { - for (size_t i = 0; i < infobars_.size(); ++i) { - infobars_[i]->SetArrowTargetHeight(delegate_ ? - delegate_->ArrowTargetHeightForInfoBar( - i, const_cast<const InfoBar*>(infobars_[i])->animation()) : 0); - } -} - void InfoBarContainer::OnInfoBarStateChanged(bool is_animating) { if (ignore_infobar_state_changed_) return; if (delegate_) delegate_->InfoBarContainerStateChanged(is_animating); - UpdateInfoBarArrowTargetHeights(); PlatformSpecificInfoBarStateChanged(is_animating); } @@ -129,7 +101,6 @@ void InfoBarContainer::OnInfoBarRemoved(InfoBar* infobar, bool animate) { DCHECK(infobar_manager_); infobar->Hide(infobar_manager_->animations_enabled() && animate); - UpdateInfoBarArrowTargetHeights(); } void InfoBarContainer::OnInfoBarReplaced(InfoBar* old_infobar, @@ -156,7 +127,6 @@ infobars_.end()); DCHECK_LE(position, infobars_.size()); infobars_.insert(infobars_.begin() + position, infobar); - UpdateInfoBarArrowTargetHeights(); PlatformSpecificAddInfoBar(infobar, position); infobar->set_container(this); DCHECK(infobar_manager_);
diff --git a/components/infobars/core/infobar_container.h b/components/infobars/core/infobar_container.h index bbd2950..004e773 100644 --- a/components/infobars/core/infobar_container.h +++ b/components/infobars/core/infobar_container.h
@@ -15,10 +15,6 @@ #include "components/infobars/core/infobar_manager.h" #include "third_party/skia/include/core/SkColor.h" -namespace gfx { -class SlideAnimation; -} - namespace infobars { class InfoBar; @@ -38,28 +34,6 @@ // as well as when it stops animating. virtual void InfoBarContainerStateChanged(bool is_animating) = 0; - // The delegate needs to tell us whether "unspoofable" arrows should be - // drawn, and if so, at what |x| coordinate. |x| may be NULL. - virtual bool DrawInfoBarArrows(int* x) const = 0; - - // Computes the target arrow height for infobar number |index|, given its - // animation. - virtual int ArrowTargetHeightForInfoBar( - size_t index, - const gfx::SlideAnimation& animation) const = 0; - - // Computes the sizes of the infobar arrow (height and half width) and bar - // (height) given the infobar's animation and its target element heights. - // |bar_target_height| may be -1, which means "use the default bar target - // height". - virtual void ComputeInfoBarElementSizes( - const gfx::SlideAnimation& animation, - int arrow_target_height, - int bar_target_height, - int* arrow_height, - int* arrow_half_width, - int* bar_height) const = 0; - protected: virtual ~Delegate(); }; @@ -73,18 +47,6 @@ // may be NULL. void ChangeInfoBarManager(InfoBarManager* infobar_manager); - // Returns the amount by which to overlap the toolbar above, and, when - // |total_height| is non-NULL, set it to the height of the InfoBarContainer - // (including overlap). - int GetVerticalOverlap(int* total_height) const; - - // Triggers a recalculation of all infobar arrow heights. - // - // IMPORTANT: This MUST NOT result in a call back to - // Delegate::InfoBarContainerStateChanged() unless it causes an actual - // change, lest we infinitely recurse. - void UpdateInfoBarArrowTargetHeights(); - // Called when a contained infobar has animated or by some other means changed // its height, or when it stops animating. The container is expected to do // anything necessary to respond, e.g. re-layout.
diff --git a/components/nacl/loader/DEPS b/components/nacl/loader/DEPS index 794e3bac..ca1a3bc 100644 --- a/components/nacl/loader/DEPS +++ b/components/nacl/loader/DEPS
@@ -9,7 +9,7 @@ "+sandbox/linux/services", "+sandbox/linux/suid", "+sandbox/linux/system_headers", - "+sandbox/sandbox_features.h", + "+sandbox/sandbox_buildflags.h", "+sandbox/win/src", "+services/service_manager/sandbox", "+ppapi/c", # header files only
diff --git a/components/nacl/loader/sandbox_linux/BUILD.gn b/components/nacl/loader/sandbox_linux/BUILD.gn index f3a0f4d4..a1a33d9 100644 --- a/components/nacl/loader/sandbox_linux/BUILD.gn +++ b/components/nacl/loader/sandbox_linux/BUILD.gn
@@ -25,7 +25,7 @@ "//crypto", "//ipc", "//sandbox", - "//sandbox:sandbox_features", + "//sandbox:sandbox_buildflags", "//sandbox/linux:sandbox_services_headers", ]
diff --git a/components/nacl/loader/sandbox_linux/nacl_bpf_sandbox_linux.cc b/components/nacl/loader/sandbox_linux/nacl_bpf_sandbox_linux.cc index 9a8d96f..c4dad71 100644 --- a/components/nacl/loader/sandbox_linux/nacl_bpf_sandbox_linux.cc +++ b/components/nacl/loader/sandbox_linux/nacl_bpf_sandbox_linux.cc
@@ -9,7 +9,7 @@ #include "base/macros.h" #include "build/build_config.h" -#include "sandbox/sandbox_features.h" +#include "sandbox/sandbox_buildflags.h" #if BUILDFLAG(USE_SECCOMP_BPF)
diff --git a/components/ntp_snippets/contextual/contextual_content_suggestions_service.cc b/components/ntp_snippets/contextual/contextual_content_suggestions_service.cc index e06e5e6..0e84f1b 100644 --- a/components/ntp_snippets/contextual/contextual_content_suggestions_service.cc +++ b/components/ntp_snippets/contextual/contextual_content_suggestions_service.cc
@@ -17,6 +17,10 @@ #include "ui/gfx/image/image.h" namespace ntp_snippets { +namespace { +static const char kSamplePeekText[] = "Peek text"; +static const char kSampleClusterTitle[] = "Cluster title filler"; +} // namespace ContextualContentSuggestionsService::Cluster::Cluster() = default; @@ -106,17 +110,12 @@ ContextualSuggestionsFetcher::OptionalSuggestions fetched_suggestions) { std::vector<Cluster> clusters; if (fetched_suggestions.has_value()) { - clusters.emplace_back(); - Cluster& cluster = clusters.back(); - for (const std::unique_ptr<ContextualSuggestion>& suggestion : - fetched_suggestions.value()) { - cluster.suggestions.emplace_back(suggestion->ToContentSuggestion()); - ContentSuggestion::ID id = cluster.suggestions.back().id(); - GURL image_url = suggestion->salient_image_url(); - image_url_by_id_[id.id_within_category()] = image_url; - } + Cluster cluster; + cluster.title = kSampleClusterTitle; + cluster.suggestions = std::move(fetched_suggestions.value()); + clusters.push_back(std::move(cluster)); } - std::move(callback).Run(std::move(clusters)); + std::move(callback).Run(kSamplePeekText, std::move(clusters)); } } // namespace ntp_snippets
diff --git a/components/ntp_snippets/contextual/contextual_content_suggestions_service.h b/components/ntp_snippets/contextual/contextual_content_suggestions_service.h index 9639964..53b5750 100644 --- a/components/ntp_snippets/contextual/contextual_content_suggestions_service.h +++ b/components/ntp_snippets/contextual/contextual_content_suggestions_service.h
@@ -36,7 +36,7 @@ ~Cluster(); std::string title; - std::vector<ContentSuggestion> suggestions; + ContextualSuggestion::PtrVector suggestions; private: DISALLOW_COPY_AND_ASSIGN(Cluster); @@ -56,7 +56,8 @@ std::vector<ContentSuggestion> suggestions)>; using FetchContextualSuggestionClustersCallback = - base::OnceCallback<void(std::vector<Cluster> clusters)>; + base::OnceCallback<void(std::string peek_text, + std::vector<Cluster> clusters)>; // Asynchronously fetches contextual suggestions for the given URL. void FetchContextualSuggestions(const GURL& url,
diff --git a/components/omnibox/browser/BUILD.gn b/components/omnibox/browser/BUILD.gn index 953d9712..fa4961a 100644 --- a/components/omnibox/browser/BUILD.gn +++ b/components/omnibox/browser/BUILD.gn
@@ -102,7 +102,6 @@ "omnibox_navigation_observer.h", "omnibox_popup_model.cc", "omnibox_popup_model.h", - "omnibox_popup_model_observer.h", "omnibox_popup_view.h", "omnibox_pref_names.cc", "omnibox_pref_names.h",
diff --git a/components/omnibox/browser/omnibox_edit_controller.cc b/components/omnibox/browser/omnibox_edit_controller.cc index f6fe7776..1ac14ecb 100644 --- a/components/omnibox/browser/omnibox_edit_controller.cc +++ b/components/omnibox/browser/omnibox_edit_controller.cc
@@ -20,6 +20,8 @@ void OmniboxEditController::OnChanged() {} +void OmniboxEditController::OnPopupVisibilityChanged() {} + OmniboxEditController::OmniboxEditController() : disposition_(WindowOpenDisposition::CURRENT_TAB), transition_(ui::PageTransitionFromInt(
diff --git a/components/omnibox/browser/omnibox_edit_controller.h b/components/omnibox/browser/omnibox_edit_controller.h index b2bb643..a18241d 100644 --- a/components/omnibox/browser/omnibox_edit_controller.h +++ b/components/omnibox/browser/omnibox_edit_controller.h
@@ -27,6 +27,9 @@ // status of any keyword- or hint-related state. virtual void OnChanged(); + // Called when the omnibox popup is shown or hidden. + virtual void OnPopupVisibilityChanged(); + virtual ToolbarModel* GetToolbarModel() = 0; virtual const ToolbarModel* GetToolbarModel() const = 0;
diff --git a/components/omnibox/browser/omnibox_popup_model.cc b/components/omnibox/browser/omnibox_popup_model.cc index 22110d1..f2a7e53 100644 --- a/components/omnibox/browser/omnibox_popup_model.cc +++ b/components/omnibox/browser/omnibox_popup_model.cc
@@ -12,8 +12,8 @@ #include "components/bookmarks/browser/bookmark_model.h" #include "components/omnibox/browser/autocomplete_match.h" #include "components/omnibox/browser/omnibox_client.h" +#include "components/omnibox/browser/omnibox_edit_controller.h" #include "components/omnibox/browser/omnibox_field_trial.h" -#include "components/omnibox/browser/omnibox_popup_model_observer.h" #include "components/omnibox/browser/omnibox_popup_view.h" #include "third_party/icu/source/common/unicode/ubidi.h" #include "ui/gfx/geometry/rect.h" @@ -242,19 +242,8 @@ bool popup_was_open = view_->IsOpen(); view_->UpdatePopupAppearance(); - // If popup has just been shown or hidden, notify observers. - if (view_->IsOpen() != popup_was_open) { - for (OmniboxPopupModelObserver& observer : observers_) - observer.OnOmniboxPopupShownOrHidden(); - } -} - -void OmniboxPopupModel::AddObserver(OmniboxPopupModelObserver* observer) { - observers_.AddObserver(observer); -} - -void OmniboxPopupModel::RemoveObserver(OmniboxPopupModelObserver* observer) { - observers_.RemoveObserver(observer); + if (view_->IsOpen() != popup_was_open) + edit_model_->controller()->OnPopupVisibilityChanged(); } void OmniboxPopupModel::SetAnswerBitmap(const SkBitmap& bitmap) {
diff --git a/components/omnibox/browser/omnibox_popup_model_observer.h b/components/omnibox/browser/omnibox_popup_model_observer.h deleted file mode 100644 index 1a2e8ed..0000000 --- a/components/omnibox/browser/omnibox_popup_model_observer.h +++ /dev/null
@@ -1,16 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_POPUP_MODEL_OBSERVER_H_ -#define COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_POPUP_MODEL_OBSERVER_H_ - -// Allows observers to react and update accordingly when state of -// |OmniboxPopupModel| changes, e.g. when the omnibox popup is shown or hidden. -class OmniboxPopupModelObserver { - public: - // Informs observers that omnibox popup has been shown or hidden. - virtual void OnOmniboxPopupShownOrHidden() = 0; -}; - -#endif // COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_POPUP_MODEL_OBSERVER_H_
diff --git a/components/policy/resources/policy_templates_ca.xtb b/components/policy/resources/policy_templates_ca.xtb index 4f09db77..9afb77d1 100644 --- a/components/policy/resources/policy_templates_ca.xtb +++ b/components/policy/resources/policy_templates_ca.xtb
@@ -506,7 +506,7 @@ <translation id="2529700525201305165">Restricció dels usuaris que poden iniciar la sessió a <ph name="PRODUCT_NAME" /></translation> <translation id="2529880111512635313">Configura la llista d'aplicacions i d'extensions instal·lades per força</translation> <translation id="253135976343875019">Retard d'advertiment d'inactivitat quan s'utilitza alimentació</translation> -<translation id="2536283449105918306">Activa la protecció contra la redirecció de pestanyes</translation> +<translation id="2536283449105918306">Impedeix que les pàgines redirigeixin a llocs web i obrin pestanyes o finestres noves simultàniament</translation> <translation id="2552966063069741410">Zona horària</translation> <translation id="2562339630163277285">Especifica l'URL del motor de cerca utilitzat per proporcionar resultats immediats. L'URL ha de contenir la cadena <ph name="SEARCH_TERM_MARKER" />, que se substituirà, en el moment de fer la consulta, pel text que l'usuari hagi introduït fins al moment. @@ -2516,11 +2516,11 @@ <translation id="9096086085182305205">Llista blanca del servidor d'autenticació</translation> <translation id="9098553063150791878">Polítiques per a l'autenticació HTTP</translation> <translation id="9105265795073104888">Les aplicacions per a Android tenen disponible un subconjunt d'opcions de configuració per al servidor intermediari. No pots forçar-les a utilitzar un servidor intermediari, sinó que és decisió d'elles.</translation> -<translation id="9110615239151047025">Activa la protecció contra la redirecció de pestanyes i bloqueja aquests tipus de navegacions. +<translation id="9110615239151047025">Bloqueja les navegacions en les quals les pàgines redirigeixen a llocs web i obren pestanyes o finestres noves simultàniament. - Per obtenir més informació sobre la redirecció de pestanyes, consulta la pàgina https://www.chromestatus.com/features/5675755719622656. - Si aquesta política es defineix com a "true", <ph name="PRODUCT_NAME" /> bloquejarà les accions de navegació que consideri redireccions de pestanyes. - Si aquesta política es defineix com a "false", <ph name="PRODUCT_NAME" /> permetrà que els llocs web facin redireccions de pestanyes. + Per obtenir més informació sobre aquest tipus de navegacions, consulta la pàgina https://www.chromestatus.com/features/5675755719622656. + Si aquesta política es defineix com a "true", <ph name="PRODUCT_NAME" /> bloquejarà aquestes navegacions. + Si aquesta política es defineix com a "false", <ph name="PRODUCT_NAME" /> permetrà que els llocs web facin aquest tipus de navegacions. De manera predeterminada, aquesta política es defineix com a "true".</translation> <translation id="9112727953998243860">Fitxer de configuració de la impressora d'empresa</translation> <translation id="9112897538922695510">Us permet registrar una llista de gestors de protocol. Això només pot ser una política recomanada. El |protocol| de la propietat s'ha de definir a l'esquema, com ara "mailto" i l'|url| de la propietat s'ha de definir al patró d'URL de l'aplicació que gestiona l'esquema. El patró pot incloure "%s" i, en cas que s'hi inclogui, se substituirà per l'URL gestionat.
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb index 962457a..5e182213 100644 --- a/components/policy/resources/policy_templates_fr.xtb +++ b/components/policy/resources/policy_templates_fr.xtb
@@ -2704,7 +2704,7 @@ <translation id="9096086085182305205">Liste blanche des serveurs d'authentification</translation> <translation id="9098553063150791878">Règles pour l'authentification HTTP</translation> <translation id="9105265795073104888">Les applications Android n'ont accès qu'à un sous-ensemble d'options de configuration du proxy. Elles peuvent avoir été volontairement conçues pour utiliser le proxy, mais vous ne pouvez pas les forcer à effectuer cette opération.</translation> -<translation id="9110615239151047025">Active la protection contre le tab-under, ce qui bloque la navigation si cette pratique est détectée. +<translation id="9110615239151047025">Active la protection contre le tab-under, ce qui bloque l'ouverture ou l'affichage de pages ou d'onglets tiers lorsque l'utilisateur accède au contenu qu'il consultait initialement. Pour en savoir plus sur le tab-under, consultez la page https://www.chromestatus.com/features/5675755719622656. Si cette règle est définie sur "True", la navigation est bloquée si <ph name="PRODUCT_NAME" /> détecte un cas de tab-under.
diff --git a/components/policy/resources/policy_templates_gu.xtb b/components/policy/resources/policy_templates_gu.xtb index dcf6e2d..a723390 100644 --- a/components/policy/resources/policy_templates_gu.xtb +++ b/components/policy/resources/policy_templates_gu.xtb
@@ -610,6 +610,7 @@ <translation id="2529700525201305165"><ph name="PRODUCT_NAME" /> માં કયા વપરાશકર્તાઓને સાઇન ઇન કરવાની મંજૂરી છે તે પ્રતિબંધિત કરો</translation> <translation id="2529880111512635313">ફરજિયાત-ઇન્સ્ટોલ કરાયેલ ઍપ્લિકેશનો અને ઍક્સ્ટેન્શનોની સૂચિ ગોઠવો</translation> <translation id="253135976343875019">જ્યારે AC પાવર પર ચાલતું હોય ત્યારે નિષ્ક્રિય ચેતવણી વિલંબ</translation> +<translation id="2536283449105918306">ટૅબ-હેઠળ સુરક્ષા ચાલુ કરે છે</translation> <translation id="2552966063069741410">ટાઇમઝોન</translation> <translation id="2562339630163277285">ઝટપટ પરિણામો પ્રદાન કરવા માટે વપરાયેલા શોધ એંજિનના URL નો ઉલ્લેખ કરે છે. URL માં તે <ph name="SEARCH_TERM_MARKER" /> સ્ટ્રિંગ શામેલ હોવી જોઈએ કે જેને ક્વેરી વખતે વપરાશકર્તાએ અગાઉ દાખલ કરેલ ટેક્સ્ટ સાથે બદલવામાં આવશે. @@ -3121,6 +3122,12 @@ AC પાવર અને બૅટરી માટે અલગ-અલગ સેટિંગ્સ પણ હોય છે. </translation> <translation id="9105265795073104888">Android ઍપ્લિકેશનો માટે ફક્ત પ્રોક્સી ગોઠવણી વિકલ્પોનો એક સબસેટ ઉપલબ્ધ બનાવવામાં આવે છે. Android ઍપ્લિકેશનો સ્વૈચ્છિકરૂપે પ્રોક્સીને ઉપયોગમાં લેવાનું પસંદ કરી શકે છે. તમે તેમને પ્રોક્સીનો ઉપયોગ કરવા માટે ફરજ પાડી શકતાં નથી.</translation> +<translation id="9110615239151047025">ટૅબ-હેઠળ સુરક્ષા ચાલુ કરે છે, જે ટૅબ-હેઠળ તરીકે શોધાયેલ નૅવિગેશનને બ્લૉક કરે છે. + + ટૅબ-હેઠળ પર સ્પષ્ટતા માટે, https://www.chromestatus.com/features/5675755719622656 જુઓ. + જો આ નીતિને True પર સેટ કરવામાં આવી હશે, તો <ph name="PRODUCT_NAME" /> જે નૅવિગેશનને ટૅબ-હેઠળ તરીકે શોધશે તેને બ્લૉક કરવામાં આવશે. + જો આ નીતિને False પર સેટ કરવામાં આવી હશે, તો <ph name="PRODUCT_NAME" /> સાઇટને ટૅબ-હેઠળ નૅવિગેશન કરવાની મંજૂરી આપશે. + ડિફૉલ્ટ તરીકે, આ નીતિને True પર સેટ કરવામાં આવે છે.</translation> <translation id="9112727953998243860">એન્ટરપ્રાઇઝ પ્રિન્ટર ગોઠવણી ફાઇલ</translation> <translation id="9112897538922695510">તમને પ્રોટોકૉલ હેન્ડલર્સની સૂચિની નોંધણી કરવાની મંજૂરી આપે છે. આ માત્ર ભલામણ કરેલ નીતિ હોઈ શકે છે. પ્રોપર્ટી |protocol|, 'mailto' જેવી સ્કીમ પર સેટ કરેલ હોવી જોઈએ અને પ્રોપર્ટી |url| સ્કીમને હેન્ડલ કરે છે તે એપ્લિકેશનના URL નમૂના પર સેટ કરેલ હોવી જોઈએ. નમૂનામાં '%s' શામેલ હોઈ શકે છે, જે હાજર હોવા પર હેન્ડલ કરેલ URL દ્વારા બદલવામાં આવશે.
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb index 61760fd..5156548 100644 --- a/components/policy/resources/policy_templates_id.xtb +++ b/components/policy/resources/policy_templates_id.xtb
@@ -513,7 +513,7 @@ <translation id="2529700525201305165">Membatasi pengguna yang diizinkan untuk masuk ke <ph name="PRODUCT_NAME" /></translation> <translation id="2529880111512635313">Mengonfigurasi daftar aplikasi dan ekstensi yang dipasang secara paksa</translation> <translation id="253135976343875019">Menunda peringatan waktu menganggur saat menggunakan daya AC</translation> -<translation id="2536283449105918306">Mengaktifkan perlindungan terhadap tab-under</translation> +<translation id="2536283449105918306">Mengaktifkan perlindungan terhadap tab pop up.</translation> <translation id="2552966063069741410">Zona Waktu</translation> <translation id="2562339630163277285">Menentukan URL mesin telusur yang digunakan untuk memberikan hasil instan. URL harus berisi string <ph name="SEARCH_TERM_MARKER" />, yang akan diganti pada waktu kueri dengan teks yang telah dimasukkan oleh pengguna sejauh ini. @@ -2559,11 +2559,11 @@ <translation id="9096086085182305205">Daftar putih server autentikasi</translation> <translation id="9098553063150791878">Kebijakan untuk autentikasi HTTP</translation> <translation id="9105265795073104888">Hanya bagian dari opsi konfigurasi proxy yang disediakan untuk aplikasi Android. Aplikasi Android dapat memilih untuk menggunakan proxy secara sukarela. Anda tidak dapat memaksakan aplikasi Android agar menggunakan proxy.</translation> -<translation id="9110615239151047025">Aktifkan perlindungan terhadap tab-under, yang memblokir navigasi yang terdeteksi sebagai tab-under. +<translation id="9110615239151047025">Aktifkan perlindungan terhadap tab pop up, yang memblokir navigasi yang terdeteksi sebagai tab pop up. - Untuk penjelasan mengenai tab-under, lihat https://www.chromestatus.com/features/5675755719622656. - Jika kebijakan disetel ke True, navigasi yang dideteksi oleh <ph name="PRODUCT_NAME" /> sebagai tab-under akan diblokir. - Jika kebijakan disetel ke False, <ph name="PRODUCT_NAME" /> akan mengizinkan situs untuk melakukan navigasi tab-under. + Untuk penjelasan mengenai tab pop up, lihat https://www.chromestatus.com/features/5675755719622656. + Jika kebijakan disetel ke True, navigasi yang dideteksi oleh <ph name="PRODUCT_NAME" /> sebagai tab pop up akan diblokir. + Jika kebijakan disetel ke False, <ph name="PRODUCT_NAME" /> akan mengizinkan situs untuk melakukan navigasi tab pop up. Secara default, kebijakan ini disetel ke True.</translation> <translation id="9112727953998243860">File konfigurasi untuk printer perusahaan</translation> <translation id="9112897538922695510">Memungkinkan Anda mendaftarkan daftar penangan protokol. Ini hanya dapat menjadi kebijakan yang disarankan. Properti |protokol| sebaiknya disetel ke skema seperti 'mailto' dan properti |url| sebaiknya disetel ke pola URL aplikasi yang menangani skema. Pola tersebut dapat berisi '%s', yang apabila disajikan akan menggantikan URL yang ditangani.
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb index 41fd19b..6b9818b 100644 --- a/components/policy/resources/policy_templates_it.xtb +++ b/components/policy/resources/policy_templates_it.xtb
@@ -495,7 +495,7 @@ <translation id="2529700525201305165">Limita gli utenti autorizzati ad accedere a <ph name="PRODUCT_NAME" /></translation> <translation id="2529880111512635313">Configura l'elenco di estensioni e app con installazione imposta</translation> <translation id="253135976343875019">Ritardo avviso inattività in caso di utilizzo di CA</translation> -<translation id="2536283449105918306">Attiva la protezione tab-under</translation> +<translation id="2536283449105918306">Attiva la protezione contro le schede secondarie</translation> <translation id="2552966063069741410">Fuso orario</translation> <translation id="2562339630163277285">Consente di specificare l'URL del motore di ricerca utilizzato per fornire risultati immediati. L'URL deve contenere la stringa <ph name="SEARCH_TERM_MARKER" />, che verrà sostituita in fase di query dal testo inserito dall'utente fino a quel momento. @@ -2485,12 +2485,12 @@ <translation id="9096086085182305205">Whitelist server di autenticazione</translation> <translation id="9098553063150791878">Norme relative all'autenticazione HTTP</translation> <translation id="9105265795073104888">Solo un sottoinsieme di opzioni di configurazione del proxy viene reso disponibile alle app Android, che decidono volontariamente se rispettarlo o meno. Non puoi forzarle a utilizzare un proxy.</translation> -<translation id="9110615239151047025">Consente di attivare la protezione tab-under, che blocca le navigazioni rilevate come tab-under. +<translation id="9110615239151047025">Consente di attivare la protezione contro le schede secondarie, che blocca le navigazioni per le schede rilevate come secondarie. - Visita la pagina https://www.chromestatus.com/features/5675755719622656 per sapere cosa sono i tab-under. - Se questa norma viene impostata su True, le navigazioni rilevate come tab-under in <ph name="PRODUCT_NAME" /> verranno bloccate. - Se la norma viene impostata su False, <ph name="PRODUCT_NAME" /> consentirà ai siti di eseguire navigazioni tab-under. - Per impostazione predefinita, questa norma è impostata su True.</translation> + Visita la pagina https://www.chromestatus.com/features/5675755719622656 per sapere cosa sono le schede secondarie. + Se questa norma viene impostata su True, le navigazioni per le schede rilevate come secondarie in <ph name="PRODUCT_NAME" /> verranno bloccate. + Se la norma viene impostata su False, <ph name="PRODUCT_NAME" /> i siti potranno eseguire navigazioni tramite schede secondarie. + Per impostazione predefinita, la norma è impostata su True.</translation> <translation id="9112727953998243860">File di configurazione delle stampanti aziendali</translation> <translation id="9112897538922695510">Ti consente di registrare un elenco di gestori di protocolli. Questa può essere soltanto una norma consigliata. Per la proprietà |protocol| dovrebbe essere impostato lo schema, ad esempio "mailto", e per la proprietà |url| dovrebbe essere impostato il pattern URL dell'applicazione che gestisce lo schema. Il pattern può includere "%s" che, se presente, verrà sostituito dall'URL gestito.
diff --git a/components/policy/resources/policy_templates_kn.xtb b/components/policy/resources/policy_templates_kn.xtb index a2e968d..79b0fde 100644 --- a/components/policy/resources/policy_templates_kn.xtb +++ b/components/policy/resources/policy_templates_kn.xtb
@@ -2859,7 +2859,12 @@ AC ಪವರ್ ಮತ್ತು ಬ್ಯಾಟರಿಗಾಗಿ ಪ್ರತ್ಯೇಕ ಸೆಟ್ಟಿಂಗ್ಗಳು ಸಹ ಇವೆ. </translation> <translation id="9105265795073104888">ಪ್ರಾಕ್ಸಿ ಕಾನ್ಫಿಗರೇಶನ್ ಆಯ್ಕೆಗಳ ಉಪವರ್ಗವನ್ನು ಮಾತ್ರ Android ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಲಭ್ಯವಾಗಿಸಲಾಗುತ್ತದೆ. ಪ್ರಾಕ್ಸಿಯನ್ನು ಬಳಸಲು Android ಅಪ್ಲಿಕೇಶನ್ಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆಯ್ಕೆ ಮಾಡಿಕೊಳ್ಳಬಹುದು. ಪ್ರಾಕ್ಸಿಯನ್ನು ಬಳಸುವಂತೆ ಅವುಗಳಿಗೆ ನೀವು ಒತ್ತಾಯಿಸಲಾಗುವುದಿಲ್ಲ.</translation> -<translation id="9110615239151047025">ಟ್ಯಾಬ್-ಅಂಡರ್ಗಳಂತೆ ಪತ್ತೆಹಚ್ಚಿ ನ್ಯಾವಿಗೇಷನ್ಗಳನ್ನು ನಿರ್ಬಂಧಿಸುವ, ಟ್ಯಾಬ್ ಅಂಡರ್ ರಕ್ಷಣೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ. ಟ್ಯಾಬ್-ಅಂಡರ್ಗಳಲ್ಲಿನ ವಿವರಣೆಗಾಗಿ, https://www.chromestatus.com/features/5675755719622656 ಅನ್ನು ನೋಡಿ. ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ಸರಿ ಎಂದು ಹೊಂದಿಸಿದರೆ, <ph name="PRODUCT_NAME" /> ಪತ್ತೆಹಚ್ಚುವ ನ್ಯಾವಿಗೇಷನ್ಗಳನ್ನು ಟ್ಯಾಬ್-ಅಂಡರ್ಗಳೆಂದು ನಿರ್ಬಂಧಿಸಲಾಗುತ್ತದೆ. ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ತಪ್ಪು ಎಂದು ಹೊಂದಿಸಿದರೆ, ಟ್ಯಾಬ್-ಅಂಡರ್ ನ್ಯಾವಿಗೇಷನ್ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಸೈಟ್ಗಳು <ph name="PRODUCT_NAME" /> ಅನ್ನು ಅನುಮತಿಸುತ್ತವೆ. ಡಿಫಾಲ್ಟ್ ಆಗಿ, ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ಸರಿ ಎಂಬುದಾಗಿ ಹೊಂದಿಸಲಾಗಿದೆ.</translation> +<translation id="9110615239151047025">ಟ್ಯಾಬ್-ಅಂಡರ್ ರಕ್ಷಣೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ, ಇದು ಟ್ಯಾಬ್-ಅಂಡರ್ಗಳೆಂದು ಪತ್ತೆಹಚ್ಚಲಾದ ನ್ಯಾವಿಗೇಶನ್ಗಳನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ. + + ಟ್ಯಾಬ್-ಅಂಡರ್ಗಳ ಕುರಿತು ವಿವರಣೆಗಾಗಿ, https://www.chromestatus.com/features/5675755719622656 ಅನ್ನು ನೋಡಿ. + ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ಸರಿ ಎಂದು ಹೊಂದಿಸಿದರೆ, <ph name="PRODUCT_NAME" /> ಪತ್ತೆಹಚ್ಚುವ ಟ್ಯಾಬ್-ಅಂಡರ್ಗಳಾಗಿರುವ ನ್ಯಾವಿಗೇಶನ್ಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗುತ್ತದೆ. + ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ತಪ್ಪು ಎಂದು ಹೊಂದಿಸಿದರೆ, ಟ್ಯಾಬ್-ಅಂಡರ್ ನ್ಯಾವಿಗೇಶನ್ಗಳನ್ನು ನಡೆಸಲು ಸೈಟ್ಗಳಿಗೆ <ph name="PRODUCT_NAME" /> ಅನುಮತಿಯನ್ನು ನೀಡುತ್ತದೆ. + ಡಿಫಾಲ್ಟ್ ಆಗಿ, ಈ ಕಾರ್ಯನೀತಿಯನ್ನು ಸರಿ ಎಂಬುದಾಗಿ ಹೊಂದಿಸಲಾಗಿದೆ.</translation> <translation id="9112727953998243860">ಎಂಟರ್ಪ್ರೈಸ್ ಪ್ರಿಂಟರ್ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್</translation> <translation id="9112897538922695510">ಪ್ರೋಟೋಕಾಲ್ ಹ್ಯಾಂಡ್ಲರ್ಗಳ ಪಟ್ಟಿಯನ್ನು ನೋಂದಾಯಿಸಲು ನಿಮಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತದೆ. ಇದು ಶಿಫಾರಸು ಮಾಡಿರುವ ನೀತಿ ಮಾತ್ರವೇ ಆಗಿರಬಹುದು. ಗುಣಲಕ್ಷಣದ |ಪ್ರೋಟೋಕಾಲ್| 'mailto' ಎಂಬ ಯೋಜನೆಗೆ ಹೊಂದಿಸಿರಬೇಕು ಮತ್ತು ಯೋಜನೆಯನ್ನು ನಿರ್ವಹಿಸುವಂತಹ ಅಪ್ಲಿಕೇಶನ್ನ URL ನಮೂನೆಗೆ ಗುಣಲಕ್ಷಣದ |url| ಅನ್ನು ಹೊಂದಿಸಿರಬೇಕು. ನಮೂನೆಯು '%s' ಅನ್ನು ಒಳಗೊಂಡಿರಬಹುದು, ಇದು ಪ್ರದರ್ಶನಗೊಂಡರೆ ನಿರ್ವಹಣಾ URL ಮೂಲಕ ಬದಲಾಯಿಸಲಾಗುತ್ತದೆ.
diff --git a/components/policy/resources/policy_templates_ml.xtb b/components/policy/resources/policy_templates_ml.xtb index bcf2c0d..9dccaced 100644 --- a/components/policy/resources/policy_templates_ml.xtb +++ b/components/policy/resources/policy_templates_ml.xtb
@@ -612,7 +612,7 @@ <translation id="2529700525201305165"><ph name="PRODUCT_NAME" />-ൽ സൈൻ ഇൻ ചെയ്യാൻ അനുവദിച്ച ഉപയോക്താക്കളെ നിയന്ത്രിക്കുക.</translation> <translation id="2529880111512635313">ഉപയോക്തൃ ശ്രദ്ധയോടെ ഇൻസ്റ്റാൾ ചെയ്ത ആപ്സിന്റെയും വിപുലീകരണങ്ങളുടെയും ലിസ്റ്റ് കോൺഫിഗർ ചെയ്യുക</translation> <translation id="253135976343875019">AC പവറിൽ പ്രവർത്തിക്കുമ്പോഴുള്ള നിഷ്ക്രിയ മുന്നറിയിപ്പ് കാലതാമസം</translation> -<translation id="2536283449105918306">'ടാബ്-അണ്ടർ' പരിരക്ഷ പ്രവർത്തനക്ഷമമാക്കുന്നു</translation> +<translation id="2536283449105918306">'ടാബ്-അണ്ടർ' പരിരക്ഷ പ്രവർത്തനക്ഷമമാക്കും</translation> <translation id="2552966063069741410">സമയമേഖല</translation> <translation id="2562339630163277285">തൽക്ഷണ ഫലങ്ങൾ ലഭ്യമാക്കാൻ ഉപയോഗിക്കുന്ന തിരയൽ എഞ്ചിനിന്റെ URL വ്യക്തമാക്കുന്നു. URL-ൽ <ph name="SEARCH_TERM_MARKER" /> സ്ട്രിംഗ് അടങ്ങിയിരിക്കണം, ഇത് അന്വേഷണ സമയത്ത് ഉപയോക്താവ് ഇതുവരെ നൽകിയിട്ടുള്ള ടെക്സ്റ്റിനെ മാറ്റി പകരം വയ്ക്കും. @@ -3098,12 +3098,12 @@ AC പവറിനും ബാറ്ററിയ്ക്കും വ്യത്യസ്ത ക്രമീകരണങ്ങളും ഉണ്ട്. </translation> <translation id="9105265795073104888">പ്രോക്സി കോൺഫിഗറേഷൻ ഓപ്ഷനുകളുടെ ഒരു ഉപഗണത്തെ മാത്രമേ Android ആപ്പുകൾക്ക് ലഭ്യമാക്കിയിട്ടുള്ളൂ. Android ആപ്പുകൾ സ്വമേധയാ പ്രോക്സി ഉപയോഗിക്കുന്നതിന് തിരഞ്ഞെടുത്തേക്കാം. പ്രോക്സി ഉപയോഗിക്കാൻ നിങ്ങൾക്ക് അവയെ നിർബന്ധിക്കാനാവില്ല.</translation> -<translation id="9110615239151047025">'ടാബ്-അണ്ടർ' പരിരക്ഷ പ്രവർത്തനക്ഷമമാക്കുന്നു, ഇതിനാൽ 'ടാബ്-അണ്ടറുകൾ' ആയി തിരിച്ചറിയപ്പെടുന്ന നാവിഗേഷനുകൾ ബ്ലോക്ക് ചെയ്യപ്പെടും. +<translation id="9110615239151047025">'ടാബ്-അണ്ടർ' പരിരക്ഷ പ്രവർത്തനക്ഷമമാക്കും, ഇതിനാൽ 'ടാബ്-അണ്ടറുകൾ' ആയി തിരിച്ചറിയപ്പെടുന്ന നാവിഗേഷനുകൾ ബ്ലോക്ക് ചെയ്യപ്പെടും. - 'ടാബ്-അണ്ടറുക'ളെ കുറിച്ചുള്ള ഒരു വിശദീകരണത്തിന്, കാണുക https://www.chromestatus.com/features/5675755719622656. + 'ടാബ്-അണ്ടറുക'ളെ കുറിച്ചുള്ള വിവരങ്ങൾക്ക്, https://www.chromestatus.com/features/5675755719622656 കാണുക. ഈ നയം 'ട്രൂ' ആയി സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, ഇതിനാൽ 'ടാബ്-അണ്ടറുകൾ' ആയി <ph name="PRODUCT_NAME" /> തിരിച്ചറിയുന്ന നാവിഗേഷനുകൾ ബ്ലോക്ക് ചെയ്യപ്പെടും. ഈ നയം 'ഫാൾസ്' ആയി സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ, 'ടാബ്-അണ്ടർ' നാവിഗേഷനുകൾ നിർവഹിക്കാൻ സൈറ്റുകളെ <ph name="PRODUCT_NAME" /> അനുവദിക്കും. - ഡിഫോൾട്ട് ആയി, ഈ നയം 'ട്രൂ' ആയാണ് സജ്ജീകരിച്ചിരിക്കുക.</translation> + ഡിഫോൾട്ട് ആയി, ഈ നയം 'ട്രൂ' ആയാണ് സജ്ജീകരിച്ചിട്ടുള്ളത്.</translation> <translation id="9112727953998243860">എന്റർപ്രൈസ് പ്രിന്റർ കോൺഫിഗറേഷൻ ഫയൽ</translation> <translation id="9112897538922695510">പ്രോട്ടോക്കോൾ ഹാന്ഡ്ലറുകളുടെ ഒരു ലിസ്റ്റ് രജിസ്റ്റര് ചെയ്യാൻ നിങ്ങളെ അനിവദിക്കുന്നു. ഇതൊരു ശുപാർശ ചെയ്തിരിക്കുന്ന നയം മാത്രമായിരിക്കും. പ്രോപ്പർട്ടി |protocol|, 'mailto' എന്നതുപോലെയുള്ള സ്കീമിലേക്ക് സജ്ജമാക്കിയിരിക്കണം ഒപ്പം പ്രോപ്പർട്ടി |url|, സ്കീം കൈകാര്യംചെയ്യുന്ന അപ്ലിക്കേഷന്റെ URL പാറ്റേണിലേക്ക് സജ്ജമാക്കിയിരിക്കണം. '%s' നിലവിലുണ്ടെങ്കിലും പാറ്റേണിൽ അത് ഉൾപ്പെട്ടിരിക്കാം, ഒപ്പം അത് നിയന്ത്രിത URL ഉപയോഗിച്ച് മാറ്റി പകരം വയ്ക്കും.
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb index 40caa28..62f9707 100644 --- a/components/policy/resources/policy_templates_nl.xtb +++ b/components/policy/resources/policy_templates_nl.xtb
@@ -2668,9 +2668,9 @@ <translation id="9110615239151047025">Hiermee wordt bescherming tegen tab-unders ingeschakeld, waardoor navigaties worden geblokkeerd wanneer deze als onderliggende tabbladen worden gedetecteerd. Voor een uitleg van tab-unders, ga je naar https://www.chromestatus.com/features/5675755719622656. - Als dit beleid is ingesteld op Waar, worden navigaties geblokkeerd waarvan <ph name="PRODUCT_NAME" /> detecteert dat het tab-unders betreft. - Als dit beleid is ingesteld op Onwaar, <ph name="PRODUCT_NAME" /> kunnen sites tab-under-navigaties uitvoeren. - Dit beleid is standaard ingesteld op Waar.</translation> + Als dit beleid is ingesteld op True (waar), worden navigaties geblokkeerd waarvan <ph name="PRODUCT_NAME" /> detecteert dat het tab-unders betreft. + Als dit beleid is ingesteld op False (onwaar), <ph name="PRODUCT_NAME" /> kunnen sites tab-under-navigaties uitvoeren. + Dit beleid is standaard ingesteld op True (waar).</translation> <translation id="9112727953998243860">Configuratiebestand voor bedrijfsprinters</translation> <translation id="9112897538922695510">Hiermee kun je een lijst met protocolhandlers registreren. Dit kan alleen een aanbevolen beleid zijn. De eigenschap |protocol| moet worden ingesteld op het schema, zoals 'mailto', en de eigenschap |url| moet worden ingesteld op het URL-patroon van de app die het schema verwerkt. Het patroon kan een '%s' bevatten, die indien aanwezig wordt vervangen door de verwerkte URL.
diff --git a/components/policy/resources/policy_templates_no.xtb b/components/policy/resources/policy_templates_no.xtb index fad7f791..0086f00f 100644 --- a/components/policy/resources/policy_templates_no.xtb +++ b/components/policy/resources/policy_templates_no.xtb
@@ -523,6 +523,7 @@ <translation id="2529700525201305165">Begrens hvilke brukere som kan logge seg på <ph name="PRODUCT_NAME" /></translation> <translation id="2529880111512635313">Konfigurer listen over tvangsinstallerte programmer og utvidelser</translation> <translation id="253135976343875019">Forsinkelse for advarsel om inaktivitet når enheten kjører på AC-strøm</translation> +<translation id="2536283449105918306">Aktiverer beskyttelse mot at nettsteder både kan navigere til andre sider og åpne nye faner eller vinduer</translation> <translation id="2552966063069741410">Tidssone</translation> <translation id="2562339630163277285">Spesifiserer nettadressen for søkemotoren som brukes, for å gi umiddelbare resultater. Nettadressen må inneholde strengen <ph name="SEARCH_TERM_MARKER" />, som erstattes med teksten brukeren har skrevet inn hittil, når søket utføres. @@ -2630,6 +2631,12 @@ <translation id="9096086085182305205">Godkjenningsliste for autentiseringstjener</translation> <translation id="9098553063150791878">Regler for HTTP-autentisering</translation> <translation id="9105265795073104888">Bare en undergruppe av konfigurasjonsalternativer for proxy-tjenere er gjort tilgjengelig for Android-apper. Android-apper kan velge å bruke proxy-tjeneren frivillig. Du kan ikke tvinge dem til å bruke proxy-tjenere.</translation> +<translation id="9110615239151047025">Aktiverer beskyttelse mot at nettsteder både kan navigere til andre sider og åpne nye faner eller vinduer. Dette blokkerer slik navigering. + + Du finner en forklaring på hva dette betyr, på https://www.chromestatus.com/features/5675755719622656. + Hvis denne regelen er satt til «True» (sann), blokkeres navigering som <ph name="PRODUCT_NAME" /> oppdager som å innebære både navigering til andre sider og åpning av nye faner eller vinduer. + Hvis denne regelen er satt til «False» (usann), tillater <ph name="PRODUCT_NAME" /> at nettsteder både kan navigere til andre sider og åpne nye faner eller vinduer. + Som standard er denne regelen satt til «True» (sann).</translation> <translation id="9112727953998243860">Konfigurasjonsfil for bedriftsskriver</translation> <translation id="9112897538922695510">Med denne innstillingen kan du registrere en liste over protokollbehandlere. Dette er bare en anbefalt innstilling. Egenskapen |protocol| bør settes til det aktuelle skjemaet, for eksempel «mailto», og egenskapen |url| bør settes til nettadressemønsteret for appen som behandler skjemaet. Mønsteret kan inkludere en «%s» som, hvis den brukes, erstattes av nettadressen som behandles.
diff --git a/components/policy/resources/policy_templates_pl.xtb b/components/policy/resources/policy_templates_pl.xtb index 94d27c78..0a1520d 100644 --- a/components/policy/resources/policy_templates_pl.xtb +++ b/components/policy/resources/policy_templates_pl.xtb
@@ -2547,7 +2547,7 @@ <translation id="9105265795073104888">Aplikacje na Androida mają dostęp tylko do niektórych opcji konfiguracji serwera proxy. Nie można wymusić, by używały serwera proxy. Mogą go używać dobrowolnie.</translation> <translation id="9110615239151047025">Włącza ochronę przed ukrywaniem karty pod nowym oknem, czyli blokowanie wykrytych elementów nawigacyjnych stosujących ten mechanizm. - Aby dowiedzieć się, czym jest ukrywanie karty pod nowym oknem, zobacz https://www.chromestatus.com/features/5675755719622656. + Aby dowiedzieć się, czym jest ukrywanie karty pod nowym oknem, otwórz https://www.chromestatus.com/features/5675755719622656. Jeśli ta zasada jest włączona, wykryte przez <ph name="PRODUCT_NAME" /> elementy nawigacyjne stosujące ukrywanie karty pod nowym oknem są blokowane. Jeśli ta zasada jest wyłączona, <ph name="PRODUCT_NAME" /> pozwoli używać takich elementów nawigacyjnych na stronach. Domyślnie ta zasada jest włączona.</translation>
diff --git a/components/policy/resources/policy_templates_sl.xtb b/components/policy/resources/policy_templates_sl.xtb index 8a4bf77..de6a2091 100644 --- a/components/policy/resources/policy_templates_sl.xtb +++ b/components/policy/resources/policy_templates_sl.xtb
@@ -535,7 +535,7 @@ <translation id="2529700525201305165">Določa, kateri uporabniki se lahko prijavijo v storitev <ph name="PRODUCT_NAME" />.</translation> <translation id="2529880111512635313">Konfiguriranje seznama vsiljenih namestitev aplikacij in razširitev</translation> <translation id="253135976343875019">Časovni zamik opozorila o nedejavnosti ob napajanju iz električnega omrežja</translation> -<translation id="2536283449105918306">Omogoča zaščito pred odpiranjem neželenih zavihkov (»tab-under«)</translation> +<translation id="2536283449105918306">Omogoča zaščito pred odpiranjem drugotnih zavihkov (»tab-under«)</translation> <translation id="2552966063069741410">Časovni pas</translation> <translation id="2562339630163277285">Določa URL iskalnika, ki se uporablja za prikaz rezultatov dinamičnega iskanja. URL mora vsebovati niz »<ph name="SEARCH_TERM_MARKER" />«, ki ga bo ob času poizvedbe nadomestilo besedilo, ki ga je uporabnik vnesel do takrat. @@ -2689,11 +2689,11 @@ <translation id="9096086085182305205">Seznam dovoljenih strežnikov za preverjanje pristnosti</translation> <translation id="9098553063150791878">Pravilniki za preverjanje pristnosti HTTP</translation> <translation id="9105265795073104888">Aplikacijam za Android je dan na voljo samo podnabor nastavitev strežnika proxy. Aplikacije za Android se lahko prostovoljno odločijo, da bodo uporabljale strežnik proxy. V to jih ni mogoče prisiliti.</translation> -<translation id="9110615239151047025">Omogoča zaščito pred odpiranjem neželenih zavihkov (»tab-under«), ki blokira krmarjenja, zaznana kot odpiranja neželenih zavihkov (»tab-under«). +<translation id="9110615239151047025">Omogoča zaščito pred odpiranjem drugotnih zavihkov (»tab-under«), ki blokira krmarjenja, zaznana kot odpiranja drugotnih zavihkov (»tab-under«). - Če želite prebrati, kaj pomeni odpiranje neželenih zavihkov ali »tab-under«, obiščite https://www.chromestatus.com/features/5675755719622656. - Če je ta pravilnik omogočen, so krmarjenja, ki jih <ph name="PRODUCT_NAME" /> prepozna kot odpiranja neželenih zavihkov (»tab-under«), blokirana. - Če je ta pravilnik onemogočen, <ph name="PRODUCT_NAME" /> spletnim mestom dovoli krmarjenja z odpiranjem neželenih zavihkov (»tab-under«). + Če želite prebrati, kaj pomeni odpiranje drugotnih zavihkov ali »tab-under«, obiščite https://www.chromestatus.com/features/5675755719622656. + Če je ta pravilnik omogočen, so krmarjenja, ki jih <ph name="PRODUCT_NAME" /> prepozna kot odpiranja drugotnih zavihkov (»tab-under«), blokirana. + Če je ta pravilnik onemogočen, <ph name="PRODUCT_NAME" /> spletnim mestom dovoli krmarjenja z odpiranjem drugotnih zavihkov (»tab-under«). Ta pravilnik je privzeto omogočen.</translation> <translation id="9112727953998243860">Datoteka s konfiguracijami tiskalnikov v podjetjih</translation> <translation id="9112897538922695510">Omogoča registracijo seznama rutin za obravnavo protokolov. Ta pravilnik je lahko samo priporočen. Lastnost |protocol| mora biti nastavljena na shemo, kot je »mailto«, in lastnost |url| mora biti nastavljena na vzorec URL aplikacije, ki obravnava shemo. Vzorec lahko vsebuje »%s«. Če ga, ta nadomesti obravnavani URL.
diff --git a/components/policy/resources/policy_templates_sw.xtb b/components/policy/resources/policy_templates_sw.xtb index 26b6259..c11d1cdb 100644 --- a/components/policy/resources/policy_templates_sw.xtb +++ b/components/policy/resources/policy_templates_sw.xtb
@@ -517,7 +517,7 @@ <translation id="2529700525201305165">Zuia ni watumiaji wapi ambao wanaruhusiwa kuingia kwenye <ph name="PRODUCT_NAME" /></translation> <translation id="2529880111512635313">Sanidi orodha ya programu na viendelezi vilivyosakinishwa kwa nguvu</translation> <translation id="253135976343875019">Onyo ya kuchelewa wakati wa kutokuwa na shughuli wakati wa kuendesha kwa nishati ya AC</translation> -<translation id="2536283449105918306">Huwasha ulinzi wa tab-under</translation> +<translation id="2536283449105918306">Huwasha uzuiaji wa kufungua kidirisha au kichupo moja kwa moja</translation> <translation id="2552966063069741410">Saa za eneo:</translation> <translation id="2562339630163277285">Hubainisha URL ya mtambo wa kutafuta inayotumiwa kutoa matokeo ya papo hapo. URL inapaswa kuwa na mfuatano wa <ph name="SEARCH_TERM_MARKER" />, ambao nafasi yake itachukuliwa wakati wa kuandika hoja ya maandishi ambayo mtumiaji atakuwa ameweka. @@ -2638,12 +2638,12 @@ <translation id="9096086085182305205">Orodha ya kuidhinisha ya seva ya uthibitishaji</translation> <translation id="9098553063150791878">Sera za uthibitishaji wa HTTP</translation> <translation id="9105265795073104888">Chaguo za kuweka mipangilio ya seva mbadala zinazofuata pekee hupatikana kwa programu za Android. Programu za Android zinaweza kuchagua kutumia seva mbadala. Huwezi kuzilazimisha zitumie seva mbadala.</translation> -<translation id="9110615239151047025">Huwasha ulinzi wa tab-under, ambao unazuia usogezaji unaotambuliwa kama tab-under. +<translation id="9110615239151047025">Huwasha uzuiaji wa kidirisha au kichupo moja kwa moja. Huzuia usogezaji unaotambuliwa kuwa ufunguaji wa vidirisha au vichupo vilivyo chini. - Ili upate ufafanuzi kuhusu tab-under, angalia + Ili upate ufafanuzi kuhusu ufunguaji wa vidirisha au vichupo chinichini, angalia https://www.chromestatus.com/features/5675755719622656. - Ikiwa sera hii imewekwa kuwa Ndivyo, usogezaji ambao <ph name="PRODUCT_NAME" /> inatambua kuwa wa tab-unders utazuiliwa. - Ikiwa sera hii imewekwa kuwa Sivyo, <ph name="PRODUCT_NAME" /> itaruhusu tovuti zitekeleze usogezaji wa tab-under. + Ikiwa sera hii imewekwa kuwa Ndivyo, usogezaji ambao <ph name="PRODUCT_NAME" /> inatambua kuwa wa vidirisha au vichupo vilivyo chini utazuiliwa. + Ikiwa sera hii imewekwa kuwa Sivyo, <ph name="PRODUCT_NAME" /> itaruhusu tovuti zitekeleze usogezaji wa vidirisha au vichupo vilivyo chini. Kwa chaguomsingi, sera hii imewekwa kuwa Ndivyo.</translation> <translation id="9112727953998243860">Faili za mipangilio ya printa ya biashara</translation> <translation id="9112897538922695510">Hukuruhusu kusajili orodha ya vishikilizi vya itifaki. Hii inaweza kuwa sera iliyopendekezwa pekee. Sifa |protocol| inastahili kuwekwa kuwa mpango kama vile 'mailto' na sifa |url| inastahili kuwekwa kuwa mpangilio wa URL ya programu inayoshikilia mpango. Mpangilio unajumuisha '%s', ambayo ikiwepo itabadilishwa na URL iliyoshikiliwa.
diff --git a/components/policy/resources/policy_templates_ta.xtb b/components/policy/resources/policy_templates_ta.xtb index 9f2b854b..487c85f 100644 --- a/components/policy/resources/policy_templates_ta.xtb +++ b/components/policy/resources/policy_templates_ta.xtb
@@ -1828,7 +1828,7 @@ <translation id="6810445994095397827">இந்த தளங்களில் JavaScript ஐத் தடு </translation> <translation id="681446116407619279">ஆதரிக்கப்படும் அங்கீகாரத் திட்டங்கள்</translation> <translation id="6835883744948188639">மீண்டும் தொடங்குவது பரிந்துரைக்கப்படுகிறது என்பதைக் குறிக்கும், தொடர்ச்சியாகத் தெரியும் அறிவிப்பைப் பயனருக்குக் காட்டு</translation> -<translation id="6856743875250214792">இந்தக் கொள்கையானது, அகச் சோதனைக்கு மட்டும் பயன்படுத்தப்பட்டதாலும் இது பாதுகாப்பைப் பொறுத்தவரை ஒரு குறையாக இருந்ததாலும் M66 இல் தடுக்கப்பட்டு, அகற்றப்பட்டது. +<translation id="6856743875250214792">இந்தக் கொள்கையானது, அகச் சோதனைக்கு மட்டும் பயன்படுத்தப்பட்டதாலும் இது பாதுகாப்புப் பொறுப்பு என்பதாலும், இது M66 இல் தடுக்கப்பட்டு, அகற்றப்பட்டது. <ph name="PRODUCT_NAME" /> தொடங்கும்போது பயன்படுத்தப்பட வேண்டிய கொடிகளைக் குறிப்பிடுகிறது. குறிப்பிட்ட கொடிகள், உள்நுழைவுத் திரையில் மட்டுமே பயன்படுத்தப்படும். இந்தக் கொள்கை மூலம் அமைக்கப்படும் கொடிகள், பயனர் அமர்வுகளில் செயல்படாது.</translation> <translation id="685769593149966548">YouTube இல் கண்டிப்புக் கட்டுப்பாட்டுப் பயன்முறையைக் கட்டாயப்படுத்து</translation> @@ -2512,10 +2512,10 @@ <translation id="9096086085182305205">அங்கீகார சேவையக அனுமதி பட்டியல்</translation> <translation id="9098553063150791878">HTTP அங்கீகரிப்பிற்கான கொள்கைகள்</translation> <translation id="9105265795073104888">Android பயன்பாடுகளுக்கு ப்ராக்ஸி உள்ளமைவின் துணைக்குழு விருப்பங்கள் மட்டுமே கிடைக்கும்படி செய்யப்படும். Android பயன்பாடுகள் தானாகவே ப்ராக்ஸியைப் பயன்படுத்துவதற்குத் தேர்வுசெய்யலாம். அவை ப்ராக்ஸியைப் பயன்படுத்த வேண்டும் என நீங்கள் கட்டாயப்படுத்த முடியாது.</translation> -<translation id="9110615239151047025">அடித்தாவலாகக் கண்டறியும் வழிசெலுத்தல்களைத் தடுக்கும், அடித்தாவல் பாதுகாப்பை இயக்கும். +<translation id="9110615239151047025">அடித்தாவல் பாதுகாப்பை இயக்கும். இது அடித்தாவலாகக் கண்டறியப்படும் வழிசெலுத்தல்களைத் தடுக்கும். tab-unders பற்றிய விளக்கத்திற்கு, https://www.chromestatus.com/features/5675755719622656 என்ற இணைப்பைப் பார்க்கவும். - இந்தக் கொள்கையைச் சரி என அமைத்தால், <ph name="PRODUCT_NAME" /> அடித்தாவலாகக் கண்டறியும் வழிசெலுத்தல்கள் தடுக்கப்படும். + இந்தக் கொள்கையைச் சரி என அமைத்தால், <ph name="PRODUCT_NAME" /> அடித்தாவலாகக் கண்டறியப்படும் வழிசெலுத்தல்கள் தடுக்கப்படும். இந்தக் கொள்கையைத் தவறு என அமைத்தால், அடித்தாவல் வழிசெலுத்தல்களைச் செய்ய <ph name="PRODUCT_NAME" /> தளங்களை அனுமதிக்கும். இயல்பாக, இந்தக் கொள்கை சரி என அமைக்கப்படும்.</translation> <translation id="9112727953998243860">நிறுவனப் பிரிண்டரின் உள்ளமைவுக் கோப்பு</translation>
diff --git a/components/rlz/rlz_tracker_unittest.cc b/components/rlz/rlz_tracker_unittest.cc index 0ed70ac..7241967e 100644 --- a/components/rlz/rlz_tracker_unittest.cc +++ b/components/rlz/rlz_tracker_unittest.cc
@@ -284,6 +284,9 @@ std::make_unique<chromeos::system::FakeStatisticsProvider>(); chromeos::system::StatisticsProvider::SetTestProvider( statistics_provider_.get()); + statistics_provider_->SetMachineStatistic( + chromeos::system::kShouldSendRlzPingKey, + chromeos::system::kShouldSendRlzPingValueTrue); #endif // defined(OS_CHROMEOS) } @@ -1024,6 +1027,42 @@ ExpectEventRecorded(OmniboxFirstSearch(), false); } + +TEST_F(RlzLibTest, DoNotRecordEventUnlessShouldSendRlzPingKeyIsTrue) { + // Verify the event is recorded when |kShouldSendRlzPingKey| is true. + std::string should_send_rlz_ping_value; + ASSERT_TRUE(statistics_provider_->GetMachineStatistic( + chromeos::system::kShouldSendRlzPingKey, &should_send_rlz_ping_value)); + ASSERT_EQ(should_send_rlz_ping_value, + chromeos::system::kShouldSendRlzPingValueTrue); + RLZTracker::RecordProductEvent(rlz_lib::CHROME, RLZTracker::ChromeOmnibox(), + rlz_lib::FIRST_SEARCH); + ExpectEventRecorded(OmniboxFirstSearch(), true); + + // Verify the event is not recorded when |kShouldSendRlzPingKey| is false. + RLZTracker::ClearRlzState(); + ExpectEventRecorded(OmniboxFirstSearch(), false); + statistics_provider_->SetMachineStatistic( + chromeos::system::kShouldSendRlzPingKey, + chromeos::system::kShouldSendRlzPingValueFalse); + ASSERT_TRUE(statistics_provider_->GetMachineStatistic( + chromeos::system::kShouldSendRlzPingKey, &should_send_rlz_ping_value)); + ASSERT_EQ(should_send_rlz_ping_value, + chromeos::system::kShouldSendRlzPingValueFalse); + RLZTracker::RecordProductEvent(rlz_lib::CHROME, RLZTracker::ChromeOmnibox(), + rlz_lib::FIRST_SEARCH); + ExpectEventRecorded(OmniboxFirstSearch(), false); + + // Verify the event is not recorded when |kShouldSendRlzPingKey| does not + // exist. + statistics_provider_->ClearMachineStatistic( + chromeos::system::kShouldSendRlzPingKey); + ASSERT_FALSE(statistics_provider_->GetMachineStatistic( + chromeos::system::kShouldSendRlzPingKey, &should_send_rlz_ping_value)); + RLZTracker::RecordProductEvent(rlz_lib::CHROME, RLZTracker::ChromeOmnibox(), + rlz_lib::FIRST_SEARCH); + ExpectEventRecorded(OmniboxFirstSearch(), false); +} #endif // defined(OS_CHROMEOS) } // namespace rlz
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb index ab9c7e64f..8d1419b 100644 --- a/components/strings/components_strings_ca.xtb +++ b/components/strings/components_strings_ca.xtb
@@ -492,7 +492,7 @@ <translation id="4668929960204016307">,</translation> <translation id="467662567472608290">El servidor no ha pogut comprovar que sigui <ph name="DOMAIN" /> perquè el seu certificat de seguretat conté errors. Això pot ser a causa d'una configuració incorrecta o d'un atacant que intercepta la vostra connexió.</translation> <translation id="4690462567478992370">Deixa de fer servir un certificat no vàlid</translation> -<translation id="4690954380545377795">Podries perdre l'accés al compte de Google o o tenir problemes de suplantació d'identitat. Chrome et recomana que canviïs la contrasenya ara.</translation> +<translation id="4690954380545377795">Podries perdre l'accés al compte de Google o tenir problemes de suplantació d'identitat. Chrome et recomana que canviïs la contrasenya ara.</translation> <translation id="4701488924964507374"><ph name="SENTENCE1" /> <ph name="SENTENCE2" /></translation> <translation id="4708268264240856090">La connexió s'ha interromput</translation> <translation id="471880041731876836">No tens permís per visitar aquest lloc web</translation> @@ -844,7 +844,7 @@ <translation id="7549584377607005141">Aquesta pàgina web necessita dades que heu introduït anteiorment per poder mostrar-la correctament. Podeu tornar a enviar les dades, però es tornarà a repetir qualsevol acció que la pàgina hagi dut a terme prèviament.</translation> <translation id="7552846755917812628">Prova els consells següents:</translation> <translation id="7554791636758816595">Pestanya nova</translation> -<translation id="7564049878696755256">Podries perdre l'accés al compte de <ph name="ORG_NAME" /> o tenir problemes de suplantació d'identitat. Chrome et recomana que restableixis la contrasenya ara.</translation> +<translation id="7564049878696755256">Podries perdre l'accés al compte de <ph name="ORG_NAME" /> o tenir problemes de suplantació d'identitat. Chrome et recomana que canviïs la contrasenya ara.</translation> <translation id="7567204685887185387">Aquest servidor no ha pogut comprovar que sigui <ph name="DOMAIN" /> perquè és possible que el seu certificat de seguretat s'hagi emès de manera fraudulenta. Això pot ser a causa d'una configuració incorrecta o d'un atacant que intercepta la vostra connexió.</translation> <translation id="7568593326407688803">Aquesta pàgina està en<ph name="ORIGINAL_LANGUAGE" />Voleu traduir-la?</translation> <translation id="7569952961197462199">Voleu suprimir la targeta de crèdit de Chrome?</translation> @@ -1000,7 +1000,7 @@ <translation id="8761567432415473239">Recentment, amb Navegació segura de Google s'han <ph name="BEGIN_LINK" />detectat programes perjudicials<ph name="END_LINK" /> al lloc <ph name="SITE" />.</translation> <translation id="8763927697961133303">Dispositiu USB</translation> <translation id="8790007591277257123">&Refés la supressió</translation> -<translation id="8792621596287649091">Podries perdre l'accés al compte de <ph name="ORG_NAME" /> o tenir problemes de suplantació d'identitat. Chromium et recomana que restableixis la contrasenya ara.</translation> +<translation id="8792621596287649091">Podries perdre l'accés al compte de <ph name="ORG_NAME" /> o tenir problemes de suplantació d'identitat. Chromium et recomana que canviïs la contrasenya ara.</translation> <translation id="8800988563907321413">Els suggeriments més propers es mostren aquí</translation> <translation id="8820817407110198400">Adreces d'interès</translation> <translation id="883848425547221593">Altres adreces d'interès</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb index 1cc31b1e..0406265 100644 --- a/components/strings/components_strings_es.xtb +++ b/components/strings/components_strings_es.xtb
@@ -844,7 +844,7 @@ <translation id="7549584377607005141">Esta página web necesita los datos introducidos anteriormente para mostrarse correctamente. Puedes volver a enviar los datos, pero se repetirán las acciones que haya realizado la página.</translation> <translation id="7552846755917812628">Prueba los siguientes consejos:</translation> <translation id="7554791636758816595">Nueva pestaña</translation> -<translation id="7564049878696755256">Podrías perder el acceso a tu cuenta de <ph name="ORG_NAME" /> o tener problemas de suplantación de identidad. Chrome te recomienda que cambies tu contraseña.</translation> +<translation id="7564049878696755256">Podrías perder el acceso a tu cuenta de <ph name="ORG_NAME" /> o tener problemas de suplantación de identidad. Chrome te recomienda que cambies tu contraseña ahora.</translation> <translation id="7567204685887185387">Este servidor no ha podido probar que su dominio es <ph name="DOMAIN" />, su certificado de seguridad podría haberse emitido de forma fraudulenta. El problema puede deberse a una configuración incorrecta o a que un atacante haya interceptado la conexión.</translation> <translation id="7568593326407688803">Esta página está escrita en<ph name="ORIGINAL_LANGUAGE" />¿Quieres traducirla?</translation> <translation id="7569952961197462199">¿Eliminar tarjeta de crédito de Chrome?</translation> @@ -1000,7 +1000,7 @@ <translation id="8761567432415473239">La función de Navegación Segura de Google <ph name="BEGIN_LINK" />encontró programas dañinos<ph name="END_LINK" /> recientemente en el sitio <ph name="SITE" />.</translation> <translation id="8763927697961133303">Dispositivo USB</translation> <translation id="8790007591277257123">&Rehacer eliminación</translation> -<translation id="8792621596287649091">Podrías perder el acceso a tu cuenta de <ph name="ORG_NAME" /> o tener problemas de suplantación de identidad. Chromium te recomienda que cambies tu contraseña.</translation> +<translation id="8792621596287649091">Podrías perder el acceso a tu cuenta de <ph name="ORG_NAME" /> o tener problemas de suplantación de identidad. Chromium te recomienda que cambies tu contraseña ahora.</translation> <translation id="8800988563907321413">Las sugerencias de la sección Cercanas aparecen aquí</translation> <translation id="8820817407110198400">Marcadores</translation> <translation id="883848425547221593">Otros marcadores</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb index 816a8dc..f34a2769 100644 --- a/components/strings/components_strings_gu.xtb +++ b/components/strings/components_strings_gu.xtb
@@ -141,6 +141,7 @@ <translation id="1974060860693918893">વિગતવાર</translation> <translation id="1978555033938440688">ફર્મવેયર સંસ્કરણ</translation> <translation id="2001146170449793414">{COUNT,plural, =1{અને 1 વધુ}one{અને # વધુ}other{અને # વધુ}}</translation> +<translation id="2003709556000175978">તમારો પાસવર્ડ હમણાં જ રીસેટ કરો</translation> <translation id="2025186561304664664">પ્રોક્સી સ્વતઃ ગોઠવાયેલી પર સેટ છે.</translation> <translation id="2030481566774242610">શું તમારો અર્થ <ph name="LINK" /> છે?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />પ્રોક્સી અને ફાયરવોલ તપાસીને<ph name="END_LINK" /></translation> @@ -148,6 +149,7 @@ <translation id="2064691555167957331">{COUNT,plural, =1{1 સૂચન}one{# સૂચન}other{# સૂચન}}</translation> <translation id="2079545284768500474">પૂર્વવત કરો</translation> <translation id="20817612488360358">સિસ્ટમ પ્રોક્સી સેટિંગ્સ ઉપયોગમાં લેવા માટે સેટ છે પણ એક સ્પષ્ટ પ્રોક્સી ગોઠવણી પણ ઉલ્લેખિત કરેલી છે.</translation> +<translation id="2084558088529668945">તમે એવી સાઇટ પર તમારો પાસવર્ડ દાખલ કર્યો કે જે <ph name="ORG_NAME" /> દ્વારા મેનેજ કરવામાં આવતી નથી. તમારા એકાઉન્ટને સુરક્ષિત કરવા માટે, અન્ય ઍપ અને સાઇટ પર તમારા પાસવર્ડનો ફરી ઉપયોગ કરશો નહીં.</translation> <translation id="2091887806945687916">ધ્વનિ</translation> <translation id="2094505752054353250">ડોમેન મેળ ખાતું નથી</translation> <translation id="2096368010154057602">વિભાગ</translation> @@ -443,6 +445,7 @@ <translation id="4171400957073367226">ખોટી ચકાસણી સહી</translation> <translation id="4173827307318847180">{MORE_ITEMS,plural, =1{વધુ <ph name="ITEM_COUNT" /> આઇટમ}one{વધુ <ph name="ITEM_COUNT" /> આઇટમ}other{વધુ <ph name="ITEM_COUNT" /> આઇટમ}}</translation> <translation id="4179515394835346607"><ph name="ROW_NAME" /> <ph name="ROW_CONTENT" /></translation> +<translation id="4192549185358213268">જો તમે અન્ય સાઇટ પર <ph name="ORG_NAME" /> પાસવર્ડનો ફરી ઉપયોગ કર્યો હોય, તો Chrome તેને રીસેટ કરવાની ભલામણ કરે છે.</translation> <translation id="4196861286325780578">&ખસેડવું ફરી કરો</translation> <translation id="4203896806696719780"><ph name="BEGIN_LINK" />ફાયરવોલ અને એન્ટીવાઇરસ ગોઠવણી તપાસીને<ph name="END_LINK" /></translation> <translation id="4220128509585149162">ક્રેશેસ</translation> @@ -456,6 +459,7 @@ <translation id="4265872034478892965">તમારા વ્યવસ્થાપક દ્વારા મંજૂર</translation> <translation id="4269787794583293679">(કોઇ વપરાશકર્તાનામ નથી)</translation> <translation id="4275830172053184480">તમારું ઉપકરણ પુનઃપ્રારંભ કરો</translation> +<translation id="4277028893293644418">પાસવર્ડ રીસેટ કરો</translation> <translation id="4280429058323657511">, સમાપ્તિ તારીખ <ph name="EXPIRATION_DATE_ABBR" /></translation> <translation id="4312866146174492540">અવરોધિત કરો (ડિફૉલ્ટ)</translation> <translation id="4325863107915753736">લેખ શોધવામાં નિષ્ફળ થયાં</translation> @@ -652,6 +656,7 @@ <translation id="5869405914158311789">આ સાઇટ પર પહોંચી શકાતું નથી</translation> <translation id="5869522115854928033">સાચવેલા પાસવર્ડ્સ</translation> <translation id="5893752035575986141">ક્રેડિટ કાર્ડ સ્વીકારવામાં આવે છે.</translation> +<translation id="5898382028489516745">જો તમે અન્ય સાઇટ પર <ph name="ORG_NAME" /> પાસવર્ડનો ફરી ઉપયોગ કર્યો હોય, તો Chromium તેને રીસેટ કરવાની ભલામણ કરે છે.</translation> <translation id="5908541034548427511"><ph name="TYPE_1" /> (સમન્વયિત)</translation> <translation id="5920262536204764679">{NUM_COOKIES,plural, =1{1 ઉપયોગમાં છે}one{# ઉપયોગમાં છે}other{# ઉપયોગમાં છે}}</translation> <translation id="5939518447894949180">રીસેટ કરો</translation> @@ -723,6 +728,7 @@ <translation id="647261751007945333">ઉપકરણ નીતિઓ</translation> <translation id="6477321094435799029">Chrome ને આ પૃષ્ઠ પર અસામાન્ય કોડ મળ્યો અને તમારી વ્યક્તિગત માહિતી (ઉદાહરણ તરીકે, પાસવર્ડ્સ, ફોન નંબર્સ અને ક્રેડિટ કાર્ડ્સ)ની સુરક્ષા કરવા માટે તેને અવરોધિત કરેલ છે.</translation> <translation id="6489534406876378309">ક્રેશ અપલોડ કરવાનું શરૂ કરો</translation> +<translation id="6499038740797743453">પાસવર્ડ રીસેટ કરીએ?</translation> <translation id="6507833130742554667">ક્રેડિટ અને ડેબિટ કાર્ડ સ્વીકારવામાં આવે છે.</translation> <translation id="6508722015517270189">Chrome ને પુનઃપ્રારંભ કરો</translation> <translation id="6529602333819889595">&કાઢી નાખવું ફરી કરો</translation> @@ -838,6 +844,7 @@ <translation id="7549584377607005141">આ વેબપૃષ્ઠને તે ડેટાની જરૂર છે જે તમે પહેલા બરાબર રીતે પ્રદર્શિત થાય તે માટે દાખલ કર્યો હતો. તમે આ ડેટા ફરીથી મોકલી શકો છો, પણ આમ કરીને તમે કોઈપણ ક્રિયા કે જે પૃષ્ઠ પહેલા જ કરી ચુક્યું છે તેનું પુનરાવર્તન કરશો.</translation> <translation id="7552846755917812628">નીચેની ટિપને અજમાવો:</translation> <translation id="7554791636758816595">નવું ટૅબ</translation> +<translation id="7564049878696755256">તમે તમારા <ph name="ORG_NAME" /> એકાઉન્ટનો ઍક્સેસ ગુમાવી શકો છો અથવા તમને ઓળખ ચોરીનો અનુભવ થઈ શકે છે. Chrome તમને હમણાં જ તમારો પાસવર્ડ બદલવાની ભલામણ કરે છે.</translation> <translation id="7567204685887185387">આ સર્વર સાબિત કરી શક્યું નથી કે તે <ph name="DOMAIN" /> છે; તેનું સુરક્ષા પ્રમાણપત્ર કપટપૂર્વક રજૂ કરવામાં આવેલ હોઈ શકે છે. આ કોઈ ખોટી ગોઠવણીને કારણે થયું હશે અથવા કોઈ હુમલાખોર તમારા કનેક્શનને અટકાવી રહ્યો છે.</translation> <translation id="7568593326407688803">આ પૃષ્ઠ<ph name="ORIGINAL_LANGUAGE" />માં છે શું તમે તેને અનુવાદિત કરવા માંગો છો?</translation> <translation id="7569952961197462199">Chrome માંથી ક્રેડિટ કાર્ડ દૂર કરીએ?</translation> @@ -993,6 +1000,7 @@ <translation id="8761567432415473239">Google Safe Browsing ને તાજેતરમાં <ph name="SITE" /> પર <ph name="BEGIN_LINK" />હાનિકારક પ્રોગ્રામ્સ મળ્યાં<ph name="END_LINK" />.</translation> <translation id="8763927697961133303">USB ઉપકરણ</translation> <translation id="8790007591277257123">&કાઢી નાખવું ફરી કરો</translation> +<translation id="8792621596287649091">તમે તમારા <ph name="ORG_NAME" /> એકાઉન્ટનો ઍક્સેસ ગુમાવી શકો છો અથવા તમને ઓળખ ચોરીનો અનુભવ થઈ શકે છે. Chromium તમને હમણાં જ તમારો પાસવર્ડ બદલવાની ભલામણ કરે છે.</translation> <translation id="8800988563907321413">તમારા નજીકના સૂચનો અહીં દેખાય છે</translation> <translation id="8820817407110198400">બુકમાર્ક્સ</translation> <translation id="883848425547221593">અન્ય બુકમાર્ક્સ</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb index a4c409a..eb7304c 100644 --- a/components/strings/components_strings_id.xtb +++ b/components/strings/components_strings_id.xtb
@@ -844,7 +844,7 @@ <translation id="7549584377607005141">Halaman web ini membutuhkan data yang Anda masukkan sebelumnya agar dapat ditampilkan dengan benar. Anda dapat mengirimkan data ini lagi, namun dengan begitu Anda akan mengulangi tindakan apa pun yang sebelumnya dilakukan oleh halaman ini.</translation> <translation id="7552846755917812628">Coba tips berikut:</translation> <translation id="7554791636758816595">Tab Baru</translation> -<translation id="7564049878696755256">Anda dapat kehilangan akses ke akun <ph name="ORG_NAME" /> atau mengalami pencurian identias. Chrome menyarankan Anda untuk mengubah sandi sekarang.</translation> +<translation id="7564049878696755256">Anda dapat kehilangan akses ke akun <ph name="ORG_NAME" /> atau mengalami pencurian identitas. Chrome menyarankan Anda untuk mengubah sandi sekarang.</translation> <translation id="7567204685887185387">Server ini tidak dapat membuktikan bahwa ini adalah <ph name="DOMAIN" />; sertifikat keamanannya mungkin telah dikeluarkan dengan curang. Hal ini disebabkan oleh kesalahan konfigurasi atau penyerang memotong sambungan Anda.</translation> <translation id="7568593326407688803">Halaman ini dalam bahasa<ph name="ORIGINAL_LANGUAGE" />Ingin diterjemahkan?</translation> <translation id="7569952961197462199">Hapus kartu kredit dari Chrome?</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb index b82f4d6..9dccd97 100644 --- a/components/strings/components_strings_it.xtb +++ b/components/strings/components_strings_it.xtb
@@ -724,7 +724,7 @@ <translation id="647261751007945333">Norme dispositivo</translation> <translation id="6477321094435799029">Chrome ha rilevato un codice insolito su questa pagina e l'ha bloccata per proteggere le tue informazioni personali (ad esempio password, numeri di telefono e carte di credito).</translation> <translation id="6489534406876378309">Avvia caricamento arresti anomali</translation> -<translation id="6499038740797743453">Vuoi reimpostare la password?</translation> +<translation id="6499038740797743453">Reimpostare la password?</translation> <translation id="6507833130742554667">Le carte di credito e di debito sono accettate.</translation> <translation id="6508722015517270189">Riavvia Chrome</translation> <translation id="6529602333819889595">&Ripeti eliminazione</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb index 76b947d..3eb57e58 100644 --- a/components/strings/components_strings_ja.xtb +++ b/components/strings/components_strings_ja.xtb
@@ -149,7 +149,7 @@ <translation id="2064691555167957331">{COUNT,plural, =1{1 件の候補}other{# 件の候補}}</translation> <translation id="2079545284768500474">元に戻す</translation> <translation id="20817612488360358">システム プロキシ設定を使用するように設定されていますが、明示的なプロキシの設定も指定されています。</translation> -<translation id="2084558088529668945"><ph name="ORG_NAME" /> の管理していないサイトでパスワードを入力しました。アカウントを保護するには、他のアプリやサイトでパスワードを再使用しないでください。</translation> +<translation id="2084558088529668945"><ph name="ORG_NAME" /> が管理していないサイトでパスワードを入力しました。アカウントを保護するには、他のアプリやサイトでパスワードを再使用しないでください。</translation> <translation id="2091887806945687916">音声</translation> <translation id="2094505752054353250">ドメインが一致しません</translation> <translation id="2096368010154057602">県</translation>
diff --git a/components/strings/components_strings_kn.xtb b/components/strings/components_strings_kn.xtb index cb55df9..90ecb60 100644 --- a/components/strings/components_strings_kn.xtb +++ b/components/strings/components_strings_kn.xtb
@@ -149,7 +149,7 @@ <translation id="2064691555167957331">{COUNT,plural, =1{1 ಸಲಹೆ}one{# ಸಲಹೆಗಳು}other{# ಸಲಹೆಗಳು}}</translation> <translation id="2079545284768500474">ರದ್ದುಮಾಡಿ</translation> <translation id="20817612488360358">ಸಿಸ್ಟಂ ಪ್ರಾಕ್ಸಿ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಬಳಸಲು ಹೊಂದಿಸಲಾಗಿದೆ ಆದರೆ ಬಹಿರಂಗವಾದ ಪ್ರಾಕ್ಸಿ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಸಹ ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ.</translation> -<translation id="2084558088529668945">ಸೈಟ್ನಲ್ಲಿ ನೀವು ನಮೂದಿಸಿರುವ ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು <ph name="ORG_NAME" /> ನಿಂದ ನಿರ್ವಹಿಸಲಾಗುವುದಿಲ್ಲ. ನಿಮ್ಮ ಖಾತೆಯನ್ನು ರಕ್ಷಿಸಲು, ಇತರ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ ಮತ್ತು ಸೈಟ್ಗಳಲ್ಲಿ ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡಬೇಡಿ.</translation> +<translation id="2084558088529668945">ನೀವು ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು <ph name="ORG_NAME" /> ನಿರ್ವಹಣೆ ಮಾಡದ ಸೈಟ್ನಲ್ಲಿ ನಮೂದಿಸಿದ್ದೀರಿ. ನಿಮ್ಮ ಖಾತೆಯನ್ನು ರಕ್ಷಿಸಲು, ಇತರ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ ಮತ್ತು ಸೈಟ್ಗಳಲ್ಲಿ ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡಬೇಡಿ.</translation> <translation id="2091887806945687916">ಶಬ್ಧ</translation> <translation id="2094505752054353250">ಡೊಮೇನ್ ಹೊಂದುತ್ತಿಲ್ಲ</translation> <translation id="2096368010154057602">ವಿಭಾಗ</translation> @@ -839,7 +839,7 @@ <translation id="7549584377607005141">ಈ ವೆಬ್ಪುಟವು ಸರಿಯಾಗಿ ಪ್ರದರ್ಶನಗೊಳ್ಳಲು ಈ ಮೊದಲು ನೀವು ನಮೂದಿಸಿದ ಡೇಟಾದ ಅಗತ್ಯವಿದೆ. ನೀವು ಈ ಡೇಟಾವನ್ನು ಮತ್ತೆ ಕಳುಹಿಸಬಹುದು, ಆದರೆ ಹಾಗೆ ಮಾಡುವುದರಿಂದ ಈ ಪುಟವು ಈ ಮೊದಲು ಪೂರೈಸಿದ ಯಾವುದೇ ಕ್ರಿಯೆಯನ್ನು ನೀವು ಪುನರಾವರ್ತಿಸುತ್ತೀರಿ.</translation> <translation id="7552846755917812628">ಕೆಳಗಿನ ಸಲಹೆಗಳನ್ನು ಪ್ರಯತ್ನಿಸಿ:</translation> <translation id="7554791636758816595">ಹೊಸ ಟ್ಯಾಬ್</translation> -<translation id="7564049878696755256">ನಿಮ್ಮ <ph name="ORG_NAME" />ಖಾತೆಗೆ ನೀವು ಪ್ರವೇಶವನ್ನು ಕಳೆದುಕೊಳ್ಳಬಹುದು ಅಥವಾ ಗುರುತು ಕಳ್ಳತನಕ್ಕೆ ಒಳಗಾಗಬಹುದು. ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಇದೀಗ ಬದಲಾಯಿಸುವಂತೆ Chrome ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.</translation> +<translation id="7564049878696755256">ನಿಮ್ಮ <ph name="ORG_NAME" /> ಖಾತೆಗೆ ನೀವು ಪ್ರವೇಶವನ್ನು ಕಳೆದುಕೊಳ್ಳಬಹುದು ಅಥವಾ ಗುರುತು ಕಳ್ಳತನಕ್ಕೆ ಒಳಗಾಗಬಹುದು. ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಇದೀಗ ಬದಲಾಯಿಸುವಂತೆ Chrome ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.</translation> <translation id="7567204685887185387">ಈ ಸರ್ವರ್ <ph name="DOMAIN" /> ಆಗಿದೆ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ; ಅದರ ಸುರಕ್ಷತಾ ಪ್ರಮಾಣಪತ್ರವನ್ನು ವಂಚನೆಯಿಂದ ನೀಡಿರಬಹುದು. ಇದು ತಪ್ಪು ಕಾನ್ಫಿಗರೇಶನ್ನಿಂದ ಅಥವಾ ಆಕ್ರಮಣಕಾರರು ನಿಮ್ಮ ಸಂಪರ್ಕದಲ್ಲಿ ಒಳನುಸುಳಿರುವುದರಿಂದ ಆಗಿರಬಹುದು.</translation> <translation id="7568593326407688803">ಈ ಪುಟವು<ph name="ORIGINAL_LANGUAGE" />ನಲ್ಲಿದೆ ನೀವು ಅದನ್ನು ಭಾಷಾಂತರಿಸಲು ಬಯಸುವಿರಾ?</translation> <translation id="7569952961197462199">Chrome ನಿಂದ ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ತೆಗೆದುಹಾಕುವುದೇ?</translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb index c5883da9..373924c 100644 --- a/components/strings/components_strings_no.xtb +++ b/components/strings/components_strings_no.xtb
@@ -141,6 +141,7 @@ <translation id="1974060860693918893">Avansert</translation> <translation id="1978555033938440688">Fastvareversjon</translation> <translation id="2001146170449793414">{COUNT,plural, =1{og 1 til}other{og # til}}</translation> +<translation id="2003709556000175978">Tilbakestill passordet ditt nå</translation> <translation id="2025186561304664664">Mellomtjeneren er innstilt på automatisk konfigurasjon.</translation> <translation id="2030481566774242610">Mener du <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />Sjekk proxy-tjeneren og brannmuren<ph name="END_LINK" /></translation> @@ -148,6 +149,7 @@ <translation id="2064691555167957331">{COUNT,plural, =1{1 forslag}other{# forslag}}</translation> <translation id="2079545284768500474">Angre</translation> <translation id="20817612488360358">Innstillinger for systemmellomtjener er stilt inn på å brukes, men en uttrykkelig mellomtjenerkonfigurasjon er også angitt.</translation> +<translation id="2084558088529668945">Du har skrevet inn passordet ditt på et nettsted som ikke administreres av <ph name="ORG_NAME" />. For å beskytte kontoen din må du ikke bruke det samme passordet i andre apper og på andre nettsteder.</translation> <translation id="2091887806945687916">Lyd</translation> <translation id="2094505752054353250">Domenene samsvarer ikke</translation> <translation id="2096368010154057602">Avdeling</translation> @@ -443,6 +445,7 @@ <translation id="4171400957073367226">Ugyldig bekreftelsessignatur</translation> <translation id="4173827307318847180">{MORE_ITEMS,plural, =1{<ph name="ITEM_COUNT" /> element til}other{<ph name="ITEM_COUNT" /> elementer til}}</translation> <translation id="4179515394835346607"><ph name="ROW_NAME" /> <ph name="ROW_CONTENT" /></translation> +<translation id="4192549185358213268">Chrome anbefaler at du tilbakestiller passordet ditt for <ph name="ORG_NAME" /> hvis du også har brukt det på andre nettsteder.</translation> <translation id="4196861286325780578">&Flytt likevel</translation> <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Sjekk brannmur- og antiviruskonfigurasjonen<ph name="END_LINK" /></translation> <translation id="4220128509585149162">Kræsj</translation> @@ -456,6 +459,7 @@ <translation id="4265872034478892965">Tillatt av administratoren din</translation> <translation id="4269787794583293679">(Uten brukernavn)</translation> <translation id="4275830172053184480">Start enheten din på nytt</translation> +<translation id="4277028893293644418">Tilbakestill passordet</translation> <translation id="4280429058323657511">, utløper <ph name="EXPIRATION_DATE_ABBR" /></translation> <translation id="4312866146174492540">Blokkér (standard)</translation> <translation id="4325863107915753736">Artikkelen ble ikke funnet</translation> @@ -652,6 +656,7 @@ <translation id="5869405914158311789">Dette nettstedet er ikke tilgjengelig</translation> <translation id="5869522115854928033">Lagrede passord</translation> <translation id="5893752035575986141">Kredittkort godtas.</translation> +<translation id="5898382028489516745">Chromium anbefaler at du tilbakestiller passordet ditt for <ph name="ORG_NAME" /> hvis du også har brukt det på andre nettsteder.</translation> <translation id="5908541034548427511"><ph name="TYPE_1" /> (synkronisert)</translation> <translation id="5920262536204764679">{NUM_COOKIES,plural, =1{1 er i bruk}other{# er i bruk}}</translation> <translation id="5939518447894949180">Tilbakestill</translation> @@ -723,6 +728,7 @@ <translation id="647261751007945333">Enhetsinnstillinger</translation> <translation id="6477321094435799029">Chrome har oppdaget uvanlig kode på denne siden og blokkert den for å beskytte personopplysningene dine (for eksempel passord, telefonnumre og kredittkortinformasjon).</translation> <translation id="6489534406876378309">Start opplastingen av krasj</translation> +<translation id="6499038740797743453">Vil du tilbakestille passordet?</translation> <translation id="6507833130742554667">Kreditt- og debetkort godtas.</translation> <translation id="6508722015517270189">Start Chrome på nytt</translation> <translation id="6529602333819889595">&Slett likevel</translation> @@ -838,6 +844,7 @@ <translation id="7549584377607005141">Denne nettsiden krever data som du har skrevet inn tidligere for å vises korrekt. Du kan sende inn dataene på nytt, men hvis du gjør det, gjentas eventuelle handlinger denne siden utførte.</translation> <translation id="7552846755917812628">Prøv følgende tips:</translation> <translation id="7554791636758816595">Ny fane</translation> +<translation id="7564049878696755256">Du kan miste tilgangen til <ph name="ORG_NAME" />-kontoen din eller bli utsatt for identitetstyveri. Chrome anbefaler at du endrer passordet ditt nå.</translation> <translation id="7567204685887185387">Denne tjeneren kunne ikke bevise at den er <ph name="DOMAIN" />. Tjenerens sikkerhetssertifikat kan ha blitt utstedt på uredelig vis. Dette kan være forårsaket av en feilkonfigurering eller en angriper som avskjærer tilkoblingen din.</translation> <translation id="7568593326407688803">Denne siden er på<ph name="ORIGINAL_LANGUAGE" />Vil du ha den oversatt?</translation> <translation id="7569952961197462199">Vil du fjerne kredittkortet fra Chrome?</translation> @@ -993,6 +1000,7 @@ <translation id="8761567432415473239">Google Safe Browsing oppdaget nylig <ph name="BEGIN_LINK" />skadelige programmer<ph name="END_LINK" /> på <ph name="SITE" />.</translation> <translation id="8763927697961133303">USB-enhet</translation> <translation id="8790007591277257123">&Slett likevel</translation> +<translation id="8792621596287649091">Du kan miste tilgangen til <ph name="ORG_NAME" />-kontoen din eller bli utsatt for identitetstyveri. Chromium anbefaler at du endrer passordet ditt nå.</translation> <translation id="8800988563907321413">Forslagene dine om ting like ved vises her</translation> <translation id="8820817407110198400">Bokmerker</translation> <translation id="883848425547221593">Andre bokmerker</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb index 8d17f2c..cd9ad05 100644 --- a/components/strings/components_strings_pt-BR.xtb +++ b/components/strings/components_strings_pt-BR.xtb
@@ -149,7 +149,7 @@ <translation id="2064691555167957331">{COUNT,plural, =1{1 sugestão}one{# sugestão}other{# sugestões}}</translation> <translation id="2079545284768500474">Desfazer</translation> <translation id="20817612488360358">As configurações de proxy do sistema são definidas para serem utilizadas, mas uma configuração explícita de proxy também foi especificada.</translation> -<translation id="2084558088529668945">Você informou sua senha em um site que não é gerenciado pelo <ph name="ORG_NAME" />. Para proteger sua conta, não reutilize sua senha em outros apps e sites.</translation> +<translation id="2084558088529668945">Você informou sua senha em um site que não é gerenciado por <ph name="ORG_NAME" />. Para proteger sua conta, não reutilize sua senha em outros apps e sites.</translation> <translation id="2091887806945687916">Som</translation> <translation id="2094505752054353250">Incompatibilidade de domínio</translation> <translation id="2096368010154057602">Departamento</translation> @@ -445,7 +445,7 @@ <translation id="4171400957073367226">Assinatura de verificação inválida</translation> <translation id="4173827307318847180">{MORE_ITEMS,plural, =1{Mais <ph name="ITEM_COUNT" /> item}one{Mais <ph name="ITEM_COUNT" /> item}other{Mais <ph name="ITEM_COUNT" /> itens}}</translation> <translation id="4179515394835346607"><ph name="ROW_NAME" />: <ph name="ROW_CONTENT" /></translation> -<translation id="4192549185358213268">O Chrome recomenda redefinir sua senha do <ph name="ORG_NAME" /> se você a reutilizou em outros sites.</translation> +<translation id="4192549185358213268">O Chrome recomenda redefinir sua senha de <ph name="ORG_NAME" /> se você a reutilizou em outros sites.</translation> <translation id="4196861286325780578">&Refazer mover</translation> <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Verificar as configurações do antivírus e firewall<ph name="END_LINK" /></translation> <translation id="4220128509585149162">Falhas</translation> @@ -656,7 +656,7 @@ <translation id="5869405914158311789">Não é possível acessar esse site</translation> <translation id="5869522115854928033">Senhas salvas</translation> <translation id="5893752035575986141">Cartões de crédito são aceitos.</translation> -<translation id="5898382028489516745">O Chromium recomenda redefinir sua senha do <ph name="ORG_NAME" /> se você a reutilizou em outros sites.</translation> +<translation id="5898382028489516745">O Chromium recomenda redefinir sua senha de <ph name="ORG_NAME" /> se você a reutilizou em outros sites.</translation> <translation id="5908541034548427511"><ph name="TYPE_1" /> (sincronizado)</translation> <translation id="5920262536204764679">{NUM_COOKIES,plural, =1{1 em uso}one{# em uso}other{# em uso}}</translation> <translation id="5939518447894949180">Redefinir</translation> @@ -844,7 +844,7 @@ <translation id="7549584377607005141">Esta página da Web requer os dados inseridos anteriormente para ser exibida de modo correto. É possível enviá-los novamente mas, ao fazer isso, você repete qualquer ação realizada anteriormente na página.</translation> <translation id="7552846755917812628">Tente seguir estas dicas:</translation> <translation id="7554791636758816595">Nova guia</translation> -<translation id="7564049878696755256">Você pode perder o acesso à sua conta do <ph name="ORG_NAME" /> ou ter sua identidade roubada. O Chrome recomenda que sua senha seja alterada agora.</translation> +<translation id="7564049878696755256">Você pode perder o acesso à sua conta de <ph name="ORG_NAME" /> ou ter sua identidade roubada. O Chrome recomenda que sua senha seja alterada agora.</translation> <translation id="7567204685887185387">Este servidor não conseguiu provar que é <ph name="DOMAIN" />. O certificado de segurança pode ter sido emitido de forma fraudulenta. Isso pode ser causado por uma configuração incorreta ou pela interceptação da sua conexão por um invasor.</translation> <translation id="7568593326407688803">Esta página está em<ph name="ORIGINAL_LANGUAGE" />Deseja traduzi-la?</translation> <translation id="7569952961197462199">Remover cartão de crédito do Chrome?</translation> @@ -1001,7 +1001,7 @@ <translation id="8761567432415473239">Recentemente, a Navegação Segura do Google <ph name="BEGIN_LINK" />encontrou programas nocivos<ph name="END_LINK" /> no site <ph name="SITE" />.</translation> <translation id="8763927697961133303">Dispositivo USB</translation> <translation id="8790007591277257123">&Refazer excluir</translation> -<translation id="8792621596287649091">Você pode perder o acesso à sua conta do <ph name="ORG_NAME" /> ou ter sua identidade roubada. O Chromium recomenda que sua senha seja alterada agora.</translation> +<translation id="8792621596287649091">Você pode perder o acesso à sua conta de <ph name="ORG_NAME" /> ou ter sua identidade roubada. O Chromium recomenda que sua senha seja alterada agora.</translation> <translation id="8800988563907321413">As sugestões de itens nas proximidades são exibidas aqui</translation> <translation id="8820817407110198400">Favoritos</translation> <translation id="883848425547221593">Outros favoritos</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb index cb3a367..51a7c48c 100644 --- a/components/strings/components_strings_sl.xtb +++ b/components/strings/components_strings_sl.xtb
@@ -141,7 +141,7 @@ <translation id="1974060860693918893">Dodatno</translation> <translation id="1978555033938440688">Različica vdelane programske opreme</translation> <translation id="2001146170449793414">{COUNT,plural, =1{in še 1}one{in še #}two{in še #}few{in še #}other{in še #}}</translation> -<translation id="2003709556000175978">Ponastavitev gesla</translation> +<translation id="2003709556000175978">Ponastavite geslo</translation> <translation id="2025186561304664664">Strežnik proxy je nastavljen na samodejno konfiguriranje.</translation> <translation id="2030481566774242610">Ali ste mislili <ph name="LINK" />?</translation> <translation id="2032962459168915086"><ph name="BEGIN_LINK" />preveriti strežnik proxy in požarni zid<ph name="END_LINK" /></translation> @@ -459,7 +459,7 @@ <translation id="4265872034478892965">Omogočil skrbnik</translation> <translation id="4269787794583293679">(Ni uporabniškega imena)</translation> <translation id="4275830172053184480">Znova zaženite napravo.</translation> -<translation id="4277028893293644418">Ponastavitev gesla</translation> +<translation id="4277028893293644418">Ponastavi geslo</translation> <translation id="4280429058323657511">, datum poteka veljavnosti: <ph name="EXPIRATION_DATE_ABBR" /></translation> <translation id="4312866146174492540">Blokira (privzeto)</translation> <translation id="4325863107915753736">Članka ni bilo mogoče najti</translation> @@ -656,7 +656,7 @@ <translation id="5869405914158311789">Tega spletnega mesta ni mogoče doseči</translation> <translation id="5869522115854928033">Shranjena gesla</translation> <translation id="5893752035575986141">Sprejema kreditne kartice.</translation> -<translation id="5898382028489516745">Chromium priporoča, da ponastavite geslo za <ph name="ORG_NAME" />, če ste ga uporabljali na drugih spletnih mestih.</translation> +<translation id="5898382028489516745">Chromium priporoča, da ponastavite geslo za <ph name="ORG_NAME" />, če ste ga uporabljali tudi na drugih spletnih mestih.</translation> <translation id="5908541034548427511"><ph name="TYPE_1" /> (sinhronizirano)</translation> <translation id="5920262536204764679">{NUM_COOKIES,plural, =1{1 v uporabi}one{# v uporabi}two{# v uporabi}few{# v uporabi}other{# v uporabi}}</translation> <translation id="5939518447894949180">Ponastavi</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb index 33a14d46..b847cb4 100644 --- a/components/strings/components_strings_sr.xtb +++ b/components/strings/components_strings_sr.xtb
@@ -149,7 +149,7 @@ <translation id="2064691555167957331">{COUNT,plural, =1{1 предлог}one{# предлог}few{# предлога}other{# предлога}}</translation> <translation id="2079545284768500474">Опозови</translation> <translation id="20817612488360358">Подешено је да се користе системска подешавања проксија, али је наведена експлицитна конфигурација проксија.</translation> -<translation id="2084558088529668945">Унели сте лозинку на сајту којим не управља организација <ph name="ORG_NAME" />. Да бисте заштитили налог, не користите лозинку поново у другим апликацијама и на другим сајтовима.</translation> +<translation id="2084558088529668945">Унели сте лозинку на сајту којим не управља <ph name="ORG_NAME" />. Да бисте заштитили налог, не користите лозинку поново у другим апликацијама ни на другим сајтовима.</translation> <translation id="2091887806945687916">Звук</translation> <translation id="2094505752054353250">Домени се не подударају</translation> <translation id="2096368010154057602">Департман</translation> @@ -445,7 +445,7 @@ <translation id="4171400957073367226">Неисправан потпис за верификацију</translation> <translation id="4173827307318847180">{MORE_ITEMS,plural, =1{још <ph name="ITEM_COUNT" /> ставка}one{још <ph name="ITEM_COUNT" /> ставка}few{још <ph name="ITEM_COUNT" /> ставке}other{још <ph name="ITEM_COUNT" /> ставки}}</translation> <translation id="4179515394835346607"><ph name="ROW_NAME" /> <ph name="ROW_CONTENT" /></translation> -<translation id="4192549185358213268">Chrome вам препоручује да ресетујете лозинку за организацију <ph name="ORG_NAME" /> ако сте је користили на другим сајтовима.</translation> +<translation id="4192549185358213268">Chrome вам препоручује да ресетујете лозинку за <ph name="ORG_NAME" /> ако сте је користили на другим сајтовима.</translation> <translation id="4196861286325780578">&Понови премештање</translation> <translation id="4203896806696719780"><ph name="BEGIN_LINK" />да проверите конфигурацију заштитног зида и антивируса<ph name="END_LINK" /></translation> <translation id="4220128509585149162">Отказивања</translation> @@ -656,7 +656,7 @@ <translation id="5869405914158311789">Овај сајт није доступан</translation> <translation id="5869522115854928033">Сачуване лозинке</translation> <translation id="5893752035575986141">Прихватају се кредитне картице.</translation> -<translation id="5898382028489516745">Chromium вам препоручује да ресетујете лозинку за организацију <ph name="ORG_NAME" /> ако сте је користили на другим сајтовима.</translation> +<translation id="5898382028489516745">Chromium вам препоручује да ресетујете лозинку за <ph name="ORG_NAME" /> ако сте је користили на другим сајтовима.</translation> <translation id="5908541034548427511"><ph name="TYPE_1" /> (синхронизовано)</translation> <translation id="5920262536204764679">{NUM_COOKIES,plural, =1{Користи се 1}one{Користи се #}few{Користе се #}other{Користи се #}}</translation> <translation id="5939518447894949180">Ресетуј</translation> @@ -843,7 +843,7 @@ <translation id="7549584377607005141">Ова веб-страница захтева податке које сте унели раније да би се правилно приказала. Можете поново да пошаљете те податке, али ако то урадите, поновићете било коју радњу коју је ова страница претходно обавила.</translation> <translation id="7552846755917812628">Испробајте следеће савете:</translation> <translation id="7554791636758816595">Нова картица</translation> -<translation id="7564049878696755256">Можете да изгубите приступ налогу за организацију <ph name="ORG_NAME" /> или би могло да дође до крађе идентитета. Chrome вам препоручује да одмах промените лозинку.</translation> +<translation id="7564049878696755256">Можете да изгубите приступ налогу за <ph name="ORG_NAME" /> или би могло да дође до крађе идентитета. Chrome вам препоручује да одмах промените лозинку.</translation> <translation id="7567204685887185387">Овај сервер не може да докаже да је <ph name="DOMAIN" />; његов безбедносни сертификат је можда лажно издат. Узрок томе је можда погрешна конфигурација или нападач који је прекинуо везу.</translation> <translation id="7568593326407688803">Ова страница је на језику:<ph name="ORIGINAL_LANGUAGE" />Желите ли да је преведете?</translation> <translation id="7569952961197462199">Желите ли да уклоните кредитну картицу из Chrome-а?</translation> @@ -1000,7 +1000,7 @@ <translation id="8761567432415473239">Google безбедно прегледање је недавно <ph name="BEGIN_LINK" />открило штетне програме<ph name="END_LINK" /> на <ph name="SITE" />.</translation> <translation id="8763927697961133303">USB уређај</translation> <translation id="8790007591277257123">&Понови брисање</translation> -<translation id="8792621596287649091">Можете да изгубите приступ налогу за организацију <ph name="ORG_NAME" /> или би могло да дође до крађе идентитета. Chromium вам препоручује да одмах промените лозинку.</translation> +<translation id="8792621596287649091">Можете да изгубите приступ налогу за <ph name="ORG_NAME" /> или би могло да дође до крађе идентитета. Chromium вам препоручује да одмах промените лозинку.</translation> <translation id="8800988563907321413">Предлози у близини ће се приказивати овде</translation> <translation id="8820817407110198400">Обележивачи</translation> <translation id="883848425547221593">Остали обележивачи</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb index 8e8a5d4c..62dfd20 100644 --- a/components/strings/components_strings_sw.xtb +++ b/components/strings/components_strings_sw.xtb
@@ -459,7 +459,7 @@ <translation id="4265872034478892965">Imeruhusiwa na msimamizi wako</translation> <translation id="4269787794583293679">(Hakuna jina la mtumiaji)</translation> <translation id="4275830172053184480">Washa upya kifaa chako</translation> -<translation id="4277028893293644418">Weka nenosiri jipya</translation> +<translation id="4277028893293644418">Badilisha nenosiri</translation> <translation id="4280429058323657511">, muda wa kutumika utakwisha <ph name="EXPIRATION_DATE_ABBR" /></translation> <translation id="4312866146174492540">Zuia (chaguo-msingi)</translation> <translation id="4325863107915753736">Haikupata makala</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb index 87d4b95..b7bb497e 100644 --- a/components/strings/components_strings_zh-CN.xtb +++ b/components/strings/components_strings_zh-CN.xtb
@@ -840,7 +840,7 @@ <translation id="7549584377607005141">此网页需要使用您之前输入的数据才能正常显示。您可以重新发送这些数据,不过,这么做会重复执行此网页之前执行过的所有操作。</translation> <translation id="7552846755917812628">请尝试按以下提示操作:</translation> <translation id="7554791636758816595">新标签页</translation> -<translation id="7564049878696755256">您可能会无法再访问自己的 <ph name="ORG_NAME" /> 帐号,或者遭遇身份信息被盗用。Chrome 建议您立即更改密码。</translation> +<translation id="7564049878696755256">您可能会无法再访问自己的 <ph name="ORG_NAME" /> 帐号,或者身份信息遭到盗用。Chrome 建议您立即更改密码。</translation> <translation id="7567204685887185387">此服务器无法证明它是<ph name="DOMAIN" />;其安全证书可能是由骗子发出的。出现此问题的原因可能是配置有误或您的连接被拦截了。</translation> <translation id="7568593326407688803">此网页为<ph name="ORIGINAL_LANGUAGE" />网页,是否需要翻译?</translation> <translation id="7569952961197462199">从 Chrome 中移除信用卡信息?</translation> @@ -997,7 +997,7 @@ <translation id="8761567432415473239">Google安全浏览功能最近在<ph name="SITE" />上<ph name="BEGIN_LINK" />发现了有害程序<ph name="END_LINK" />。</translation> <translation id="8763927697961133303">USB 设备</translation> <translation id="8790007591277257123">恢复删除(&R)</translation> -<translation id="8792621596287649091">您可能会无法再访问自己的 <ph name="ORG_NAME" /> 帐号,或者遭遇身份信息被盗用。Chromium 建议您立即更改密码。</translation> +<translation id="8792621596287649091">您可能会无法再访问自己的 <ph name="ORG_NAME" /> 帐号,或者身份信息遭到盗用。Chromium 建议您立即更改密码。</translation> <translation id="8800988563907321413">此处将显示系统建议您浏览的附近网页</translation> <translation id="8820817407110198400">书签</translation> <translation id="883848425547221593">其他书签</translation>
diff --git a/components/sync/user_events/user_event_sync_bridge.cc b/components/sync/user_events/user_event_sync_bridge.cc index 30933e2..5033a55 100644 --- a/components/sync/user_events/user_event_sync_bridge.cc +++ b/components/sync/user_events/user_event_sync_bridge.cc
@@ -81,7 +81,10 @@ &UserEventSyncBridge::HandleGlobalIdChange, base::AsWeakPtr(this))); } -UserEventSyncBridge::~UserEventSyncBridge() {} +UserEventSyncBridge::~UserEventSyncBridge() { + if (!deferred_user_events_while_initializing_.empty()) + LOG(ERROR) << "Non-empty event queue at shutdown!"; +} std::unique_ptr<MetadataChangeList> UserEventSyncBridge::CreateMetadataChangeList() { @@ -147,27 +150,28 @@ void UserEventSyncBridge::ApplyDisableSyncChanges( std::unique_ptr<MetadataChangeList> delete_metadata_change_list) { + // Sync can only be disabled after initialization. + DCHECK(deferred_user_events_while_initializing_.empty()); // No data should be retained through sign out. store_->DeleteAllDataAndMetadata(base::DoNothing()); } void UserEventSyncBridge::RecordUserEvent( std::unique_ptr<UserEventSpecifics> specifics) { - // TODO(skym): Remove this when ModelTypeStore synchronously returns a - // partially initialized reference, see crbug.com/709094. - if (!store_) { + if (change_processor()->IsTrackingMetadata()) { + RecordUserEventImpl(std::move(specifics)); return; } - // TODO(skym): Remove this when the processor can handle Put() calls before - // being given metadata, see crbug.com/761485. Dropping data on the floor here - // is better than just writing to the store, because it will be lost if sent - // to just the store, and bloat persistent storage indefinitely. - if (!change_processor()->IsTrackingMetadata()) { - return; - } + if (specifics->has_user_consent()) + deferred_user_events_while_initializing_.push_back(std::move(specifics)); +} + +void UserEventSyncBridge::RecordUserEventImpl( + std::unique_ptr<UserEventSpecifics> specifics) { + DCHECK(store_); + DCHECK(change_processor()->IsTrackingMetadata()); std::string storage_key = GetStorageKeyFromSpecifics(*specifics); - // There are two scenarios we need to guard against here. First, the given // user even may have been read from an old global_id timestamp off of a // navigation, which has already been re-written. In this case, we should be @@ -195,6 +199,15 @@ base::Bind(&UserEventSyncBridge::OnCommit, base::AsWeakPtr(this))); } +void UserEventSyncBridge::ProcessQueuedEvents() { + DCHECK(change_processor()->IsTrackingMetadata()); + for (std::unique_ptr<sync_pb::UserEventSpecifics>& event : + deferred_user_events_while_initializing_) { + RecordUserEventImpl(std::move(event)); + } + deferred_user_events_while_initializing_.clear(); +} + void UserEventSyncBridge::OnStoreCreated( const base::Optional<ModelError>& error, std::unique_ptr<ModelTypeStore> store) { @@ -215,6 +228,8 @@ change_processor()->ReportError(*error); } else { change_processor()->ModelReadyToSync(this, std::move(metadata_batch)); + DCHECK(change_processor()->IsTrackingMetadata()); + ProcessQueuedEvents(); } }
diff --git a/components/sync/user_events/user_event_sync_bridge.h b/components/sync/user_events/user_event_sync_bridge.h index 4a5a2f0d..a2c340c1 100644 --- a/components/sync/user_events/user_event_sync_bridge.h +++ b/components/sync/user_events/user_event_sync_bridge.h
@@ -10,6 +10,7 @@ #include <map> #include <memory> #include <string> +#include <vector> #include "base/macros.h" #include "base/optional.h" @@ -46,6 +47,10 @@ void RecordUserEvent(std::unique_ptr<sync_pb::UserEventSpecifics> specifics); private: + void RecordUserEventImpl( + std::unique_ptr<sync_pb::UserEventSpecifics> specifics); + void ProcessQueuedEvents(); + void OnStoreCreated(const base::Optional<ModelError>& error, std::unique_ptr<ModelTypeStore> store); void OnReadAllMetadata(const base::Optional<ModelError>& error, @@ -65,6 +70,11 @@ // delete upon commit confirmation. std::unique_ptr<ModelTypeStore> store_; + // Used to store important events while the store or change processor are not + // ready. This currently only handles user consents. + std::vector<std::unique_ptr<sync_pb::UserEventSpecifics>> + deferred_user_events_while_initializing_; + // The key is the global_id of the navigation the event is linked to. std::multimap<int64_t, sync_pb::UserEventSpecifics> in_flight_nav_linked_events_;
diff --git a/components/sync/user_events/user_event_sync_bridge_unittest.cc b/components/sync/user_events/user_event_sync_bridge_unittest.cc index 0f2f032..04233585 100644 --- a/components/sync/user_events/user_event_sync_bridge_unittest.cc +++ b/components/sync/user_events/user_event_sync_bridge_unittest.cc
@@ -11,6 +11,7 @@ #include "base/bind.h" #include "base/message_loop/message_loop.h" #include "base/run_loop.h" +#include "base/test/bind_test_util.h" #include "components/sync/driver/fake_sync_service.h" #include "components/sync/model/data_batch.h" #include "components/sync/model/mock_model_type_change_processor.h" @@ -321,6 +322,59 @@ EXPECT_THAT(GetAllData(), IsEmpty()); } +// User consents should be buffered if the bridge is not fully initialized. +// Other events should get dropped. +TEST_F(UserEventSyncBridgeTest, RecordWithLateInitializedStore) { + // Wait until bridge() is ready to avoid interference with processor() mock. + base::RunLoop().RunUntilIdle(); + + UserEventSpecifics consent1 = CreateSpecifics(1u, 1u, 1u); + consent1.mutable_user_consent(); + UserEventSpecifics consent2 = CreateSpecifics(2u, 2u, 2u); + consent2.mutable_user_consent(); + UserEventSpecifics specifics1 = CreateSpecifics(3u, 3u, 3u); + UserEventSpecifics specifics2 = CreateSpecifics(4u, 4u, 4u); + + ON_CALL(*processor(), IsTrackingMetadata()).WillByDefault(Return(false)); + ModelType store_init_type; + ModelTypeStore::InitCallback store_init_callback; + UserEventSyncBridge late_init_bridge( + base::BindLambdaForTesting( + [&](ModelType type, ModelTypeStore::InitCallback callback) { + store_init_type = type; + store_init_callback = std::move(callback); + }), + processor()->CreateForwardingProcessor(), mapper()); + + // Record events before the store is created. Only the consent will be + // buffered, the other event is dropped. + late_init_bridge.RecordUserEvent( + std::make_unique<UserEventSpecifics>(consent1)); + late_init_bridge.RecordUserEvent( + std::make_unique<UserEventSpecifics>(specifics1)); + + // Initialize the store. + EXPECT_CALL(*processor(), DoModelReadyToSync(&late_init_bridge, NotNull())); + ON_CALL(*processor(), IsTrackingMetadata()).WillByDefault(Return(true)); + std::move(store_init_callback) + .Run(base::nullopt, + ModelTypeStoreTestUtil::CreateInMemoryStoreForTest(store_init_type)); + + // Record events after metadata is ready. + late_init_bridge.RecordUserEvent( + std::make_unique<UserEventSpecifics>(consent2)); + late_init_bridge.RecordUserEvent( + std::make_unique<UserEventSpecifics>(specifics2)); + + base::RunLoop().RunUntilIdle(); + ASSERT_THAT( + GetAllData(), + UnorderedElementsAre( + Pair(GetStorageKey(consent1), MatchesUserEvent(consent1)), + Pair(GetStorageKey(consent2), MatchesUserEvent(consent2)), + Pair(GetStorageKey(specifics2), MatchesUserEvent(specifics2)))); +} + } // namespace } // namespace syncer
diff --git a/components/viz/host/hit_test/hit_test_query_fuzzer.cc b/components/viz/host/hit_test/hit_test_query_fuzzer.cc index ef3eb114..5bdfde0 100644 --- a/components/viz/host/hit_test/hit_test_query_fuzzer.cc +++ b/components/viz/host/hit_test/hit_test_query_fuzzer.cc
@@ -20,14 +20,17 @@ void AddHitTestRegion(base::FuzzedDataProvider* fuzz, std::vector<viz::AggregatedHitTestRegion>* regions, - std::vector<viz::FrameSinkId>* frame_sink_ids) { + std::vector<viz::FrameSinkId>* frame_sink_ids, + const uint32_t depth = 0) { + constexpr uint32_t kMaxDepthAllowed = 25; if (fuzz->remaining_bytes() < sizeof(viz::AggregatedHitTestRegion)) return; viz::FrameSinkId frame_sink_id(GetNextUInt32(fuzz), GetNextUInt32(fuzz)); uint32_t flags = GetNextUInt32(fuzz); gfx::Rect rect(fuzz->ConsumeUint8(), fuzz->ConsumeUint8(), fuzz->ConsumeUint16(), fuzz->ConsumeUint16()); - int32_t child_count = fuzz->ConsumeUint32InRange(0, 10); + int32_t child_count = + depth < kMaxDepthAllowed ? fuzz->ConsumeUint32InRange(0, 10) : 0; gfx::Transform transform; if (fuzz->ConsumeBool() && fuzz->remaining_bytes() >= sizeof(transform)) { std::string matrix_bytes = fuzz->ConsumeBytes(sizeof(gfx::Transform)); @@ -39,7 +42,7 @@ if (regions->size() == 1 || fuzz->ConsumeBool()) frame_sink_ids->push_back(frame_sink_id); while (child_count-- > 0) - AddHitTestRegion(fuzz, regions, frame_sink_ids); + AddHitTestRegion(fuzz, regions, frame_sink_ids, depth + 1); } class Environment {
diff --git a/content/BUILD.gn b/content/BUILD.gn index e487443..7c56748 100644 --- a/content/BUILD.gn +++ b/content/BUILD.gn
@@ -101,7 +101,7 @@ deps = [ "//base", "//media:media_buildflags", - "//sandbox:sandbox_features", + "//sandbox:sandbox_buildflags", "//sandbox/linux:sandbox", "//services/service_manager/sandbox", ]
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn index efe7dff..8df88764 100644 --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn
@@ -160,8 +160,8 @@ "//storage/browser", "//storage/common", "//third_party/WebKit/public:blink_headers", + "//third_party/WebKit/public:buildflags", "//third_party/WebKit/public:core_mojo_bindings", - "//third_party/WebKit/public:features", "//third_party/WebKit/public:mojo_bindings", "//third_party/WebKit/public:resources", "//third_party/WebKit/public:scaled_resources",
diff --git a/content/browser/DEPS b/content/browser/DEPS index 5b52dcb..2cefb324 100644 --- a/content/browser/DEPS +++ b/content/browser/DEPS
@@ -100,7 +100,7 @@ "+third_party/WebKit/public/platform/modules/screen_orientation/WebScreenOrientationLockType.h", "+third_party/WebKit/public/platform/modules/screen_orientation/WebScreenOrientationType.h", "+third_party/WebKit/public/platform/modules/serviceworker/WebServiceWorkerError.h", - "+third_party/WebKit/public/public_features.h", + "+third_party/WebKit/public/public_buildflags.h", "+third_party/WebKit/public/web/devtools_agent.mojom.h", "+third_party/WebKit/public/web/devtools_frontend.mojom.h", "+third_party/WebKit/public/web/WebAXEnums.h",
diff --git a/content/browser/accessibility/browser_accessibility.cc b/content/browser/accessibility/browser_accessibility.cc index c50392f..bfd96ed 100644 --- a/content/browser/accessibility/browser_accessibility.cc +++ b/content/browser/accessibility/browser_accessibility.cc
@@ -957,33 +957,32 @@ bool BrowserAccessibility::AccessibilityPerformAction( const ui::AXActionData& data) { - if (data.action == ax::mojom::Action::kDoDefault) { - manager_->DoDefaultAction(*this); - return true; + switch (data.action) { + case ax::mojom::Action::kDoDefault: + manager_->DoDefaultAction(*this); + return true; + case ax::mojom::Action::kFocus: + manager_->SetFocus(*this); + return true; + case ax::mojom::Action::kScrollToPoint: { + // target_point is in screen coordinates. We need to convert this to + // frame coordinates because that's what BrowserAccessiblity cares about. + gfx::Point target = + data.target_point - + manager_->GetRootManager()->GetViewBounds().OffsetFromOrigin(); + + manager_->ScrollToPoint(*this, target); + return true; + } + case ax::mojom::Action::kScrollToMakeVisible: + manager_->ScrollToMakeVisible(*this, data.target_rect); + return true; + case ax::mojom::Action::kSetValue: + manager_->SetValue(*this, data.value); + return true; + default: + return false; } - - if (data.action == ax::mojom::Action::kFocus) { - manager_->SetFocus(*this); - return true; - } - - if (data.action == ax::mojom::Action::kScrollToPoint) { - // target_point is in screen coordinates. We need to convert this to frame - // coordinates because that's what BrowserAccessiblity cares about. - gfx::Point target = - data.target_point - - manager_->GetRootManager()->GetViewBounds().OffsetFromOrigin(); - - manager_->ScrollToPoint(*this, target); - return true; - } - - if (data.action == ax::mojom::Action::kScrollToMakeVisible) { - manager_->ScrollToMakeVisible(*this, data.target_rect); - return true; - } - - return false; } bool BrowserAccessibility::ShouldIgnoreHoveredStateForTesting() {
diff --git a/content/browser/devtools/protocol/page_handler.cc b/content/browser/devtools/protocol/page_handler.cc index a76eb43b..8dc4689a 100644 --- a/content/browser/devtools/protocol/page_handler.cc +++ b/content/browser/devtools/protocol/page_handler.cc
@@ -230,6 +230,7 @@ const base::string16& message, const base::string16& default_prompt, JavaScriptDialogType dialog_type, + bool has_non_devtools_handlers, JavaScriptDialogCallback callback) { if (!enabled_) return; @@ -241,10 +242,12 @@ if (dialog_type == JAVASCRIPT_DIALOG_TYPE_PROMPT) type = Page::DialogTypeEnum::Prompt; frontend_->JavascriptDialogOpening(url.spec(), base::UTF16ToUTF8(message), - type, base::UTF16ToUTF8(default_prompt)); + type, has_non_devtools_handlers, + base::UTF16ToUTF8(default_prompt)); } void PageHandler::DidRunBeforeUnloadConfirm(const GURL& url, + bool has_non_devtools_handlers, JavaScriptDialogCallback callback) { if (!enabled_) return; @@ -252,7 +255,7 @@ pending_dialog_ = std::move(callback); frontend_->JavascriptDialogOpening(url.spec(), std::string(), Page::DialogTypeEnum::Beforeunload, - std::string()); + has_non_devtools_handlers, std::string()); } void PageHandler::DidCloseJavaScriptDialog(bool success,
diff --git a/content/browser/devtools/protocol/page_handler.h b/content/browser/devtools/protocol/page_handler.h index 9c1b84e6..d6e1716 100644 --- a/content/browser/devtools/protocol/page_handler.h +++ b/content/browser/devtools/protocol/page_handler.h
@@ -78,8 +78,10 @@ const base::string16& message, const base::string16& default_prompt, JavaScriptDialogType dialog_type, + bool has_non_devtools_handlers, JavaScriptDialogCallback callback); void DidRunBeforeUnloadConfirm(const GURL& url, + bool has_non_devtools_handlers, JavaScriptDialogCallback callback); void DidCloseJavaScriptDialog(bool success, const base::string16& user_input); void NavigationReset(NavigationRequest* navigation_request);
diff --git a/content/browser/loader/navigation_url_loader_network_service_unittest.cc b/content/browser/loader/navigation_url_loader_network_service_unittest.cc index 34aad1e7..84733385 100644 --- a/content/browser/loader/navigation_url_loader_network_service_unittest.cc +++ b/content/browser/loader/navigation_url_loader_network_service_unittest.cc
@@ -58,6 +58,7 @@ } ~TestNavigationLoaderInterceptor() override { + url_loader_ = nullptr; resource_scheduler_client_ = nullptr; context_->NotifyContextShuttingDown(); } @@ -74,10 +75,12 @@ network::mojom::URLLoaderRequest request, network::mojom::URLLoaderClientPtr client) { *most_recent_resource_request_ = resource_request; - // The URLLoader will delete itself upon completion. - new network::URLLoader( - context_, nullptr, std::move(request), 0 /* options */, - resource_request, false /* report_raw_headers */, std::move(client), + url_loader_ = std::make_unique<network::URLLoader>( + context_, nullptr, base::BindOnce([](network::URLLoader*) { + // Ignore self-deletion requests, for simplicity. + }), + std::move(request), 0 /* options */, resource_request, + false /* report_raw_headers */, std::move(client), TRAFFIC_ANNOTATION_FOR_TESTS, 0 /* process_id */, 0, /* request_id */ resource_scheduler_client_, nullptr); } @@ -96,6 +99,7 @@ network::ResourceScheduler resource_scheduler_; scoped_refptr<network::NetworkURLRequestContextGetter> context_; scoped_refptr<network::ResourceSchedulerClient> resource_scheduler_client_; + std::unique_ptr<network::URLLoader> url_loader_; }; } // namespace
diff --git a/content/browser/media/android/media_resource_getter_impl.cc b/content/browser/media/android/media_resource_getter_impl.cc index c9aa54d..73d5d89a 100644 --- a/content/browser/media/android/media_resource_getter_impl.cc +++ b/content/browser/media/android/media_resource_getter_impl.cc
@@ -4,9 +4,6 @@ #include "content/browser/media/android/media_resource_getter_impl.h" -#include "base/android/jni_android.h" -#include "base/android/jni_string.h" -#include "base/android/scoped_java_ref.h" #include "base/bind.h" #include "base/macros.h" #include "base/path_service.h" @@ -20,7 +17,6 @@ #include "content/public/browser/storage_partition.h" #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/canonical_cookie.h" @@ -31,10 +27,6 @@ #include "net/url_request/url_request_context_getter.h" #include "url/gurl.h" -using base::android::ConvertUTF8ToJavaString; -using base::android::JavaRef; -using base::android::ScopedJavaLocalRef; - namespace content { namespace { @@ -112,57 +104,6 @@ ReturnResultOnUIThread(std::move(callback), std::string()); } -// Posts a task to the UI thread to run the callback function. -static void PostMediaMetadataCallbackTask( - media::MediaResourceGetter::ExtractMediaMetadataCB callback, - JNIEnv* env, - ScopedJavaLocalRef<jobject>& j_metadata) { - BrowserThread::PostTask( - BrowserThread::UI, FROM_HERE, - base::BindOnce( - std::move(callback), - base::TimeDelta::FromMilliseconds( - Java_MediaMetadata_getDurationInMilliseconds(env, j_metadata)), - Java_MediaMetadata_getWidth(env, j_metadata), - Java_MediaMetadata_getHeight(env, j_metadata), - Java_MediaMetadata_isSuccess(env, j_metadata))); -} - -// 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, - const std::string& user_agent, - media::MediaResourceGetter::ExtractMediaMetadataCB callback) { - JNIEnv* env = base::android::AttachCurrentThread(); - - ScopedJavaLocalRef<jstring> j_url_string = ConvertUTF8ToJavaString(env, url); - ScopedJavaLocalRef<jstring> j_cookies = ConvertUTF8ToJavaString(env, cookies); - ScopedJavaLocalRef<jstring> j_user_agent = ConvertUTF8ToJavaString( - env, user_agent); - ScopedJavaLocalRef<jobject> j_metadata = - Java_MediaResourceGetter_extractMediaMetadata(env, j_url_string, - j_cookies, j_user_agent); - PostMediaMetadataCallbackTask(std::move(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_t offset, - const int64_t size, - media::MediaResourceGetter::ExtractMediaMetadataCB callback) { - JNIEnv* env = base::android::AttachCurrentThread(); - - ScopedJavaLocalRef<jobject> j_metadata = - Java_MediaResourceGetter_extractMediaMetadataFromFd( - env, fd, offset, size); - - PostMediaMetadataCallbackTask(std::move(callback), env, j_metadata); -} - // The task object that retrieves media resources on the IO thread. // TODO(qinmin): refactor this class to make the code reusable by others as // there are lots of duplicated functionalities elsewhere. @@ -310,28 +251,4 @@ std::move(callback).Run(platform_path); } -void MediaResourceGetterImpl::ExtractMediaMetadata( - const std::string& url, - const std::string& cookies, - const std::string& user_agent, - ExtractMediaMetadataCB callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - base::PostTaskWithTraits(FROM_HERE, - {base::MayBlock(), base::TaskPriority::USER_VISIBLE}, - base::BindOnce(&GetMediaMetadata, url, cookies, - user_agent, std::move(callback))); -} - -void MediaResourceGetterImpl::ExtractMediaMetadata( - const int fd, - const int64_t offset, - const int64_t size, - ExtractMediaMetadataCB callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - base::PostTaskWithTraits(FROM_HERE, - {base::MayBlock(), base::TaskPriority::USER_VISIBLE}, - base::BindOnce(&GetMediaMetadataFromFd, fd, offset, - size, std::move(callback))); -} - } // namespace content
diff --git a/content/browser/media/android/media_resource_getter_impl.h b/content/browser/media/android/media_resource_getter_impl.h index a67fabf..1b1b065 100644 --- a/content/browser/media/android/media_resource_getter_impl.h +++ b/content/browser/media/android/media_resource_getter_impl.h
@@ -49,14 +49,6 @@ GetCookieCB callback) override; void GetPlatformPathFromURL(const GURL& url, GetPlatformPathCB callback) override; - void ExtractMediaMetadata(const std::string& url, - const std::string& cookies, - const std::string& user_agent, - ExtractMediaMetadataCB callback) override; - void ExtractMediaMetadata(const int fd, - const int64_t offset, - const int64_t size, - ExtractMediaMetadataCB callback) override; private: // Called when GetAuthCredentials() finishes.
diff --git a/content/browser/renderer_host/media/audio_output_delegate_impl_unittest.cc b/content/browser/renderer_host/media/audio_output_delegate_impl_unittest.cc index c3927d3..5752a25 100644 --- a/content/browser/renderer_host/media/audio_output_delegate_impl_unittest.cc +++ b/content/browser/renderer_host/media/audio_output_delegate_impl_unittest.cc
@@ -12,7 +12,6 @@ #include "base/bind.h" #include "base/command_line.h" #include "base/memory/ptr_util.h" -#include "base/message_loop/message_loop.h" #include "base/run_loop.h" #include "base/sync_socket.h" #include "content/browser/media/capture/audio_mirroring_manager.h" @@ -593,11 +592,7 @@ // New tasks might be posted while we are syncing, but in every iteration at // least one task will be run. 20 iterations should be enough for our code. for (int i = 0; i < 20; ++i) { - { - base::MessageLoop::ScopedNestableTaskAllower allower( - base::MessageLoop::current()); - base::RunLoop().RunUntilIdle(); - } + base::RunLoop(base::RunLoop::Type::kNestableTasksAllowed).RunUntilIdle(); SyncWith(BrowserThread::GetTaskRunnerForThread(BrowserThread::UI)); SyncWith(audio_manager_->GetWorkerTaskRunner()); }
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc index 5ded056d..d1eed97 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -208,7 +208,7 @@ #include "services/service_manager/sandbox/switches.h" #include "storage/browser/fileapi/sandbox_file_system_backend.h" #include "third_party/WebKit/public/common/page/launching_process_state.h" -#include "third_party/WebKit/public/public_features.h" +#include "third_party/WebKit/public/public_buildflags.h" #include "third_party/skia/include/core/SkBitmap.h" #include "ui/base/ui_base_features.h" #include "ui/base/ui_base_switches.h"
diff --git a/content/browser/renderer_host/render_widget_host_ns_view_client.h b/content/browser/renderer_host/render_widget_host_ns_view_client.h index a862782..486982d 100644 --- a/content/browser/renderer_host/render_widget_host_ns_view_client.h +++ b/content/browser/renderer_host/render_widget_host_ns_view_client.h
@@ -61,6 +61,13 @@ virtual void OnNSViewForwardWheelEvent( const blink::WebMouseWheelEvent& web_event) = 0; + // Handling pinch gesture events. + virtual void OnNSViewGestureBegin(blink::WebGestureEvent begin_event) = 0; + virtual void OnNSViewGestureUpdate(blink::WebGestureEvent update_event) = 0; + virtual void OnNSViewGestureEnd(blink::WebGestureEvent end_event) = 0; + virtual void OnNSViewSmartMagnify( + const blink::WebGestureEvent& smart_magnify_event) = 0; + private: DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostNSViewClient); };
diff --git a/content/browser/renderer_host/render_widget_host_view_cocoa.h b/content/browser/renderer_host/render_widget_host_view_cocoa.h index a71b3b4..87cf1e89c 100644 --- a/content/browser/renderer_host/render_widget_host_view_cocoa.h +++ b/content/browser/renderer_host/render_widget_host_view_cocoa.h
@@ -148,27 +148,6 @@ // Event monitor for scroll wheel end event. id endWheelMonitor_; - // When a gesture starts, the system does not inform the view of which type - // of gesture is happening (magnify, rotate, etc), rather, it just informs - // the view that some as-yet-undefined gesture is starting. Capture the - // information about the gesture's beginning event here. It will be used to - // create a specific gesture begin event later. - std::unique_ptr<blink::WebGestureEvent> gestureBeginEvent_; - - // To avoid accidental pinches, require that a certain zoom threshold be - // reached before forwarding it to the browser. Use |pinchUnusedAmount_| to - // hold this value. If the user reaches this value, don't re-require the - // threshold be reached until the page has been zoomed back to page scale of - // one. - bool pinchHasReachedZoomThreshold_; - float pinchUnusedAmount_; - NSTimeInterval pinchLastGestureTimestamp_; - - // This is set if a GesturePinchBegin event has been sent in the lifetime of - // |gestureBeginEvent_|. If set, a GesturePinchEnd will be sent when the - // gesture ends. - BOOL gestureBeginPinchSent_; - // This is used to indicate if a stylus is currently in the proximity of the // tablet. bool isStylusEnteringProximity_;
diff --git a/content/browser/renderer_host/render_widget_host_view_cocoa.mm b/content/browser/renderer_host/render_widget_host_view_cocoa.mm index 4cf94ab2..40a8253 100644 --- a/content/browser/renderer_host/render_widget_host_view_cocoa.mm +++ b/content/browser/renderer_host/render_widget_host_view_cocoa.mm
@@ -8,6 +8,7 @@ #include <utility> #include "base/debug/crash_logging.h" +#include "base/mac/bind_objc_block.h" #include "base/mac/mac_util.h" #include "base/strings/sys_string_conversions.h" #import "content/browser/accessibility/browser_accessibility_cocoa.h" @@ -145,8 +146,9 @@ - (void)windowChangedGlobalFrame:(NSNotification*)notification; - (void)windowDidBecomeKey:(NSNotification*)notification; - (void)windowDidResignKey:(NSNotification*)notification; -- (void)showLookUpDictionaryOverlayInternal:(NSAttributedString*)string - baselinePoint:(NSPoint)baselinePoint +- (void)showLookUpDictionaryOverlayInternal: + (mac::AttributedStringCoder::EncodedString)encodedString + baselinePoint:(gfx::Point)baselinePoint targetView:(NSView*)view; - (void)sendViewBoundsInWindowToClient; - (void)sendWindowFrameInScreenToClient; @@ -166,7 +168,6 @@ client_ = std::move(client); renderWidgetHostView_ = client_->GetRenderWidgetHostViewMac(); canBeKeyView_ = YES; - pinchHasReachedZoomThreshold_ = false; isStylusEnteringProximity_ = false; } return self; @@ -804,38 +805,28 @@ - (void)handleBeginGestureWithEvent:(NSEvent*)event { [responderDelegate_ beginGestureWithEvent:event]; - gestureBeginEvent_.reset( - new WebGestureEvent(WebGestureEventBuilder::Build(event, self))); - // If the page is at the minimum zoom level, require a threshold be reached - // before the pinch has an effect. - if (renderWidgetHostView_->page_at_minimum_scale_) { - pinchHasReachedZoomThreshold_ = false; - pinchUnusedAmount_ = 1; - } + WebGestureEvent gestureBeginEvent(WebGestureEventBuilder::Build(event, self)); + + client_->OnNSViewGestureBegin(gestureBeginEvent); } - (void)handleEndGestureWithEvent:(NSEvent*)event { [responderDelegate_ endGestureWithEvent:event]; + if (clientWasDestroyed_) + return; + // On macOS 10.11+, the end event has type = NSEventTypeMagnify and phase = // NSEventPhaseEnded. On macOS 10.10 and older, the event has type = // NSEventTypeEndGesture. if ([event type] == NSEventTypeMagnify || [event type] == NSEventTypeEndGesture) { - gestureBeginEvent_.reset(); - - if (!renderWidgetHostView_->host()) - return; - - if (gestureBeginPinchSent_) { - WebGestureEvent endEvent(WebGestureEventBuilder::Build(event, self)); - endEvent.SetType(WebInputEvent::kGesturePinchEnd); - endEvent.SetSourceDevice( - blink::WebGestureDevice::kWebGestureDeviceTouchpad); - renderWidgetHostView_->SendGesturePinchEvent(&endEvent); - gestureBeginPinchSent_ = NO; - } + WebGestureEvent endEvent(WebGestureEventBuilder::Build(event, self)); + endEvent.SetType(WebInputEvent::kGesturePinchEnd); + endEvent.SetSourceDevice( + blink::WebGestureDevice::kWebGestureDeviceTouchpad); + client_->OnNSViewGestureEnd(endEvent); } } @@ -890,14 +881,15 @@ - (void)smartMagnifyWithEvent:(NSEvent*)event { const WebGestureEvent& smartMagnifyEvent = WebGestureEventBuilder::Build(event, self); - if (renderWidgetHostView_ && renderWidgetHostView_->host()) { - renderWidgetHostView_->host()->ForwardGestureEvent(smartMagnifyEvent); - } + client_->OnNSViewSmartMagnify(smartMagnifyEvent); } -- (void)showLookUpDictionaryOverlayInternal:(NSAttributedString*)string - baselinePoint:(NSPoint)baselinePoint +- (void)showLookUpDictionaryOverlayInternal: + (mac::AttributedStringCoder::EncodedString)encodedString + baselinePoint:(gfx::Point)baselinePoint targetView:(NSView*)view { + NSAttributedString* string = + mac::AttributedStringCoder::Decode(&encodedString); if ([string length] == 0) { // The PDF plugin does not support getting the attributed string at point. // Until it does, use NSPerformService(), which opens Dictionary.app. @@ -917,7 +909,7 @@ return; } NSPoint flippedBaselinePoint = { - baselinePoint.x, [view frame].size.height - baselinePoint.y, + baselinePoint.x(), [view frame].size.height - baselinePoint.y(), }; [view showDefinitionForAttributedString:string atPoint:flippedBaselinePoint]; } @@ -937,24 +929,22 @@ int32_t targetWidgetProcessId = widgetHost->GetProcess()->GetID(); int32_t targetWidgetRoutingId = widgetHost->GetRoutingID(); TextInputClientMac::GetInstance()->GetStringFromRange( - widgetHost, range, ^(NSAttributedString* string, NSPoint baselinePoint) { + widgetHost, gfx::Range(range), + base::BindBlock(^( + const mac::AttributedStringCoder::EncodedString& encodedString, + gfx::Point baselinePoint) { if (!content::RenderWidgetHost::FromID(targetWidgetProcessId, targetWidgetRoutingId)) { // By the time we get here |widgetHost| might have been destroyed. // (See https://crbug.com/737032). return; } - - if (auto* rwhv = widgetHost->GetView()) { - gfx::Point pointInRootView = rwhv->TransformPointToRootCoordSpace( - gfx::Point(baselinePoint.x, baselinePoint.y)); - baselinePoint.x = pointInRootView.x(); - baselinePoint.y = pointInRootView.y(); - } - [self showLookUpDictionaryOverlayInternal:string + if (auto* rwhv = widgetHost->GetView()) + baselinePoint = rwhv->TransformPointToRootCoordSpace(baselinePoint); + [self showLookUpDictionaryOverlayInternal:encodedString baselinePoint:baselinePoint targetView:targetView]; - }); + })); } - (void)showLookUpDictionaryOverlayAtPoint:(NSPoint)point { @@ -978,24 +968,21 @@ int32_t targetWidgetRoutingId = widgetHost->GetRoutingID(); TextInputClientMac::GetInstance()->GetStringAtPoint( widgetHost, gfx::ToFlooredPoint(transformedPoint), - ^(NSAttributedString* string, NSPoint baselinePoint) { + base::BindBlock(^( + const mac::AttributedStringCoder::EncodedString& encodedString, + gfx::Point baselinePoint) { if (!content::RenderWidgetHost::FromID(targetWidgetProcessId, targetWidgetRoutingId)) { // By the time we get here |widgetHost| might have been destroyed. // (See https://crbug.com/737032). return; } - - if (auto* rwhv = widgetHost->GetView()) { - gfx::Point pointInRootView = rwhv->TransformPointToRootCoordSpace( - gfx::Point(baselinePoint.x, baselinePoint.y)); - baselinePoint.x = pointInRootView.x(); - baselinePoint.y = pointInRootView.y(); - } - [self showLookUpDictionaryOverlayInternal:string + if (auto* rwhv = widgetHost->GetView()) + baselinePoint = rwhv->TransformPointToRootCoordSpace(baselinePoint); + [self showLookUpDictionaryOverlayInternal:encodedString baselinePoint:baselinePoint targetView:self]; - }); + })); } // This is invoked only on 10.8 or newer when the user taps a word using @@ -1079,7 +1066,7 @@ // Called repeatedly during a pinch gesture, with incremental change values. - (void)magnifyWithEvent:(NSEvent*)event { - if (!renderWidgetHostView_->host()) + if (clientWasDestroyed_) return; #if defined(MAC_OS_X_VERSION_10_11) && \ @@ -1109,38 +1096,8 @@ return; } - // If, due to nesting of multiple gestures (e.g, from multiple touch - // devices), the beginning of the gesture has been lost, skip the remainder - // of the gesture. - if (!gestureBeginEvent_) - return; - - if (!pinchHasReachedZoomThreshold_) { - pinchUnusedAmount_ *= (1 + [event magnification]); - if (pinchUnusedAmount_ < 0.667 || pinchUnusedAmount_ > 1.5) - pinchHasReachedZoomThreshold_ = true; - } - - // Send a GesturePinchBegin event if none has been sent yet. - if (!gestureBeginPinchSent_) { - if (renderWidgetHostView_->wheel_scroll_latching_enabled()) { - // Before starting a pinch sequence, send the pending wheel end event to - // finish scrolling. - renderWidgetHostView_->mouse_wheel_phase_handler_ - .DispatchPendingWheelEndEvent(); - } - WebGestureEvent beginEvent(*gestureBeginEvent_); - beginEvent.SetType(WebInputEvent::kGesturePinchBegin); - beginEvent.SetSourceDevice( - blink::WebGestureDevice::kWebGestureDeviceTouchpad); - renderWidgetHostView_->SendGesturePinchEvent(&beginEvent); - gestureBeginPinchSent_ = YES; - } - - // Send a GesturePinchUpdate event. WebGestureEvent updateEvent = WebGestureEventBuilder::Build(event, self); - updateEvent.data.pinch_update.zoom_disabled = !pinchHasReachedZoomThreshold_; - renderWidgetHostView_->SendGesturePinchEvent(&updateEvent); + client_->OnNSViewGestureUpdate(updateEvent); } - (void)viewWillMoveToWindow:(NSWindow*)newWindow { @@ -1556,30 +1513,41 @@ if (!widgetHost) return NSNotFound; - NSUInteger index = - TextInputClientMac::GetInstance()->GetCharacterIndexAtPoint( - widgetHost, gfx::ToFlooredPoint(transformedPoint)); - return index; + uint32_t index = TextInputClientMac::GetInstance()->GetCharacterIndexAtPoint( + widgetHost, gfx::ToFlooredPoint(transformedPoint)); + // |index| could be WTF::notFound (-1) and its value is different from + // NSNotFound so we need to convert it. + if (index == UINT32_MAX) + return NSNotFound; + size_t char_index = index; + return NSUInteger(char_index); } - (NSRect)firstViewRectForCharacterRange:(NSRange)theRange actualRange:(NSRangePointer)actualRange { - NSRect rect; + gfx::Rect rect; + gfx::Range range; + if (actualRange) + range = gfx::Range(*actualRange); if (!renderWidgetHostView_->GetCachedFirstRectForCharacterRange( - theRange, &rect, actualRange)) { + gfx::Range(theRange), &rect, &range)) { rect = TextInputClientMac::GetInstance()->GetFirstRectForRange( - renderWidgetHostView_->GetFocusedWidget(), theRange); + renderWidgetHostView_->GetFocusedWidget(), gfx::Range(theRange)); // TODO(thakis): Pipe |actualRange| through TextInputClientMac machinery. if (actualRange) *actualRange = theRange; + } else { + if (actualRange) + *actualRange = range.ToNSRange(); } // The returned rectangle is in WebKit coordinates (upper left origin), so // flip the coordinate system. NSRect viewFrame = [self frame]; - rect.origin.y = NSHeight(viewFrame) - NSMaxY(rect); - return rect; + NSRect flippedRect = NSRectFromCGRect(rect.ToCGRect()); + flippedRect.origin.y = NSHeight(viewFrame) - NSMaxY(flippedRect); + return flippedRect; } - (NSRect)firstRectForCharacterRange:(NSRange)theRange
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.h b/content/browser/renderer_host/render_widget_host_view_mac.h index 07af6fe1..74f350f 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.h +++ b/content/browser/renderer_host/render_widget_host_view_mac.h
@@ -216,7 +216,9 @@ // requested |range| is already cached, otherwise returns false. // Exposed for testing. CONTENT_EXPORT bool GetCachedFirstRectForCharacterRange( - NSRange range, NSRect* rect, NSRange* actual_range); + const gfx::Range& requested_range, + gfx::Rect* rect, + gfx::Range* actual_range); // Returns true if there is line break in |range| and stores line breaking // point to |line_breaking_point|. The |line_break_point| is valid only if @@ -291,6 +293,11 @@ const blink::WebMouseEvent& web_event) override; void OnNSViewForwardWheelEvent( const blink::WebMouseWheelEvent& web_event) override; + void OnNSViewGestureBegin(blink::WebGestureEvent begin_event) override; + void OnNSViewGestureUpdate(blink::WebGestureEvent update_event) override; + void OnNSViewGestureEnd(blink::WebGestureEvent end_event) override; + void OnNSViewSmartMagnify( + const blink::WebGestureEvent& smart_magnify_event) override; // BrowserCompositorMacClient implementation. SkColor BrowserCompositorMacGetGutterColor() const override; @@ -432,6 +439,26 @@ // Used to track active password input sessions. std::unique_ptr<ui::ScopedPasswordInputEnabler> password_input_enabler_; + // When a gesture starts, the system does not inform the view of which type + // of gesture is happening (magnify, rotate, etc), rather, it just informs + // the view that some as-yet-undefined gesture is starting. Capture the + // information about the gesture's beginning event here. It will be used to + // create a specific gesture begin event later. + std::unique_ptr<blink::WebGestureEvent> gesture_begin_event_; + + // This is set if a GesturePinchBegin event has been sent in the lifetime of + // |gesture_begin_event__|. If set, a GesturePinchEnd will be sent when the + // gesture ends. + bool gesture_begin_pinch_sent_ = false; + + // To avoid accidental pinches, require that a certain zoom threshold be + // reached before forwarding it to the browser. Use |pinch_unused_amount_| to + // hold this value. If the user reaches this value, don't re-require the + // threshold be reached until the page has been zoomed back to page scale of + // one. + bool pinch_has_reached_zoom_threshold_ = false; + float pinch_unused_amount_ = 1.f; + // Factory used to safely scope delayed calls to ShutdownHost(). base::WeakPtrFactory<RenderWidgetHostViewMac> weak_factory_;
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm index 8a6cf65..eebccad 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -835,9 +835,9 @@ } bool RenderWidgetHostViewMac::GetCachedFirstRectForCharacterRange( - NSRange range, - NSRect* rect, - NSRange* actual_range) { + const gfx::Range& requested_range, + gfx::Rect* rect, + gfx::Range* actual_range) { if (!GetTextInputManager()) return false; @@ -850,16 +850,14 @@ if (!selection) return false; - const gfx::Range requested_range(range); // If requested range is same as caret location, we can just return it. if (selection->range().is_empty() && requested_range == selection->range()) { DCHECK(GetFocusedWidget()); if (actual_range) - *actual_range = range; - *rect = - NSRectFromCGRect(GetTextInputManager() - ->GetSelectionRegion(GetFocusedWidget()->GetView()) - ->caret_rect.ToCGRect()); + *actual_range = requested_range; + *rect = GetTextInputManager() + ->GetSelectionRegion(GetFocusedWidget()->GetView()) + ->caret_rect; return true; } @@ -870,11 +868,10 @@ return false; DCHECK(GetFocusedWidget()); if (actual_range) - *actual_range = selection->range().ToNSRange(); - *rect = - NSRectFromCGRect(GetTextInputManager() - ->GetSelectionRegion(GetFocusedWidget()->GetView()) - ->first_selection_rect.ToCGRect()); + *actual_range = selection->range(); + *rect = GetTextInputManager() + ->GetSelectionRegion(GetFocusedWidget()->GetView()) + ->first_selection_rect; return true; } @@ -891,14 +888,12 @@ composition_info->range.length()); gfx::Range ui_actual_range; - *rect = NSRectFromCGRect(GetFirstRectForCompositionRange( - request_range_in_composition, - &ui_actual_range).ToCGRect()); + *rect = GetFirstRectForCompositionRange(request_range_in_composition, + &ui_actual_range); if (actual_range) { *actual_range = gfx::Range(composition_info->range.start() + ui_actual_range.start(), - composition_info->range.start() + ui_actual_range.end()) - .ToNSRange(); + composition_info->range.start() + ui_actual_range.end()); } return true; } @@ -1345,6 +1340,67 @@ } } +void RenderWidgetHostViewMac::OnNSViewGestureBegin( + blink::WebGestureEvent begin_event) { + gesture_begin_event_.reset(new WebGestureEvent(begin_event)); + + // If the page is at the minimum zoom level, require a threshold be reached + // before the pinch has an effect. + if (page_at_minimum_scale_) { + pinch_has_reached_zoom_threshold_ = false; + pinch_unused_amount_ = 1; + } +} + +void RenderWidgetHostViewMac::OnNSViewGestureUpdate( + blink::WebGestureEvent update_event) { + // If, due to nesting of multiple gestures (e.g, from multiple touch + // devices), the beginning of the gesture has been lost, skip the remainder + // of the gesture. + if (!gesture_begin_event_) + return; + + if (!pinch_has_reached_zoom_threshold_) { + pinch_unused_amount_ *= update_event.data.pinch_update.scale; + if (pinch_unused_amount_ < 0.667 || pinch_unused_amount_ > 1.5) + pinch_has_reached_zoom_threshold_ = true; + } + + // Send a GesturePinchBegin event if none has been sent yet. + if (!gesture_begin_pinch_sent_) { + if (wheel_scroll_latching_enabled()) { + // Before starting a pinch sequence, send the pending wheel end event to + // finish scrolling. + mouse_wheel_phase_handler_.DispatchPendingWheelEndEvent(); + } + WebGestureEvent begin_event(*gesture_begin_event_); + begin_event.SetType(WebInputEvent::kGesturePinchBegin); + begin_event.SetSourceDevice( + blink::WebGestureDevice::kWebGestureDeviceTouchpad); + SendGesturePinchEvent(&begin_event); + gesture_begin_pinch_sent_ = YES; + } + + // Send a GesturePinchUpdate event. + update_event.data.pinch_update.zoom_disabled = + !pinch_has_reached_zoom_threshold_; + SendGesturePinchEvent(&update_event); +} + +void RenderWidgetHostViewMac::OnNSViewGestureEnd( + blink::WebGestureEvent end_event) { + gesture_begin_event_.reset(); + if (gesture_begin_pinch_sent_) { + SendGesturePinchEvent(&end_event); + gesture_begin_pinch_sent_ = false; + } +} + +void RenderWidgetHostViewMac::OnNSViewSmartMagnify( + const blink::WebGestureEvent& smart_magnify_event) { + host()->ForwardGestureEvent(smart_magnify_event); +} + Class GetRenderWidgetHostViewCocoaClassForTesting() { return [RenderWidgetHostViewCocoa class]; }
diff --git a/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm b/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm index 4dd6d6b..84029bb 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
@@ -547,31 +547,23 @@ gfx::Range caret_range(0, 0); ViewHostMsg_SelectionBounds_Params params; - NSRect rect; - NSRange actual_range; + gfx::Rect rect; + gfx::Range actual_range; rwhv_mac_->SelectionChanged(kDummyString, kDummyOffset, caret_range); params.anchor_rect = params.focus_rect = caret_rect; params.anchor_dir = params.focus_dir = blink::kWebTextDirectionLeftToRight; rwhv_mac_->SelectionBoundsChanged(params); - EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - caret_range.ToNSRange(), - &rect, - &actual_range)); - EXPECT_EQ(caret_rect, gfx::Rect(NSRectToCGRect(rect))); + EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(caret_range, &rect, + &actual_range)); + EXPECT_EQ(caret_rect, rect); EXPECT_EQ(caret_range, gfx::Range(actual_range)); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(0, 1).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(0, 1), &rect, &actual_range)); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(1, 1).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(1, 1), &rect, &actual_range)); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(2, 3).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(2, 3), &rect, &actual_range)); // Caret moved. caret_rect = gfx::Rect(20, 11, 0, 10); @@ -579,25 +571,17 @@ params.anchor_rect = params.focus_rect = caret_rect; rwhv_mac_->SelectionChanged(kDummyString, kDummyOffset, caret_range); rwhv_mac_->SelectionBoundsChanged(params); - EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - caret_range.ToNSRange(), - &rect, - &actual_range)); - EXPECT_EQ(caret_rect, gfx::Rect(NSRectToCGRect(rect))); - EXPECT_EQ(caret_range, gfx::Range(actual_range)); + EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(caret_range, &rect, + &actual_range)); + EXPECT_EQ(caret_rect, rect); + EXPECT_EQ(caret_range, actual_range); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(0, 0).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(0, 0), &rect, &actual_range)); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(1, 2).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(1, 2), &rect, &actual_range)); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(2, 3).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(2, 3), &rect, &actual_range)); // No caret. caret_range = gfx::Range(1, 2); @@ -606,25 +590,15 @@ params.focus_rect = gfx::Rect(30, 11, 0, 10); rwhv_mac_->SelectionBoundsChanged(params); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(0, 0).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(0, 0), &rect, &actual_range)); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(0, 1).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(0, 1), &rect, &actual_range)); EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(1, 1).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(1, 1), &rect, &actual_range)); EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(1, 2).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(1, 2), &rect, &actual_range)); EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(2, 2).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(2, 2), &rect, &actual_range)); } TEST_F(RenderWidgetHostViewMacTest, UpdateCompositionSinglelineCase) { @@ -632,41 +606,31 @@ const gfx::Point kOrigin(10, 11); const gfx::Size kBoundsUnit(10, 20); - NSRect rect; + gfx::Rect rect; // Make sure not crashing by passing nullptr pointer instead of // |actual_range|. - EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(0, 0).ToNSRange(), &rect, nullptr)); + EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange(gfx::Range(0, 0), + &rect, nullptr)); // If there are no update from renderer, always returned caret position. - NSRange actual_range; + gfx::Range actual_range; EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(0, 0).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(0, 0), &rect, &actual_range)); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(0, 1).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(0, 1), &rect, &actual_range)); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(1, 0).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(1, 0), &rect, &actual_range)); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(1, 1).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(1, 1), &rect, &actual_range)); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(1, 2).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(1, 2), &rect, &actual_range)); // If the firstRectForCharacterRange is failed in renderer, empty rect vector // is sent. Make sure this does not crash. rwhv_mac_->ImeCompositionRangeChanged(gfx::Range(10, 12), std::vector<gfx::Rect>()); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(10, 11).ToNSRange(), &rect, nullptr)); + gfx::Range(10, 11), &rect, nullptr)); const int kCompositionLength = 10; std::vector<gfx::Rect> composition_bounds; @@ -682,29 +646,17 @@ // Out of range requests will return caret position. EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(0, 0).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(0, 0), &rect, &actual_range)); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(1, 1).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(1, 1), &rect, &actual_range)); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(1, 2).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(1, 2), &rect, &actual_range)); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(2, 2).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(2, 2), &rect, &actual_range)); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(13, 14).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(13, 14), &rect, &actual_range)); EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( - gfx::Range(14, 15).ToNSRange(), - &rect, - &actual_range)); + gfx::Range(14, 15), &rect, &actual_range)); for (int i = 0; i <= kCompositionLength; ++i) { for (int j = 0; j <= kCompositionLength - i; ++j) { @@ -713,15 +665,14 @@ kBoundsUnit, range, 0); - const NSRange request_range = gfx::Range( - kCompositionStart + range.start(), - kCompositionStart + range.end()).ToNSRange(); + const gfx::Range request_range = gfx::Range( + kCompositionStart + range.start(), kCompositionStart + range.end()); EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange( request_range, &rect, &actual_range)); - EXPECT_EQ(gfx::Range(request_range), gfx::Range(actual_range)); - EXPECT_EQ(expected_rect, gfx::Rect(NSRectToCGRect(rect))); + EXPECT_EQ(request_range, actual_range); + EXPECT_EQ(expected_rect, rect); // Make sure not crashing by passing nullptr pointer instead of // |actual_range|. @@ -735,7 +686,7 @@ ActivateViewWithTextInputManager(rwhv_mac_, ui::TEXT_INPUT_TYPE_TEXT); const gfx::Point kOrigin(10, 11); const gfx::Size kBoundsUnit(10, 20); - NSRect rect; + gfx::Rect rect; const int kCompositionLength = 30; std::vector<gfx::Rect> composition_bounds; @@ -754,112 +705,76 @@ // Range doesn't contain line breaking point. gfx::Range range; range = gfx::Range(5, 8); - NSRange actual_range; - EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range.ToNSRange(), - &rect, + gfx::Range actual_range; + EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range, &rect, &actual_range)); - EXPECT_EQ(range, gfx::Range(actual_range)); - EXPECT_EQ( - GetExpectedRect(kOrigin, kBoundsUnit, range, 0), - gfx::Rect(NSRectToCGRect(rect))); + EXPECT_EQ(range, actual_range); + EXPECT_EQ(GetExpectedRect(kOrigin, kBoundsUnit, range, 0), rect); range = gfx::Range(15, 18); - EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range.ToNSRange(), - &rect, + EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range, &rect, &actual_range)); - EXPECT_EQ(range, gfx::Range(actual_range)); - EXPECT_EQ( - GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(5, 8), 1), - gfx::Rect(NSRectToCGRect(rect))); + EXPECT_EQ(range, actual_range); + EXPECT_EQ(GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(5, 8), 1), rect); range = gfx::Range(25, 28); - EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range.ToNSRange(), - &rect, + EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range, &rect, &actual_range)); - EXPECT_EQ(range, gfx::Range(actual_range)); - EXPECT_EQ( - GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(5, 8), 2), - gfx::Rect(NSRectToCGRect(rect))); + EXPECT_EQ(range, actual_range); + EXPECT_EQ(GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(5, 8), 2), rect); // Range contains line breaking point. range = gfx::Range(8, 12); - EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range.ToNSRange(), - &rect, + EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range, &rect, &actual_range)); - EXPECT_EQ(gfx::Range(8, 10), gfx::Range(actual_range)); - EXPECT_EQ( - GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(8, 10), 0), - gfx::Rect(NSRectToCGRect(rect))); + EXPECT_EQ(gfx::Range(8, 10), actual_range); + EXPECT_EQ(GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(8, 10), 0), rect); range = gfx::Range(18, 22); - EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range.ToNSRange(), - &rect, + EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range, &rect, &actual_range)); - EXPECT_EQ(gfx::Range(18, 20), gfx::Range(actual_range)); - EXPECT_EQ( - GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(8, 10), 1), - gfx::Rect(NSRectToCGRect(rect))); + EXPECT_EQ(gfx::Range(18, 20), actual_range); + EXPECT_EQ(GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(8, 10), 1), rect); // Start point is line breaking point. range = gfx::Range(10, 12); - EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range.ToNSRange(), - &rect, + EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range, &rect, &actual_range)); - EXPECT_EQ(gfx::Range(10, 12), gfx::Range(actual_range)); - EXPECT_EQ( - GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(0, 2), 1), - gfx::Rect(NSRectToCGRect(rect))); + EXPECT_EQ(gfx::Range(10, 12), actual_range); + EXPECT_EQ(GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(0, 2), 1), rect); range = gfx::Range(20, 22); - EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range.ToNSRange(), - &rect, + EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range, &rect, &actual_range)); - EXPECT_EQ(gfx::Range(20, 22), gfx::Range(actual_range)); - EXPECT_EQ( - GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(0, 2), 2), - gfx::Rect(NSRectToCGRect(rect))); + EXPECT_EQ(gfx::Range(20, 22), actual_range); + EXPECT_EQ(GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(0, 2), 2), rect); // End point is line breaking point. range = gfx::Range(5, 10); - EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range.ToNSRange(), - &rect, + EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range, &rect, &actual_range)); - EXPECT_EQ(gfx::Range(5, 10), gfx::Range(actual_range)); - EXPECT_EQ( - GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(5, 10), 0), - gfx::Rect(NSRectToCGRect(rect))); + EXPECT_EQ(gfx::Range(5, 10), actual_range); + EXPECT_EQ(GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(5, 10), 0), rect); range = gfx::Range(15, 20); - EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range.ToNSRange(), - &rect, + EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range, &rect, &actual_range)); - EXPECT_EQ(gfx::Range(15, 20), gfx::Range(actual_range)); - EXPECT_EQ( - GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(5, 10), 1), - gfx::Rect(NSRectToCGRect(rect))); + EXPECT_EQ(gfx::Range(15, 20), actual_range); + EXPECT_EQ(GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(5, 10), 1), rect); // Start and end point are same line breaking point. range = gfx::Range(10, 10); - EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range.ToNSRange(), - &rect, + EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range, &rect, &actual_range)); - EXPECT_EQ(gfx::Range(10, 10), gfx::Range(actual_range)); - EXPECT_EQ( - GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(0, 0), 1), - gfx::Rect(NSRectToCGRect(rect))); + EXPECT_EQ(gfx::Range(10, 10), actual_range); + EXPECT_EQ(GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(0, 0), 1), rect); range = gfx::Range(20, 20); - EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range.ToNSRange(), - &rect, + EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range, &rect, &actual_range)); - EXPECT_EQ(gfx::Range(20, 20), gfx::Range(actual_range)); - EXPECT_EQ( - GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(0, 0), 2), - gfx::Rect(NSRectToCGRect(rect))); + EXPECT_EQ(gfx::Range(20, 20), actual_range); + EXPECT_EQ(GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(0, 0), 2), rect); // Start and end point are different line breaking point. range = gfx::Range(10, 20); - EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range.ToNSRange(), - &rect, + EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange(range, &rect, &actual_range)); - EXPECT_EQ(gfx::Range(10, 20), gfx::Range(actual_range)); - EXPECT_EQ( - GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(0, 10), 1), - gfx::Rect(NSRectToCGRect(rect))); + EXPECT_EQ(gfx::Range(10, 20), actual_range); + EXPECT_EQ(GetExpectedRect(kOrigin, kBoundsUnit, gfx::Range(0, 10), 1), rect); } // Check that events coming from AppKit via -[NSTextInputClient
diff --git a/content/browser/renderer_host/text_input_client_mac.h b/content/browser/renderer_host/text_input_client_mac.h index eeb48a8..8165445 100644 --- a/content/browser/renderer_host/text_input_client_mac.h +++ b/content/browser/renderer_host/text_input_client_mac.h
@@ -13,13 +13,19 @@ #include "base/synchronization/condition_variable.h" #include "base/synchronization/lock.h" #include "content/common/content_export.h" +#include "content/common/mac/attributed_string_coder.h" #include "ui/gfx/geometry/point.h" +#include "ui/gfx/geometry/rect.h" namespace base { template <typename T> struct DefaultSingletonTraits; } // namespace base +namespace gfx { +class Range; +} + namespace content { class RenderWidgetHost; @@ -56,17 +62,23 @@ // this service and signal the condition to allow the Get*() methods to // unlock and return that stored value. // - // Returns NSNotFound if the request times out or is not completed. - NSUInteger GetCharacterIndexAtPoint(RenderWidgetHost* rwh, gfx::Point point); + // Returns UINT32_MAX if the request times out or is not completed. + uint32_t GetCharacterIndexAtPoint(RenderWidgetHost* rwh, + const gfx::Point& point); // Returns NSZeroRect if the request times out or is not completed. The result // is in WebKit coordinates. - NSRect GetFirstRectForRange(RenderWidgetHost* rwh, NSRange range); + gfx::Rect GetFirstRectForRange(RenderWidgetHost* rwh, + const gfx::Range& range); // When the renderer sends the ViewHostMsg reply, the RenderMessageFilter will // call the corresponding method on the IO thread to unlock the condition and // allow the Get*() methods to continue/return. - void SetCharacterIndexAndSignal(NSUInteger index); - void SetFirstRectAndSignal(NSRect first_rect); + void SetCharacterIndexAndSignal(uint32_t index); + void SetFirstRectAndSignal(const gfx::Rect& first_rect); + + typedef base::OnceCallback< + void(const mac::AttributedStringCoder::EncodedString&, gfx::Point)> + GetStringCallback; // This async method is invoked from RenderWidgetHostViewCocoa's // -quickLookWithEvent:, when the user taps a word using 3 fingers. @@ -75,12 +87,14 @@ // The callback parameters provide the attributed word under the point and // the lower left baseline point of the text. void GetStringAtPoint(RenderWidgetHost* rwh, - gfx::Point point, - void (^reply_handler)(NSAttributedString*, NSPoint)); + const gfx::Point& point, + GetStringCallback callback); // This is called on the IO thread when we get the renderer's reply for // GetStringAtPoint. - void GetStringAtPointReply(NSAttributedString* string, NSPoint point); + void GetStringAtPointReply( + const mac::AttributedStringCoder::EncodedString& string, + const gfx::Point& point); // This async method is invoked when browser tries to retreive the text for // certain range and doesn't want to wait for the reply from blink. @@ -89,12 +103,14 @@ // The callback parameters provide the attributed word under the point and // the lower left baseline point of the text. void GetStringFromRange(RenderWidgetHost* rwh, - NSRange range, - void (^reply_handler)(NSAttributedString*, NSPoint)); + const gfx::Range& range, + GetStringCallback callback); // This is called on the IO thread when we get the renderer's reply for // GetStringFromRange. - void GetStringFromRangeReply(NSAttributedString* string, NSPoint point); + void GetStringFromRangeReply( + const mac::AttributedStringCoder::EncodedString& string, + const gfx::Point& point); private: friend struct base::DefaultSingletonTraits<TextInputClientMac>; @@ -110,19 +126,17 @@ // condition. void AfterRequest(); - NSUInteger character_index_; - NSRect first_rect_; + uint32_t character_index_; + gfx::Rect first_rect_; base::Lock lock_; base::ConditionVariable condition_; // The callback when received IPC TextInputClientReplyMsg_GotStringAtPoint. - base::mac::ScopedBlock<void(^)(NSAttributedString*, NSPoint)> - replyForPointHandler_; + GetStringCallback replyForPointHandler_; // The callback when received IPC TextInputClientReplyMsg_GotStringForRange. - base::mac::ScopedBlock<void(^)(NSAttributedString*, NSPoint)> - replyForRangeHandler_; + GetStringCallback replyForRangeHandler_; DISALLOW_COPY_AND_ASSIGN(TextInputClientMac); };
diff --git a/content/browser/renderer_host/text_input_client_mac.mm b/content/browser/renderer_host/text_input_client_mac.mm index 46553df..3a6bcfb5 100644 --- a/content/browser/renderer_host/text_input_client_mac.mm +++ b/content/browser/renderer_host/text_input_client_mac.mm
@@ -42,10 +42,7 @@ const float kWaitTimeout = 1500; TextInputClientMac::TextInputClientMac() - : character_index_(NSNotFound), - lock_(), - condition_(&lock_) { -} + : character_index_(UINT32_MAX), lock_(), condition_(&lock_) {} TextInputClientMac::~TextInputClientMac() { } @@ -55,55 +52,53 @@ return base::Singleton<TextInputClientMac>::get(); } -void TextInputClientMac::GetStringAtPoint( - RenderWidgetHost* rwh, - gfx::Point point, - void (^reply_handler)(NSAttributedString*, NSPoint)) { +void TextInputClientMac::GetStringAtPoint(RenderWidgetHost* rwh, + const gfx::Point& point, + GetStringCallback callback) { // TODO(ekaramad): In principle, we are using the same handler regardless of // the |rwh| which requested this. We should track the callbacks for each // |rwh| individually so that one slow RWH will not end up clearing the // callback for another (https://crbug.com/643233). - DCHECK(replyForPointHandler_.get() == nil); - replyForPointHandler_.reset(reply_handler, base::scoped_policy::RETAIN); + DCHECK(!replyForPointHandler_); + replyForPointHandler_ = std::move(callback); RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(rwh); SendMessageToRenderWidget( rwhi, new TextInputClientMsg_StringAtPoint(rwhi->GetRoutingID(), point)); } -void TextInputClientMac::GetStringAtPointReply(NSAttributedString* string, - NSPoint point) { - if (replyForPointHandler_.get()) { - replyForPointHandler_.get()(string, point); - replyForPointHandler_.reset(); +void TextInputClientMac::GetStringAtPointReply( + const mac::AttributedStringCoder::EncodedString& string, + const gfx::Point& point) { + if (replyForPointHandler_) { + std::move(replyForPointHandler_).Run(string, point); } } -void TextInputClientMac::GetStringFromRange( - RenderWidgetHost* rwh, - NSRange range, - void (^reply_handler)(NSAttributedString*, NSPoint)) { - DCHECK(replyForRangeHandler_.get() == nil); - replyForRangeHandler_.reset(reply_handler, base::scoped_policy::RETAIN); +void TextInputClientMac::GetStringFromRange(RenderWidgetHost* rwh, + const gfx::Range& range, + GetStringCallback callback) { + DCHECK(!replyForRangeHandler_); + replyForRangeHandler_ = std::move(callback); RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(rwh); - SendMessageToRenderWidget(rwhi, new TextInputClientMsg_StringForRange( - rwhi->GetRoutingID(), gfx::Range(range))); + SendMessageToRenderWidget( + rwhi, new TextInputClientMsg_StringForRange(rwhi->GetRoutingID(), range)); } -void TextInputClientMac::GetStringFromRangeReply(NSAttributedString* string, - NSPoint point) { - if (replyForRangeHandler_.get()) { - replyForRangeHandler_.get()(string, point); - replyForRangeHandler_.reset(); +void TextInputClientMac::GetStringFromRangeReply( + const mac::AttributedStringCoder::EncodedString& string, + const gfx::Point& point) { + if (replyForRangeHandler_) { + std::move(replyForRangeHandler_).Run(string, point); } } -NSUInteger TextInputClientMac::GetCharacterIndexAtPoint(RenderWidgetHost* rwh, - gfx::Point point) { +uint32_t TextInputClientMac::GetCharacterIndexAtPoint(RenderWidgetHost* rwh, + const gfx::Point& point) { RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(rwh); if (!SendMessageToRenderWidget(rwhi, new TextInputClientMsg_CharacterIndexForPoint( rwhi->GetRoutingID(), point))) { - return NSNotFound; + return UINT32_MAX; } base::TimeTicks start = base::TimeTicks::Now(); @@ -122,13 +117,13 @@ return character_index_; } -NSRect TextInputClientMac::GetFirstRectForRange(RenderWidgetHost* rwh, - NSRange range) { +gfx::Rect TextInputClientMac::GetFirstRectForRange(RenderWidgetHost* rwh, + const gfx::Range& range) { RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(rwh); if (!SendMessageToRenderWidget( rwhi, new TextInputClientMsg_FirstRectForCharacterRange( - rwhi->GetRoutingID(), gfx::Range(range)))) { - return NSRect(); + rwhi->GetRoutingID(), range))) { + return gfx::Rect(); } base::TimeTicks start = base::TimeTicks::Now(); @@ -147,14 +142,14 @@ return first_rect_; } -void TextInputClientMac::SetCharacterIndexAndSignal(NSUInteger index) { +void TextInputClientMac::SetCharacterIndexAndSignal(uint32_t index) { lock_.Acquire(); character_index_ = index; lock_.Release(); condition_.Signal(); } -void TextInputClientMac::SetFirstRectAndSignal(NSRect first_rect) { +void TextInputClientMac::SetFirstRectAndSignal(const gfx::Rect& first_rect) { lock_.Acquire(); first_rect_ = first_rect; lock_.Release(); @@ -170,8 +165,8 @@ UMA_HISTOGRAM_LONG_TIMES("TextInputClient.LockWait", delta * base::Time::kMicrosecondsPerMillisecond); - character_index_ = NSNotFound; - first_rect_ = NSZeroRect; + character_index_ = UINT32_MAX; + first_rect_ = gfx::Rect(); } void TextInputClientMac::AfterRequest() {
diff --git a/content/browser/renderer_host/text_input_client_mac_unittest.mm b/content/browser/renderer_host/text_input_client_mac_unittest.mm index 576c256..8b752c7 100644 --- a/content/browser/renderer_host/text_input_client_mac_unittest.mm +++ b/content/browser/renderer_host/text_input_client_mac_unittest.mm
@@ -159,12 +159,12 @@ } TEST_F(TextInputClientMacTest, TimeoutCharacterIndex) { - NSUInteger index = service()->GetCharacterIndexAtPoint( - widget(), gfx::Point(2, 2)); + uint32_t index = + service()->GetCharacterIndexAtPoint(widget(), gfx::Point(2, 2)); EXPECT_EQ(1U, ipc_sink().message_count()); EXPECT_TRUE(ipc_sink().GetUniqueMessageMatching( TextInputClientMsg_CharacterIndexForPoint::ID)); - EXPECT_EQ(static_cast<NSUInteger>(NSNotFound), index); + EXPECT_EQ(UINT32_MAX, index); } TEST_F(TextInputClientMacTest, NotFoundCharacterIndex) { @@ -187,11 +187,11 @@ base::Bind(&CallOnMessageReceived, filter, *message), base::TimeDelta::FromMilliseconds(kTaskDelayMs) * 2); - NSUInteger index = service()->GetCharacterIndexAtPoint( - widget(), gfx::Point(2, 2)); + uint32_t index = + service()->GetCharacterIndexAtPoint(widget(), gfx::Point(2, 2)); EXPECT_EQ(kPreviousValue, index); index = service()->GetCharacterIndexAtPoint(widget(), gfx::Point(2, 2)); - EXPECT_EQ(static_cast<NSUInteger>(NSNotFound), index); + EXPECT_EQ(UINT32_MAX, index); EXPECT_EQ(2U, ipc_sink().message_count()); for (size_t i = 0; i < ipc_sink().message_count(); ++i) { @@ -203,25 +203,27 @@ TEST_F(TextInputClientMacTest, GetRectForRange) { ScopedTestingThread thread(this); - const NSRect kSuccessValue = NSMakeRect(42, 43, 44, 45); + const gfx::Rect kSuccessValue(42, 43, 44, 45); PostTask(FROM_HERE, base::Bind(&TextInputClientMac::SetFirstRectAndSignal, base::Unretained(service()), kSuccessValue)); - NSRect rect = service()->GetFirstRectForRange(widget(), NSMakeRange(0, 32)); + gfx::Rect rect = + service()->GetFirstRectForRange(widget(), gfx::Range(NSMakeRange(0, 32))); EXPECT_EQ(1U, ipc_sink().message_count()); EXPECT_TRUE(ipc_sink().GetUniqueMessageMatching( TextInputClientMsg_FirstRectForCharacterRange::ID)); - EXPECT_NSEQ(kSuccessValue, rect); + EXPECT_EQ(kSuccessValue, rect); } TEST_F(TextInputClientMacTest, TimeoutRectForRange) { - NSRect rect = service()->GetFirstRectForRange(widget(), NSMakeRange(0, 32)); + gfx::Rect rect = + service()->GetFirstRectForRange(widget(), gfx::Range(NSMakeRange(0, 32))); EXPECT_EQ(1U, ipc_sink().message_count()); EXPECT_TRUE(ipc_sink().GetUniqueMessageMatching( TextInputClientMsg_FirstRectForCharacterRange::ID)); - EXPECT_NSEQ(NSZeroRect, rect); + EXPECT_EQ(gfx::Rect(), rect); } } // namespace content
diff --git a/content/browser/renderer_host/text_input_client_message_filter.mm b/content/browser/renderer_host/text_input_client_message_filter.mm index 35d43000..cb4db8bc 100644 --- a/content/browser/renderer_host/text_input_client_message_filter.mm +++ b/content/browser/renderer_host/text_input_client_message_filter.mm
@@ -52,38 +52,25 @@ const mac::AttributedStringCoder::EncodedString& encoded_string, const gfx::Point& point) { TextInputClientMac* service = TextInputClientMac::GetInstance(); - NSAttributedString* string = - mac::AttributedStringCoder::Decode(&encoded_string); - service->GetStringAtPointReply(string, NSPointFromCGPoint(point.ToCGPoint())); + service->GetStringAtPointReply(encoded_string, point); } void TextInputClientMessageFilter::OnGotCharacterIndexForPoint(uint32_t index) { TextInputClientMac* service = TextInputClientMac::GetInstance(); - // |index| could be WTF::notFound (-1) and its value is different from - // NSNotFound so we need to convert it. - size_t char_index; - if (index == UINT32_MAX) { - char_index = NSNotFound; - } else { - char_index = index; - } - service->SetCharacterIndexAndSignal(char_index); + service->SetCharacterIndexAndSignal(index); } void TextInputClientMessageFilter::OnGotFirstRectForRange( const gfx::Rect& rect) { TextInputClientMac* service = TextInputClientMac::GetInstance(); - service->SetFirstRectAndSignal(NSRectFromCGRect(rect.ToCGRect())); + service->SetFirstRectAndSignal(rect); } void TextInputClientMessageFilter::OnGotStringFromRange( const mac::AttributedStringCoder::EncodedString& encoded_string, const gfx::Point& point) { TextInputClientMac* service = TextInputClientMac::GetInstance(); - NSAttributedString* string = - mac::AttributedStringCoder::Decode(&encoded_string); - service->GetStringFromRangeReply( - string, NSPointFromCGPoint(point.ToCGPoint())); + service->GetStringFromRangeReply(encoded_string, point); } } // namespace content
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc index 19c2764..3d744549b 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc
@@ -4777,7 +4777,8 @@ // want the hidden page's dialogs to interfere with the interstitial. bool should_suppress = ShowingInterstitialPage() || (delegate_ && delegate_->ShouldSuppressDialogs(this)); - bool has_handlers = page_handlers.size() || (delegate_ && dialog_manager_); + bool has_non_devtools_handlers = delegate_ && dialog_manager_; + bool has_handlers = page_handlers.size() || has_non_devtools_handlers; bool suppress_this_message = should_suppress || !has_handlers; if (suppress_this_message) { @@ -4793,7 +4794,7 @@ for (auto* handler : page_handlers) { handler->DidRunJavaScriptDialog( render_frame_host->GetLastCommittedURL(), message, default_prompt, - dialog_type, + dialog_type, has_non_devtools_handlers, base::BindOnce(&CloseDialogCallbackWrapper::Run, wrapper, false)); } @@ -4848,7 +4849,8 @@ bool should_suppress = ShowingInterstitialPage() || !rfhi->is_active() || (delegate_ && delegate_->ShouldSuppressDialogs(this)); - bool has_handlers = page_handlers.size() || (delegate_ && dialog_manager_); + bool has_non_devtools_handlers = delegate_ && dialog_manager_; + bool has_handlers = page_handlers.size() || has_non_devtools_handlers; if (should_suppress || !has_handlers) { std::move(callback).Run(false, true, base::string16()); return; @@ -4862,7 +4864,7 @@ GURL frame_url = rfhi->GetLastCommittedURL(); for (auto* handler : page_handlers) { handler->DidRunBeforeUnloadConfirm( - frame_url, + frame_url, has_non_devtools_handlers, base::BindOnce(&CloseDialogCallbackWrapper::Run, wrapper, false)); }
diff --git a/content/browser/webauth/authenticator_impl_unittest.cc b/content/browser/webauth/authenticator_impl_unittest.cc index ac6c31d..7a3d9700 100644 --- a/content/browser/webauth/authenticator_impl_unittest.cc +++ b/content/browser/webauth/authenticator_impl_unittest.cc
@@ -58,8 +58,9 @@ typedef struct { const char* origin; - const char* relying_party_id; -} OriginRelyingPartyIdPair; + // Either a relying party ID or a U2F AppID. + const char* claimed_authority; +} OriginClaimedAuthorityPair; constexpr char kTestOrigin1[] = "https://a.google.com"; constexpr char kTestRelyingPartyId[] = "google.com"; @@ -83,7 +84,7 @@ R"("https://a.google.com","tokenBinding":{"status":"not-supported"},)" R"("type":"webauthn.get"})"; -constexpr OriginRelyingPartyIdPair kValidRelyingPartyTestCases[] = { +constexpr OriginClaimedAuthorityPair kValidRelyingPartyTestCases[] = { {"http://localhost", "localhost"}, {"https://myawesomedomain", "myawesomedomain"}, {"https://foo.bar.google.com", "foo.bar.google.com"}, @@ -107,7 +108,7 @@ {"https://accounts.google.com", ".google.com"}, }; -constexpr OriginRelyingPartyIdPair kInvalidRelyingPartyTestCases[] = { +constexpr OriginClaimedAuthorityPair kInvalidRelyingPartyTestCases[] = { {"https://google.com", "com"}, {"http://google.com", "google.com"}, {"http://myawesomedomain", "myawesomedomain"}, @@ -167,6 +168,24 @@ // This case is acceptable according to spec, but both renderer // and browser handling currently do not permit it. {"https://login.awesomecompany", "awesomecompany"}, + + // These are AppID test cases, but should also be invalid relying party + // examples too. + {"https://example.com", "https://com/"}, + {"https://example.com", "https://com/foo"}, + {"https://example.com", "https://foo.com/"}, + {"https://example.com", "http://example.com"}, + {"http://example.com", "https://example.com"}, + {"https://127.0.0.1", "https://127.0.0.1"}, + {"https://www.notgoogle.com", + "https://www.gstatic.com/securitykey/origins.json"}, + {"https://www.google.com", + "https://www.gstatic.com/securitykey/origins.json#x"}, + {"https://www.google.com", + "https://www.gstatic.com/securitykey/origins.json2"}, + {"https://www.google.com", "https://gstatic.com/securitykey/origins.json"}, + {"https://ggoogle.com", "https://www.gstatic.com/securitykey/origi"}, + {"https://com", "https://www.gstatic.com/securitykey/origins.json"}, }; using TestMakeCredentialCallback = device::test::StatusAndValueCallbackReceiver< @@ -293,6 +312,23 @@ token_binding); } + AuthenticatorStatus TryAuthenticationWithAppId(const std::string& origin, + const std::string& appid) { + const GURL origin_url(origin); + NavigateAndCommit(origin_url); + AuthenticatorPtr authenticator = ConnectToAuthenticator(); + PublicKeyCredentialRequestOptionsPtr options = + GetTestPublicKeyCredentialRequestOptions(); + options->relying_party_id = origin_url.host(); + options->appid = appid; + + TestGetAssertionCallback cb; + authenticator->GetAssertion(std::move(options), cb.callback()); + cb.WaitForCallback(); + + return cb.status(); + } + private: std::unique_ptr<AuthenticatorImpl> authenticator_impl_; }; @@ -302,14 +338,14 @@ // These instances should return security errors (for circumstances // that would normally crash the renderer). for (auto test_case : kInvalidRelyingPartyTestCases) { - SCOPED_TRACE(std::string(test_case.relying_party_id) + " " + + SCOPED_TRACE(std::string(test_case.claimed_authority) + " " + std::string(test_case.origin)); NavigateAndCommit(GURL(test_case.origin)); AuthenticatorPtr authenticator = ConnectToAuthenticator(); PublicKeyCredentialCreationOptionsPtr options = GetTestPublicKeyCredentialCreationOptions(); - options->relying_party->id = test_case.relying_party_id; + options->relying_party->id = test_case.claimed_authority; TestMakeCredentialCallback cb; authenticator->MakeCredential(std::move(options), cb.callback()); cb.WaitForCallback(); @@ -319,14 +355,14 @@ // These instances pass the origin and relying party checks and return at // the algorithm check. for (auto test_case : kValidRelyingPartyTestCases) { - SCOPED_TRACE(std::string(test_case.relying_party_id) + " " + + SCOPED_TRACE(std::string(test_case.claimed_authority) + " " + std::string(test_case.origin)); NavigateAndCommit(GURL(test_case.origin)); AuthenticatorPtr authenticator = ConnectToAuthenticator(); PublicKeyCredentialCreationOptionsPtr options = GetTestPublicKeyCredentialCreationOptions(); - options->relying_party->id = test_case.relying_party_id; + options->relying_party->id = test_case.claimed_authority; options->public_key_parameters = GetTestPublicKeyCredentialParameters(123); TestMakeCredentialCallback cb; @@ -519,16 +555,16 @@ TEST_F(AuthenticatorImplTest, GetAssertionOriginAndRpIds) { // These instances should return security errors (for circumstances // that would normally crash the renderer). - for (const OriginRelyingPartyIdPair& test_case : + for (const OriginClaimedAuthorityPair& test_case : kInvalidRelyingPartyTestCases) { - SCOPED_TRACE(std::string(test_case.relying_party_id) + " " + + SCOPED_TRACE(std::string(test_case.claimed_authority) + " " + std::string(test_case.origin)); NavigateAndCommit(GURL(test_case.origin)); AuthenticatorPtr authenticator = ConnectToAuthenticator(); PublicKeyCredentialRequestOptionsPtr options = GetTestPublicKeyCredentialRequestOptions(); - options->relying_party_id = test_case.relying_party_id; + options->relying_party_id = test_case.claimed_authority; TestGetAssertionCallback cb; authenticator->GetAssertion(std::move(options), cb.callback()); @@ -537,32 +573,19 @@ } } -typedef struct { - const char* origin; - const char* appid; - bool should_succeed; -} OriginAppIdPair; - -constexpr OriginAppIdPair kAppIdCases[] = { - {"https://example.com", "https://com/foo", false}, - {"https://example.com", "https://foo.com/", false}, - {"https://example.com", "http://example.com", false}, - {"http://example.com", "https://example.com", false}, - {"https://127.0.0.1", "https://127.0.0.1", false}, - {"https://www.notgoogle.com", - "https://www.gstatic.com/securitykey/origins.json", false}, - - {"https://example.com", "https://example.com", true}, - {"https://www.example.com", "https://example.com", true}, - {"https://example.com", "https://www.example.com", true}, - {"https://example.com", "https://foo.bar.example.com", true}, - {"https://example.com", "https://foo.bar.example.com/foo/bar", true}, +constexpr OriginClaimedAuthorityPair kValidAppIdCases[] = { + {"https://example.com", "https://example.com"}, + {"https://www.example.com", "https://example.com"}, + {"https://example.com", "https://www.example.com"}, + {"https://example.com", "https://foo.bar.example.com"}, + {"https://example.com", "https://foo.bar.example.com/foo/bar"}, + {"https://google.com", "https://www.gstatic.com/securitykey/origins.json"}, {"https://www.google.com", - "https://www.gstatic.com/securitykey/origins.json", true}, + "https://www.gstatic.com/securitykey/origins.json"}, {"https://www.google.com", - "https://www.gstatic.com/securitykey/a/google.com/origins.json", true}, + "https://www.gstatic.com/securitykey/a/google.com/origins.json"}, {"https://accounts.google.com", - "https://www.gstatic.com/securitykey/origins.json", true}, + "https://www.gstatic.com/securitykey/origins.json"}, }; // Verify behavior for various combinations of origins and RP IDs. @@ -570,31 +593,29 @@ TestServiceManagerContext smc; device::test::ScopedVirtualFidoDevice virtual_device; - for (const auto& test_case : kAppIdCases) { + for (const auto& test_case : kValidAppIdCases) { SCOPED_TRACE(std::string(test_case.origin) + " " + - std::string(test_case.appid)); + std::string(test_case.claimed_authority)); - const GURL origin_url(test_case.origin); - NavigateAndCommit(origin_url); - AuthenticatorPtr authenticator = ConnectToAuthenticator(); - PublicKeyCredentialRequestOptionsPtr options = - GetTestPublicKeyCredentialRequestOptions(); - options->relying_party_id = origin_url.host(); - options->appid = std::string(test_case.appid); - - TestGetAssertionCallback cb; - authenticator->GetAssertion(std::move(options), cb.callback()); - cb.WaitForCallback(); - - const AuthenticatorStatus status = cb.status(); - if (test_case.should_succeed) { - EXPECT_EQ(AuthenticatorStatus::NOT_ALLOWED_ERROR, status); - } else { - EXPECT_EQ(AuthenticatorStatus::INVALID_DOMAIN, status); - } + EXPECT_EQ(AuthenticatorStatus::NOT_ALLOWED_ERROR, + TryAuthenticationWithAppId(test_case.origin, + test_case.claimed_authority)); } - // TODO(agl): test positive cases once a mock U2F device exists. + // All the invalid relying party test cases should also be invalid as AppIDs. + for (const auto& test_case : kInvalidRelyingPartyTestCases) { + SCOPED_TRACE(std::string(test_case.origin) + " " + + std::string(test_case.claimed_authority)); + + if (strlen(test_case.claimed_authority) == 0) { + // In this case, no AppID is actually being tested. + continue; + } + + EXPECT_EQ(AuthenticatorStatus::INVALID_DOMAIN, + TryAuthenticationWithAppId(test_case.origin, + test_case.claimed_authority)); + } } TEST_F(AuthenticatorImplTest, TestGetAssertionTimeout) {
diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn index aba5da0..b3c6ea8 100644 --- a/content/child/BUILD.gn +++ b/content/child/BUILD.gn
@@ -120,7 +120,7 @@ "//skia", "//storage/common", "//third_party/WebKit/public:blink_headers", - "//third_party/WebKit/public:features", + "//third_party/WebKit/public:buildflags", "//third_party/WebKit/public:mojo_bindings", "//third_party/WebKit/public:resources", "//third_party/WebKit/public:scaled_resources",
diff --git a/content/child/blink_platform_impl.h b/content/child/blink_platform_impl.h index f220e2d..5ca4c74 100644 --- a/content/child/blink_platform_impl.h +++ b/content/child/blink_platform_impl.h
@@ -21,7 +21,7 @@ #include "third_party/WebKit/public/platform/Platform.h" #include "third_party/WebKit/public/platform/WebGestureDevice.h" #include "third_party/WebKit/public/platform/WebURLError.h" -#include "third_party/WebKit/public/public_features.h" +#include "third_party/WebKit/public/public_buildflags.h" #include "ui/base/layout.h" #if BUILDFLAG(USE_DEFAULT_RENDER_THEME)
diff --git a/content/common/BUILD.gn b/content/common/BUILD.gn index 395fe3d..9c84993f 100644 --- a/content/common/BUILD.gn +++ b/content/common/BUILD.gn
@@ -363,7 +363,7 @@ "//net", "//ppapi/buildflags", "//sandbox", - "//sandbox:sandbox_features", + "//sandbox:sandbox_buildflags", "//services/network/public/cpp", "//services/network/public/mojom", "//services/resource_coordinator/public/cpp:resource_coordinator_cpp",
diff --git a/content/common/mac/attributed_string_coder.h b/content/common/mac/attributed_string_coder.h index 52588847..7100793 100644 --- a/content/common/mac/attributed_string_coder.h +++ b/content/common/mac/attributed_string_coder.h
@@ -72,6 +72,8 @@ public: explicit EncodedString(base::string16 string); EncodedString(); + EncodedString(const EncodedString& other); + EncodedString& operator=(const EncodedString& other); ~EncodedString(); // Accessors:
diff --git a/content/common/mac/attributed_string_coder.mm b/content/common/mac/attributed_string_coder.mm index 18d28a0..34f2d0e 100644 --- a/content/common/mac/attributed_string_coder.mm +++ b/content/common/mac/attributed_string_coder.mm
@@ -72,6 +72,12 @@ : string_() { } +AttributedStringCoder::EncodedString::EncodedString( + const EncodedString& other) = default; + +AttributedStringCoder::EncodedString& AttributedStringCoder::EncodedString:: +operator=(const EncodedString& other) = default; + AttributedStringCoder::EncodedString::~EncodedString() { }
diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn index 0b880b14..cf7aca6 100644 --- a/content/public/android/BUILD.gn +++ b/content/public/android/BUILD.gn
@@ -131,7 +131,6 @@ "java/src/org/chromium/content/browser/JavascriptInterface.java", "java/src/org/chromium/content/browser/JoystickHandler.java", "java/src/org/chromium/content/browser/LauncherThread.java", - "java/src/org/chromium/content/browser/MediaResourceGetter.java", "java/src/org/chromium/content/browser/MediaSessionImpl.java", "java/src/org/chromium/content/browser/MemoryMonitorAndroid.java", "java/src/org/chromium/content/browser/MotionEventSynthesizer.java", @@ -366,7 +365,6 @@ "java/src/org/chromium/content/browser/InterstitialPageDelegateAndroid.java", "java/src/org/chromium/content/browser/JavascriptInjectorImpl.java", "java/src/org/chromium/content/browser/LauncherThread.java", - "java/src/org/chromium/content/browser/MediaResourceGetter.java", "java/src/org/chromium/content/browser/MediaSessionImpl.java", "java/src/org/chromium/content/browser/MemoryMonitorAndroid.java", "java/src/org/chromium/content/browser/NfcHost.java", @@ -470,7 +468,6 @@ "javatests/src/org/chromium/content/browser/JavaBridgeCoercionTest.java", "javatests/src/org/chromium/content/browser/JavaBridgeFieldsTest.java", "javatests/src/org/chromium/content/browser/JavaBridgeReturnValuesTest.java", - "javatests/src/org/chromium/content/browser/MediaResourceGetterTest.java", "javatests/src/org/chromium/content/browser/MediaSessionTest.java", "javatests/src/org/chromium/content/browser/NavigationTest.java", "javatests/src/org/chromium/content/browser/PopupZoomerTest.java",
diff --git a/content/public/android/java/src/org/chromium/content/browser/MediaResourceGetter.java b/content/public/android/java/src/org/chromium/content/browser/MediaResourceGetter.java deleted file mode 100644 index 3f34048..0000000 --- a/content/public/android/java/src/org/chromium/content/browser/MediaResourceGetter.java +++ /dev/null
@@ -1,422 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.content.browser; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.pm.PackageManager; -import android.media.MediaMetadataRetriever; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; -import android.net.Uri; -import android.os.ParcelFileDescriptor; -import android.text.TextUtils; - -import org.chromium.base.ContextUtils; -import org.chromium.base.Log; -import org.chromium.base.PathUtils; -import org.chromium.base.VisibleForTesting; -import org.chromium.base.annotations.CalledByNative; -import org.chromium.base.annotations.JNINamespace; - -import java.io.File; -import java.io.IOException; -import java.net.URI; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -/** - * Java counterpart of android MediaResourceGetter. - */ -@JNINamespace("content") -class MediaResourceGetter { - private static final String TAG = "cr_MediaResource"; - private static final MediaMetadata EMPTY_METADATA = new MediaMetadata(0, 0, 0, false); - - private final MediaMetadataRetriever mRetriever = new MediaMetadataRetriever(); - - @VisibleForTesting - static class MediaMetadata { - private final int mDurationInMilliseconds; - private final int mWidth; - private final int mHeight; - private final boolean mSuccess; - - MediaMetadata(int durationInMilliseconds, int width, int height, boolean success) { - mDurationInMilliseconds = durationInMilliseconds; - mWidth = width; - mHeight = height; - mSuccess = success; - } - - // TODO(andrewhayden): according to the spec, if duration is unknown - // then we must return NaN. If it is unbounded, then positive infinity. - // http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html - @CalledByNative("MediaMetadata") - int getDurationInMilliseconds() { - return mDurationInMilliseconds; - } - - @CalledByNative("MediaMetadata") - int getWidth() { - return mWidth; - } - - @CalledByNative("MediaMetadata") - int getHeight() { - return mHeight; - } - - @CalledByNative("MediaMetadata") - boolean isSuccess() { - return mSuccess; - } - - @Override - public String toString() { - return "MediaMetadata[" - + "durationInMilliseconds=" + mDurationInMilliseconds - + ", width=" + mWidth - + ", height=" + mHeight - + ", success=" + mSuccess - + "]"; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + mDurationInMilliseconds; - result = prime * result + mHeight; - result = prime * result + (mSuccess ? 1231 : 1237); - result = prime * result + mWidth; - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) return true; - if (obj == null) return false; - if (getClass() != obj.getClass()) return false; - MediaMetadata other = (MediaMetadata) obj; - if (mDurationInMilliseconds != other.mDurationInMilliseconds) return false; - if (mHeight != other.mHeight) return false; - if (mSuccess != other.mSuccess) return false; - if (mWidth != other.mWidth) return false; - return true; - } - } - - @CalledByNative - private static MediaMetadata extractMediaMetadata( - final String url, final String cookies, final String userAgent) { - return new MediaResourceGetter().extract( - ContextUtils.getApplicationContext(), url, cookies, userAgent); - } - - @CalledByNative - private static MediaMetadata extractMediaMetadataFromFd(int fd, - long offset, - long length) { - return new MediaResourceGetter().extract(fd, offset, length); - } - - @VisibleForTesting - MediaMetadata extract(int fd, long offset, long length) { - configure(fd, offset, length); - return doExtractMetadata(); - } - - @VisibleForTesting - MediaMetadata extract(final Context context, final String url, - final String cookies, final String userAgent) { - if (!configure(context, url, cookies, userAgent)) { - Log.e(TAG, "Unable to configure metadata extractor"); - return EMPTY_METADATA; - } - return doExtractMetadata(); - } - - private MediaMetadata doExtractMetadata() { - try { - String durationString = extractMetadata( - MediaMetadataRetriever.METADATA_KEY_DURATION); - if (durationString == null) { - Log.w(TAG, "missing duration metadata"); - return EMPTY_METADATA; - } - - int durationMillis = 0; - try { - durationMillis = Integer.parseInt(durationString); - } catch (NumberFormatException e) { - Log.w(TAG, "non-numeric duration: %s", durationString); - return EMPTY_METADATA; - } - - int width = 0; - int height = 0; - boolean hasVideo = "yes".equals(extractMetadata( - MediaMetadataRetriever.METADATA_KEY_HAS_VIDEO)); - Log.d(TAG, (hasVideo ? "resource has video" : "resource doesn't have video")); - if (hasVideo) { - String widthString = extractMetadata( - MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH); - if (widthString == null) { - Log.w(TAG, "missing video width metadata"); - return EMPTY_METADATA; - } - try { - width = Integer.parseInt(widthString); - } catch (NumberFormatException e) { - Log.w(TAG, "non-numeric width: %s", widthString); - return EMPTY_METADATA; - } - - String heightString = extractMetadata( - MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT); - if (heightString == null) { - Log.w(TAG, "missing video height metadata"); - return EMPTY_METADATA; - } - try { - height = Integer.parseInt(heightString); - } catch (NumberFormatException e) { - Log.w(TAG, "non-numeric height: %s", heightString); - return EMPTY_METADATA; - } - } - MediaMetadata result = new MediaMetadata(durationMillis, width, height, true); - Log.d(TAG, "extracted valid metadata: %s", result); - return result; - } catch (RuntimeException e) { - Log.e(TAG, "Unable to extract metadata: %s", e); - return EMPTY_METADATA; - } - } - - @VisibleForTesting - boolean configure(Context context, String url, String cookies, String userAgent) { - URI uri; - try { - uri = URI.create(url); - } catch (IllegalArgumentException e) { - Log.e(TAG, "Cannot parse uri: %s", e); - return false; - } - String scheme = uri.getScheme(); - if (scheme == null || scheme.equals("file")) { - File file = uriToFile(uri.getPath()); - if (!file.exists()) { - Log.e(TAG, "File does not exist."); - return false; - } - if (!filePathAcceptable(file, context)) { - Log.e(TAG, "Refusing to read from unsafe file location."); - return false; - } - try { - configure(file.getAbsolutePath()); - return true; - } catch (RuntimeException e) { - Log.e(TAG, "Error configuring data source: %s", e); - return false; - } - } - if (scheme.equals("content")) { - try { - configure(context, Uri.parse(uri.toString())); - return true; - } catch (RuntimeException e) { - Log.e(TAG, "Error configuring data source: %s", e); - return false; - } - } - if (uri.getPath() != null && uri.getPath().endsWith(".m3u8")) { - // MediaMetadataRetriever does not work with HLS correctly. - return false; - } - final String host = uri.getHost(); - if (!isLoopbackAddress(host) && !isNetworkReliable(context)) { - Log.w(TAG, "non-file URI can't be read due to unsuitable network conditions"); - return false; - } - Map<String, String> headersMap = new HashMap<String, String>(); - if (!TextUtils.isEmpty(cookies)) { - headersMap.put("Cookie", cookies); - } - if (!TextUtils.isEmpty(userAgent)) { - headersMap.put("User-Agent", userAgent); - } - try { - configure(url, headersMap); - return true; - } catch (RuntimeException e) { - Log.e(TAG, "Error configuring data source: %s", e); - return false; - } - } - - /** - * @return true if the device is on an ethernet or wifi network. - * If anything goes wrong (e.g., permission denied while trying to access - * the network state), returns false. - */ - @VisibleForTesting - boolean isNetworkReliable(Context context) { - if (context.checkCallingOrSelfPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) - != PackageManager.PERMISSION_GRANTED) { - Log.w(TAG, "permission denied to access network state"); - return false; - } - - Integer networkType = getNetworkType(context); - if (networkType == null) { - return false; - } - switch (networkType.intValue()) { - case ConnectivityManager.TYPE_ETHERNET: - case ConnectivityManager.TYPE_WIFI: - Log.d(TAG, "ethernet/wifi connection detected"); - return true; - case ConnectivityManager.TYPE_WIMAX: - case ConnectivityManager.TYPE_MOBILE: - default: - Log.d(TAG, "no ethernet/wifi connection detected"); - return false; - } - } - - // This method covers only typcial expressions for the loopback address - // to resolve the hostname without a DNS loopup. - private boolean isLoopbackAddress(String host) { - return host != null && (host.equalsIgnoreCase("localhost") // typical hostnames - || host.equalsIgnoreCase("localhost.localdomain") - || host.equalsIgnoreCase("localhost6") - || host.equalsIgnoreCase("localhost6.localdomain6") - || host.toLowerCase(Locale.US).endsWith(".localhost") - || host.equals("127.0.0.1") // typical IP v4 expression - || host.equals("[::1]")); // typical IP v6 expression - } - - /** - * @param file the file whose path should be checked - * @return true if and only if the file is in a location that we consider - * safe to read from, such as /mnt/sdcard. - */ - @VisibleForTesting - boolean filePathAcceptable(File file, Context context) { - final String path; - try { - path = file.getCanonicalPath(); - } catch (IOException e) { - // Canonicalization has failed. Assume malicious, give up. - Log.w(TAG, "canonicalization of file path failed"); - return false; - } - // In order to properly match the roots we must also canonicalize the - // well-known paths we are matching against. If we don't, then we can - // get unusual results in testing systems or possibly on rooted devices. - // Note that canonicalized directory paths always end with '/'. - List<String> acceptablePaths = canonicalize(getRawAcceptableDirectories(context)); - acceptablePaths.add(getExternalStorageDirectory()); - Log.d(TAG, "canonicalized file path: %s", path); - for (String acceptablePath : acceptablePaths) { - if (path.startsWith(acceptablePath)) { - return true; - } - } - return false; - } - - // The methods below can be used by unit tests to fake functionality. - @VisibleForTesting - File uriToFile(String path) { - return new File(path); - } - - @VisibleForTesting - Integer getNetworkType(Context context) { - // TODO(qinmin): use ConnectionTypeObserver to listen to the network type change. - ConnectivityManager mConnectivityManager = - (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - if (mConnectivityManager == null) { - Log.w(TAG, "no connectivity manager available"); - return null; - } - NetworkInfo info = mConnectivityManager.getActiveNetworkInfo(); - if (info == null) { - Log.d(TAG, "no active network"); - return null; - } - return info.getType(); - } - - @SuppressLint("SdCardPath") - private List<String> getRawAcceptableDirectories(Context context) { - List<String> result = new ArrayList<String>(); - result.add("/mnt/sdcard/"); - result.add("/sdcard/"); - result.add("/data/data/" + context.getPackageName() + "/cache/"); - return result; - } - - private List<String> canonicalize(List<String> paths) { - List<String> result = new ArrayList<String>(paths.size()); - try { - for (String path : paths) { - result.add(new File(path).getCanonicalPath()); - } - return result; - } catch (IOException e) { - // Canonicalization has failed. Assume malicious, give up. - Log.w(TAG, "canonicalization of file path failed"); - } - return result; - } - - @VisibleForTesting - String getExternalStorageDirectory() { - return PathUtils.getExternalStorageDirectory(); - } - - @VisibleForTesting - void configure(int fd, long offset, long length) { - ParcelFileDescriptor parcelFd = ParcelFileDescriptor.adoptFd(fd); - try { - mRetriever.setDataSource(parcelFd.getFileDescriptor(), - offset, length); - } finally { - try { - parcelFd.close(); - } catch (IOException e) { - Log.e(TAG, "Failed to close file descriptor: %s", e); - } - } - } - - @VisibleForTesting - void configure(String url, Map<String, String> headers) { - mRetriever.setDataSource(url, headers); - } - - @VisibleForTesting - void configure(String path) { - mRetriever.setDataSource(path); - } - - @VisibleForTesting - void configure(Context context, Uri uri) { - mRetriever.setDataSource(context, uri); - } - - @VisibleForTesting - String extractMetadata(int key) { - return mRetriever.extractMetadata(key); - } -}
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/MediaResourceGetterTest.java b/content/public/android/javatests/src/org/chromium/content/browser/MediaResourceGetterTest.java deleted file mode 100644 index 3b6775dc..0000000 --- a/content/public/android/javatests/src/org/chromium/content/browser/MediaResourceGetterTest.java +++ /dev/null
@@ -1,665 +0,0 @@ -// Copyright 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.content.browser; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.pm.PackageManager; -import android.media.MediaMetadataRetriever; -import android.net.ConnectivityManager; -import android.net.Uri; -import android.support.test.filters.SmallTest; -import android.test.mock.MockContext; -import android.util.SparseArray; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; - -import org.chromium.base.test.BaseJUnit4ClassRunner; -import org.chromium.content.browser.MediaResourceGetter.MediaMetadata; - -import java.io.File; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -/** - * Tests for MediaResourceGetter. - */ -@RunWith(BaseJUnit4ClassRunner.class) -@SuppressLint("SdCardPath") -public class MediaResourceGetterTest { - private static final String TEST_HTTP_URL = "http://example.com"; - private static final String TEST_USER_AGENT = // Anything, really - "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 " - + "(KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36"; - private static final String TEST_FILE_PATH = "/mnt/sdcard/test"; - private static final String TEST_FILE_URL = "file://" + TEST_FILE_PATH; - private static final String TEST_CONTENT_URI = - "content://com.android.providers.media.documents/document/video:113"; - private static final String TEST_COOKIES = "yum yum yum!"; - private static final MediaMetadata sEmptyMetadata = new MediaMetadata(0, 0, 0, false); - private static final String sExternalStorageDirectory = "/test_external_storage"; - - private static final Map<String, String> sHeadersCookieOnly; - private static final Map<String, String> sHeadersCookieAndUA; - private static final Map<String, String> sHeadersUAOnly; - static { - Map<String, String> headers = new HashMap<String, String>(); - headers.put("Cookie", TEST_COOKIES); - sHeadersCookieOnly = Collections.unmodifiableMap(headers); - - headers = new HashMap<String, String>(); - headers.put("User-Agent", TEST_USER_AGENT); - sHeadersUAOnly = Collections.unmodifiableMap(headers); - - headers = new HashMap<String, String>(); - headers.putAll(sHeadersCookieOnly); - headers.putAll(sHeadersUAOnly); - sHeadersCookieAndUA = Collections.unmodifiableMap(headers); - } - - private static class FakeFile extends File { - final boolean mExists; - - public FakeFile(String path, boolean exists) { - super(path); - mExists = exists; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + (mExists ? 1231 : 1237); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) return true; - if (!super.equals(obj)) return false; - if (getClass() != obj.getClass()) return false; - FakeFile other = (FakeFile) obj; - if (mExists != other.mExists) return false; - return true; - } - - @Override - public boolean exists() { - return mExists; - } - } - - /** - * Helper class that fakes functionality we cannot perform without real - * media resources. The class being faked here has been architected - * carefully to allow most of the functionality to be tested. What remains - * here is overrides of trivial functionality. - */ - private static class FakeMediaResourceGetter extends MediaResourceGetter { - // Read these back in tests to ensure proper values passed through - String mUri = null; - Map<String, String> mHeaders = null; - String mPath = null; - String mContentUri = null; - int mFd; - long mOffset; - long mLength; - - // Write these before tests to configure functionality - SparseArray<String> mMetadata = null; - Integer mNetworkType = null; - boolean mThrowExceptionInConfigure = false; - boolean mThrowExceptionInExtract = false; - boolean mFileExists = false; - - // Can't use a real MediaMetadataRetriever as we have no media - @Override - public void configure(int fd, long offset, long length) { - if (mThrowExceptionInConfigure) { - throw new RuntimeException("test exception"); - } - mFd = fd; - mOffset = offset; - mLength = length; - } - - // Can't use a real MediaMetadataRetriever as we have no media - @Override - public void configure(String uri, Map<String, String> headers) { - if (mThrowExceptionInConfigure) { - throw new RuntimeException("test exception"); - } - mUri = uri; - mHeaders = headers; - } - - // Can't use a real MediaMetadataRetriever as we have no media - @Override - public void configure(String path) { - if (mThrowExceptionInConfigure) { - throw new RuntimeException("test exception"); - } - mPath = path; - } - - // Can't use a real MediaMetadataRetriever as we have no media - @Override - public void configure(Context context, Uri uri) { - if (mThrowExceptionInConfigure) { - throw new RuntimeException("test exception"); - } - mContentUri = uri.toString(); - } - - // Can't use a real MediaMetadataRetriever as we have no media - @Override - public String extractMetadata(int key) { - if (mThrowExceptionInExtract) { - throw new RuntimeException("test exception"); - } - if (mMetadata == null) { - return null; - } - return mMetadata.get(key); - } - - // Can't use a real NetworkInfo object because there is no way to - // mock the ConnectivityManager in Android. - @Override - Integer getNetworkType(Context context) { - return mNetworkType; - } - - // Can't use Environment.getExternalStorageDirectory because it could - // be inconsistent depending upon the state of the real or emulated - // device upon which we are testing. - @Override - String getExternalStorageDirectory() { - return sExternalStorageDirectory; - } - - // Can't use regular File because we need to control the return from - // File.exists() on arbitrary paths. - @Override - File uriToFile(String path) { - FakeFile result = new FakeFile(path, mFileExists); - return result; - } - - /** - * Convenience method to bind a metadata value to a key. - * @param key the key - * @param value the value - */ - void bind(int key, String value) { - if (mMetadata == null) { - mMetadata = new SparseArray<String>(); - } - mMetadata.put(key, value); - } - - } - - /** - * Helper class to control the result of permission checks. - */ - private static class InternalMockContext extends MockContext { - boolean mAllowPermission = false; - @Override - public int checkCallingOrSelfPermission(String permission) { - Assert.assertEquals(android.Manifest.permission.ACCESS_NETWORK_STATE, permission); - return mAllowPermission ? PackageManager.PERMISSION_GRANTED : - PackageManager.PERMISSION_DENIED; - } - - @Override - public String getPackageName() { - return "org.some.app.package"; - } - } - - // Our test objects. - private FakeMediaResourceGetter mFakeMRG; - private InternalMockContext mMockContext; - - @Before - public void setUp() throws Exception { - mFakeMRG = new FakeMediaResourceGetter(); - mMockContext = new InternalMockContext(); - } - - @Test - @SmallTest - public void testMediaMetadataEquals() { - Assert.assertEquals(sEmptyMetadata, sEmptyMetadata); - Assert.assertEquals(sEmptyMetadata, new MediaMetadata(0, 0, 0, false)); - Assert.assertFalse(sEmptyMetadata.equals(null)); - Assert.assertFalse(sEmptyMetadata.equals("test")); - Assert.assertFalse(sEmptyMetadata.equals(new MediaMetadata(1, 0, 0, false))); - Assert.assertFalse(sEmptyMetadata.equals(new MediaMetadata(0, 1, 0, false))); - Assert.assertFalse(sEmptyMetadata.equals(new MediaMetadata(0, 0, 1, false))); - Assert.assertFalse(sEmptyMetadata.equals(new MediaMetadata(0, 0, 0, true))); - } - - @Test - @SmallTest - public void testMediaMetadataHashCode() { - Assert.assertEquals(sEmptyMetadata.hashCode(), sEmptyMetadata.hashCode()); - Assert.assertEquals( - sEmptyMetadata.hashCode(), new MediaMetadata(0, 0, 0, false).hashCode()); - Assert.assertFalse( - sEmptyMetadata.hashCode() == new MediaMetadata(1, 0, 0, false).hashCode()); - Assert.assertFalse( - sEmptyMetadata.hashCode() == new MediaMetadata(0, 1, 0, false).hashCode()); - Assert.assertFalse( - sEmptyMetadata.hashCode() == new MediaMetadata(0, 0, 1, false).hashCode()); - Assert.assertFalse( - sEmptyMetadata.hashCode() == new MediaMetadata(0, 0, 0, true).hashCode()); - } - - @Test - @SmallTest - public void testMediaMetadataGetters() { - MediaMetadata data = new MediaMetadata(1, 2, 3, true); - Assert.assertEquals(1, data.getDurationInMilliseconds()); - Assert.assertEquals(2, data.getWidth()); - Assert.assertEquals(3, data.getHeight()); - Assert.assertTrue(data.isSuccess()); - - // Validate no overlap of test values with defaults - data = new MediaMetadata(4, 5, 6, false); - Assert.assertEquals(4, data.getDurationInMilliseconds()); - Assert.assertEquals(5, data.getWidth()); - Assert.assertEquals(6, data.getHeight()); - Assert.assertFalse(data.isSuccess()); - } - - @Test - @SmallTest - public void testConfigure_Net_NoPermissions() { - mMockContext.mAllowPermission = false; - Assert.assertFalse( - mFakeMRG.configure(mMockContext, TEST_HTTP_URL, TEST_COOKIES, TEST_USER_AGENT)); - } - - @Test - @SmallTest - public void testConfigure_Net_NoActiveNetwork() { - mMockContext.mAllowPermission = true; - mFakeMRG.mNetworkType = null; - Assert.assertFalse( - mFakeMRG.configure(mMockContext, TEST_HTTP_URL, TEST_COOKIES, TEST_USER_AGENT)); - } - - @Test - @SmallTest - public void testConfigure_Net_Disallowed_Mobile() { - mMockContext.mAllowPermission = true; - mFakeMRG.mNetworkType = ConnectivityManager.TYPE_MOBILE; - Assert.assertFalse( - mFakeMRG.configure(mMockContext, TEST_HTTP_URL, TEST_COOKIES, TEST_USER_AGENT)); - } - - @Test - @SmallTest - public void testConfigure_Net_Disallowed_Wimax() { - mMockContext.mAllowPermission = true; - mFakeMRG.mNetworkType = ConnectivityManager.TYPE_WIMAX; - Assert.assertFalse( - mFakeMRG.configure(mMockContext, TEST_HTTP_URL, TEST_COOKIES, TEST_USER_AGENT)); - } - - @Test - @SmallTest - public void testConfigure_Net_Allowed_Ethernet_Cookies_NoUA() { - mMockContext.mAllowPermission = true; - mFakeMRG.mNetworkType = ConnectivityManager.TYPE_ETHERNET; - Assert.assertTrue(mFakeMRG.configure(mMockContext, TEST_HTTP_URL, TEST_COOKIES, null)); - Assert.assertEquals(TEST_HTTP_URL, mFakeMRG.mUri); - Assert.assertEquals(sHeadersCookieOnly, mFakeMRG.mHeaders); - Assert.assertNull(mFakeMRG.mPath); - Assert.assertNull(mFakeMRG.mContentUri); - } - - @Test - @SmallTest - public void testConfigure_Net_Allowed_Wifi_Cookies_NoUA() { - mMockContext.mAllowPermission = true; - mFakeMRG.mNetworkType = ConnectivityManager.TYPE_WIFI; - Assert.assertTrue(mFakeMRG.configure(mMockContext, TEST_HTTP_URL, TEST_COOKIES, null)); - Assert.assertEquals(TEST_HTTP_URL, mFakeMRG.mUri); - Assert.assertEquals(sHeadersCookieOnly, mFakeMRG.mHeaders); - Assert.assertNull(mFakeMRG.mPath); - Assert.assertNull(mFakeMRG.mContentUri); - } - - @Test - @SmallTest - public void testConfigure_Net_Allowed_Ethernet_NoCookies_NoUA() { - mMockContext.mAllowPermission = true; - mFakeMRG.mNetworkType = ConnectivityManager.TYPE_ETHERNET; - Assert.assertTrue(mFakeMRG.configure(mMockContext, TEST_HTTP_URL, "", null)); - Assert.assertEquals(TEST_HTTP_URL, mFakeMRG.mUri); - Assert.assertEquals(Collections.emptyMap(), mFakeMRG.mHeaders); - Assert.assertNull(mFakeMRG.mPath); - Assert.assertNull(mFakeMRG.mContentUri); - } - - @Test - @SmallTest - public void testConfigure_Net_Allowed_Ethernet_Cookies_WithUA() { - mMockContext.mAllowPermission = true; - mFakeMRG.mNetworkType = ConnectivityManager.TYPE_ETHERNET; - Assert.assertTrue( - mFakeMRG.configure(mMockContext, TEST_HTTP_URL, TEST_COOKIES, TEST_USER_AGENT)); - Assert.assertEquals(TEST_HTTP_URL, mFakeMRG.mUri); - Assert.assertEquals(sHeadersCookieAndUA, mFakeMRG.mHeaders); - Assert.assertNull(mFakeMRG.mPath); - Assert.assertNull(mFakeMRG.mContentUri); - } - - @Test - @SmallTest - public void testConfigure_Net_Allowed_Ethernet_NoCookies_WithUA() { - mMockContext.mAllowPermission = true; - mFakeMRG.mNetworkType = ConnectivityManager.TYPE_ETHERNET; - Assert.assertTrue(mFakeMRG.configure(mMockContext, TEST_HTTP_URL, "", TEST_USER_AGENT)); - Assert.assertEquals(TEST_HTTP_URL, mFakeMRG.mUri); - Assert.assertEquals(sHeadersUAOnly, mFakeMRG.mHeaders); - Assert.assertNull(mFakeMRG.mPath); - Assert.assertNull(mFakeMRG.mContentUri); - } - - @Test - @SmallTest - public void testConfigure_Net_Allowed_Ethernet_Exception() { - mMockContext.mAllowPermission = true; - mFakeMRG.mThrowExceptionInConfigure = true; - mFakeMRG.mNetworkType = ConnectivityManager.TYPE_ETHERNET; - Assert.assertFalse(mFakeMRG.configure(mMockContext, TEST_HTTP_URL, "", TEST_USER_AGENT)); - Assert.assertNull(mFakeMRG.mUri); - Assert.assertNull(mFakeMRG.mHeaders); - } - - @Test - @SmallTest - public void testConfigure_Net_Allowed_LocalHost_WithNoNetwork() { - String[] localHostUrls = { - "http://LocalHost", - "http://LocalHost6", - "http://helloworld.localhost:8000", - "https://127.0.0.1/", - "http://[::1]:8888/", - }; - mMockContext.mAllowPermission = true; - mFakeMRG.mNetworkType = null; - for (String localHostUrl : localHostUrls) { - Assert.assertTrue( - mFakeMRG.configure(mMockContext, localHostUrl, TEST_COOKIES, TEST_USER_AGENT)); - Assert.assertEquals(localHostUrl, mFakeMRG.mUri); - Assert.assertEquals(sHeadersCookieAndUA, mFakeMRG.mHeaders); - Assert.assertNull(mFakeMRG.mPath); - Assert.assertNull(mFakeMRG.mContentUri); - } - } - - @Test - @SmallTest - public void testConfigure_File_Allowed_MntSdcard() { - final String path = "/mnt/sdcard/test"; - final String url = "file://" + path; - mFakeMRG.mFileExists = true; - Assert.assertTrue(mFakeMRG.configure(mMockContext, url, "", null)); - Assert.assertEquals(path, mFakeMRG.mPath); - Assert.assertNull(mFakeMRG.mUri); - Assert.assertNull(mFakeMRG.mContentUri); - Assert.assertNull(mFakeMRG.mHeaders); - } - - @Test - @SmallTest - public void testConfigure_File_Allowed_Sdcard() { - final String path = "/sdcard/test"; - final String url = "file://" + path; - mFakeMRG.mFileExists = true; - Assert.assertTrue(mFakeMRG.configure(mMockContext, url, "", null)); - Assert.assertEquals(path, mFakeMRG.mPath); - Assert.assertNull(mFakeMRG.mUri); - Assert.assertNull(mFakeMRG.mContentUri); - Assert.assertNull(mFakeMRG.mHeaders); - } - - @Test - @SmallTest - public void testConfigure_File_Allowed_Sdcard_DoesntExist() { - final String path = "/sdcard/test"; - final String url = "file://" + path; - mFakeMRG.mFileExists = false; - Assert.assertFalse(mFakeMRG.configure(mMockContext, url, "", null)); - Assert.assertNull(mFakeMRG.mPath); - } - - @Test - @SmallTest - public void testConfigure_File_Allowed_ExternalStorage() { - final String path = sExternalStorageDirectory + "/test"; - final String url = "file://" + path; - mFakeMRG.mFileExists = true; - Assert.assertTrue(mFakeMRG.configure(mMockContext, url, "", null)); - Assert.assertEquals(path, mFakeMRG.mPath); - Assert.assertNull(mFakeMRG.mUri); - Assert.assertNull(mFakeMRG.mContentUri); - Assert.assertNull(mFakeMRG.mHeaders); - } - - @Test - @SmallTest - public void testConfigure_File_Disallowed_Innocent() { - final String path = "/malicious/path"; - final String url = "file://" + path; - mFakeMRG.mFileExists = true; - Assert.assertFalse(mFakeMRG.configure(mMockContext, url, "", null)); - Assert.assertNull(mFakeMRG.mPath); - } - - @Test - @SmallTest - public void testConfigure_File_Disallowed_Malicious() { - final String path = "/mnt/sdcard/../../data"; - final String url = "file://" + path; - mFakeMRG.mFileExists = true; - Assert.assertFalse(mFakeMRG.configure(mMockContext, url, "", null)); - Assert.assertNull(mFakeMRG.mPath); - } - - @Test - @SmallTest - public void testConfigure_File_Allowed_Exception() { - final String path = "/mnt/sdcard/test"; - final String url = "file://" + path; - mFakeMRG.mFileExists = true; - mFakeMRG.mThrowExceptionInConfigure = true; - Assert.assertFalse(mFakeMRG.configure(mMockContext, url, "", null)); - Assert.assertNull(mFakeMRG.mPath); - } - - @Test - @SmallTest - public void testConfigure_Blob_Disallow_Null_Cache() { - final String path = "/data/data/" + null + "/cache/"; - final String url = path; - mFakeMRG.mFileExists = true; - mFakeMRG.mThrowExceptionInConfigure = true; - Assert.assertFalse(mFakeMRG.configure(mMockContext, url, "", null)); - Assert.assertNull(mFakeMRG.mPath); - } - - @Test - @SmallTest - public void testConfigure_Blob_Disallowed_Incomplete_Path() { - final String path = "/data/data/"; - final String url = path; - mFakeMRG.mFileExists = true; - mFakeMRG.mThrowExceptionInConfigure = true; - Assert.assertFalse(mFakeMRG.configure(mMockContext, url, "", null)); - Assert.assertNull(mFakeMRG.mPath); - } - - @Test - @SmallTest - public void testConfigure_Blob_Disallowed_Unknown_Path() { - final String path = "/unknown/path/"; - final String url = path; - mFakeMRG.mFileExists = true; - mFakeMRG.mThrowExceptionInConfigure = true; - Assert.assertFalse(mFakeMRG.configure(mMockContext, url, "", null)); - Assert.assertNull(mFakeMRG.mPath); - } - - @Test - @SmallTest - public void testConfigure_Blob_Disallowed_Other_Application() { - final String path = "/data/data/org.some.other.app/cache/"; - final String url = path; - mFakeMRG.mFileExists = true; - mFakeMRG.mThrowExceptionInConfigure = true; - Assert.assertFalse(mFakeMRG.configure(mMockContext, url, "", null)); - Assert.assertNull(mFakeMRG.mPath); - } - - @Test - @SmallTest - public void testConfigure_Content_Uri_Allowed() { - Assert.assertTrue(mFakeMRG.configure(mMockContext, TEST_CONTENT_URI, "", null)); - Assert.assertNull(mFakeMRG.mPath); - Assert.assertNull(mFakeMRG.mUri); - Assert.assertEquals(TEST_CONTENT_URI, mFakeMRG.mContentUri); - } - - @Test - @SmallTest - public void testConfigure_Content_Uri_Disallowed() { - mFakeMRG.mThrowExceptionInConfigure = true; - Assert.assertFalse(mFakeMRG.configure(mMockContext, TEST_CONTENT_URI, "", null)); - Assert.assertNull(mFakeMRG.mPath); - Assert.assertNull(mFakeMRG.mUri); - Assert.assertNull(mFakeMRG.mContentUri); - } - - @Test - @SmallTest - public void testExtract_NoMetadata() { - mFakeMRG.mFileExists = true; - Assert.assertEquals( - sEmptyMetadata, mFakeMRG.extract(mMockContext, TEST_FILE_URL, null, null)); - Assert.assertEquals("configured successfully when we shouldn't have", TEST_FILE_PATH, - mFakeMRG.mPath); // tricky - } - - @Test - @SmallTest - public void testExtract_WithMetadata_ValidDuration() { - mFakeMRG.mFileExists = true; - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_DURATION, "1"); - final MediaMetadata expected = new MediaMetadata(1, 0, 0, true); - Assert.assertEquals(expected, mFakeMRG.extract(mMockContext, TEST_FILE_URL, null, null)); - } - - @Test - @SmallTest - public void testExtract_WithMetadata_InvalidDuration() { - mFakeMRG.mFileExists = true; - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_DURATION, "i am not an integer"); - Assert.assertEquals( - sEmptyMetadata, mFakeMRG.extract(mMockContext, TEST_FILE_URL, null, null)); - } - - @Test - @SmallTest - public void testExtract_WithMetadata_ValidDuration_HasVideo_NoWidth_NoHeight() { - mFakeMRG.mFileExists = true; - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_DURATION, "1"); - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_HAS_VIDEO, "yes"); - Assert.assertEquals( - sEmptyMetadata, mFakeMRG.extract(mMockContext, TEST_FILE_URL, null, null)); - } - - @Test - @SmallTest - public void testExtract_WithMetadata_ValidDuration_HasVideo_ValidWidth_NoHeight() { - mFakeMRG.mFileExists = true; - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_DURATION, "1"); - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_HAS_VIDEO, "yes"); - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH, "1"); - Assert.assertEquals( - sEmptyMetadata, mFakeMRG.extract(mMockContext, TEST_FILE_URL, null, null)); - } - - @Test - @SmallTest - public void testExtract_WithMetadata_ValidDuration_HasVideo_InvalidWidth_NoHeight() { - mFakeMRG.mFileExists = true; - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_DURATION, "1"); - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_HAS_VIDEO, "yes"); - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH, "i am not an integer"); - Assert.assertEquals( - sEmptyMetadata, mFakeMRG.extract(mMockContext, TEST_FILE_URL, null, null)); - } - - @Test - @SmallTest - public void testExtract_WithMetadata_ValidDuration_HasVideo_ValidWidth_ValidHeight() { - mFakeMRG.mFileExists = true; - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_DURATION, "1"); - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_HAS_VIDEO, "yes"); - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH, "2"); - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT, "3"); - final MediaMetadata expected = new MediaMetadata(1, 2, 3, true); - Assert.assertEquals(expected, mFakeMRG.extract(mMockContext, TEST_FILE_URL, null, null)); - } - - @Test - @SmallTest - public void testExtract_WithMetadata_ValidDuration_HasVideo_ValidWidth_InvalidHeight() { - mFakeMRG.mFileExists = true; - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_DURATION, "1"); - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_HAS_VIDEO, "yes"); - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH, "1"); - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT, "i am not an integer"); - Assert.assertEquals( - sEmptyMetadata, mFakeMRG.extract(mMockContext, TEST_FILE_URL, null, null)); - } - - @Test - @SmallTest - public void testExtract_WithMetadata_ValidDuration_ExceptionInExtract() { - mFakeMRG.mFileExists = true; - mFakeMRG.mThrowExceptionInExtract = true; - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_DURATION, "1"); - Assert.assertEquals( - sEmptyMetadata, mFakeMRG.extract(mMockContext, TEST_FILE_URL, null, null)); - } - - @Test - @SmallTest - public void testExtractFromFileDescriptor_ValidMetadata() { - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_DURATION, "1"); - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_HAS_VIDEO, "yes"); - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH, "2"); - mFakeMRG.bind(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT, "3"); - final MediaMetadata expected = new MediaMetadata(1, 2, 3, true); - int fd = 1234; - long offset = 1000; - long length = 9000; - Assert.assertEquals(expected, mFakeMRG.extract(fd, offset, length)); - Assert.assertEquals(fd, mFakeMRG.mFd); - Assert.assertEquals(offset, mFakeMRG.mOffset); - Assert.assertEquals(length, mFakeMRG.mLength); - } -}
diff --git a/content/public/test/content_browser_test_utils_mac.mm b/content/public/test/content_browser_test_utils_mac.mm index b2d517d..17cf6e9 100644 --- a/content/public/test/content_browser_test_utils_mac.mm +++ b/content/public/test/content_browser_test_utils_mac.mm
@@ -10,8 +10,10 @@ #include <memory> #include "base/lazy_instance.h" +#include "base/mac/bind_objc_block.h" #include "base/mac/scoped_objc_class_swizzler.h" #include "base/strings/stringprintf.h" +#include "base/strings/sys_string_conversions.h" #import "content/browser/renderer_host/render_widget_host_view_cocoa.h" #include "content/browser/renderer_host/render_widget_host_view_mac.h" #include "content/browser/renderer_host/text_input_client_mac.h" @@ -120,10 +122,14 @@ base::Callback<void(const std::string&, const gfx::Point&)> result_callback) { TextInputClientMac::GetInstance()->GetStringAtPoint( - rwh, point, ^(NSAttributedString* string, NSPoint baselinePoint) { - result_callback.Run([[string string] UTF8String], - gfx::Point(baselinePoint.x, baselinePoint.y)); - }); + rwh, point, + base::BindBlock( + ^(const mac::AttributedStringCoder::EncodedString& encoded_string, + gfx::Point baseline_point) { + std::string string = base::SysNSStringToUTF8( + [mac::AttributedStringCoder::Decode(&encoded_string) string]); + result_callback.Run(string, baseline_point); + })); } void GetStringFromRangeForRenderWidget( @@ -132,11 +138,14 @@ base::Callback<void(const std::string&, const gfx::Point&)> result_callback) { TextInputClientMac::GetInstance()->GetStringFromRange( - rwh, range.ToNSRange(), - ^(NSAttributedString* string, NSPoint baselinePoint) { - result_callback.Run([[string string] UTF8String], - gfx::Point(baselinePoint.x, baselinePoint.y)); - }); + rwh, range, + base::BindBlock( + ^(const mac::AttributedStringCoder::EncodedString& encoded_string, + gfx::Point baseline_point) { + std::string string = base::SysNSStringToUTF8( + [mac::AttributedStringCoder::Decode(&encoded_string) string]); + result_callback.Run(string, baseline_point); + })); } } // namespace content
diff --git a/content/public/test/web_contents_tester.h b/content/public/test/web_contents_tester.h index a8d2b2e2..15a56688 100644 --- a/content/public/test/web_contents_tester.h +++ b/content/public/test/web_contents_tester.h
@@ -146,6 +146,12 @@ // Simulates a direct user interaction. // |render_widget_host| can be equal to nullptr. virtual void TestOnUserInteraction(blink::WebInputEvent::Type type) = 0; + + // Simulates terminating an load with a network error. + virtual void TestDidFailLoadWithError( + const GURL& url, + int error_code, + const base::string16& error_description) = 0; }; } // namespace content
diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn index 1ff44829..50252b8 100644 --- a/content/renderer/BUILD.gn +++ b/content/renderer/BUILD.gn
@@ -580,7 +580,7 @@ "//skia", "//storage/common", "//third_party/WebKit/public:blink", - "//third_party/WebKit/public:features", + "//third_party/WebKit/public:buildflags", "//third_party/WebKit/public:media_devices_mojo_bindings", "//third_party/WebKit/public:mojo_bindings", "//third_party/WebKit/public/common", @@ -1095,7 +1095,7 @@ } if (is_linux || is_android) { - deps += [ "//sandbox:sandbox_features" ] + deps += [ "//sandbox:sandbox_buildflags" ] } if (use_ozone) {
diff --git a/content/renderer/in_process_renderer_thread.cc b/content/renderer/in_process_renderer_thread.cc index d16d789e..e6a3a5d 100644 --- a/content/renderer/in_process_renderer_thread.cc +++ b/content/renderer/in_process_renderer_thread.cc
@@ -47,7 +47,7 @@ CHECK(!render_process_); #endif render_process_ = RenderProcessImpl::Create(); - RenderThreadImpl::Create(params_); + RenderThreadImpl::Create(params_, message_loop()); } void InProcessRendererThread::CleanUp() {
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc index e19ff8267..088dec2 100644 --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc
@@ -670,13 +670,14 @@ // static RenderThreadImpl* RenderThreadImpl::Create( - const InProcessChildThreadParams& params) { + const InProcessChildThreadParams& params, + base::MessageLoop* unowned_message_loop) { TRACE_EVENT0("startup", "RenderThreadImpl::Create"); std::unique_ptr<blink::scheduler::RendererScheduler> renderer_scheduler = blink::scheduler::RendererScheduler::Create(); scoped_refptr<base::SingleThreadTaskRunner> test_task_counter; - return new RenderThreadImpl( - params, std::move(renderer_scheduler), test_task_counter); + return new RenderThreadImpl(params, std::move(renderer_scheduler), + test_task_counter, unowned_message_loop); } // static @@ -733,7 +734,8 @@ RenderThreadImpl::RenderThreadImpl( const InProcessChildThreadParams& params, std::unique_ptr<blink::scheduler::RendererScheduler> scheduler, - const scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue) + const scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue, + base::MessageLoop* unowned_message_loop) : ChildThreadImpl( Options::Builder() .InBrowserProcess(params) @@ -742,6 +744,7 @@ .IPCTaskRunner(scheduler ? scheduler->IPCTaskRunner() : nullptr) .Build()), renderer_scheduler_(std::move(scheduler)), + main_message_loop_(unowned_message_loop), categorized_worker_pool_(new CategorizedWorkerPool()), renderer_binding_(this), client_id_(1), @@ -753,7 +756,7 @@ // When we run plugins in process, we actually run them on the render thread, // which means that we need to make the render thread pump UI events. RenderThreadImpl::RenderThreadImpl( - std::unique_ptr<base::MessageLoop> main_message_loop, + std::unique_ptr<base::MessageLoop> owned_message_loop, std::unique_ptr<blink::scheduler::RendererScheduler> scheduler) : ChildThreadImpl( Options::Builder() @@ -762,7 +765,8 @@ .IPCTaskRunner(scheduler ? scheduler->IPCTaskRunner() : nullptr) .Build()), renderer_scheduler_(std::move(scheduler)), - main_message_loop_(std::move(main_message_loop)), + owned_message_loop_(std::move(owned_message_loop)), + main_message_loop_(owned_message_loop_.get()), categorized_worker_pool_(new CategorizedWorkerPool()), is_scroll_animator_enabled_(false), renderer_binding_(this), @@ -781,6 +785,10 @@ const scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue) { TRACE_EVENT0("startup", "RenderThreadImpl::Init"); + // Whether owned or unowned, |main_message_loop_| needs to be initialized in + // all constructors. + DCHECK(main_message_loop_); + GetContentClient()->renderer()->PostIOThreadCreated(GetIOTaskRunner().get()); base::trace_event::TraceLog::GetInstance()->SetThreadSortIndex( @@ -793,7 +801,7 @@ #endif lazy_tls.Pointer()->Set(this); - g_main_task_runner.Get() = base::MessageLoop::current()->task_runner(); + g_main_task_runner.Get() = main_message_loop_->task_runner(); // Register this object as the main thread. ChildProcess::current()->set_main_thread(this); @@ -1828,7 +1836,7 @@ base::TimerSlack timer_slack = base::TIMER_SLACK_NONE; if (backgrounded) timer_slack = base::TIMER_SLACK_MAXIMUM; - base::MessageLoop::current()->SetTimerSlack(timer_slack); + main_message_loop_->SetTimerSlack(timer_slack); renderer_scheduler_->SetRendererBackgrounded(backgrounded); if (backgrounded) {
diff --git a/content/renderer/render_thread_impl.h b/content/renderer/render_thread_impl.h index a4e9196..48ae3cc 100644 --- a/content/renderer/render_thread_impl.h +++ b/content/renderer/render_thread_impl.h
@@ -181,7 +181,8 @@ public viz::mojom::CompositingModeWatcher, public CompositorDependencies { public: - static RenderThreadImpl* Create(const InProcessChildThreadParams& params); + static RenderThreadImpl* Create(const InProcessChildThreadParams& params, + base::MessageLoop* unowned_message_loop); static RenderThreadImpl* Create( std::unique_ptr<base::MessageLoop> main_message_loop, std::unique_ptr<blink::scheduler::RendererScheduler> renderer_scheduler); @@ -534,7 +535,8 @@ RenderThreadImpl( const InProcessChildThreadParams& params, std::unique_ptr<blink::scheduler::RendererScheduler> scheduler, - const scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue); + const scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue, + base::MessageLoop* unowned_message_loop); RenderThreadImpl( std::unique_ptr<base::MessageLoop> main_message_loop, std::unique_ptr<blink::scheduler::RendererScheduler> scheduler); @@ -707,7 +709,11 @@ // The message loop of the renderer main thread. // This message loop should be destructed before the RenderThreadImpl // shuts down Blink. - std::unique_ptr<base::MessageLoop> main_message_loop_; + // Some test users (e.g. InProcessRenderThread) own the MessageLoop used by + // their RenderThreadImpls. |main_message_loop_| is always non-nulll, + // |owned_message_loop_| is non-null if handed in at creation. + const std::unique_ptr<base::MessageLoop> owned_message_loop_; + base::MessageLoop* const main_message_loop_; // May be null if overridden by ContentRendererClient. std::unique_ptr<blink::scheduler::WebThreadBase> compositor_thread_;
diff --git a/content/renderer/render_thread_impl_browsertest.cc b/content/renderer/render_thread_impl_browsertest.cc index 2a36629..5c9c6a0 100644 --- a/content/renderer/render_thread_impl_browsertest.cc +++ b/content/renderer/render_thread_impl_browsertest.cc
@@ -6,17 +6,22 @@ #include <stddef.h> #include <stdint.h> + +#include <memory> #include <utility> #include "base/callback.h" #include "base/command_line.h" #include "base/debug/leak_annotations.h" #include "base/location.h" +#include "base/macros.h" #include "base/memory/discardable_memory.h" +#include "base/message_loop/message_loop.h" #include "base/metrics/field_trial.h" #include "base/run_loop.h" #include "base/single_thread_task_runner.h" #include "base/strings/string_number_conversions.h" +#include "base/task_scheduler/task_scheduler.h" #include "base/test/scoped_feature_list.h" #include "base/threading/sequenced_task_runner_handle.h" #include "base/threading/thread_task_runner_handle.h" @@ -128,8 +133,12 @@ RenderThreadImplForTest( const InProcessChildThreadParams& params, std::unique_ptr<blink::scheduler::RendererScheduler> scheduler, - scoped_refptr<base::SingleThreadTaskRunner>& test_task_counter) - : RenderThreadImpl(params, std::move(scheduler), test_task_counter) {} + scoped_refptr<base::SingleThreadTaskRunner>& test_task_counter, + base::MessageLoop* unowned_message_loop) + : RenderThreadImpl(params, + std::move(scheduler), + test_task_counter, + unowned_message_loop) {} ~RenderThreadImplForTest() override {} }; @@ -166,12 +175,34 @@ class RenderThreadImplBrowserTest : public testing::Test { public: + // Managing our own main MessageLoop also forces us to manage our own + // TaskScheduler. This ensures a basic TaskScheduler is in scope during this + // test. + class TestTaskScheduler { + public: + TestTaskScheduler() { + base::TaskScheduler::CreateAndStartWithDefaultParams( + "RenderThreadImplBrowserTest"); + } + + ~TestTaskScheduler() { + base::TaskScheduler::GetInstance()->Shutdown(); + base::TaskScheduler::GetInstance()->JoinForTesting(); + base::TaskScheduler::SetInstance(nullptr); + } + + private: + DISALLOW_COPY_AND_ASSIGN(TestTaskScheduler); + }; + RenderThreadImplBrowserTest() : field_trial_list_(nullptr) {} void SetUp() override { content_renderer_client_.reset(new ContentRendererClient()); SetRendererClientForTesting(content_renderer_client_.get()); + main_message_loop_.reset(new base::MessageLoop(base::MessageLoop::TYPE_IO)); + test_task_scheduler_.reset(new TestTaskScheduler); browser_threads_.reset( new TestBrowserThreadBundle(TestBrowserThreadBundle::IO_MAINLOOP)); scoped_refptr<base::SingleThreadTaskRunner> io_task_runner = @@ -227,7 +258,8 @@ thread_ = new RenderThreadImplForTest( InProcessChildThreadParams(io_task_runner, &invitation, child_connection_->service_token()), - std::move(renderer_scheduler), test_task_counter); + std::move(renderer_scheduler), test_task_counter, + main_message_loop_.get()); cmd->InitFromArgv(old_argv); run_loop_ = std::make_unique<base::RunLoop>(); @@ -247,12 +279,15 @@ } } + protected: IPC::Sender* sender() { return channel_.get(); } scoped_refptr<TestTaskCounter> test_task_counter_; TestContentClientInitializer content_client_initializer_; std::unique_ptr<ContentRendererClient> content_renderer_client_; + std::unique_ptr<base::MessageLoop> main_message_loop_; + std::unique_ptr<TestTaskScheduler> test_task_scheduler_; std::unique_ptr<TestBrowserThreadBundle> browser_threads_; std::unique_ptr<TestServiceManagerContext> shell_context_; std::unique_ptr<ChildConnection> child_connection_; @@ -266,6 +301,9 @@ base::FieldTrialList field_trial_list_; std::unique_ptr<base::RunLoop> run_loop_; + + private: + DISALLOW_COPY_AND_ASSIGN(RenderThreadImplBrowserTest); }; class RenderThreadImplMojoInputMessagesDisabledBrowserTest
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc index 755b43e..2da1d31 100644 --- a/content/renderer/render_view_impl.cc +++ b/content/renderer/render_view_impl.cc
@@ -129,7 +129,7 @@ #include "third_party/WebKit/public/platform/WebURLRequest.h" #include "third_party/WebKit/public/platform/WebURLResponse.h" #include "third_party/WebKit/public/platform/WebVector.h" -#include "third_party/WebKit/public/public_features.h" +#include "third_party/WebKit/public/public_buildflags.h" #include "third_party/WebKit/public/web/WebAXObject.h" #include "third_party/WebKit/public/web/WebAutofillClient.h" #include "third_party/WebKit/public/web/WebDOMEvent.h"
diff --git a/content/renderer/renderer_main_platform_delegate_android.cc b/content/renderer/renderer_main_platform_delegate_android.cc index 44f2588d..4c7695e 100644 --- a/content/renderer/renderer_main_platform_delegate_android.cc +++ b/content/renderer/renderer_main_platform_delegate_android.cc
@@ -9,7 +9,7 @@ #include "base/trace_event/trace_event.h" #include "content/renderer/seccomp_sandbox_status_android.h" #include "sandbox/linux/seccomp-bpf-helpers/seccomp_starter_android.h" -#include "sandbox/sandbox_features.h" +#include "sandbox/sandbox_buildflags.h" #if BUILDFLAG(USE_SECCOMP_BPF) #include "base/memory/ptr_util.h"
diff --git a/content/shell/BUILD.gn b/content/shell/BUILD.gn index d70edf43..fac2fe3 100644 --- a/content/shell/BUILD.gn +++ b/content/shell/BUILD.gn
@@ -283,7 +283,7 @@ "//testing/gmock", "//testing/gtest", "//third_party/WebKit/public:blink", - "//third_party/WebKit/public:features", + "//third_party/WebKit/public:buildflags", "//third_party/WebKit/public:image_resources", "//third_party/WebKit/public:resources", "//third_party/WebKit/public:test_support",
diff --git a/content/test/data/accessibility/html/action-verbs-expected-blink.txt b/content/test/data/accessibility/html/action-verbs-expected-blink.txt index 419d8d0..73f4c756c 100644 --- a/content/test/data/accessibility/html/action-verbs-expected-blink.txt +++ b/content/test/data/accessibility/html/action-verbs-expected-blink.txt
@@ -18,7 +18,7 @@ ++radioButton defaultActionVerb=check checkedState=false ++switch name='ARIA Switch' defaultActionVerb=check checkedState=false ++details -++++disclosureTriangle name='Summary' defaultActionVerb=press +++++disclosureTriangle collapsed name='Summary' defaultActionVerb=press ++++++staticText name='Summary' ++++++++inlineTextBox name='Summary' ++popUpButton collapsed haspopup defaultActionVerb=open
diff --git a/content/test/data/accessibility/html/action-verbs-expected-win.txt b/content/test/data/accessibility/html/action-verbs-expected-win.txt index 2842e92..4f4d94c 100644 --- a/content/test/data/accessibility/html/action-verbs-expected-win.txt +++ b/content/test/data/accessibility/html/action-verbs-expected-win.txt
@@ -15,7 +15,7 @@ ++ROLE_SYSTEM_RADIOBUTTON FOCUSABLE IA2_STATE_CHECKABLE checkable:true default_action='check' action_name='check' ++IA2_ROLE_TOGGLE_BUTTON name='ARIA Switch' FOCUSABLE IA2_STATE_CHECKABLE checkable:true default_action='check' action_name='check' ++ROLE_SYSTEM_GROUPING -++++ROLE_SYSTEM_PUSHBUTTON name='Summary' FOCUSABLE default_action='press' action_name='press' +++++ROLE_SYSTEM_PUSHBUTTON name='Summary' COLLAPSED FOCUSABLE default_action='press' action_name='press' ++++++ROLE_SYSTEM_STATICTEXT name='Summary' ++ROLE_SYSTEM_COMBOBOX COLLAPSED FOCUSABLE HASPOPUP default_action='open' action_name='open' ++++ROLE_SYSTEM_LIST INVISIBLE
diff --git a/content/test/data/accessibility/html/details-expected-blink.txt b/content/test/data/accessibility/html/details-expected-blink.txt index f60fcb0e..1d3b41f 100644 --- a/content/test/data/accessibility/html/details-expected-blink.txt +++ b/content/test/data/accessibility/html/details-expected-blink.txt
@@ -1,6 +1,6 @@ rootWebArea ++details -++++disclosureTriangle name='details tag' +++++disclosureTriangle collapsed name='details tag' ++++++staticText name='details tag' ++++++++inlineTextBox name='details tag' ++details
diff --git a/content/test/data/accessibility/html/details-expected-mac.txt b/content/test/data/accessibility/html/details-expected-mac.txt index 618a35042..eef1dc3 100644 --- a/content/test/data/accessibility/html/details-expected-mac.txt +++ b/content/test/data/accessibility/html/details-expected-mac.txt
@@ -1,9 +1,9 @@ AXWebArea AXRoleDescription='HTML content' ++AXGroup AXRoleDescription='group' -++++AXButton AXRoleDescription='disclosure triangle' AXTitle='details tag' +++++AXButton AXRoleDescription='disclosure triangle' AXTitle='details tag' AXExpanded='0' ++++++AXStaticText AXRoleDescription='text' AXValue='details tag' ++AXGroup AXRoleDescription='group' -++++AXButton AXRoleDescription='disclosure triangle' AXTitle='details tag open' +++++AXButton AXRoleDescription='disclosure triangle' AXTitle='details tag open' AXExpanded='1' ++++++AXStaticText AXRoleDescription='text' AXValue='details tag open' ++++AXGroup AXRoleDescription='group' ++++++AXStaticText AXRoleDescription='text' AXValue='The details tag with open specifies that the details should be visible (open) to the user.'
diff --git a/content/test/data/accessibility/html/details-expected-win.txt b/content/test/data/accessibility/html/details-expected-win.txt index e91f733..c0001e1 100644 --- a/content/test/data/accessibility/html/details-expected-win.txt +++ b/content/test/data/accessibility/html/details-expected-win.txt
@@ -1,9 +1,9 @@ ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE ++ROLE_SYSTEM_GROUPING -++++ROLE_SYSTEM_PUSHBUTTON name='details tag' FOCUSABLE +++++ROLE_SYSTEM_PUSHBUTTON name='details tag' COLLAPSED FOCUSABLE ++++++ROLE_SYSTEM_STATICTEXT name='details tag' ++ROLE_SYSTEM_GROUPING -++++ROLE_SYSTEM_PUSHBUTTON name='details tag open' FOCUSABLE +++++ROLE_SYSTEM_PUSHBUTTON name='details tag open' EXPANDED FOCUSABLE ++++++ROLE_SYSTEM_STATICTEXT name='details tag open' ++++IA2_ROLE_PARAGRAPH ++++++ROLE_SYSTEM_STATICTEXT name='The details tag with open specifies that the details should be visible (open) to the user.'
diff --git a/content/test/data/accessibility/html/summary-expected-blink.txt b/content/test/data/accessibility/html/summary-expected-blink.txt index cb582c8c..987d99f 100644 --- a/content/test/data/accessibility/html/summary-expected-blink.txt +++ b/content/test/data/accessibility/html/summary-expected-blink.txt
@@ -1,5 +1,5 @@ rootWebArea ++details -++++disclosureTriangle name='details tag' +++++disclosureTriangle collapsed name='details tag' ++++++staticText name='details tag' ++++++++inlineTextBox name='details tag' \ No newline at end of file
diff --git a/content/test/data/accessibility/html/summary-expected-win.txt b/content/test/data/accessibility/html/summary-expected-win.txt index 1afb5d7..fae4a3a7 100644 --- a/content/test/data/accessibility/html/summary-expected-win.txt +++ b/content/test/data/accessibility/html/summary-expected-win.txt
@@ -1,4 +1,4 @@ ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE ++ROLE_SYSTEM_GROUPING -++++ROLE_SYSTEM_PUSHBUTTON name='details tag' FOCUSABLE +++++ROLE_SYSTEM_PUSHBUTTON name='details tag' COLLAPSED FOCUSABLE ++++++ROLE_SYSTEM_STATICTEXT name='details tag' \ No newline at end of file
diff --git a/content/test/gpu/gpu_tests/pixel_expectations.py b/content/test/gpu/gpu_tests/pixel_expectations.py index 7d91e3ce..bb117de8 100644 --- a/content/test/gpu/gpu_tests/pixel_expectations.py +++ b/content/test/gpu/gpu_tests/pixel_expectations.py
@@ -112,6 +112,20 @@ self.Fail('Pixel_CSS3DBlueBox_NoGpuProcess', ['linux', 'mac', 'win'], bug=744658) + # TODO(liyuqian): Prepare for Skia's AA rebaseline + self.Fail('Pixel_OffscreenCanvasAccelerated2D', + ['mac', 'linux', 'win', 'android', 'chromeos'], bug=817110) + self.Fail('Pixel_OffscreenCanvasAccelerated2DWorker', + ['mac', 'linux', 'win', 'android', 'chromeos'], bug=817110) + self.Fail('Pixel_OffscreenCanvasUnaccelerated2D', + ['mac', 'linux', 'win', 'android', 'chromeos'], bug=817110) + self.Fail('Pixel_OffscreenCanvasUnaccelerated2DGPUCompositing', + ['mac', 'linux', 'win', 'android', 'chromeos'], bug=817110) + self.Fail('Pixel_OffscreenCanvasUnaccelerated2DGPUCompositingWorker', + ['mac', 'linux', 'win', 'android', 'chromeos'], bug=817110) + self.Fail('Pixel_OffscreenCanvasUnaccelerated2DWorker', + ['mac', 'linux', 'win', 'android', 'chromeos'], bug=817110) + # TODO(enne): temporarily suppress these tests until rebaselined. self.Fail('Pixel_2DCanvasWebGL', ['android'], bug=972546) self.Fail('Pixel_Canvas2DRedBox', ['android'], bug=972546)
diff --git a/content/test/test_web_contents.cc b/content/test/test_web_contents.cc index 8f7d027..79a01cd 100644 --- a/content/test/test_web_contents.cc +++ b/content/test/test_web_contents.cc
@@ -193,6 +193,36 @@ last_committed_url_ = url; } +void TestWebContents::SetMainFrameMimeType(const std::string& mime_type) { + WebContentsImpl::SetMainFrameMimeType(mime_type); +} + +void TestWebContents::SetWasRecentlyAudible(bool audible) { + audio_stream_monitor()->set_was_recently_audible_for_testing(audible); +} + +void TestWebContents::SetIsCurrentlyAudible(bool audible) { + audio_stream_monitor()->set_is_currently_audible_for_testing(audible); +} + +void TestWebContents::TestOnUserInteraction(blink::WebInputEvent::Type type) { + // Use the first RenderWidgetHost from the frame tree to make sure that the + // interaction doesn't get ignored. + DCHECK(frame_tree_.Nodes().begin() != frame_tree_.Nodes().end()); + RenderWidgetHostImpl* render_widget_host = (*frame_tree_.Nodes().begin()) + ->current_frame_host() + ->GetRenderWidgetHost(); + OnUserInteraction(render_widget_host, type); +} + +void TestWebContents::TestDidFailLoadWithError( + const GURL& url, + int error_code, + const base::string16& error_description) { + FrameHostMsg_DidFailLoadWithError msg(0, url, error_code, error_description); + frame_tree_.root()->current_frame_host()->OnMessageReceived(msg); +} + bool TestWebContents::CrossProcessNavigationPending() { return GetRenderManager()->speculative_render_frame_host_ != nullptr; } @@ -326,14 +356,6 @@ frame_tree_.root()->current_frame_host()->OnMessageReceived(msg); } -void TestWebContents::TestDidFailLoadWithError( - const GURL& url, - int error_code, - const base::string16& error_description) { - FrameHostMsg_DidFailLoadWithError msg(0, url, error_code, error_description); - frame_tree_.root()->current_frame_host()->OnMessageReceived(msg); -} - void TestWebContents::SetNavigationData( NavigationHandle* navigation_handle, std::unique_ptr<NavigationData> navigation_data) { @@ -390,26 +412,4 @@ suggested_filename_ = suggested_filename; } -void TestWebContents::SetMainFrameMimeType(const std::string& mime_type) { - WebContentsImpl::SetMainFrameMimeType(mime_type); -} - -void TestWebContents::SetWasRecentlyAudible(bool audible) { - audio_stream_monitor()->set_was_recently_audible_for_testing(audible); -} - -void TestWebContents::SetIsCurrentlyAudible(bool audible) { - audio_stream_monitor()->set_is_currently_audible_for_testing(audible); -} - -void TestWebContents::TestOnUserInteraction(blink::WebInputEvent::Type type) { - // Use the first RenderWidgetHost from the frame tree to make sure that the - // interaction doesn't get ignored. - DCHECK(frame_tree_.Nodes().begin() != frame_tree_.Nodes().end()); - RenderWidgetHostImpl* render_widget_host = (*frame_tree_.Nodes().begin()) - ->current_frame_host() - ->GetRenderWidgetHost(); - OnUserInteraction(render_widget_host, type); -} - } // namespace content
diff --git a/content/test/test_web_contents.h b/content/test/test_web_contents.h index b11bac2..a57cd9f 100644 --- a/content/test/test_web_contents.h +++ b/content/test/test_web_contents.h
@@ -98,6 +98,10 @@ void SetWasRecentlyAudible(bool audible) override; void SetIsCurrentlyAudible(bool audible) override; void TestOnUserInteraction(blink::WebInputEvent::Type type) override; + void TestDidFailLoadWithError( + const GURL& url, + int error_code, + const base::string16& error_description) override; // True if a cross-site navigation is pending. bool CrossProcessNavigationPending(); @@ -136,9 +140,6 @@ int history_length) override; void TestDidFinishLoad(const GURL& url); - void TestDidFailLoadWithError(const GURL& url, - int error_code, - const base::string16& error_description); protected: // The deprecated WebContentsTester still needs to subclass this.
diff --git a/device/bluetooth/test/fake_bluetooth.cc b/device/bluetooth/test/fake_bluetooth.cc index 55bb505..1803233 100644 --- a/device/bluetooth/test/fake_bluetooth.cc +++ b/device/bluetooth/test/fake_bluetooth.cc
@@ -43,7 +43,11 @@ void FakeBluetooth::AllResponsesConsumed( AllResponsesConsumedCallback callback) { - std::move(callback).Run(fake_central_->AllResponsesConsumed()); + if (fake_central_) { + std::move(callback).Run(fake_central_->AllResponsesConsumed()); + return; + } + std::move(callback).Run(true); } } // namespace bluetooth
diff --git a/device/fido/ec_public_key.cc b/device/fido/ec_public_key.cc index 044e611..9d922b4e 100644 --- a/device/fido/ec_public_key.cc +++ b/device/fido/ec_public_key.cc
@@ -13,11 +13,12 @@ namespace { // The key is located after the first byte of the response -// (which is a reserved byte). -// The uncompressed form consists of 65 bytes: -// - a constant 0x04 prefix +// (which is a reserved byte). It's in X9.62 format: +// - a constant 0x04 prefix to indicate an uncompressed key // - the 32-byte x coordinate // - the 32-byte y coordinate. +constexpr size_t kKeyCompressionTypeOffset = 1; +constexpr size_t kUncompressedKey = 0x04; constexpr size_t kHeaderLength = 2; // Account for reserved byte and prefix. constexpr size_t kKeyLength = 32; } // namespace @@ -26,6 +27,10 @@ std::unique_ptr<ECPublicKey> ECPublicKey::ExtractFromU2fRegistrationResponse( std::string algorithm, base::span<const uint8_t> u2f_data) { + if (u2f_data.size() < kHeaderLength || + u2f_data[kKeyCompressionTypeOffset] != kUncompressedKey) + return nullptr; + std::vector<uint8_t> x = u2f_parsing_utils::Extract(u2f_data, kHeaderLength, kKeyLength);
diff --git a/device/fido/ec_public_key.h b/device/fido/ec_public_key.h index 962032a..dfd66ad 100644 --- a/device/fido/ec_public_key.h +++ b/device/fido/ec_public_key.h
@@ -41,6 +41,7 @@ std::vector<uint8_t> EncodeAsCOSEKey() const override; private: + // Note that these values might not be minimal and might not be on the curve. const std::vector<uint8_t> x_coordinate_; const std::vector<uint8_t> y_coordinate_;
diff --git a/device/gamepad/xbox_controller_mac.mm b/device/gamepad/xbox_controller_mac.mm index e2f0f1f..bcbf6e32 100644 --- a/device/gamepad/xbox_controller_mac.mm +++ b/device/gamepad/xbox_controller_mac.mm
@@ -153,8 +153,8 @@ uint8_t rumble_mask; uint8_t trigger_left; uint8_t trigger_right; - uint8_t weak_magnitude; uint8_t strong_magnitude; + uint8_t weak_magnitude; uint8_t duration; uint8_t period; uint8_t extra; @@ -885,8 +885,8 @@ // Set rumble intensities. rumble_data->trigger_left = 0x00; rumble_data->trigger_right = 0x00; - rumble_data->weak_magnitude = weak_magnitude; rumble_data->strong_magnitude = strong_magnitude; + rumble_data->weak_magnitude = weak_magnitude; kern_return_t kr = (*interface_)
diff --git a/extensions/browser/api/system_display/system_display_api.cc b/extensions/browser/api/system_display/system_display_api.cc index ae1ec30ea..674f91df 100644 --- a/extensions/browser/api/system_display/system_display_api.cc +++ b/extensions/browser/api/system_display/system_display_api.cc
@@ -25,9 +25,9 @@ namespace display = api::system_display; -const char SystemDisplayFunction::kCrosOnlyError[] = +const char SystemDisplayCrOSRestrictedFunction::kCrosOnlyError[] = "Function available only on ChromeOS."; -const char SystemDisplayFunction::kKioskOnlyError[] = +const char SystemDisplayCrOSRestrictedFunction::kKioskOnlyError[] = "Only kiosk enabled extensions are allowed to use this function."; namespace { @@ -148,9 +148,23 @@ return observers_.empty(); } +bool HasAutotestPrivate(const UIThreadExtensionFunction& function) { + return function.extension() && + function.extension()->permissions_data()->HasAPIPermission( + APIPermission::kAutoTestPrivate); +} + +#if defined(OS_CHROMEOS) +// |edid| is available only to Chrome OS kiosk mode applications. +bool ShouldRestrictEdidInformation(const UIThreadExtensionFunction& function) { + return !HasAutotestPrivate(function) && + !KioskModeInfo::IsKioskEnabled(function.extension()); +} +#endif + } // namespace -bool SystemDisplayFunction::PreRunValidation(std::string* error) { +bool SystemDisplayCrOSRestrictedFunction::PreRunValidation(std::string* error) { if (!UIThreadExtensionFunction::PreRunValidation(error)) return false; @@ -170,20 +184,8 @@ #endif } -bool SystemDisplayFunction::ShouldRestrictToKioskAndWebUI() { - // Allow autotest extension to access for Chrome OS testing. - if (extension() && extension()->permissions_data()->HasAPIPermission( - APIPermission::kAutoTestPrivate)) { - return false; - } - - return true; -} - -bool SystemDisplayGetInfoFunction::PreRunValidation(std::string* error) { - // Returns true to not block the method completely when in non-kiosk mode. - // Only the |edid| property is conditional to kiosk mode. - return true; +bool SystemDisplayCrOSRestrictedFunction::ShouldRestrictToKioskAndWebUI() { + return !HasAutotestPrivate(*this); } ExtensionFunction::ResponseAction SystemDisplayGetInfoFunction::Run() { @@ -199,11 +201,12 @@ void SystemDisplayGetInfoFunction::Response( DisplayInfoProvider::DisplayUnitInfoList all_displays_info) { - // |edid| is restricted to kiosk mode. - if (ShouldRestrictToKioskAndWebUI()) { +#if defined(OS_CHROMEOS) + if (ShouldRestrictEdidInformation(*this)) { for (auto& display_info : all_displays_info) display_info.edid.release(); } +#endif Respond(ArgumentList(display::GetInfo::Results::Create(all_displays_info))); }
diff --git a/extensions/browser/api/system_display/system_display_api.h b/extensions/browser/api/system_display/system_display_api.h index accbd26..2e290f8 100644 --- a/extensions/browser/api/system_display/system_display_api.h +++ b/extensions/browser/api/system_display/system_display_api.h
@@ -12,13 +12,13 @@ namespace extensions { -class SystemDisplayFunction : public UIThreadExtensionFunction { +class SystemDisplayCrOSRestrictedFunction : public UIThreadExtensionFunction { public: static const char kCrosOnlyError[]; static const char kKioskOnlyError[]; protected: - ~SystemDisplayFunction() override {} + ~SystemDisplayCrOSRestrictedFunction() override {} bool PreRunValidation(std::string* error) override; // Returns true if this function should be restricted to kiosk-mode apps and @@ -26,22 +26,22 @@ virtual bool ShouldRestrictToKioskAndWebUI(); }; -// GetInfo is a SystemDisplayFunction to limit some of the fields to kiosk mode -// and web UI. The method itself is not kiosk-mode only. -class SystemDisplayGetInfoFunction : public SystemDisplayFunction { +// This function inherits from UIThreadExtensionFunction because, unlike the +// rest of this API, it's available on all platforms. +class SystemDisplayGetInfoFunction : public UIThreadExtensionFunction { public: DECLARE_EXTENSION_FUNCTION("system.display.getInfo", SYSTEM_DISPLAY_GETINFO); protected: ~SystemDisplayGetInfoFunction() override {} - bool PreRunValidation(std::string* error) override; ResponseAction Run() override; void Response(DisplayInfoProvider::DisplayUnitInfoList all_displays_info); }; -class SystemDisplayGetDisplayLayoutFunction : public SystemDisplayFunction { +class SystemDisplayGetDisplayLayoutFunction + : public SystemDisplayCrOSRestrictedFunction { public: DECLARE_EXTENSION_FUNCTION("system.display.getDisplayLayout", SYSTEM_DISPLAY_GETDISPLAYLAYOUT); @@ -54,7 +54,8 @@ void Response(DisplayInfoProvider::DisplayLayoutList display_layout); }; -class SystemDisplaySetDisplayPropertiesFunction : public SystemDisplayFunction { +class SystemDisplaySetDisplayPropertiesFunction + : public SystemDisplayCrOSRestrictedFunction { public: DECLARE_EXTENSION_FUNCTION("system.display.setDisplayProperties", SYSTEM_DISPLAY_SETDISPLAYPROPERTIES); @@ -66,7 +67,8 @@ void Response(base::Optional<std::string> error); }; -class SystemDisplaySetDisplayLayoutFunction : public SystemDisplayFunction { +class SystemDisplaySetDisplayLayoutFunction + : public SystemDisplayCrOSRestrictedFunction { public: DECLARE_EXTENSION_FUNCTION("system.display.setDisplayLayout", SYSTEM_DISPLAY_SETDISPLAYLAYOUT); @@ -78,7 +80,8 @@ void Response(base::Optional<std::string> error); }; -class SystemDisplayEnableUnifiedDesktopFunction : public SystemDisplayFunction { +class SystemDisplayEnableUnifiedDesktopFunction + : public SystemDisplayCrOSRestrictedFunction { public: DECLARE_EXTENSION_FUNCTION("system.display.enableUnifiedDesktop", SYSTEM_DISPLAY_ENABLEUNIFIEDDESKTOP); @@ -89,7 +92,7 @@ }; class SystemDisplayOverscanCalibrationStartFunction - : public SystemDisplayFunction { + : public SystemDisplayCrOSRestrictedFunction { public: DECLARE_EXTENSION_FUNCTION("system.display.overscanCalibrationStart", SYSTEM_DISPLAY_OVERSCANCALIBRATIONSTART); @@ -100,7 +103,7 @@ }; class SystemDisplayOverscanCalibrationAdjustFunction - : public SystemDisplayFunction { + : public SystemDisplayCrOSRestrictedFunction { public: DECLARE_EXTENSION_FUNCTION("system.display.overscanCalibrationAdjust", SYSTEM_DISPLAY_OVERSCANCALIBRATIONADJUST); @@ -111,7 +114,7 @@ }; class SystemDisplayOverscanCalibrationResetFunction - : public SystemDisplayFunction { + : public SystemDisplayCrOSRestrictedFunction { public: DECLARE_EXTENSION_FUNCTION("system.display.overscanCalibrationReset", SYSTEM_DISPLAY_OVERSCANCALIBRATIONRESET); @@ -122,7 +125,7 @@ }; class SystemDisplayOverscanCalibrationCompleteFunction - : public SystemDisplayFunction { + : public SystemDisplayCrOSRestrictedFunction { public: DECLARE_EXTENSION_FUNCTION("system.display.overscanCalibrationComplete", SYSTEM_DISPLAY_OVERSCANCALIBRATIONCOMPLETE); @@ -133,7 +136,7 @@ }; class SystemDisplayShowNativeTouchCalibrationFunction - : public SystemDisplayFunction { + : public SystemDisplayCrOSRestrictedFunction { public: DECLARE_EXTENSION_FUNCTION("system.display.showNativeTouchCalibration", SYSTEM_DISPLAY_SHOWNATIVETOUCHCALIBRATION); @@ -146,7 +149,7 @@ }; class SystemDisplayStartCustomTouchCalibrationFunction - : public SystemDisplayFunction { + : public SystemDisplayCrOSRestrictedFunction { public: DECLARE_EXTENSION_FUNCTION("system.display.startCustomTouchCalibration", SYSTEM_DISPLAY_STARTCUSTOMTOUCHCALIBRATION); @@ -157,7 +160,7 @@ }; class SystemDisplayCompleteCustomTouchCalibrationFunction - : public SystemDisplayFunction { + : public SystemDisplayCrOSRestrictedFunction { public: DECLARE_EXTENSION_FUNCTION("system.display.completeCustomTouchCalibration", SYSTEM_DISPLAY_COMPLETECUSTOMTOUCHCALIBRATION); @@ -168,7 +171,7 @@ }; class SystemDisplayClearTouchCalibrationFunction - : public SystemDisplayFunction { + : public SystemDisplayCrOSRestrictedFunction { public: DECLARE_EXTENSION_FUNCTION("system.display.clearTouchCalibration", SYSTEM_DISPLAY_CLEARTOUCHCALIBRATION); @@ -178,7 +181,8 @@ ResponseAction Run() override; }; -class SystemDisplaySetMirrorModeFunction : public SystemDisplayFunction { +class SystemDisplaySetMirrorModeFunction + : public SystemDisplayCrOSRestrictedFunction { public: DECLARE_EXTENSION_FUNCTION("system.display.setMirrorMode", SYSTEM_DISPLAY_SETMIRRORMODE);
diff --git a/extensions/browser/api/system_display/system_display_apitest.cc b/extensions/browser/api/system_display/system_display_apitest.cc index 524a95a0..71b421d6 100644 --- a/extensions/browser/api/system_display/system_display_apitest.cc +++ b/extensions/browser/api/system_display/system_display_apitest.cc
@@ -247,7 +247,7 @@ set_info_function->set_has_callback(true); EXPECT_EQ( - SystemDisplayFunction::kCrosOnlyError, + SystemDisplayCrOSRestrictedFunction::kCrosOnlyError, api_test_utils::RunFunctionAndReturnError( set_info_function.get(), "[\"display_id\", {}]", browser_context())); @@ -297,7 +297,7 @@ set_info_function->set_has_callback(true); EXPECT_EQ( - SystemDisplayFunction::kKioskOnlyError, + SystemDisplayCrOSRestrictedFunction::kKioskOnlyError, api_test_utils::RunFunctionAndReturnError( set_info_function.get(), "[\"display_id\", {}]", browser_context()));
diff --git a/extensions/browser/api/web_request/web_request_permissions.cc b/extensions/browser/api/web_request/web_request_permissions.cc index 320cd7e..cbdec3b 100644 --- a/extensions/browser/api/web_request/web_request_permissions.cc +++ b/extensions/browser/api/web_request/web_request_permissions.cc
@@ -84,7 +84,18 @@ // modified/canceled by extensions, e.g. because it is targeted to the webstore // to check for updates, extension blacklisting, etc. bool IsSensitiveURL(const GURL& url, - bool is_request_from_browser_or_webui_renderer) { + bool is_request_from_browser, + bool is_request_from_webui_renderer) { + const bool is_request_from_sensitive_source = + is_request_from_browser || is_request_from_webui_renderer; + + // WebUI renderers should never be making network requests. We assert that + // here just to be sure. + const bool is_network_request = + url.SchemeIsHTTPOrHTTPS() || url.SchemeIsWSOrWSS(); + DCHECK(!is_network_request || !is_request_from_webui_renderer) + << "Unsupported network request from WebUI for " << url.spec(); + // TODO(battre) Merge this, CanExtensionAccessURL and // PermissionsData::CanAccessPage into one function. bool sensitive_chrome_url = false; @@ -103,7 +114,7 @@ // These URLs are only protected for requests from the browser and webui // renderers, not for requests from common renderers, because // clients*.google.com are also used by websites. - if (is_request_from_browser_or_webui_renderer) { + if (is_request_from_sensitive_source) { base::StringPiece::size_type pos = host.rfind(kClient); if (pos != base::StringPiece::npos) { bool match = true; @@ -132,7 +143,7 @@ base::CompareCase::SENSITIVE)); } - if (is_request_from_browser_or_webui_renderer) { + if (is_request_from_sensitive_source) { sensitive_chrome_url = sensitive_chrome_url || extensions::ExtensionsAPIClient::Get()->ShouldHideBrowserNetworkRequest( @@ -185,8 +196,8 @@ request.render_process_id); } - return IsSensitiveURL(request.url, is_request_from_browser || - is_request_from_webui_renderer) || + return IsSensitiveURL(request.url, is_request_from_browser, + is_request_from_webui_renderer) || !HasWebRequestScheme(request.url); }
diff --git a/extensions/browser/api/web_request/web_request_permissions.h b/extensions/browser/api/web_request/web_request_permissions.h index 7283a430..b04712a8 100644 --- a/extensions/browser/api/web_request/web_request_permissions.h +++ b/extensions/browser/api/web_request/web_request_permissions.h
@@ -22,7 +22,8 @@ // Exposed for unit testing. bool IsSensitiveURL(const GURL& url, - bool is_request_from_browser_or_webui_renderer); + bool is_request_from_browser, + bool is_request_from_webui_renderer); // This class is used to test whether extensions may modify web requests. class WebRequestPermissions {
diff --git a/extensions/browser/api/web_request/web_request_permissions_unittest.cc b/extensions/browser/api/web_request/web_request_permissions_unittest.cc index 1bb7db6b..9efa392 100644 --- a/extensions/browser/api/web_request/web_request_permissions_unittest.cc +++ b/extensions/browser/api/web_request/web_request_permissions_unittest.cc
@@ -58,12 +58,14 @@ GURL url(test.url); EXPECT_TRUE(url.is_valid()) << test.url; EXPECT_EQ(test.is_sensitive_if_request_from_common_renderer, - IsSensitiveURL( - url, false /* is_request_from_browser_or_webui_renderer */)) + IsSensitiveURL(url, false /* is_request_from_browser */, + false /* is_request_from_web_ui_renderer */)) << test.url; + + const bool supported_in_webui_renderers = !url.SchemeIsHTTPOrHTTPS(); EXPECT_EQ(test.is_sensitive_if_request_from_browser_or_webui_renderer, - IsSensitiveURL( - url, true /* is_request_from_browser_or_webui_renderer */)) + IsSensitiveURL(url, true /* is_request_from_browser */, + supported_in_webui_renderers)) << test.url; } }
diff --git a/gpu/BUILD.gn b/gpu/BUILD.gn index b09c4d98..85e8df6 100644 --- a/gpu/BUILD.gn +++ b/gpu/BUILD.gn
@@ -425,7 +425,7 @@ ] } - if (is_posix && !is_mac) { + if (is_fuchsia || (is_posix && !is_mac)) { sources += [ "command_buffer/service/gpu_fence_manager_unittest.cc" ] }
diff --git a/infra/config/branch/cq.cfg b/infra/config/branch/cq.cfg index fd8cb65..b39eec9a 100644 --- a/infra/config/branch/cq.cfg +++ b/infra/config/branch/cq.cfg
@@ -30,6 +30,14 @@ # https://sites.google.com/a/chromium.org/dev/developers/testing/chromium-build-infrastructure/tour-of-the-chromium-buildbot?pli=1#TOC-Adding-new-build-configurations-and-tests-to-the-main-Chromium-waterfall-Commit-Queue try_job { buckets { + name: "luci.chromium.try" + builders { name: "fuchsia_arm64" } + builders { + name: "linux_chromium_compile_rel_ng_patch_on_gclient" + experiment_percentage: 5 + } + } + buckets { name: "master.tryserver.chromium.android" builders { name: "android_arm64_dbg_recipe" @@ -86,10 +94,6 @@ equivalent_to { bucket: "luci.chromium.try" percentage: 100 } } builders { - name: "fuchsia_arm64" - equivalent_to { bucket: "luci.chromium.try" percentage: 100 } - } - builders { name: "fuchsia_x64" equivalent_to { bucket: "luci.chromium.try" percentage: 0 } } @@ -117,6 +121,18 @@ name: "linux_chromium_rel_ng" equivalent_to { bucket: "luci.chromium.try" percentage: 100 } } + builders { + # Temporary addition to gather data for LUCI migration. + # https://crbug.com/783000 + name: "fuchsia_arm64_cast_audio" + experiment_percentage: 1 + } + builders { + # Temporary addition to gather data for LUCI migration. + # https://crbug.com/783001 + name: "fuchsia_x64_cast_audio" + experiment_percentage: 1 + } } buckets { name: "master.tryserver.chromium.mac"
diff --git a/infra/config/global/cr-buildbucket.cfg b/infra/config/global/cr-buildbucket.cfg index 37cfeeb8..5071d35 100644 --- a/infra/config/global/cr-buildbucket.cfg +++ b/infra/config/global/cr-buildbucket.cfg
@@ -1090,6 +1090,16 @@ builders { mixins: "linux-try" name: "linux_chromium_compile_dbg_32_ng" } builders { mixins: "linux-try" name: "linux_chromium_compile_dbg_ng" } builders { mixins: "linux-try" name: "linux_chromium_compile_rel_ng" } + builders { + mixins: "linux-try" + name: "linux_chromium_compile_rel_ng_patch_on_gclient" + dimensions: "builder:linux_chromium_compile_rel_ng" + auto_builder_dimension: NO + recipe { + properties: "buildername:linux_chromium_compile_rel_ng" + properties_j: "$depot_tools/bot_update:{\"apply_patch_on_gclient\":true}" + } + } builders { mixins: "linux-try" name: "linux_chromium_component_updater" } builders { mixins: "linux-try" name: "linux_chromium_dbg_32_ng" } builders { mixins: "linux-try" name: "linux_chromium_dbg_ng" } @@ -1103,17 +1113,6 @@ mixins: "goma-j150" name: "linux_chromium_rel_ng" } - builders { - mixins: "linux-try" - mixins: "goma-j150" - name: "linux_chromium_rel_ng_patch_on_gclient" - dimensions: "builder:linux_chromium_rel_ng" - experimental: YES - recipe { - properties: "buildername:linux_chromium_rel_ng" - properties_j: "$depot_tools/bot_update:{\"apply_patch_on_gclient\":true}" - } - } builders { mixins: "linux-try" name: "linux_chromium_tsan_rel_ng" } builders { mixins: "linux-try" name: "linux_chromium_tsan_variable" } builders { mixins: "linux-try" name: "linux_chromium_ubsan_rel_ng" }
diff --git a/infra/config/global/luci-milo-dev.cfg b/infra/config/global/luci-milo-dev.cfg index bc220a4..ec73a6b 100644 --- a/infra/config/global/luci-milo-dev.cfg +++ b/infra/config/global/luci-milo-dev.cfg
@@ -403,7 +403,7 @@ short_name: "tst" } builders: { - name: "buildbucket/luci.chromium.ci/linux-gcc-rel" + name: "buildbot/chromium.linux/linux-gcc-rel" category: "chromium.linux|release" short_name: "gcc" }
diff --git a/infra/config/global/luci-milo.cfg b/infra/config/global/luci-milo.cfg index 989387b..9cabcd66 100644 --- a/infra/config/global/luci-milo.cfg +++ b/infra/config/global/luci-milo.cfg
@@ -413,7 +413,7 @@ short_name: "tst" } builders: { - name: "buildbucket/luci.chromium.ci/linux-gcc-rel" + name: "buildbot/chromium.linux/linux-gcc-rel" category: "chromium.linux|release" short_name: "gcc" } @@ -471,7 +471,6 @@ short_name: "x64" } builders: { - name: "buildbot/chromium.linux/Fuchsia ARM64" name: "buildbucket/luci.chromium.ci/Fuchsia ARM64" category: "chromium.linux|fuchsia" short_name: "a64" @@ -949,7 +948,6 @@ short_name: "x64" } builders: { - name: "buildbot/chromium.linux/Fuchsia ARM64" name: "buildbucket/luci.chromium.ci/Fuchsia ARM64" category: "fuchsia" short_name: "a64" @@ -1520,17 +1518,6 @@ } builders: { - name: "buildbucket/luci.chromium.ci/Fuchsia ARM64" - category: "fuchsia|arm64" - short_name: "ci" - } - builders: { - name: "buildbot/chromium.linux/Fuchsia ARM64" - category: "fuchsia|arm64" - short_name: "bb" - } - - builders: { name: "buildbucket/luci.chromium.ci/Fuchsia ARM64 Cast Audio" category: "fuchsia|arm64|cast" short_name: "ci" @@ -4270,7 +4257,7 @@ name: "buildbot/tryserver.chromium.linux/closure_compilation" } builders: { - name: "buildbot/tryserver.chromium.linux/fuchsia_arm64" + name: "buildbucket/luci.chromium.try/fuchsia_arm64" } builders: { name: "buildbot/tryserver.chromium.linux/fuchsia_arm64_cast_audio"
diff --git a/ios/build/bots/scripts/test_runner.py b/ios/build/bots/scripts/test_runner.py index 722d2eb..17670564 100644 --- a/ios/build/bots/scripts/test_runner.py +++ b/ios/build/bots/scripts/test_runner.py
@@ -1023,7 +1023,8 @@ logs_dir, ]) except subprocess.CalledProcessError: - raise TestDataExtractionError() + # TODO(crbug.com/828951): Raise the exception when the bug is fixed. + print 'Warning: Failed to retrieve crash reports from the device.' def tear_down(self): """Performs cleanup actions which must occur after every test launch."""
diff --git a/ios/chrome/browser/infobars/infobar.h b/ios/chrome/browser/infobars/infobar.h index 8702c95..4da0829 100644 --- a/ios/chrome/browser/infobars/infobar.h +++ b/ios/chrome/browser/infobars/infobar.h
@@ -38,7 +38,7 @@ private: // InfoBar overrides: - void PlatformSpecificOnHeightsRecalculated() override; + void PlatformSpecificOnHeightRecalculated() override; // InfoBarViewDelegate: void SetInfoBarTargetHeight(int height) override;
diff --git a/ios/chrome/browser/infobars/infobar.mm b/ios/chrome/browser/infobars/infobar.mm index e82721d..3b13a37 100644 --- a/ios/chrome/browser/infobars/infobar.mm +++ b/ios/chrome/browser/infobars/infobar.mm
@@ -41,7 +41,7 @@ } else { [controller_ layoutForDelegate:delegate() frame:container_bounds]; } - SetBarTargetHeight([controller_ barHeight]); + SetTargetHeight([controller_ barHeight]); } UIView* InfoBarIOS::view() { @@ -54,15 +54,15 @@ [controller_ removeView]; } -void InfoBarIOS::PlatformSpecificOnHeightsRecalculated() { +void InfoBarIOS::PlatformSpecificOnHeightRecalculated() { DCHECK(controller_); - [controller_ onHeightsRecalculated:bar_height()]; + [controller_ onHeightRecalculated:computed_height()]; } #pragma mark - InfoBarViewDelegate void InfoBarIOS::SetInfoBarTargetHeight(int height) { - SetBarTargetHeight(height); + SetTargetHeight(height); } // Some infobar button was pressed.
diff --git a/ios/chrome/browser/infobars/infobar_container_delegate_ios.h b/ios/chrome/browser/infobars/infobar_container_delegate_ios.h index def95f45..ab341f3c 100644 --- a/ios/chrome/browser/infobars/infobar_container_delegate_ios.h +++ b/ios/chrome/browser/infobars/infobar_container_delegate_ios.h
@@ -10,10 +10,6 @@ #include "components/infobars/core/infobar_container.h" #include "third_party/skia/include/core/SkColor.h" -namespace gfx { -class SlideAnimation; -} - @protocol InfobarContainerStateDelegate; // iOS implementation of InfoBarContainer::Delegate. Most of the method @@ -28,30 +24,9 @@ ~InfoBarContainerDelegateIOS() override {} - // This method always returns 0 on iOS. - int ArrowTargetHeightForInfoBar( - size_t index, - const gfx::SlideAnimation& animation) const override; - - // This always sets |arrow_height| and |arrow_half_width| to zero, and - // interpolates |bar_height| between zero and |bar_target_height| according - // to |animation|. - // It is a programming error to pass -1 in as the |bar_target_height| on iOS, - // signalling that the default infobar height should be used (there is no such - // default on iOS). - void ComputeInfoBarElementSizes(const gfx::SlideAnimation& animation, - int arrow_target_height, - int bar_target_height, - int* arrow_height, - int* arrow_half_width, - int* bar_height) const override; - // Informs |delegate_| that the container state has changed. void InfoBarContainerStateChanged(bool is_animating) override; - // This method always returns false on iOS. - bool DrawInfoBarArrows(int* x) const override; - private: __weak id<InfobarContainerStateDelegate> delegate_; };
diff --git a/ios/chrome/browser/infobars/infobar_container_delegate_ios.mm b/ios/chrome/browser/infobars/infobar_container_delegate_ios.mm index d3d6a7ea..4a670c1a 100644 --- a/ios/chrome/browser/infobars/infobar_container_delegate_ios.mm +++ b/ios/chrome/browser/infobars/infobar_container_delegate_ios.mm
@@ -12,31 +12,7 @@ #error "This file requires ARC support." #endif -int InfoBarContainerDelegateIOS::ArrowTargetHeightForInfoBar( - size_t index, - const gfx::SlideAnimation& animation) const { - return 0; -} - -void InfoBarContainerDelegateIOS::ComputeInfoBarElementSizes( - const gfx::SlideAnimation& animation, - int arrow_target_height, - int bar_target_height, - int* arrow_height, - int* arrow_half_width, - int* bar_height) const { - DCHECK_NE(-1, bar_target_height) - << "Infobars don't have a default height on iOS"; - *arrow_height = 0; - *arrow_half_width = 0; - *bar_height = animation.CurrentValueBetween(0, bar_target_height); -} - void InfoBarContainerDelegateIOS::InfoBarContainerStateChanged( bool is_animating) { [delegate_ infoBarContainerStateDidChangeAnimated:is_animating]; } - -bool InfoBarContainerDelegateIOS::DrawInfoBarArrows(int* x) const { - return false; -}
diff --git a/ios/chrome/browser/infobars/infobar_container_ios.mm b/ios/chrome/browser/infobars/infobar_container_ios.mm index 7d9182dd..561252a 100644 --- a/ios/chrome/browser/infobars/infobar_container_ios.mm +++ b/ios/chrome/browser/infobars/infobar_container_ios.mm
@@ -65,12 +65,12 @@ infobars::InfoBar* infobar) { InfoBarIOS* infobar_ios = static_cast<InfoBarIOS*>(infobar); infobar_ios->RemoveView(); - // If total_height() is 0, then the infobar was removed after an animation. In - // this case, signal the delegate that the state changed. + // If computed_height() is 0, then the infobar was removed after an animation. + // In this case, signal the delegate that the state changed. // Otherwise, the infobar is being replaced by another one. Do not call the // delegate in this case, as the delegate will be updated when the new infobar // is added. - if (infobar->total_height() == 0 && delegate_) + if (infobar->computed_height() == 0 && delegate_) delegate_->InfoBarContainerStateChanged(false); }
diff --git a/ios/chrome/browser/infobars/infobar_controller.h b/ios/chrome/browser/infobars/infobar_controller.h index 37fe2c1..6fe43dba 100644 --- a/ios/chrome/browser/infobars/infobar_controller.h +++ b/ios/chrome/browser/infobars/infobar_controller.h
@@ -41,7 +41,7 @@ - (int)barHeight; // Adjusts visible portion of this infobar. -- (void)onHeightsRecalculated:(int)newHeight; +- (void)onHeightRecalculated:(int)newHeight; // Removes the view. - (void)removeView;
diff --git a/ios/chrome/browser/infobars/infobar_controller.mm b/ios/chrome/browser/infobars/infobar_controller.mm index adca4565..e00591b7 100644 --- a/ios/chrome/browser/infobars/infobar_controller.mm +++ b/ios/chrome/browser/infobars/infobar_controller.mm
@@ -51,7 +51,7 @@ return _infoBarView; } -- (void)onHeightsRecalculated:(int)newHeight { +- (void)onHeightRecalculated:(int)newHeight { [_infoBarView setVisibleHeight:newHeight]; }
diff --git a/ios/chrome/browser/itunes_links/itunes_links_handler_tab_helper.mm b/ios/chrome/browser/itunes_links/itunes_links_handler_tab_helper.mm index 8300772..c1e776f7 100644 --- a/ios/chrome/browser/itunes_links/itunes_links_handler_tab_helper.mm +++ b/ios/chrome/browser/itunes_links/itunes_links_handler_tab_helper.mm
@@ -5,10 +5,14 @@ #import "ios/chrome/browser/itunes_links/itunes_links_handler_tab_helper.h" #import <Foundation/Foundation.h> +#import <StoreKit/StoreKit.h> + +#include <vector> #include "base/logging.h" #include "base/metrics/user_metrics.h" #include "base/metrics/user_metrics_action.h" +#include "base/strings/string_split.h" #include "base/strings/sys_string_conversions.h" #import "ios/chrome/browser/store_kit/store_kit_tab_helper.h" #import "ios/web/public/navigation_item.h" @@ -16,6 +20,7 @@ #import "ios/web/public/web_state/navigation_context.h" #import "ios/web/public/web_state/web_state_policy_decider.h" #import "net/base/mac/url_conversions.h" +#include "net/base/url_util.h" #include "url/gurl.h" #if !defined(__has_feature) || !__has_feature(objc_arc) @@ -42,6 +47,22 @@ file_name.substr(0, prefix_length) == kITunesProductIdPrefix); } +// Extracts iTunes product parameters from the given |url| to be used with the +// StoreKit launcher. +NSDictionary* ExtractITunesProductParameters(const GURL& url) { + NSMutableDictionary<NSString*, NSString*>* params_dictionary = + [[NSMutableDictionary alloc] init]; + std::string product_id = + url.ExtractFileName().substr(strlen(kITunesProductIdPrefix)); + params_dictionary[SKStoreProductParameterITunesItemIdentifier] = + base::SysUTF8ToNSString(product_id); + for (net::QueryIterator it(url); !it.IsAtEnd(); it.Advance()) { + params_dictionary[base::SysUTF8ToNSString(it.GetKey())] = + base::SysUTF8ToNSString(it.GetValue()); + } + return params_dictionary; +} + // This class handles requests & responses that involve iTunes product links. class ITunesLinksHandlerWebStatePolicyDecider : public web::WebStatePolicyDecider { @@ -96,13 +117,11 @@ // If the url is iTunes product url, then this navigation should not be // committed, as the policy decider's ShouldAllowResponse will return false. DCHECK(!navigation_context->HasCommitted()); - std::string product_id = - url.ExtractFileName().substr(strlen(kITunesProductIdPrefix)); StoreKitTabHelper* tab_helper = StoreKitTabHelper::FromWebState(web_state); if (tab_helper) { base::RecordAction( base::UserMetricsAction("ITunesLinksHandler_StoreKitLaunched")); - tab_helper->OpenAppStore(base::SysUTF8ToNSString(product_id)); + tab_helper->OpenAppStore(ExtractITunesProductParameters(url)); } } }
diff --git a/ios/chrome/browser/itunes_links/itunes_links_handler_tab_helper_unittest.mm b/ios/chrome/browser/itunes_links/itunes_links_handler_tab_helper_unittest.mm index 1ff1df56..2a2b4b70 100644 --- a/ios/chrome/browser/itunes_links/itunes_links_handler_tab_helper_unittest.mm +++ b/ios/chrome/browser/itunes_links/itunes_links_handler_tab_helper_unittest.mm
@@ -38,10 +38,12 @@ // store kit was launched. bool VerifyStoreKitLaunched(const std::string& url_string) { fake_launcher_.launchedProductID = nil; + fake_launcher_.launchedProductParams = nil; web::FakeNavigationContext context; context.SetUrl(GURL(url_string)); web_state_.OnNavigationFinished(&context); - return fake_launcher_.launchedProductID != nil; + return fake_launcher_.launchedProductID != nil || + fake_launcher_.launchedProductParams != nil; } // Checks that given the pending item URL & the request URL if @@ -95,28 +97,34 @@ // launches storekit. TEST_F(ITunesLinksHandlerTabHelperTest, MatchingUrlsLaunchesStoreKit) { EXPECT_TRUE(VerifyStoreKitLaunched("http://itunes.apple.com/id123")); - EXPECT_NSEQ(@"123", fake_launcher_.launchedProductID); + NSString* product_id = @"id"; + NSString* af_tkn = @"at"; + NSDictionary* expected_params = @{product_id : @"123"}; - EXPECT_TRUE(VerifyStoreKitLaunched("https://itunes.apple.com/id134")); - EXPECT_NSEQ(@"134", fake_launcher_.launchedProductID); + EXPECT_NSEQ(expected_params, fake_launcher_.launchedProductParams); - EXPECT_TRUE(VerifyStoreKitLaunched("http://itunes.apple.com/bar/id123")); - EXPECT_NSEQ(@"123", fake_launcher_.launchedProductID); - - EXPECT_TRUE(VerifyStoreKitLaunched("http://itunes.apple.com/bar/id243?qux")); - EXPECT_NSEQ(@"243", fake_launcher_.launchedProductID); - - EXPECT_TRUE( - VerifyStoreKitLaunched("http://itunes.apple.com/bar/idabc?qux&baz")); - EXPECT_NSEQ(@"abc", fake_launcher_.launchedProductID); - - EXPECT_TRUE( - VerifyStoreKitLaunched("http://itunes.apple.com/bar/id123?qux&baz#foo")); - EXPECT_NSEQ(@"123", fake_launcher_.launchedProductID); + EXPECT_TRUE(VerifyStoreKitLaunched("http://itunes.apple.com/bar/id123?")); + EXPECT_NSEQ(expected_params, fake_launcher_.launchedProductParams); EXPECT_TRUE(VerifyStoreKitLaunched( "http://foo.itunes.apple.com/bar/id123?qux&baz#foo")); - EXPECT_NSEQ(@"123", fake_launcher_.launchedProductID); + expected_params = @{product_id : @"123", @"qux" : @"", @"baz" : @""}; + EXPECT_NSEQ(expected_params, fake_launcher_.launchedProductParams); + + EXPECT_TRUE( + VerifyStoreKitLaunched("http://itunes.apple.com/bar/id243?at=12312")); + expected_params = @{product_id : @"243", af_tkn : @"12312"}; + EXPECT_NSEQ(expected_params, fake_launcher_.launchedProductParams); + + EXPECT_TRUE(VerifyStoreKitLaunched( + "http://itunes.apple.com/bar/idabc?at=213&ct=123")); + expected_params = @{product_id : @"abc", af_tkn : @"213", @"ct" : @"123"}; + EXPECT_NSEQ(expected_params, fake_launcher_.launchedProductParams); + + EXPECT_TRUE(VerifyStoreKitLaunched( + "http://itunes.apple.com/bar/id123?at=2&uo=4#foo")); + expected_params = @{product_id : @"123", af_tkn : @"2", @"uo" : @"4"}; + EXPECT_NSEQ(expected_params, fake_launcher_.launchedProductParams); } // Verifies that ItunesLinkHandlerPolicyDecider don't allow redirects to Apple
diff --git a/ios/chrome/browser/store_kit/store_kit_coordinator.h b/ios/chrome/browser/store_kit/store_kit_coordinator.h index a28743f..e2b60d50 100644 --- a/ios/chrome/browser/store_kit/store_kit_coordinator.h +++ b/ios/chrome/browser/store_kit/store_kit_coordinator.h
@@ -13,9 +13,10 @@ // Coordinates presentation of SKStoreProductViewController. @interface StoreKitCoordinator : ChromeCoordinator<StoreKitLauncher> -// iTunes Store item identifier of the product. Must be set before starting the -// coordinator. -@property(nonatomic, copy) NSString* iTunesItemIdentifier; +// iTunes store item product parameters dictionary. At least +// SKStoreProductParameterITunesItemIdentifier key needs to be specified, all +// other keys are optional. Must be set before starting the coordinator. +@property(nonatomic, copy) NSDictionary* iTunesProductParameters; @end
diff --git a/ios/chrome/browser/store_kit/store_kit_coordinator.mm b/ios/chrome/browser/store_kit/store_kit_coordinator.mm index ee7b9c52..3c6628e 100644 --- a/ios/chrome/browser/store_kit/store_kit_coordinator.mm +++ b/ios/chrome/browser/store_kit/store_kit_coordinator.mm
@@ -19,19 +19,18 @@ @end @implementation StoreKitCoordinator -@synthesize iTunesItemIdentifier = _iTunesItemIdentifier; +@synthesize iTunesProductParameters = _iTunesProductParameters; #pragma mark - Public - (void)start { - DCHECK(self.iTunesItemIdentifier.length); + DCHECK(self.iTunesProductParameters + [SKStoreProductParameterITunesItemIdentifier]); DCHECK(!_viewController); _viewController = [[SKStoreProductViewController alloc] init]; _viewController.delegate = self; - NSDictionary* product = @{ - SKStoreProductParameterITunesItemIdentifier : self.iTunesItemIdentifier, - }; - [_viewController loadProductWithParameters:product completionBlock:nil]; + [_viewController loadProductWithParameters:self.iTunesProductParameters + completionBlock:nil]; [self.baseViewController presentViewController:_viewController animated:YES completion:nil]; @@ -45,7 +44,13 @@ #pragma mark - StoreKitLauncher - (void)openAppStore:(NSString*)iTunesItemIdentifier { - self.iTunesItemIdentifier = iTunesItemIdentifier; + [self openAppStoreWithParameters:@{ + SKStoreProductParameterITunesItemIdentifier : iTunesItemIdentifier + }]; +} + +- (void)openAppStoreWithParameters:(NSDictionary*)productParameters { + self.iTunesProductParameters = productParameters; [self start]; }
diff --git a/ios/chrome/browser/store_kit/store_kit_coordinator_unittest.mm b/ios/chrome/browser/store_kit/store_kit_coordinator_unittest.mm index a83959e..42cb83e 100644 --- a/ios/chrome/browser/store_kit/store_kit_coordinator_unittest.mm +++ b/ios/chrome/browser/store_kit/store_kit_coordinator_unittest.mm
@@ -34,11 +34,37 @@ ScopedKeyWindow scoped_key_window_; }; -// Tests that StoreKitCoordinator presents SKStoreProductViewController. -TEST_F(StoreKitCoordinatorTest, PresentingViewController) { +// Tests that StoreKitCoordinator presents SKStoreProductViewController when +// openAppStoreWithParameters is called. +TEST_F(StoreKitCoordinatorTest, OpenStoreWithParamsPresentViewController) { + NSDictionary* product_params = @{ + SKStoreProductParameterITunesItemIdentifier : @"TestITunesItemIdentifier", + SKStoreProductParameterAffiliateToken : @"TestToken" + }; + [coordinator_ openAppStoreWithParameters:product_params]; + EXPECT_NSEQ(product_params, coordinator_.iTunesProductParameters); + + EXPECT_TRUE(WaitUntilConditionOrTimeout(kWaitForUIElementTimeout, ^{ + return [base_view_controller_.presentedViewController class] == + [SKStoreProductViewController class]; + })); + + [coordinator_ stop]; + + EXPECT_TRUE(WaitUntilConditionOrTimeout(kWaitForUIElementTimeout, ^{ + return base_view_controller_.presentedViewController == nil; + })); +} + +// Tests that StoreKitCoordinator presents SKStoreProductViewController when +// openAppStore is called. +TEST_F(StoreKitCoordinatorTest, OpenStorePresentViewController) { NSString* kTestITunesItemIdentifier = @"TestITunesItemIdentifier"; + NSDictionary* product_params = @{ + SKStoreProductParameterITunesItemIdentifier : kTestITunesItemIdentifier, + }; [coordinator_ openAppStore:kTestITunesItemIdentifier]; - EXPECT_NSEQ(kTestITunesItemIdentifier, coordinator_.iTunesItemIdentifier); + EXPECT_NSEQ(product_params, coordinator_.iTunesProductParameters); EXPECT_TRUE(WaitUntilConditionOrTimeout(kWaitForUIElementTimeout, ^{ return [base_view_controller_.presentedViewController class] ==
diff --git a/ios/chrome/browser/store_kit/store_kit_launcher.h b/ios/chrome/browser/store_kit/store_kit_launcher.h index 41d8c9e..e8e1e44c 100644 --- a/ios/chrome/browser/store_kit/store_kit_launcher.h +++ b/ios/chrome/browser/store_kit/store_kit_launcher.h
@@ -6,6 +6,7 @@ #define IOS_CHROME_BROWSER_STORE_KIT_STORE_KIT_LAUNCHER_H_ @class NSString; +@class NSDictionary; // Protocol to be implemented by a class that provides an access to the app // store with StoreKit. @@ -14,6 +15,11 @@ // Opens StoreKit modal to present a product identified with |productID|. - (void)openAppStore:(NSString*)productID; +// Opens StoreKit modal to present a product using |productParameters|. +// SKStoreProductParameterITunesItemIdentifier key must be set in +// |productParameters|. +- (void)openAppStoreWithParameters:(NSDictionary*)productParameters; + @end #endif // IOS_CHROME_BROWSER_STORE_KIT_STORE_KIT_LAUNCHER_H_
diff --git a/ios/chrome/browser/store_kit/store_kit_tab_helper.h b/ios/chrome/browser/store_kit/store_kit_tab_helper.h index 2b6f6c6..37b0f1aa 100644 --- a/ios/chrome/browser/store_kit/store_kit_tab_helper.h +++ b/ios/chrome/browser/store_kit/store_kit_tab_helper.h
@@ -19,8 +19,16 @@ void SetLauncher(id<StoreKitLauncher> launcher); id<StoreKitLauncher> GetLauncher(); + // Use StoreKitLauncher to launch storekit with |app_id| application + // identifier. void OpenAppStore(NSString* app_id); + // Use StoreKitLauncher to launch storekit using |product_params| as product + // parameters, application id must be set for key: + // SKStoreProductParameterITunesItemIdentifier. Additional key/value pairs can + // be set in the dictionary to represent analytic/marketing parameters. + void OpenAppStore(NSDictionary* product_params); + private: __weak id<StoreKitLauncher> store_kit_launcher_ = nil;
diff --git a/ios/chrome/browser/store_kit/store_kit_tab_helper.mm b/ios/chrome/browser/store_kit/store_kit_tab_helper.mm index c4b1c80..bdc8462e 100644 --- a/ios/chrome/browser/store_kit/store_kit_tab_helper.mm +++ b/ios/chrome/browser/store_kit/store_kit_tab_helper.mm
@@ -4,6 +4,8 @@ #import "ios/chrome/browser/store_kit/store_kit_tab_helper.h" +#import <StoreKit/StoreKit.h> + #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." #endif @@ -25,3 +27,7 @@ void StoreKitTabHelper::OpenAppStore(NSString* app_id) { [store_kit_launcher_ openAppStore:app_id]; } + +void StoreKitTabHelper::OpenAppStore(NSDictionary* product_params) { + [store_kit_launcher_ openAppStoreWithParameters:product_params]; +}
diff --git a/ios/chrome/browser/ui/download/download_manager_coordinator.mm b/ios/chrome/browser/ui/download/download_manager_coordinator.mm index 7e12570..1e7bef6 100644 --- a/ios/chrome/browser/ui/download/download_manager_coordinator.mm +++ b/ios/chrome/browser/ui/download/download_manager_coordinator.mm
@@ -4,6 +4,8 @@ #import "ios/chrome/browser/ui/download/download_manager_coordinator.h" +#import <StoreKit/StoreKit.h> + #include <memory> #import "base/logging.h" @@ -423,8 +425,10 @@ if (!_storeKitCoordinator) { _storeKitCoordinator = [[StoreKitCoordinator alloc] initWithBaseViewController:self.baseViewController]; - _storeKitCoordinator.iTunesItemIdentifier = - kGoogleDriveITunesItemIdentifier; + _storeKitCoordinator.iTunesProductParameters = @{ + SKStoreProductParameterITunesItemIdentifier : + kGoogleDriveITunesItemIdentifier + }; } [_storeKitCoordinator start]; [_viewController setInstallDriveButtonVisible:NO animated:YES];
diff --git a/ios/chrome/browser/ui/payments/payment_request_coordinator.h b/ios/chrome/browser/ui/payments/payment_request_coordinator.h index 99626942..d6019b7 100644 --- a/ios/chrome/browser/ui/payments/payment_request_coordinator.h +++ b/ios/chrome/browser/ui/payments/payment_request_coordinator.h
@@ -17,7 +17,6 @@ #import "ios/chrome/browser/ui/payments/credit_card_edit_coordinator.h" #import "ios/chrome/browser/ui/payments/payment_items_display_coordinator.h" #import "ios/chrome/browser/ui/payments/payment_method_selection_coordinator.h" -#include "ios/chrome/browser/ui/payments/payment_request_error_coordinator.h" #import "ios/chrome/browser/ui/payments/payment_request_view_controller.h" #import "ios/chrome/browser/ui/payments/shipping_address_selection_coordinator.h" #import "ios/chrome/browser/ui/payments/shipping_option_selection_coordinator.h" @@ -64,10 +63,6 @@ didSelectShippingOption: (const payments::PaymentShippingOption&)shippingOption; -// Notifies the delegate that the presenting view controller is dismissed. -- (void)paymentRequestCoordinatorDidStop: - (PaymentRequestCoordinator*)coordinator; - @end // Coordinator responsible for creating and presenting the PaymentRequest view @@ -80,7 +75,6 @@ CreditCardEditCoordinatorDelegate, PaymentItemsDisplayCoordinatorDelegate, PaymentMethodSelectionCoordinatorDelegate, - PaymentRequestErrorCoordinatorDelegate, PaymentRequestViewControllerDelegate, ShippingAddressSelectionCoordinatorDelegate, ShippingOptionSelectionCoordinatorDelegate> @@ -133,8 +127,8 @@ // Updates the payment details of the PaymentRequest and updates the UI. - (void)updatePaymentDetails:(payments::PaymentDetails)paymentDetails; -// Displays an error message. Invokes |callback| when the message is dismissed. -- (void)displayErrorWithCallback:(ProceduralBlock)callback; +// Dismisses the payment request UI. Invokes |completion| when UI is dismissed. +- (void)stopWithCompletion:(ProceduralBlock)completion; @end
diff --git a/ios/chrome/browser/ui/payments/payment_request_coordinator.mm b/ios/chrome/browser/ui/payments/payment_request_coordinator.mm index c9a2965..fc3872f 100644 --- a/ios/chrome/browser/ui/payments/payment_request_coordinator.mm +++ b/ios/chrome/browser/ui/payments/payment_request_coordinator.mm
@@ -36,13 +36,6 @@ @interface PaymentRequestCoordinator () -// A weak reference to self used in -stop. -stop is run twice, once by the -// coordinator that manages the lifetime of this coordinator and once in -// ChromeCoordinator's -dealloc. It is not possible to create a weak reference -// to self in the process of deallocation. The second time -stop is called in -// -dealloc this weak reference is expected to be nil. -@property(nonatomic, weak) PaymentRequestCoordinator* weakSelf; - // Updates the current total amount and asks the view controller to update the // Payment Summary item so that the changes in total amount are reflected. - (void)updatePaymentSummaryItem; @@ -56,7 +49,6 @@ ContactInfoEditCoordinator* _contactInfoEditCoordinator; ContactInfoSelectionCoordinator* _contactInfoSelectionCoordinator; PaymentRequestViewController* _viewController; - PaymentRequestErrorCoordinator* _errorCoordinator; PaymentItemsDisplayCoordinator* _itemsDisplayCoordinator; ShippingAddressSelectionCoordinator* _shippingAddressSelectionCoordinator; ShippingOptionSelectionCoordinator* _shippingOptionSelectionCoordinator; @@ -88,11 +80,8 @@ @synthesize pending = _pending; @synthesize cancellable = _cancellable; @synthesize delegate = _delegate; -@synthesize weakSelf = _weakSelf; - (void)start { - _weakSelf = self; - _currentTotal = std::make_unique<payments::PaymentItem>(self.paymentRequest->GetTotal( self.paymentRequest->selected_payment_method())); @@ -124,15 +113,15 @@ } - (void)stop { + [self stopWithCompletion:nil]; +} + +- (void)stopWithCompletion:(ProceduralBlock)completion { [_updatePaymentSummaryItemTimer invalidate]; - __weak PaymentRequestCoordinator* weakSelf = self.weakSelf; - ProceduralBlock callback = ^() { - [weakSelf.delegate paymentRequestCoordinatorDidStop:weakSelf]; - }; [[_navigationController presentingViewController] dismissViewControllerAnimated:YES - completion:callback]; + completion:completion]; [_addressEditCoordinator stop]; _addressEditCoordinator = nil; @@ -150,8 +139,6 @@ _shippingOptionSelectionCoordinator = nil; [_methodSelectionCoordinator stop]; _methodSelectionCoordinator = nil; - [_errorCoordinator stop]; - _errorCoordinator = nil; _viewController = nil; _navigationController = nil; } @@ -229,15 +216,6 @@ _addressEditCoordinator = nil; } -- (void)displayErrorWithCallback:(ProceduralBlock)callback { - _errorCoordinator = [[PaymentRequestErrorCoordinator alloc] - initWithBaseViewController:_navigationController]; - [_errorCoordinator setCallback:callback]; - [_errorCoordinator setDelegate:self]; - - [_errorCoordinator start]; -} - #pragma mark - PaymentRequestViewControllerDelegate - (void)paymentRequestViewControllerDidCancel: @@ -343,19 +321,6 @@ [_methodSelectionCoordinator start]; } -#pragma mark - PaymentRequestErrorCoordinatorDelegate - -- (void)paymentRequestErrorCoordinatorDidDismiss: - (PaymentRequestErrorCoordinator*)coordinator { - ProceduralBlock callback = coordinator.callback; - - [_errorCoordinator stop]; - _errorCoordinator = nil; - - if (callback) - callback(); -} - #pragma mark - PaymentItemsDisplayCoordinatorDelegate - (void)paymentItemsDisplayCoordinatorDidReturn:
diff --git a/ios/chrome/browser/ui/payments/payment_request_coordinator_unittest.mm b/ios/chrome/browser/ui/payments/payment_request_coordinator_unittest.mm index 0c5b105..c2a0f88 100644 --- a/ios/chrome/browser/ui/payments/payment_request_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/payments/payment_request_coordinator_unittest.mm
@@ -106,18 +106,6 @@ [coordinator setPaymentRequest:payment_request()]; [coordinator setBrowserState:browser_state()]; - // Mock the coordinator delegate. - id check_block = ^BOOL(id value) { - EXPECT_TRUE(value == coordinator); - return YES; - }; - id delegate = [OCMockObject - mockForProtocol:@protocol(PaymentRequestCoordinatorDelegate)]; - [[delegate expect] - paymentRequestCoordinatorDidStop:[OCMArg checkWithBlock:check_block]]; - - [coordinator setDelegate:delegate]; - [coordinator start]; // Spin the run loop to trigger the animation. base::test::ios::SpinRunLoopWithMaxDelay(base::TimeDelta::FromSecondsD(1)); @@ -137,8 +125,6 @@ return !base_view_controller.presentedViewController; }); EXPECT_EQ(nil, base_view_controller.presentedViewController); - - EXPECT_OCMOCK_VERIFY(delegate); } // Tests that calling the ShippingAddressSelectionCoordinator delegate method
diff --git a/ios/chrome/browser/ui/payments/payment_request_manager.mm b/ios/chrome/browser/ui/payments/payment_request_manager.mm index 90d887f..10b1e66 100644 --- a/ios/chrome/browser/ui/payments/payment_request_manager.mm +++ b/ios/chrome/browser/ui/payments/payment_request_manager.mm
@@ -56,6 +56,7 @@ #import "ios/chrome/browser/ui/commands/application_commands.h" #import "ios/chrome/browser/ui/payments/js_payment_request_manager.h" #import "ios/chrome/browser/ui/payments/payment_request_coordinator.h" +#import "ios/chrome/browser/ui/payments/payment_request_error_coordinator.h" #include "ios/web/public/favicon_status.h" #include "ios/web/public/navigation_item.h" #include "ios/web/public/navigation_manager.h" @@ -107,6 +108,7 @@ @interface PaymentRequestManager ()<CRWWebStateObserver, PaymentRequestCoordinatorDelegate, + PaymentRequestErrorCoordinatorDelegate, PaymentRequestUIDelegate, PaymentResponseHelperConsumer> { // View controller used to present the PaymentRequest view controller. @@ -144,6 +146,11 @@ @property(nonatomic, strong) PaymentRequestCoordinator* paymentRequestCoordinator; +// Coordinator used to create and present the PaymentRequest error view +// controller. +@property(nonatomic, strong) + PaymentRequestErrorCoordinator* paymentRequestErrorCoordinator; + // Object that manages JavaScript injection into the web view. @property(nonatomic, weak) JSPaymentRequestManager* paymentRequestJsManager; @@ -157,13 +164,18 @@ // The dispatcher for Payment Requests. @property(nonatomic, weak, readonly) id<ApplicationCommands> dispatcher; -// A block to be run when the |_paymentRequestCoordinator| stops. -@property(nonatomic, strong, nullable) - ProceduralBlock coordinatorDidStopCallback; - // Dismisses the UI, rejects the pending request promise with "AbortError" and // |errorMessage|, and records |reason| for the pending request. Invokes // |callback| once request promise is rejected. +- (void)dismissUIAndAbortPendingRequestWithReason: + (payments::JourneyLogger::AbortReason)reason + errorMessage:(NSString*)errorMessage + callback: + (ProceduralBlockWithBool)callback; + +// Rejects the pending request promise with "AbortError" and |errorMessage|, and +// records |reason| for the pending request. Invokes |callback| once request +// promise is rejected. - (void)abortPendingRequestWithReason: (payments::JourneyLogger::AbortReason)reason errorMessage:(NSString*)errorMessage @@ -243,6 +255,13 @@ // has the identifier |paymentRequestId|, if any. Otherwise returns nullptr. - (payments::PaymentRequest*)paymentRequestWithId:(std::string)paymentRequestId; +// Invalidates timers and stops |paymentRequestCoordinator|. Invokes |callback| +// when the view controller is dismissed. +- (void)dismissPaymentRequestUIWithCallback:(ProceduralBlock)callback; + +// Starts the error coordinator. Invokes |callback| when the error is dismissed. +- (void)displayErrorWithCallback:(ProceduralBlock)callback; + @end @implementation PaymentRequestManager @@ -252,11 +271,11 @@ @synthesize enabled = _enabled; @synthesize activeWebState = _activeWebState; @synthesize paymentRequestCoordinator = _paymentRequestCoordinator; +@synthesize paymentRequestErrorCoordinator = _paymentRequestErrorCoordinator; @synthesize paymentRequestJsManager = _paymentRequestJsManager; @synthesize paymentRequestCache = _paymentRequestCache; @synthesize pendingPaymentRequest = _pendingPaymentRequest; @synthesize dispatcher = _dispatcher; -@synthesize coordinatorDidStopCallback = _coordinatorDidStopCallback; - (instancetype)initWithBaseViewController:(UIViewController*)viewController browserState: @@ -343,10 +362,10 @@ // Abort any pending request. if (_pendingPaymentRequest) { - [self abortPendingRequestWithReason:payments::JourneyLogger:: - ABORT_REASON_MERCHANT_NAVIGATION - errorMessage:kCancelErrorMessage - callback:callback]; + [self dismissUIAndAbortPendingRequestWithReason: + payments::JourneyLogger::ABORT_REASON_MERCHANT_NAVIGATION + errorMessage:kCancelErrorMessage + callback:callback]; } else { callback(YES); } @@ -368,10 +387,23 @@ return; } - [self abortPendingRequestWithReason:payments::JourneyLogger:: - ABORT_REASON_MERCHANT_NAVIGATION - errorMessage:kCancelErrorMessage - callback:nil]; + [self dismissUIAndAbortPendingRequestWithReason: + payments::JourneyLogger::ABORT_REASON_MERCHANT_NAVIGATION + errorMessage:kCancelErrorMessage + callback:nil]; +} + +- (void)dismissUIAndAbortPendingRequestWithReason: + (payments::JourneyLogger::AbortReason)reason + errorMessage:(NSString*)errorMessage + callback: + (ProceduralBlockWithBool)callback { + __weak PaymentRequestManager* weakSelf = self; + [self dismissPaymentRequestUIWithCallback:^{ + [weakSelf abortPendingRequestWithReason:reason + errorMessage:errorMessage + callback:callback]; + }]; } - (void)abortPendingRequestWithReason: @@ -382,22 +414,12 @@ DCHECK(_pendingPaymentRequest->state() == payments::PaymentRequest::State::INTERACTIVE); - [_unblockEventQueueTimer invalidate]; - [_paymentResponseTimeoutTimer invalidate]; - [_updateEventTimeoutTimer invalidate]; - - [self resetIOSPaymentInstrumentLauncherDelegate]; - - __weak PaymentRequestManager* weakSelf = self; - ProceduralBlock dismissUICallback = ^() { - [weakSelf abortPaymentRequest:weakSelf.pendingPaymentRequest - reason:reason - errorName:kAbortError - errorMessage:errorMessage - callback:callback]; - weakSelf.pendingPaymentRequest = nullptr; - }; - [self dismissUIWithCallback:dismissUICallback]; + [self abortPaymentRequest:self.pendingPaymentRequest + reason:reason + errorName:kAbortError + errorMessage:errorMessage + callback:callback]; + self.pendingPaymentRequest = nullptr; } - (void)abortPaymentRequest:(payments::PaymentRequest*)paymentRequest @@ -688,7 +710,9 @@ callback:cancellationCallback]; }; - [_paymentRequestCoordinator displayErrorWithCallback:callback]; + [self dismissPaymentRequestUIWithCallback:^{ + [weakSelf displayErrorWithCallback:callback]; + }]; return YES; } @@ -772,7 +796,9 @@ callback:nil]; }; - [_paymentRequestCoordinator displayErrorWithCallback:callback]; + [self dismissPaymentRequestUIWithCallback:^{ + [weakSelf displayErrorWithCallback:callback]; + }]; return YES; } @@ -800,16 +826,15 @@ __weak PaymentRequestManager* weakSelf = self; ProceduralBlock callback = ^{ weakSelf.pendingPaymentRequest = nullptr; - ProceduralBlock dismissUICallback = ^() { - [weakSelf.paymentRequestJsManager - resolveResponsePromiseWithCompletionHandler:nil]; - }; - [weakSelf dismissUIWithCallback:dismissUICallback]; + [weakSelf.paymentRequestJsManager + resolveResponsePromiseWithCompletionHandler:nil]; }; // Display UI indicating failure if the value of |result| is "fail". if (result == "fail") { - [_paymentRequestCoordinator displayErrorWithCallback:callback]; + [self dismissPaymentRequestUIWithCallback:^{ + [weakSelf displayErrorWithCallback:callback]; + }]; } else { _pendingPaymentRequest->journey_logger().SetCompleted(); _pendingPaymentRequest->set_updating(false); @@ -817,7 +842,7 @@ _pendingPaymentRequest->RecordUseStats(); _pendingPaymentRequest->GetPrefService()->SetBoolean( payments::kPaymentsFirstTransactionCompleted, true); - callback(); + [self dismissPaymentRequestUIWithCallback:callback]; } return YES; @@ -903,9 +928,19 @@ repeats:NO]; } -- (void)dismissUIWithCallback:(ProceduralBlock)callback { - _coordinatorDidStopCallback = callback; - [_paymentRequestCoordinator stop]; +- (void)dismissPaymentRequestUIWithCallback:(ProceduralBlock)callback { + [_unblockEventQueueTimer invalidate]; + [_paymentResponseTimeoutTimer invalidate]; + [_updateEventTimeoutTimer invalidate]; + + [self resetIOSPaymentInstrumentLauncherDelegate]; + + __weak PaymentRequestManager* weakSelf = self; + [_paymentRequestCoordinator stopWithCompletion:^{ + weakSelf.paymentRequestCoordinator = nil; + if (callback) + callback(); + }]; } - (BOOL)webStateContentIsSecureHTML { @@ -1000,10 +1035,10 @@ - (void)paymentRequestCoordinatorDidCancel: (PaymentRequestCoordinator*)coordinator { - [self abortPendingRequestWithReason:payments::JourneyLogger:: - ABORT_REASON_ABORTED_BY_USER - errorMessage:kCancelErrorMessage - callback:nil]; + [self dismissUIAndAbortPendingRequestWithReason: + payments::JourneyLogger::ABORT_REASON_ABORTED_BY_USER + errorMessage:kCancelErrorMessage + callback:nil]; } - (void)paymentRequestCoordinatorDidSelectSettings: @@ -1014,10 +1049,10 @@ showAutofillSettingsFromViewController:_baseViewController]; }; - [self abortPendingRequestWithReason:payments::JourneyLogger:: - ABORT_REASON_ABORTED_BY_USER - errorMessage:kCancelErrorMessage - callback:callback]; + [self dismissUIAndAbortPendingRequestWithReason: + payments::JourneyLogger::ABORT_REASON_ABORTED_BY_USER + errorMessage:kCancelErrorMessage + callback:callback]; } - (void)paymentRequestCoordinator:(PaymentRequestCoordinator*)coordinator @@ -1058,15 +1093,17 @@ [self setUpdateEventTimeoutTimer]; } -- (void)paymentRequestCoordinatorDidStop: - (PaymentRequestCoordinator*)coordinator { - // The coordinator can now be safely set to nil. - _paymentRequestCoordinator = nil; +#pragma mark - PaymentRequestErrorCoordinatorDelegate - if (_coordinatorDidStopCallback) { - _coordinatorDidStopCallback(); - _coordinatorDidStopCallback = nil; - } +- (void)paymentRequestErrorCoordinatorDidDismiss: + (PaymentRequestErrorCoordinator*)coordinator { + ProceduralBlock callback = coordinator.callback; + + [_paymentRequestErrorCoordinator stop]; + _paymentRequestErrorCoordinator = nil; + + if (callback) + callback(); } #pragma mark - PaymentResponseHelperConsumer methods @@ -1131,9 +1168,9 @@ // Abort any pending request. if (_pendingPaymentRequest) { - [self abortPendingRequestWithReason:abortReason - errorMessage:kCancelErrorMessage - callback:callback]; + [self dismissUIAndAbortPendingRequestWithReason:abortReason + errorMessage:kCancelErrorMessage + callback:callback]; } else { callback(YES); } @@ -1156,6 +1193,15 @@ #pragma mark - Helper methods +- (void)displayErrorWithCallback:(ProceduralBlock)callback { + _paymentRequestErrorCoordinator = [[PaymentRequestErrorCoordinator alloc] + initWithBaseViewController:_baseViewController]; + [_paymentRequestErrorCoordinator setCallback:callback]; + [_paymentRequestErrorCoordinator setDelegate:self]; + + [_paymentRequestErrorCoordinator start]; +} + - (payments::PaymentRequest*)paymentRequestWithId: (std::string)paymentRequestId { const payments::PaymentRequestCache::PaymentRequestSet& paymentRequests =
diff --git a/ios/chrome/test/fakes/fake_store_kit_launcher.h b/ios/chrome/test/fakes/fake_store_kit_launcher.h index 8a6599d..713ccf6 100644 --- a/ios/chrome/test/fakes/fake_store_kit_launcher.h +++ b/ios/chrome/test/fakes/fake_store_kit_launcher.h
@@ -13,8 +13,14 @@ // is called, launchedProductID will be set to that productID. Users need to // reset |launchedProductID| between uses. @interface FakeStoreKitLauncher : NSObject<StoreKitLauncher> -// This string will have the product id that store kit with launched for. +// This string will have the product id that store kit with launched for, if +// openAppStore was called with string ID. @property(nonatomic, copy) NSString* launchedProductID; + +// This dictionary will have the product params that store kit with launched +// with, if openAppStoreWithParams was called with parameters dictionary. +@property(nonatomic, copy) NSDictionary* launchedProductParams; + @end #endif // IOS_CHROME_TEST_FAKES_FAKE_STORE_KIT_LAUNCHER_H_
diff --git a/ios/chrome/test/fakes/fake_store_kit_launcher.mm b/ios/chrome/test/fakes/fake_store_kit_launcher.mm index c0d54a2..a06734b 100644 --- a/ios/chrome/test/fakes/fake_store_kit_launcher.mm +++ b/ios/chrome/test/fakes/fake_store_kit_launcher.mm
@@ -10,9 +10,14 @@ @implementation FakeStoreKitLauncher @synthesize launchedProductID = _launchedProductID; +@synthesize launchedProductParams = _launchedProductParams; #pragma mark - StoreKitLauncher - (void)openAppStore:(NSString*)productID { _launchedProductID = [productID copy]; } + +- (void)openAppStoreWithParameters:(NSDictionary*)productParameters { + _launchedProductParams = [productParameters copy]; +} @end
diff --git a/media/base/android/media_player_bridge.cc b/media/base/android/media_player_bridge.cc index 12f7a1ae..039769b8 100644 --- a/media/base/android/media_player_bridge.cc +++ b/media/base/android/media_player_bridge.cc
@@ -90,30 +90,15 @@ return; } - if (url_.SchemeIsFile() || url_.SchemeIs("data")) { - ExtractMediaMetadata(url_.spec()); - return; - } + if (allow_credentials_) { + media::MediaResourceGetter* resource_getter = + manager()->GetMediaResourceGetter(); - media::MediaResourceGetter* resource_getter = - manager()->GetMediaResourceGetter(); - if (url_.SchemeIsFileSystem()) { - resource_getter->GetPlatformPathFromURL( - url_, base::BindOnce(&MediaPlayerBridge::ExtractMediaMetadata, - weak_factory_.GetWeakPtr())); - return; + resource_getter->GetCookies( + url_, site_for_cookies_, + base::BindOnce(&MediaPlayerBridge::OnCookiesRetrieved, + weak_factory_.GetWeakPtr())); } - - // 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_, site_for_cookies_, - base::Bind(&MediaPlayerBridge::OnCookiesRetrieved, - weak_factory_.GetWeakPtr())); } void MediaPlayerBridge::CreateJavaMediaPlayerBridge() { @@ -263,42 +248,6 @@ replacements.SetPasswordStr(password); url_ = url_.ReplaceComponents(replacements); } - ExtractMediaMetadata(url_.spec()); -} - -void MediaPlayerBridge::ExtractMediaMetadata(const std::string& url) { - if (url.empty()) { - OnMediaError(MEDIA_ERROR_FORMAT); - on_decoder_resources_released_cb_.Run(player_id()); - return; - } - - int fd; - int64_t offset; - int64_t 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( - base::TimeDelta duration, int width, int height, bool success) { - if (success) { - duration_ = duration; - width_ = width; - height_ = height; - } - manager()->OnMediaMetadataChanged( - player_id(), duration_, width_, height_, success); - on_decoder_resources_released_cb_.Run(player_id()); } void MediaPlayerBridge::Start() {
diff --git a/media/base/android/media_resource_getter.h b/media/base/android/media_resource_getter.h index a4ebf883..200234bf 100644 --- a/media/base/android/media_resource_getter.h +++ b/media/base/android/media_resource_getter.h
@@ -49,20 +49,6 @@ // Method for getting the platform path from a file system URL. virtual void GetPlatformPathFromURL(const GURL& url, GetPlatformPathCB callback) = 0; - - // 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, - 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_t offset, - const int64_t size, - ExtractMediaMetadataCB callback) = 0; }; } // namespace media
diff --git a/media/formats/webm/webm_colour_parser.cc b/media/formats/webm/webm_colour_parser.cc index 908d31a..86263218 100644 --- a/media/formats/webm/webm_colour_parser.cc +++ b/media/formats/webm/webm_colour_parser.cc
@@ -99,6 +99,9 @@ Defined by MatrixCoefficients/TransferCharacteristics. */ kDerived = 3, + + kMinValue = kUnspecified, + kMaxValue = kDerived, }; /** @@ -413,20 +416,23 @@ if (chroma_siting_vert_ != -1) color_metadata.ChromaSitingVert = chroma_siting_vert_; - gfx::ColorSpace::RangeID range_id = gfx::ColorSpace::RangeID::FULL; - switch (static_cast<Range>(range_)) { - case Range::kUnspecified: - range_id = gfx::ColorSpace::RangeID::FULL; - break; - case Range::kBroadcast: - range_id = gfx::ColorSpace::RangeID::LIMITED; - break; - case Range::kFull: - range_id = gfx::ColorSpace::RangeID::FULL; - break; - case Range::kDerived: - range_id = gfx::ColorSpace::RangeID::DERIVED; - break; + gfx::ColorSpace::RangeID range_id = gfx::ColorSpace::RangeID::INVALID; + if (range_ >= static_cast<int64_t>(Range::kMinValue) && + range_ <= static_cast<int64_t>(Range::kMaxValue)) { + switch (static_cast<Range>(range_)) { + case Range::kUnspecified: + range_id = gfx::ColorSpace::RangeID::INVALID; + break; + case Range::kBroadcast: + range_id = gfx::ColorSpace::RangeID::LIMITED; + break; + case Range::kFull: + range_id = gfx::ColorSpace::RangeID::FULL; + break; + case Range::kDerived: + range_id = gfx::ColorSpace::RangeID::DERIVED; + break; + } } color_metadata.color_space = VideoColorSpace( primaries_, transfer_characteristics_, matrix_coefficients_, range_id);
diff --git a/notification_helper/notification_helper.cc b/notification_helper/notification_helper.cc index 29d90f1..313f00e2 100644 --- a/notification_helper/notification_helper.cc +++ b/notification_helper/notification_helper.cc
@@ -43,18 +43,11 @@ return 0; } - install_static::InitializeProductDetailsForPrimaryModule(); - - // The histogram storage folder should be under folder "User Data". - base::string16 user_data_dir; - install_static::GetUserDataDirectory(&user_data_dir, nullptr); - - persistent_histogram_storage.set_storage_base_dir( - base::FilePath(std::move(user_data_dir))); - // The exit manager is in charge of calling the dtors of singletons. base::AtExitManager exit_manager; + install_static::InitializeProductDetailsForPrimaryModule(); + // Use crashpad embedded in chrome.exe as the crash handler. base::FilePath chrome_exe_path = notification_helper::GetChromeExePath(); if (!chrome_exe_path.empty()) { @@ -62,6 +55,13 @@ InitializeCrashReportingForProcessWithHandler(chrome_exe_path); } + // The histogram storage folder should be under folder "User Data". + base::string16 user_data_dir; + install_static::GetUserDataDirectory(&user_data_dir, nullptr); + + persistent_histogram_storage.set_storage_base_dir( + base::FilePath(std::move(user_data_dir))); + // Make sure the process exits cleanly on unexpected errors. base::EnableTerminationOnHeapCorruption(); base::EnableTerminationOnOutOfMemory();
diff --git a/remoting/host/installer/mac/Keystone/GoogleSoftwareUpdate.pkg b/remoting/host/installer/mac/Keystone/GoogleSoftwareUpdate.pkg index 67bca5f..7ce47cf 100644 --- a/remoting/host/installer/mac/Keystone/GoogleSoftwareUpdate.pkg +++ b/remoting/host/installer/mac/Keystone/GoogleSoftwareUpdate.pkg Binary files differ
diff --git a/rlz/BUILD.gn b/rlz/BUILD.gn index d1c59e2..cf56eb5 100644 --- a/rlz/BUILD.gn +++ b/rlz/BUILD.gn
@@ -150,6 +150,9 @@ "//testing/gtest", "//third_party/zlib", ] + if (is_chromeos) { + deps += [ "//chromeos" ] + } } }
diff --git a/rlz/DEPS b/rlz/DEPS index 9cab8e58..a42d5f3 100644 --- a/rlz/DEPS +++ b/rlz/DEPS
@@ -56,6 +56,7 @@ include_rules = [ "+build", + "+chromeos/dbus", "+chromeos/system", "+net", # This is only used when force_rlz_use_chrome_net=1 is passed to gyp. "+third_party/zlib",
diff --git a/rlz/chromeos/lib/rlz_value_store_chromeos.cc b/rlz/chromeos/lib/rlz_value_store_chromeos.cc index e7b0f9a..bd753f9 100644 --- a/rlz/chromeos/lib/rlz_value_store_chromeos.cc +++ b/rlz/chromeos/lib/rlz_value_store_chromeos.cc
@@ -12,10 +12,13 @@ #include "base/lazy_instance.h" #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/metrics/histogram_macros.h" #include "base/path_service.h" #include "base/sequenced_task_runner.h" #include "base/strings/string_number_conversions.h" #include "base/values.h" +#include "chromeos/dbus/dbus_thread_manager.h" +#include "chromeos/dbus/debug_daemon_client.h" #include "chromeos/system/statistics_provider.h" #include "rlz/lib/financial_ping.h" #include "rlz/lib/lib_values.h" @@ -118,10 +121,13 @@ const int RlzValueStoreChromeOS::kRlzEmbargoEndDateGarbageDateThresholdDays = 14; +const int RlzValueStoreChromeOS::kMaxRetryCount = 3; + RlzValueStoreChromeOS::RlzValueStoreChromeOS(const base::FilePath& store_path) : rlz_store_(new base::DictionaryValue), store_path_(store_path), - read_only_(true) { + read_only_(true), + weak_ptr_factory_(this) { ReadStore(); } @@ -250,7 +256,8 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (strcmp(event_rlz, "CAF") == 0) { - // TODO(wzang): Set rlz_first_use_ping_not_sent to 0 in RW_VPD. + set_rlz_ping_sent_attempts_ = 0; + SetRlzPingSent(); } return AddValueToList(GetKeyName(kStatefulEventKey, product), std::make_unique<base::Value>(event_rlz)); @@ -279,13 +286,13 @@ } if (!HasRlzEmbargoEndDatePassed()) return true; + DCHECK_EQ(should_send_rlz_ping_value, chromeos::system::kShouldSendRlzPingValueTrue); - if (event_exists) { - // TODO(wzang): If we reach here, it means there was an error writing to - // RW_VPD earlier. We should log the error and try writing to RW_VPD - // again. Also, capture UMA stat on persistent failure to write VPD. - } + } else { + // If |kShouldSendRlzPingKey| doesn't exist in RW_VPD, treat it in the + // same way with the case of |kShouldSendRlzPingValueFalse|. + return true; } } @@ -358,6 +365,25 @@ return true; } +void RlzValueStoreChromeOS::SetRlzPingSent() { + ++set_rlz_ping_sent_attempts_; + chromeos::DBusThreadManager::Get()->GetDebugDaemonClient()->SetRlzPingSent( + base::BindOnce(&RlzValueStoreChromeOS::OnSetRlzPingSent, + weak_ptr_factory_.GetWeakPtr())); +} + +void RlzValueStoreChromeOS::OnSetRlzPingSent(bool success) { + if (success) { + UMA_HISTOGRAM_BOOLEAN("Rlz.SetRlzPingSent", true); + } else if (set_rlz_ping_sent_attempts_ >= kMaxRetryCount) { + UMA_HISTOGRAM_BOOLEAN("Rlz.SetRlzPingSent", false); + LOG(ERROR) << "Setting |should_send_rlz_ping| to 0 failed after " + << kMaxRetryCount << " attempts"; + } else { + SetRlzPingSent(); + } +} + namespace { // RlzValueStoreChromeOS keeps its data in memory and only writes it to disk
diff --git a/rlz/chromeos/lib/rlz_value_store_chromeos.h b/rlz/chromeos/lib/rlz_value_store_chromeos.h index 0b0940f..75d9feb 100644 --- a/rlz/chromeos/lib/rlz_value_store_chromeos.h +++ b/rlz/chromeos/lib/rlz_value_store_chromeos.h
@@ -12,6 +12,7 @@ #include "base/files/file_path.h" #include "base/macros.h" +#include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" #include "rlz/lib/rlz_value_store.h" @@ -29,6 +30,9 @@ // future. static const int kRlzEmbargoEndDateGarbageDateThresholdDays; + // The maximum retry times allowed for |SetRlzPingSent|. + static const int kMaxRetryCount; + // Creates new instance and synchronously reads data from file. explicit RlzValueStoreChromeOS(const base::FilePath& store_path); ~RlzValueStoreChromeOS() override; @@ -73,6 +77,13 @@ bool RemoveValueFromList(const std::string& list_name, const base::Value& value); + // Set |should_send_rlz_ping| to 0 in RW_VPD. This is a wrapper of + // |DebugDaemonClient::SetRlzPingSent|. + void SetRlzPingSent(); + + // Callback of |SetRlzPingSent|. + void OnSetRlzPingSent(bool success); + // In-memory store with RLZ data. std::unique_ptr<base::DictionaryValue> rlz_store_; @@ -80,8 +91,13 @@ bool read_only_; + // The number of attempts of |SetRlzPingSent| so far. + int set_rlz_ping_sent_attempts_; + SEQUENCE_CHECKER(sequence_checker_); + base::WeakPtrFactory<RlzValueStoreChromeOS> weak_ptr_factory_; + DISALLOW_COPY_AND_ASSIGN(RlzValueStoreChromeOS); };
diff --git a/rlz/lib/rlz_lib_test.cc b/rlz/lib/rlz_lib_test.cc index fd602880..787d7a3 100644 --- a/rlz/lib/rlz_lib_test.cc +++ b/rlz/lib/rlz_lib_test.cc
@@ -45,6 +45,12 @@ #include "net/url_request/url_request_test_util.h" #endif +#if defined(OS_CHROMEOS) +#include "chromeos/dbus/dbus_thread_manager.h" +#include "chromeos/dbus/fake_debug_daemon_client.h" +#include "rlz/chromeos/lib/rlz_value_store_chromeos.h" +#endif + class MachineDealCodeHelper #if defined(OS_WIN) : public rlz_lib::MachineDealCode @@ -1007,3 +1013,53 @@ } #endif + +#if defined(OS_CHROMEOS) +class TestDebugDaemonClient : public chromeos::FakeDebugDaemonClient { + public: + TestDebugDaemonClient() = default; + ~TestDebugDaemonClient() override = default; + + int num_set_rlz_ping_sent() const { return num_set_rlz_ping_sent_; } + + // Sets the result returned by the callback in order to test both success and + // failure cases. + void set_default_result(bool default_result) { + default_result_ = default_result; + } + + void SetRlzPingSent(SetRlzPingSentCallback callback) override { + ++num_set_rlz_ping_sent_; + std::move(callback).Run(default_result_); + } + + private: + int num_set_rlz_ping_sent_ = 0; + bool default_result_; + DISALLOW_COPY_AND_ASSIGN(TestDebugDaemonClient); +}; + +TEST_F(RlzLibTest, SetRlzPingSent) { + TestDebugDaemonClient* debug_daemon_client = new TestDebugDaemonClient; + chromeos::DBusThreadManager::GetSetterForTesting()->SetDebugDaemonClient( + std::unique_ptr<chromeos::DebugDaemonClient>(debug_daemon_client)); + const char* kPingResponse = + "stateful-events: CAF\r\n" + "crc32: 3BB2FEAE\r\n"; + + // Verify that a |SetRlzPingSent| dbus call is made and it's made only once + // if success status is returned. + debug_daemon_client->set_default_result(true); + EXPECT_TRUE( + rlz_lib::ParsePingResponse(rlz_lib::TOOLBAR_NOTIFIER, kPingResponse)); + EXPECT_EQ(debug_daemon_client->num_set_rlz_ping_sent(), 1); + + // Verify that a maximum of |kMaxRetryCount| times of attempts are made if + // |SetRlzPingSent| returns failure status. + debug_daemon_client->set_default_result(false); + EXPECT_TRUE( + rlz_lib::ParsePingResponse(rlz_lib::TOOLBAR_NOTIFIER, kPingResponse)); + EXPECT_EQ(debug_daemon_client->num_set_rlz_ping_sent(), + 1 + rlz_lib::RlzValueStoreChromeOS::kMaxRetryCount); +} +#endif
diff --git a/sandbox/BUILD.gn b/sandbox/BUILD.gn index bfafc25..c60d5f82 100644 --- a/sandbox/BUILD.gn +++ b/sandbox/BUILD.gn
@@ -33,8 +33,8 @@ } } -buildflag_header("sandbox_features") { - header = "sandbox_features.h" +buildflag_header("sandbox_buildflags") { + header = "sandbox_buildflags.h" flags = [ "USE_SECCOMP_BPF=$use_seccomp_bpf" ] }
diff --git a/sandbox/linux/BUILD.gn b/sandbox/linux/BUILD.gn index 207ef46..2da57fc9 100644 --- a/sandbox/linux/BUILD.gn +++ b/sandbox/linux/BUILD.gn
@@ -289,7 +289,7 @@ deps = [ "//base", - "//sandbox:sandbox_features", + "//sandbox:sandbox_buildflags", ] if (use_seccomp_bpf) {
diff --git a/sandbox/linux/seccomp-bpf-helpers/seccomp_starter_android.h b/sandbox/linux/seccomp-bpf-helpers/seccomp_starter_android.h index c5f253f..8c3f842 100644 --- a/sandbox/linux/seccomp-bpf-helpers/seccomp_starter_android.h +++ b/sandbox/linux/seccomp-bpf-helpers/seccomp_starter_android.h
@@ -6,8 +6,8 @@ #define SANDBOX_LINUX_SECCOMP_BPF_HELPERS_SECCOMP_STARTER_ANDROID_H_ #include "base/macros.h" +#include "sandbox/sandbox_buildflags.h" #include "sandbox/sandbox_export.h" -#include "sandbox/sandbox_features.h" #if BUILDFLAG(USE_SECCOMP_BPF) #include <memory>
diff --git a/services/network/cross_origin_read_blocking_explainer.md b/services/network/cross_origin_read_blocking_explainer.md index ed0410bd..7de724d 100644 --- a/services/network/cross_origin_read_blocking_explainer.md +++ b/services/network/cross_origin_read_blocking_explainer.md
@@ -682,8 +682,9 @@ This would make it possible to CORB-protect resources like images or JavaScript (including JSONP). -> [lukasza@chromium.org] TODO: Is there an existing HTTP response header -> that may be used in this context? +> [lukasza@chromium.org] Currently considered CORB opt-in signals include: +> - `From-Origin:` header - https://github.com/whatwg/fetch/issues/687 +> - `Isolate-Me` header - https://github.com/WICG/isolation ## Appendix: Early attempt to codify CORB algorithm
diff --git a/services/network/network_context.cc b/services/network/network_context.cc index 0f83023b..68f9801b 100644 --- a/services/network/network_context.cc +++ b/services/network/network_context.cc
@@ -173,10 +173,9 @@ mojom::URLLoaderFactoryRequest request, uint32_t process_id, scoped_refptr<ResourceSchedulerClient> resource_scheduler_client) { - loader_factory_bindings_.AddBinding( - std::make_unique<URLLoaderFactory>(this, process_id, - std::move(resource_scheduler_client)), - std::move(request)); + url_loader_factories_.emplace(std::make_unique<URLLoaderFactory>( + this, process_id, std::move(resource_scheduler_client), + std::move(request))); } void NetworkContext::CreateURLLoaderFactory( @@ -456,6 +455,13 @@ return URLRequestContextOwner(std::move(pref_service), builder->Build()); } +void NetworkContext::DestroyURLLoaderFactory( + URLLoaderFactory* url_loader_factory) { + auto it = url_loader_factories_.find(url_loader_factory); + DCHECK(it != url_loader_factories_.end()); + url_loader_factories_.erase(it); +} + void NetworkContext::ClearNetworkingHistorySince( base::Time time, base::OnceClosure completion_callback) {
diff --git a/services/network/network_context.h b/services/network/network_context.h index 2fc1b8ec..f9b1ee9 100644 --- a/services/network/network_context.h +++ b/services/network/network_context.h
@@ -8,11 +8,13 @@ #include <stdint.h> #include <memory> +#include <set> #include <string> #include <vector> #include "base/callback.h" #include "base/component_export.h" +#include "base/containers/unique_ptr_adapters.h" #include "base/macros.h" #include "base/time/time.h" #include "build/build_config.h" @@ -39,6 +41,7 @@ class NetworkService; class ResourceScheduler; class ResourceSchedulerClient; +class URLLoaderFactory; class URLRequestContextBuilderMojo; class WebSocketFactory; @@ -162,6 +165,10 @@ net::NetworkQualityEstimator* network_quality_estimator, net::StaticHttpUserAgentSettings** out_http_user_agent_settings); + // Destroys the specified URLLoaderFactory. Called by the URLLoaderFactory + // itself when it has not open pipes. + void DestroyURLLoaderFactory(URLLoaderFactory* url_loader_factory); + private: // Constructor only used in tests. explicit NetworkContext(mojom::NetworkContextParamsPtr params); @@ -187,10 +194,6 @@ scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_; - // Put it below |url_request_context_| so that it outlives all the - // NetworkServiceURLLoaderFactory instances. - mojo::StrongBindingSet<mojom::URLLoaderFactory> loader_factory_bindings_; - mojom::NetworkContextParamsPtr params_; mojo::Binding<mojom::NetworkContext> binding_; @@ -205,6 +208,11 @@ std::vector<std::unique_ptr<HttpCacheDataRemover>> http_cache_data_removers_; + // This must be below |url_request_context_| so that the URLRequestContext + // outlives all the URLLoaderFactories and URLLoaders that depend on it. + std::set<std::unique_ptr<URLLoaderFactory>, base::UniquePtrComparator> + url_loader_factories_; + int current_resource_scheduler_client_id_ = 0; // Owned by the URLRequestContext
diff --git a/services/network/network_context_unittest.cc b/services/network/network_context_unittest.cc index 28960c0..bd413b8d 100644 --- a/services/network/network_context_unittest.cc +++ b/services/network/network_context_unittest.cc
@@ -43,6 +43,7 @@ #include "net/proxy_resolution/proxy_config.h" #include "net/proxy_resolution/proxy_info.h" #include "net/proxy_resolution/proxy_resolution_service.h" +#include "net/test/embedded_test_server/embedded_test_server.h" #include "net/traffic_annotation/network_traffic_annotation_test_helper.h" #include "net/url_request/http_user_agent_settings.h" #include "net/url_request/url_request_context.h" @@ -53,6 +54,7 @@ #include "services/network/public/cpp/features.h" #include "services/network/public/mojom/network_service.mojom.h" #include "services/network/public/mojom/proxy_config.mojom.h" +#include "services/network/test/test_url_loader_client.h" #include "services/network/udp_socket_test_util.h" #include "testing/gtest/include/gtest/gtest.h" #include "url/gurl.h" @@ -121,6 +123,47 @@ mojom::NetworkContextPtr network_context_ptr_; }; +TEST_F(NetworkContextTest, DestroyContextWithLiveRequest) { + net::EmbeddedTestServer test_server; + test_server.AddDefaultHandlers( + base::FilePath(FILE_PATH_LITERAL("services/test/data"))); + ASSERT_TRUE(test_server.Start()); + + std::unique_ptr<NetworkContext> network_context = + CreateContextWithParams(CreateContextParams()); + + ResourceRequest request; + request.url = test_server.GetURL("/hung-after-headers"); + + mojom::URLLoaderFactoryPtr loader_factory; + network_context->CreateURLLoaderFactory(mojo::MakeRequest(&loader_factory), + 0); + + mojom::URLLoaderPtr loader; + TestURLLoaderClient client; + loader_factory->CreateLoaderAndStart( + mojo::MakeRequest(&loader), 0 /* routing_id */, 0 /* request_id */, + 0 /* options */, request, client.CreateInterfacePtr(), + net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS)); + + client.RunUntilResponseReceived(); + EXPECT_TRUE(client.has_received_response()); + EXPECT_FALSE(client.has_received_completion()); + + // Destroying the loader factory should not delete the URLLoader. + loader_factory.reset(); + base::RunLoop().RunUntilIdle(); + EXPECT_FALSE(client.has_received_completion()); + + // Destroying the NetworkContext should result in destroying the loader and + // the client receiving a connection error. + network_context.reset(); + + client.RunUntilConnectionError(); + EXPECT_FALSE(client.has_received_completion()); + EXPECT_EQ(0u, client.download_data_length()); +} + TEST_F(NetworkContextTest, DisableQuic) { base::CommandLine::ForCurrentProcess()->AppendSwitch(switches::kEnableQuic);
diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc index 3a41068..caafb91 100644 --- a/services/network/url_loader.cc +++ b/services/network/url_loader.cc
@@ -263,6 +263,7 @@ URLLoader::URLLoader( scoped_refptr<net::URLRequestContextGetter> url_request_context_getter, mojom::NetworkServiceClient* network_service_client, + DeleteCallback delete_callback, mojom::URLLoaderRequest url_loader_request, int32_t options, const ResourceRequest& request, @@ -275,6 +276,7 @@ base::WeakPtr<KeepaliveStatisticsRecorder> keepalive_statistics_recorder) : url_request_context_getter_(url_request_context_getter), network_service_client_(network_service_client), + delete_callback_(std::move(delete_callback)), options_(options), resource_type_(request.resource_type), is_load_timing_enabled_(request.enable_load_timing), @@ -296,6 +298,7 @@ keepalive_statistics_recorder_(std::move(keepalive_statistics_recorder)), first_auth_attempt_(true), weak_ptr_factory_(this) { + DCHECK(delete_callback_); if (!base::FeatureList::IsEnabled(features::kNetworkService)) { CHECK(!url_loader_client_.internal_state() ->handle() @@ -309,7 +312,6 @@ options_ |= mojom::kURLLoadOptionSendSSLInfoWithResponse | mojom::kURLLoadOptionSendSSLInfoForCertificateError; } - url_request_context_getter_->AddObserver(this); binding_.set_connection_error_handler( base::BindOnce(&URLLoader::OnConnectionError, base::Unretained(this))); @@ -377,7 +379,6 @@ URLLoader::~URLLoader() { RecordBodyReadFromNetBeforePausedIfNeeded(); - url_request_context_getter_->RemoveObserver(this); if (keepalive_ && keepalive_statistics_recorder_) keepalive_statistics_recorder_->OnLoadFinished(process_id_); @@ -690,22 +691,12 @@ // |this| may have been deleted. } -void URLLoader::OnContextShuttingDown() { - // The associated network context is going away and we have to destroy - // net::URLRequest held by this loader. - delete this; -} - net::LoadState URLLoader::GetLoadStateForTesting() const { if (!url_request_) return net::LOAD_STATE_IDLE; return url_request_->GetLoadState().state; } -base::WeakPtr<URLLoader> URLLoader::GetWeakPtrForTests() { - return weak_ptr_factory_.GetWeakPtr(); -} - void URLLoader::NotifyCompleted(int error_code) { // Ensure sending the final upload progress message here, since // OnResponseCompleted can be called without OnResponseStarted on cancellation @@ -780,7 +771,7 @@ void URLLoader::DeleteIfNeeded() { if (!connected_ && !HasDataPipe()) - delete this; + std::move(delete_callback_).Run(this); } void URLLoader::SendResponseToClient() {
diff --git a/services/network/url_loader.h b/services/network/url_loader.h index 429d14f..966e672 100644 --- a/services/network/url_loader.h +++ b/services/network/url_loader.h
@@ -9,7 +9,9 @@ #include <memory> +#include "base/callback.h" #include "base/component_export.h" +#include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/optional.h" #include "mojo/public/cpp/bindings/binding.h" @@ -19,7 +21,6 @@ #include "net/http/http_raw_request_headers.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "net/url_request/url_request.h" -#include "net/url_request/url_request_context_getter_observer.h" #include "services/network/keepalive_statistics_recorder.h" #include "services/network/public/mojom/network_service.mojom.h" #include "services/network/public/mojom/url_loader.mojom.h" @@ -40,12 +41,15 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) URLLoader : public mojom::URLLoader, - public net::URLRequest::Delegate, - public net::URLRequestContextGetterObserver { + public net::URLRequest::Delegate { public: + using DeleteCallback = base::OnceCallback<void(URLLoader* url_loader)>; + + // |delete_callback| tells the URLLoader's owner to destroy the URLLoader. URLLoader( scoped_refptr<net::URLRequestContextGetter> url_request_context_getter, mojom::NetworkServiceClient* network_service_client, + DeleteCallback delete_callback, mojom::URLLoaderRequest url_loader_request, int32_t options, const ResourceRequest& request, @@ -80,13 +84,8 @@ void OnResponseStarted(net::URLRequest* url_request, int net_error) override; void OnReadCompleted(net::URLRequest* url_request, int bytes_read) override; - // net::URLRequestContextGetterObserver implementation: - void OnContextShuttingDown() override; net::LoadState GetLoadStateForTesting() const; - // Returns a WeakPtr so tests can validate that the object was destroyed. - base::WeakPtr<URLLoader> GetWeakPtrForTests(); - private: void ReadMore(); void DidRead(int num_bytes, bool completed_synchronously); @@ -116,6 +115,8 @@ scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_; mojom::NetworkServiceClient* network_service_client_; + DeleteCallback delete_callback_; + int32_t options_; int resource_type_; bool is_load_timing_enabled_;
diff --git a/services/network/url_loader_factory.cc b/services/network/url_loader_factory.cc index 8678c773..272464b7 100644 --- a/services/network/url_loader_factory.cc +++ b/services/network/url_loader_factory.cc
@@ -20,12 +20,17 @@ URLLoaderFactory::URLLoaderFactory( NetworkContext* context, uint32_t process_id, - scoped_refptr<ResourceSchedulerClient> resource_scheduler_client) + scoped_refptr<ResourceSchedulerClient> resource_scheduler_client, + mojom::URLLoaderFactoryRequest request) : context_(context), process_id_(process_id), resource_scheduler_client_(std::move(resource_scheduler_client)) { + binding_set_.AddBinding(this, std::move(request)); + binding_set_.set_connection_error_handler(base::BindRepeating( + &URLLoaderFactory::DeleteIfNeeded, base::Unretained(this))); + if (context_->network_service()) { - context->network_service()->keepalive_statistics_recorder()->Register( + context_->network_service()->keepalive_statistics_recorder()->Register( process_id_); } } @@ -97,18 +102,32 @@ } } - new URLLoader( + url_loaders_.insert(std::make_unique<URLLoader>( context_->url_request_context_getter(), network_service_client, + base::BindOnce(&URLLoaderFactory::DestroyURLLoader, + base::Unretained(this)), std::move(request), options, url_request, report_raw_headers, std::move(client), static_cast<net::NetworkTrafficAnnotationTag>(traffic_annotation), process_id_, request_id, resource_scheduler_client_, - std::move(keepalive_statistics_recorder)); + std::move(keepalive_statistics_recorder))); } void URLLoaderFactory::Clone(mojom::URLLoaderFactoryRequest request) { - context_->CreateURLLoaderFactory(std::move(request), process_id_, - resource_scheduler_client_); + binding_set_.AddBinding(this, std::move(request)); +} + +void URLLoaderFactory::DestroyURLLoader(URLLoader* url_loader) { + auto it = url_loaders_.find(url_loader); + DCHECK(it != url_loaders_.end()); + url_loaders_.erase(it); + DeleteIfNeeded(); +} + +void URLLoaderFactory::DeleteIfNeeded() { + if (!binding_set_.empty() || !url_loaders_.empty()) + return; + context_->DestroyURLLoaderFactory(this); } } // namespace network
diff --git a/services/network/url_loader_factory.h b/services/network/url_loader_factory.h index 8cf505a..9def878c 100644 --- a/services/network/url_loader_factory.h +++ b/services/network/url_loader_factory.h
@@ -5,8 +5,10 @@ #ifndef SERVICES_NETWORK_URL_LOADER_FACTORY_H_ #define SERVICES_NETWORK_URL_LOADER_FACTORY_H_ +#include "base/containers/unique_ptr_adapters.h" #include "base/macros.h" #include "base/memory/ref_counted.h" +#include "mojo/public/cpp/bindings/binding_set.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "services/network/public/mojom/url_loader_factory.mojom.h" @@ -14,6 +16,7 @@ class NetworkContext; class ResourceSchedulerClient; +class URLLoader; // This class is an implementation of mojom::URLLoaderFactory that // creates a mojom::URLLoader. @@ -24,13 +27,19 @@ // works on each frame. // A URLLoaderFactory can be created with null ResourceSchedulerClient, in which // case requests constructed by the factory will not be throttled. +// +// URLLoaderFactories own all the URLLoaders they were used to create. Once +// there are no live Mojo pipes to a URLLoaderFactory, and all URLLoaders it was +// used to created have been destroyed, it will tell the NetworkContext that +// owns it to destroy it. class URLLoaderFactory : public mojom::URLLoaderFactory { public: // NOTE: |context| must outlive this instance. URLLoaderFactory( NetworkContext* context, uint32_t process_id, - scoped_refptr<ResourceSchedulerClient> resource_scheduler_client); + scoped_refptr<ResourceSchedulerClient> resource_scheduler_client, + mojom::URLLoaderFactoryRequest request); ~URLLoaderFactory() override; @@ -45,16 +54,25 @@ traffic_annotation) override; void Clone(mojom::URLLoaderFactoryRequest request) override; + void DestroyURLLoader(URLLoader* url_loader); + static constexpr int kMaxKeepaliveConnections = 256; static constexpr int kMaxKeepaliveConnectionsPerProcess = 20; static constexpr int kMaxKeepaliveConnectionsPerProcessForFetchAPI = 10; private: - // Not owned. - NetworkContext* context_; + // If |binding_set_| and |url_loaders_| are both empty, tells the + // NetworkContext to destroy |this|. + void DeleteIfNeeded(); + + // The NetworkContext that owns |this|. + NetworkContext* const context_; uint32_t process_id_; scoped_refptr<ResourceSchedulerClient> resource_scheduler_client_; + mojo::BindingSet<mojom::URLLoaderFactory> binding_set_; + std::set<std::unique_ptr<URLLoader>, base::UniquePtrComparator> url_loaders_; + DISALLOW_COPY_AND_ASSIGN(URLLoaderFactory); };
diff --git a/services/network/url_loader_unittest.cc b/services/network/url_loader_unittest.cc index 8206c51..9aebca5 100644 --- a/services/network/url_loader_unittest.cc +++ b/services/network/url_loader_unittest.cc
@@ -58,6 +58,16 @@ namespace { +URLLoader::DeleteCallback WaitForDeleteCallback(base::RunLoop* run_loop) { + return base::BindOnce([](base::RunLoop* run_loop, + URLLoader* /* url_loader*/) { run_loop->Quit(); }, + run_loop); +} + +URLLoader::DeleteCallback DoNothingOnDeleteCallback() { + return base::BindOnce([](URLLoader* /* url_loader*/) {}); +} + constexpr char kBodyReadFromNetBeforePausedHistogram[] = "Network.URLLoader.BodyReadFromNetBeforePaused"; @@ -259,8 +269,9 @@ if (request_body_) request.request_body = request_body_; - URLLoader loader_impl(context(), nullptr, mojo::MakeRequest(&loader), - options, request, false, client_.CreateInterfacePtr(), + URLLoader loader_impl(context(), nullptr, DoNothingOnDeleteCallback(), + mojo::MakeRequest(&loader), options, request, false, + client_.CreateInterfacePtr(), TRAFFIC_ANNOTATION_FOR_TESTS, 0 /* process_id */, 0 /* request_id */, resource_scheduler_client(), nullptr); @@ -618,37 +629,6 @@ EXPECT_EQ(kBody, body); } -TEST_F(URLLoaderTest, DestroyContextWithLiveRequest) { - GURL url = test_server()->GetURL("/hung-after-headers"); - ResourceRequest request = CreateResourceRequest("GET", url); - - mojom::URLLoaderPtr loader; - // The loader is implicitly owned by the client and the NetworkContext, so - // don't hold on to a pointer to it. - base::WeakPtr<URLLoader> loader_impl = - (new URLLoader(context(), nullptr, mojo::MakeRequest(&loader), 0, request, - false, client()->CreateInterfacePtr(), - TRAFFIC_ANNOTATION_FOR_TESTS, 0 /* process_id */, - 0 /* request_id */, resource_scheduler_client(), nullptr)) - ->GetWeakPtrForTests(); - - client()->RunUntilResponseReceived(); - EXPECT_TRUE(client()->has_received_response()); - EXPECT_FALSE(client()->has_received_completion()); - - // Request hasn't completed, so the loader should not have been destroyed. - EXPECT_TRUE(loader_impl); - - // Destroying the context should result in destroying the loader and the - // client receiving a connection error. - DestroyContext(); - EXPECT_FALSE(loader_impl); - - client()->RunUntilConnectionError(); - EXPECT_FALSE(client()->has_received_completion()); - EXPECT_EQ(0u, client()->download_data_length()); -} - TEST_F(URLLoaderTest, DoNotSniffUnlessSpecified) { EXPECT_EQ(net::OK, Load(test_server()->GetURL("/content-sniffer-test0.html"))); @@ -782,12 +762,14 @@ ResourceRequest request = CreateResourceRequest("GET", server.GetURL("/hello.html")); + base::RunLoop delete_run_loop; mojom::URLLoaderPtr loader; - // The loader is implicitly owned by the client and the NetworkContext. - new URLLoader(context(), nullptr, mojo::MakeRequest(&loader), 0, request, - false, client()->CreateInterfacePtr(), - TRAFFIC_ANNOTATION_FOR_TESTS, 0 /* process_id */, - 0 /* request_id */, resource_scheduler_client(), nullptr); + std::unique_ptr<URLLoader> url_loader = std::make_unique<URLLoader>( + context(), nullptr, WaitForDeleteCallback(&delete_run_loop), + mojo::MakeRequest(&loader), 0, request, false, + client()->CreateInterfacePtr(), TRAFFIC_ANNOTATION_FOR_TESTS, + 0 /* process_id */, 0 /* request_id */, resource_scheduler_client(), + nullptr); client()->RunUntilResponseBodyArrived(); EXPECT_TRUE(client()->has_received_response()); @@ -806,6 +788,11 @@ response_body.reset(); loader.reset(); + // Spin the message loop until the delete callback is invoked, and then delete + // the URLLoader. + delete_run_loop.Run(); + url_loader.reset(); + // The client is disconnected only when the other side observes that both the // URLLoaderPtr and the response body pipe are disconnected. client()->RunUntilConnectionError(); @@ -813,7 +800,7 @@ EXPECT_FALSE(client()->has_received_completion()); } -TEST_F(URLLoaderTest, PauseReadingBodyFromNetBeforeRespnoseHeaders) { +TEST_F(URLLoaderTest, PauseReadingBodyFromNetBeforeResponseHeaders) { const char* const kPath = "/hello.html"; const char* const kBodyContents = "This is the data as you requested."; @@ -830,11 +817,12 @@ ResourceRequest request = CreateResourceRequest("GET", server.GetURL(kPath)); mojom::URLLoaderPtr loader; - // The loader is implicitly owned by the client and the NetworkContext. - new URLLoader(context(), nullptr, mojo::MakeRequest(&loader), 0, request, - false, client()->CreateInterfacePtr(), - TRAFFIC_ANNOTATION_FOR_TESTS, 0 /* process_id */, - 0 /* request_id */, resource_scheduler_client(), nullptr); + URLLoader url_loader(context(), nullptr, DoNothingOnDeleteCallback(), + mojo::MakeRequest(&loader), 0, request, false, + client()->CreateInterfacePtr(), + TRAFFIC_ANNOTATION_FOR_TESTS, 0 /* process_id */, + 0 /* request_id */, resource_scheduler_client(), + nullptr); // Pausing reading response body from network stops future reads from the // underlying URLRequest. So no data should be sent using the response body @@ -899,11 +887,12 @@ ResourceRequest request = CreateResourceRequest("GET", server.GetURL(kPath)); mojom::URLLoaderPtr loader; - // The loader is implicitly owned by the client and the NetworkContext. - new URLLoader(context(), nullptr, mojo::MakeRequest(&loader), 0, request, - false, client()->CreateInterfacePtr(), - TRAFFIC_ANNOTATION_FOR_TESTS, 0 /* process_id */, - 0 /* request_id */, resource_scheduler_client(), nullptr); + URLLoader url_loader(context(), nullptr, DoNothingOnDeleteCallback(), + mojo::MakeRequest(&loader), 0, request, false, + client()->CreateInterfacePtr(), + TRAFFIC_ANNOTATION_FOR_TESTS, 0 /* process_id */, + 0 /* request_id */, resource_scheduler_client(), + nullptr); response_controller.WaitForRequest(); response_controller.Send( @@ -957,11 +946,12 @@ ResourceRequest request = CreateResourceRequest("GET", server.GetURL(kPath)); mojom::URLLoaderPtr loader; - // The loader is implicitly owned by the client and the NetworkContext. - new URLLoader(context(), nullptr, mojo::MakeRequest(&loader), 0, request, - false, client()->CreateInterfacePtr(), - TRAFFIC_ANNOTATION_FOR_TESTS, 0 /* process_id */, - 0 /* request_id */, resource_scheduler_client(), nullptr); + URLLoader url_loader(context(), nullptr, DoNothingOnDeleteCallback(), + mojo::MakeRequest(&loader), 0, request, false, + client()->CreateInterfacePtr(), + TRAFFIC_ANNOTATION_FOR_TESTS, 0 /* process_id */, + 0 /* request_id */, resource_scheduler_client(), + nullptr); loader->PauseReadingBodyFromNet(); loader.FlushForTesting(); @@ -1009,11 +999,12 @@ ResourceRequest request = CreateResourceRequest("GET", server.GetURL(kPath)); mojom::URLLoaderPtr loader; - // The loader is implicitly owned by the client and the NetworkContext. - new URLLoader(context(), nullptr, mojo::MakeRequest(&loader), 0, request, - false, client()->CreateInterfacePtr(), - TRAFFIC_ANNOTATION_FOR_TESTS, 0 /* process_id */, - 0 /* request_id */, resource_scheduler_client(), nullptr); + URLLoader url_loader(context(), nullptr, DoNothingOnDeleteCallback(), + mojo::MakeRequest(&loader), 0, request, false, + client()->CreateInterfacePtr(), + TRAFFIC_ANNOTATION_FOR_TESTS, 0 /* process_id */, + 0 /* request_id */, resource_scheduler_client(), + nullptr); // It is okay to call ResumeReadingBodyFromNet() even if there is no prior // PauseReadingBodyFromNet(). @@ -1264,13 +1255,13 @@ data_pipe_getter.GetDataPipeGetterPtr()); mojom::URLLoaderPtr loader; - // The loader is implicitly owned by the client and the NetworkContext. - new URLLoader(context(), nullptr /* network_service_client */, - mojo::MakeRequest(&loader), 0, request, - false /* report_raw_headers */, client()->CreateInterfacePtr(), - TRAFFIC_ANNOTATION_FOR_TESTS, 0 /* process_id */, - 0 /* request_id */, nullptr /* resource_scheduler_client */, - nullptr /* keepalive_statistics_reporter */); + URLLoader url_loader( + context(), nullptr /* network_service_client */, + DoNothingOnDeleteCallback(), mojo::MakeRequest(&loader), 0, request, + false /* report_raw_headers */, client()->CreateInterfacePtr(), + TRAFFIC_ANNOTATION_FOR_TESTS, 0 /* process_id */, 0 /* request_id */, + nullptr /* resource_scheduler_client */, + nullptr /* keepalive_statistics_reporter */); mojom::ChunkedDataPipeGetter::GetSizeCallback get_size_callback = data_pipe_getter.WaitForGetSize(); @@ -1397,19 +1388,20 @@ request.priority = net::IDLE; // Fill up the ResourceScheduler with delayable requests. - std::vector<std::pair<base::WeakPtr<URLLoader>, mojom::URLLoaderPtr>> loaders; + std::vector<std::pair<std::unique_ptr<URLLoader>, mojom::URLLoaderPtr>> + loaders; for (int i = 0; i < kRepeat; ++i) { TestURLLoaderClient client; mojom::URLLoaderPtr loaderInterfacePtr; - // The loader is implicitly owned by the client and the NetworkContext. - auto* loader = new URLLoader( - context(), nullptr, mojo::MakeRequest(&loaderInterfacePtr), 0, request, - false, client.CreateInterfacePtr(), TRAFFIC_ANNOTATION_FOR_TESTS, - kProcessId, 0 /* request_id */, resource_scheduler_client(), nullptr); + std::unique_ptr<URLLoader> url_loader = std::make_unique<URLLoader>( + context(), nullptr, DoNothingOnDeleteCallback(), + mojo::MakeRequest(&loaderInterfacePtr), 0, request, false, + client.CreateInterfacePtr(), TRAFFIC_ANNOTATION_FOR_TESTS, kProcessId, + 0 /* request_id */, resource_scheduler_client(), nullptr); - loaders.push_back(std::make_pair(loader->GetWeakPtrForTests(), - std::move(loaderInterfacePtr))); + loaders.emplace_back( + std::make_pair(std::move(url_loader), std::move(loaderInterfacePtr))); } base::RunLoop().RunUntilIdle(); @@ -1420,16 +1412,14 @@ loader->GetLoadStateForTesting()); } - mojom::URLLoaderPtr loaderInterfacePtr; - base::WeakPtr<URLLoader> loader = - (new URLLoader(context(), nullptr, mojo::MakeRequest(&loaderInterfacePtr), - 0, request, false, client()->CreateInterfacePtr(), - TRAFFIC_ANNOTATION_FOR_TESTS, kProcessId, - 0 /* request_id */, resource_scheduler_client(), nullptr)) - ->GetWeakPtrForTests(); + mojom::URLLoaderPtr loader_interface_ptr; + std::unique_ptr<URLLoader> loader = std::make_unique<URLLoader>( + context(), nullptr, DoNothingOnDeleteCallback(), + mojo::MakeRequest(&loader_interface_ptr), 0, request, false, + client()->CreateInterfacePtr(), TRAFFIC_ANNOTATION_FOR_TESTS, kProcessId, + 0 /* request_id */, resource_scheduler_client(), nullptr); base::RunLoop().RunUntilIdle(); - ASSERT_NE(loader, nullptr); // Make sure that the ResourceScheduler throttles this request. EXPECT_EQ(net::LOAD_STATE_WAITING_FOR_DELEGATE, loader->GetLoadStateForTesting()); @@ -1437,7 +1427,6 @@ loader->SetPriority(net::HIGHEST, 0 /* intra_priority_value */); base::RunLoop().RunUntilIdle(); - ASSERT_NE(loader, nullptr); // Make sure that the ResourceScheduler stops throtting. EXPECT_EQ(net::LOAD_STATE_WAITING_FOR_AVAILABLE_SOCKET, loader->GetLoadStateForTesting());
diff --git a/services/service_manager/sandbox/BUILD.gn b/services/service_manager/sandbox/BUILD.gn index b50f3fa..efed0e2 100644 --- a/services/service_manager/sandbox/BUILD.gn +++ b/services/service_manager/sandbox/BUILD.gn
@@ -24,7 +24,7 @@ "//services/service_manager/embedder:embedder_switches", ] deps = [ - ":sanitizer_flags", + ":sanitizer_buildflags", "//base", ] if (is_linux) { @@ -59,7 +59,7 @@ "linux/sandbox_seccomp_bpf_linux.h", ] deps += [ - "//sandbox:sandbox_features", + "//sandbox:sandbox_buildflags", "//sandbox/linux:sandbox_services", "//sandbox/linux:seccomp_bpf", "//sandbox/linux:suid_sandbox_client", @@ -91,7 +91,7 @@ } } -buildflag_header("sanitizer_flags") { - header = "sanitizer_flags.h" +buildflag_header("sanitizer_buildflags") { + header = "sanitizer_buildflags.h" flags = [ "USING_SANITIZER=$using_sanitizer" ] }
diff --git a/services/service_manager/sandbox/linux/sandbox_linux.cc b/services/service_manager/sandbox/linux/sandbox_linux.cc index 76476b21..8ab6e5b8 100644 --- a/services/service_manager/sandbox/linux/sandbox_linux.cc +++ b/services/service_manager/sandbox/linux/sandbox_linux.cc
@@ -42,7 +42,7 @@ #include "sandbox/linux/suid/client/setuid_sandbox_client.h" #include "sandbox/linux/syscall_broker/broker_command.h" #include "sandbox/linux/syscall_broker/broker_process.h" -#include "sandbox/sandbox_features.h" +#include "sandbox/sandbox_buildflags.h" #include "services/service_manager/sandbox/linux/bpf_broker_policy_linux.h" #include "services/service_manager/sandbox/linux/sandbox_seccomp_bpf_linux.h" #include "services/service_manager/sandbox/sandbox.h"
diff --git a/services/service_manager/sandbox/linux/sandbox_linux.h b/services/service_manager/sandbox/linux/sandbox_linux.h index def5720..c84281a 100644 --- a/services/service_manager/sandbox/linux/sandbox_linux.h +++ b/services/service_manager/sandbox/linux/sandbox_linux.h
@@ -17,7 +17,7 @@ #include "services/service_manager/sandbox/export.h" #include "services/service_manager/sandbox/linux/sandbox_seccomp_bpf_linux.h" #include "services/service_manager/sandbox/sandbox_type.h" -#include "services/service_manager/sandbox/sanitizer_flags.h" +#include "services/service_manager/sandbox/sanitizer_buildflags.h" #if BUILDFLAG(USING_SANITIZER) #include <sanitizer/common_interface_defs.h>
diff --git a/services/service_manager/sandbox/linux/sandbox_seccomp_bpf_linux.cc b/services/service_manager/sandbox/linux/sandbox_seccomp_bpf_linux.cc index 99b9184..4b0dd58b 100644 --- a/services/service_manager/sandbox/linux/sandbox_seccomp_bpf_linux.cc +++ b/services/service_manager/sandbox/linux/sandbox_seccomp_bpf_linux.cc
@@ -18,7 +18,7 @@ #include "build/build_config.h" #include "sandbox/linux/bpf_dsl/bpf_dsl.h" #include "sandbox/linux/bpf_dsl/trap_registry.h" -#include "sandbox/sandbox_features.h" +#include "sandbox/sandbox_buildflags.h" #include "services/service_manager/sandbox/sandbox_type.h" #include "services/service_manager/sandbox/switches.h"
diff --git a/skia/config/SkUserConfig.h b/skia/config/SkUserConfig.h index c9c67a57..46f6220 100644 --- a/skia/config/SkUserConfig.h +++ b/skia/config/SkUserConfig.h
@@ -221,10 +221,6 @@ #define GR_AA_TESSELLATOR_MAX_VERB_COUNT 10 -#ifndef SK_SUPPORT_LEGACY_AA_CHOICE -#define SK_SUPPORT_LEGACY_AA_CHOICE -#endif - ///////////////////////// Imported from BUILD.gn and skia_common.gypi /* In some places Skia can use static initializers for global initialization,
diff --git a/storage/browser/blob/blob_builder_from_stream.cc b/storage/browser/blob/blob_builder_from_stream.cc index 2e7841b..bedfd19 100644 --- a/storage/browser/blob/blob_builder_from_stream.cc +++ b/storage/browser/blob/blob_builder_from_stream.cc
@@ -617,7 +617,6 @@ } void BlobBuilderFromStream::OnError(Result result) { - RecordResult(result); if (pending_quota_task_) pending_quota_task_->Cancel(); @@ -626,6 +625,7 @@ if (!callback_) return; + RecordResult(result); std::move(callback_).Run(this, nullptr); }
diff --git a/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter b/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter index f2e7044..603e3f49 100644 --- a/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter +++ b/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter
@@ -175,7 +175,6 @@ # http://crbug.com/721414 # TODO(rockot): add support for webRequest API. -ExtensionWebRequestApiTest.WebRequestBlocking --ExtensionWebRequestApiTest.WebRequestClientsGoogleComProtection -ExtensionWebRequestApiTest.WebRequestDeclarative2 -ExtensionWebRequestApiTest.WebRequestDiceHeaderProtection -ExtensionWebRequestApiTest.WebRequestTypes
diff --git a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG index d30fe9c..c4a75d0e 100644 --- a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG +++ b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG
@@ -2277,6 +2277,7 @@ crbug.com/591099 virtual/incremental-shadow-dom/html/details_summary/details-writing-mode.html [ Failure ] crbug.com/714962 virtual/incremental-shadow-dom/shadow-dom/focus-navigation-with-delegatesFocus.html [ Timeout ] crbug.com/591099 virtual/layout_ng/ [ Skip ] +crbug.com/824918 virtual/layout_ng_experimental/ [ Skip ] crbug.com/714962 virtual/mouseevent_fractional/fast/events/drag-in-frames.html [ Failure ] crbug.com/714962 virtual/mouseevent_fractional/fast/events/event-on-culled_inline.html [ Failure ] crbug.com/591099 virtual/mouseevent_fractional/fast/events/keyboardevent-getModifierState.html [ Timeout ]
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations index 200719f..8634d2e 100644 --- a/third_party/WebKit/LayoutTests/TestExpectations +++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -520,6 +520,649 @@ crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-relative-034.xht [ Skip ] crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-relative-036.xht [ Skip ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-basic-001.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-basic-002.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-basic-003.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-basic-004.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-basic-007.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-basic-008.xht [ Failure ] +crbug.com/776051 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-block-no-clip-001.xht [ Failure ] +crbug.com/776051 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-block-no-clip-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-br-inside-avoidcolumn-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-breaking-000.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-breaking-001.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-breaking-002.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-breaking-003.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-breaking-nobackground-000.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-breaking-nobackground-001.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-breaking-nobackground-002.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-breaking-nobackground-003.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-clip-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-clip-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-collapsing-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-columns-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-columns-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-columns-003.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-columns-004.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-columns-005.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-columns-006.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-columns-007.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-columns-invalid-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-columns-invalid-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-columns-toolong-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-containing-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-containing-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-count-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-count-002.xht [ Failure ] +crbug.com/776051 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-count-computed-003.xht [ Failure ] +crbug.com/776051 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-count-computed-005.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-count-negative-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-count-negative-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-count-non-integer-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-count-non-integer-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-count-non-integer-003.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-fill-000.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-fill-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-fill-auto-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-fill-auto-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-fill-auto-003.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-fill-auto-block-children-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-fill-auto-block-children-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-fill-balance-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-gap-000.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-gap-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-gap-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-gap-003.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-gap-fraction-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-gap-fraction-002.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-gap-large-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-gap-large-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-gap-negative-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-height-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-height-block-child-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-inherit-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-inherit-003.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-list-item-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-margin-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-nested-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-nested-005.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-nested-margin-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-nested-margin-003.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-nested-margin-004.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-nested-margin-005.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-overflow-000.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-overflowing-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-reduce-000.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-000.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-003.xht [ Failure ] +crbug.com/792435 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-004.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-color-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-color-inherit-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-color-inherit-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-dashed-000.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-dotted-000.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-double-000.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-fraction-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-fraction-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-fraction-003.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-groove-000.xht [ Failure ] +crbug.com/792437 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-inset-000.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-large-001.xht [ Failure ] +crbug.com/792437 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-outset-000.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-percent-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-px-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-ridge-000.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-samelength-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-shorthand-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-shorthand-2.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-solid-000.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-stacking-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-style-groove-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-rule-style-ridge-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-shorthand-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-span-000.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-span-all-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-span-all-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-span-all-003.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-span-all-block-sibling-003.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-span-all-child-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-span-all-margin-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-span-all-margin-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-span-all-margin-bottom-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-span-all-margin-nested-001.xht [ Failure ] +crbug.com/636055 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-span-all-margin-nested-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-span-all-margin-nested-003.xht [ Crash ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-span-all-margin-nested-firstchild-001.xht [ Failure ] +crbug.com/792446 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-span-float-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-span-none-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-table-cell-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-table-cell-height-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-table-cell-height-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-table-cell-vertical-align-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-width-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-width-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-width-003.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-width-ch-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-width-count-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-width-count-002.xht [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-width-large-001.xht [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-width-large-002.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/external/wpt/css/css-multicol/multicol-width-small-001.xht [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/abspos-after-break-after.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/abspos-new-width-rebalance.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/balance-float-after-forced-break.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/balance-float-in-inline.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/balance-float-with-margin-top-and-line-after-break-2.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/balance-float-with-margin-top-and-line-after-break-3.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/balance-float-with-margin-top-and-line-after-break.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/balance-float-with-margin-top-and-line-before-break.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/balance-floats.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/balance-line-overflow.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/balance-line-underflow-2.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/balance-repeating-table-headers.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/balance-table-with-border-spacing.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/basic-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/break-before-first-line-in-first-child.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/break-in-scrollable.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/caret-range-anonymous-block-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/caret-range-anonymous-block.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/caret-range-outside-columns-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/caret-range-outside-columns.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/change-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/client-rect-after-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/client-rect-nested.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/client-rects-crossing-boundaries-nested.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/client-rects-crossing-boundaries.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/client-rects-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/client-rects.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/column-count-with-rules.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/column-rules.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/columns-shorthand-parsing.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/content-change-same-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/composited-inner-multicol.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/composited-opacity-2nd-and-3rd-column.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/composited-relpos-clipped.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/composited-relpos-in-clipped.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/composited-relpos-overlapping-will-change.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/composited-relpos-resize.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/composited-relpos.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/composited-with-child-layer-in-next-column.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/composited-with-overflow-in-next-column.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/doubly-nested-with-top-padding-crossing-row-boundaries.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/abspos-becomes-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/abspos-multicol-with-spanner-becomes-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/block-becomes-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/change-second-row-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/change-spanner-display.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/change-spanner-parent-display.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/float-becomes-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-block-among-text-in-anonymous-wrapper.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-block-before-spanner-before-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-block-before-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-block-between-spanners.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-block-into-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-block-into-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-float-after-content-in-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-float-before-content-in-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-spanner-after-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-spanner-after-spanner-before-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-spanner-before-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-spanner-between-out-of-flow.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-spanner-into-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-spanner-into-stf-constrained-width.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-spanner-into-stf-unconstrained-width.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-spanner-pseudo-after-then-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-spanner-pseudo-after.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-spanner-pseudo-before-after-in-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-spanner-pseudo-before-after.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-spanner-pseudo-before-following-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/insert-spanner-pseudo-before.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/invalid-spanner-container-becomes-valid.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/relpos-becomes-static-has-abspos.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-abspos-next-to-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-and-insert-block-after-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-and-insert-block-before-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-and-insert-block-between-spanners.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-block-after-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-block-before-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-block-between-spanners.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-block-from-content-after-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-block-from-content-before-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-block-from-content-between-spanners.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-column-content-next-to-abspos-between-spanners.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-spanner-after-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-spanner-before-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-spanner-in-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/spanner-after-content-becomes-regular-block.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/spanner-ancestor-becomes-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/spanner-becomes-regular-block.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/spanner-before-content-becomes-regular-block.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/spanner-in-content-becomes-regular-block.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/static-becomes-relpos-has-abspos.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/event-offset-complex-tree.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/event-offset-in-nested.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/event-offset.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/first-line-in-float-below-next-column-top.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/first-line-in-float-with-margin.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/fixedpos-child-becomes-static.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/flexbox-starts-at-column-boundary-with-block.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/flexbox-starts-at-column-boundary.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/flexbox-with-overflow-auto-child-crash.html [ Crash ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/flexbox.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/flipped-blocks-border-after.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/flipped-blocks-hit-test.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/float-after-break-after.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/float-avoidance.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/float-big-line.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/float-break.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/float-content-break.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/float-edge.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/float-margin-at-row-boundary-fixed-multicol-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/float-margin-at-row-boundary.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/float-moved-by-child-line-and-unbreakable.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/float-paginate-empty-lines.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/float-paginate.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/float-truncation.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/float-with-margin-moved-by-child-block-and-unbreakable.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/float-with-margin-moved-by-child-block.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/float-with-margin-moved-by-child-line-and-unbreakable.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/float-with-margin-moved-by-child-line.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/float-with-margin-moved-unbreakable.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/forced-break-after-block-with-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/forced-break-after-empty-block-after-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/forced-break-after-last-block-before-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/forced-break-in-nested-columns.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/forced-break-too-short-column.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/hit-test-above-or-below.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/hit-test-end-of-column-with-line-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/hit-test-end-of-column.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/hit-test-gap-between-pages-flipped.html [ Failure ] +crbug.com/812457 virtual/layout_ng_experimental/fast/multicol/huge-column-count.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/huge-column-gap-crash.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/image-inside-nested-blocks-with-border.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/inline-block-baseline.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/inline-getclientrects.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/inner-multicol-in-second-column.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/input-type-number.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/input-with-overflow-second-column.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/insane-column-gap.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/layers-in-multicol.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/layers-split-across-columns.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/line-in-next-row-in-fourth-inner-multicol.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/line-pushed-down-by-float.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/line-too-tall-for-second-outer-row.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/many-lines-overflow-in-single-row-inner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/mixed-opacity-test.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/mixed-positioning-stacking-order.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/multicol-becomes-abspos-crash.html [ Failure ] +crbug.com/626703 virtual/layout_ng_experimental/fast/multicol/multicol-becomes-paged-auto-height.html [ Crash ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/multicol-svg.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/multicol-with-child-renderLayer-for-input.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-3-multicols-fixed-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-auto-height-extra-block-inbetween.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-auto-height-short-first-row.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-auto-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-balanced-inner-column-count-1-with-forced-break.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-balanced-inner-with-many-breaks-2.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-balanced-inner-with-many-breaks.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-balanced-with-strut-before-first-line.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-balancing-with-line-at-exact-top.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-balancing-with-lines-and-space-left-in-previous-row.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-columns.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-fixed-height-with-struts.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-one-line-in-inner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-outer-fixed-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-short-first-row-extra-tall-line.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-short-first-row-unsplittable-block.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-uneven-inner-column-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-with-clipped-first-column.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-with-forced-breaks-in-eariler-rows.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-with-padding.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-with-single-empty-block.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-with-single-tall-line.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/nested-with-tall-block.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/newmulticol/avoid-column-break-inside.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/newmulticol/balance-images.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/newmulticol/balance-maxheight1.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/newmulticol/balance1.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/newmulticol/balance10.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/newmulticol/balance2.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/newmulticol/balance3.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/newmulticol/balance4.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/newmulticol/balance5.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/newmulticol/break-before.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/newmulticol/breaks-2-columns-3-no-balancing.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/newmulticol/breaks-3-columns-3.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/newmulticol/fixed-height-fill-balance-2.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/newmulticol/hide-box-vertical-lr.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/newmulticol/hide-box-vertical-rl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/newmulticol/list-item.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/newmulticol/orphans-and-widows-balance.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/newmulticol/table-cell.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/out-of-flow/abspos-auto-position-on-line-at-boundary.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/out-of-flow/abspos-auto-position-on-line-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/out-of-flow/abspos-auto-position-on-line.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/out-of-flow/abspos-auto-position-small-on-line-at-boundary.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/out-of-flow/abspos-auto-position.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/out-of-flow/nested-multicol.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/outlines-at-column-boundaries.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/overflow-across-columns.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/overflow-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/overflow-unsplittable.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/pageLogicalOffset-vertical.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/paginate-block-replaced.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/positioned-outside-of-columns.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/positioned-split.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/positioned-with-constrained-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/pushed-line-affected-by-float.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/relayout-and-push-float.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/renderer-positioned-assert-crash.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/rule-in-nested-with-too-tall-line.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/scale-transform-text.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/scrolling-overflow.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/shadow-breaking.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/single-line.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/abspos-containing-block-outside-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/adjacent-spanners-with-margin.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/adjacent-spanners.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/after-row-with-uneven-height-nested-multicol.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/as-inner-multicol.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/autofill-after-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/balance-after-spanner-exact-fit.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/balance-after-spanner-extra-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/balance-after-spanner-some-extra-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/balance-before-and-after-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/balance-before-spanner-extra-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/becomes-spanner-with-new-width.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/block-with-top-border-and-margin-around-spanner-exact-fit.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/block-with-top-border-and-margin-around-spanner-extra-space.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/break-in-columns-before-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/change-multicol-writing-mode.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/change-spanner-margins.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/empty-block-between-spanners-with-margins.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/empty-spanner-between-spanners-with-margins.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/fill-after-spanner-exact-fit.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/fill-after-spanner-extra-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/float.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/height-decrease.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/height-increase.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/in-nested-multicol-with-hard-breaks.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/in-nested-multicol-with-soft-breaks-inside.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/inside-block-with-fixed-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/invalid-spanner-in-abspos.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/invalid-spanner-in-transform.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/margin-on-multicol.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/multicol-with-padding.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/nested-multicol.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/offset-properties-empty-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/offset-properties.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/outer-column-break-after-inner-spanner-2.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/outer-column-break-after-inner-spanner-and-float.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/outer-column-break-after-inner-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/outline.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/overflow-on-multicol.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/overflow-on-viewport.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/percent-margins.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/preferred-widths-with-column-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/pseudo-after-then-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/pseudo-after.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/pseudo-before-after-in-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/pseudo-before-after.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/pseudo-before-following-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/pseudo-before.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/relpos-in-block.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/relpos-spanner-with-abspos-child.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/remaining-space-in-last-column.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/simple-margins.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/sole-spanner-inside-div.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/sole-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/span-between-text.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/spanner-first.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/spanner-img.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/spanner-last.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/spanner-table.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/spanner-with-margin.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/spanner-with-margins-between-margins.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/spanner-with-relpos-child.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/summary-split.html [ Failure ] +crbug.com/824918 virtual/layout_ng_experimental/fast/multicol/span/trailing-margin-around-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/trailing-margin-before-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/two-rows-then-spanner-then-two-rows.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/underflow-after-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/vertical-lr.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/vertical-rl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/span/with-border.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/static-child-becomes-fixedpos.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/svg-change-column-crash.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/table-caption-and-cells-fixed-width.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/table-caption-and-cells.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/table-caption-with-block.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/table-cell-content-change-with-decorations.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/table-cell-content-change.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/table-margin-collapse.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/tall-content-in-inner-with-fixed-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/tall-float2.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/three-inner-rows.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/unbreakable-content-taller-than-height-crash.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/abspos-auto-position-on-line.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/break-properties.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/caret-range-anonymous-block-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/caret-range-anonymous-block.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/caret-range-outside-columns-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/caret-range-outside-columns.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/client-rect-after-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/client-rects-crossing-boundaries-nested.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/column-break-with-balancing.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/column-count-with-rules.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/column-rules.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/float-avoidance.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/float-big-line.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/float-break.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/float-content-break.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/float-edge.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/float-paginate.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/vertical-lr/float-truncation.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/image-inside-nested-blocks-with-border.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/nested-columns.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/offset-top-and-left-at-boundaries-nested.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/offset-top-and-left-at-boundaries.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/offset-top-and-left-nested.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-lr/unsplittable-inline-block.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/abspos-auto-position-on-line.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/break-properties.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/caret-range-anonymous-block-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/caret-range-anonymous-block.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/caret-range-outside-columns-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/caret-range-outside-columns.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/client-rect-after-spanner.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/client-rects-crossing-boundaries-nested.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/column-break-with-balancing.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/column-count-with-rules.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/column-rules.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/float-avoidance.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/float-big-line.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/float-break.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/float-content-break.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/float-edge.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/float-paginate.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/float-truncation.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/image-inside-nested-blocks-with-border.html [ Failure ] +crbug.com/467477 virtual/layout_ng_experimental/fast/multicol/vertical-rl/nested-columns.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/offset-top-and-left-at-boundaries-nested.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/offset-top-and-left-at-boundaries.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/offset-top-and-left-nested.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/vertical-rl/unsplittable-inline-block.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/widows-and-orphans.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/widows.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/auto-height-with-break.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/auto-height.html [ Crash ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/break-in-paged-overflow.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/caret-range-outside-paged-x-rtl-vertical-rl.html [ Failure Crash ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/caret-range-outside-paged-x-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/caret-range-outside-paged-x-vertical-rl.html [ Failure Crash ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/caret-range-outside-paged-x.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/caret-range-outside-paged-y-rtl-vertical-rl.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/pagination/caret-range-outside-paged-y-rtl.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/pagination/caret-range-outside-paged-y.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/div-x-horizontal-tb-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/div-x-vertical-lr-ltr.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/div-x-vertical-lr-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/div-x-vertical-rl-ltr.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/div-x-vertical-rl-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/div-y-horizontal-tb-ltr.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/div-y-horizontal-tb-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/div-y-vertical-lr-ltr.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/div-y-vertical-lr-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/div-y-vertical-rl-ltr.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/div-y-vertical-rl-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/first-letter-inherit-all-crash.html [ Crash ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/modal-dialog-crash.html [ Crash ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/multicol.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/paged-x-column-gap.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fast/pagination/paged-y-to-paged-x.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/repeating-thead-tfoot-paged-x.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/repeating-thead-tfoot-paged-y.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/short-pages-tall-content.html [ Timeout ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/viewport-x-vertical-rl-ltr.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/viewport-x-vertical-rl-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/viewport-y-vertical-rl-ltr.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fast/pagination/viewport-y-vertical-rl-rtl.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/abspos-after-forced-break.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/auto-scrollbar-shrink-to-fit.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/avoid-break-inside-first-child-nested.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/avoid-break-inside-first-child.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/block-after-float-first-child.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/border-spacing-break-before-unbreakable-row.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/break-in-first-table-row-only.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/break-in-second-table-section.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/break-in-tbody-after-caption.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/break-inside-avoid-with-forced-break.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/cells-dont-fit-on-page-paginated.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/change-fragmentainer-height-block-float-2.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/change-fragmentainer-height-block-float.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/change-fragmentainer-height-inline-float.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/change-fragmentainer-height-line-float.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/column-fill-auto-child.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/float-after-forced-break.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/float-margin-top.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/float-pushed-to-next-fragmentainer-by-floats.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/forced-break-clearance-unsplittable-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/fragmented-rowspan-alignment.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/fragmented-rowspan.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/fragmented-table-cell.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/fragmented-table-with-fixed-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/image-block-as-first-child.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/multi-line-cells-paginated.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/multi-line-cells.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/nested-repeating-thead-2.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/nested-repeating-thead-3.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/nested-repeating-thead-4.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/nested-repeating-thead-tfoot-4.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/nested-repeating-thead-tfoot.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/overflow-crossing-boundary.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/relayout-abspos.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/remove-unbreakable-block-in-line-float.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/repeating-thead-exceeds-page-size.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/repeating-thead-multiple-tables-page-border.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/repeating-thead-multiple-tables.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/repeating-thead-no-room-for-content-row-on-first-page.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/repeating-thead-tfoot-different-fragment-height.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-cell-repeating-thead-break-inside-avoid-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-cell-repeating-thead-break-inside-content-first-line.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-cell-repeating-thead-break-inside-content.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-cells-multiple-tables-no-repeating-thead.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-large-cell-with-header.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-in-multiple-table-sections.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-multiple-tables-caption-repeating-thead-tfoot-with-border-spacing-at-top-of-row-2.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-multiple-tables-caption-repeating-thead-tfoot-with-border-spacing-at-top-of-row-3.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-multiple-tables-caption-repeating-thead-tfoot-with-border-spacing-at-top-of-row-4.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-multiple-tables-caption-repeating-thead-tfoot-with-border-spacing-at-top-of-row.html [ Failure ] +crbug.com/714962 virtual/layout_ng_experimental/fragmentation/single-line-cells-multiple-tables-repeating-thead-with-border-spacing-at-top-of-row.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-nested-repeating-thead-2.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-nested-repeating-thead-3.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-nested-repeating-thead-4.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-nested-repeating-thead-nested-repeating-tfoot.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-nested-repeating-thead-tfoot-2.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-nested-repeating-thead-tfoot-3.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-nested-repeating-thead-tfoot-4.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-nested-repeating-thead-tfoot.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-nested-repeating-thead.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-paginated-with-text.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-paginated.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-tfoot-rows-allowing-break.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead-cell-straddles-page-unsplittable-div.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead-cell-straddles-page.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead-starts-middle-of-page-break-after-avoid-2.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead-starts-middle-of-page-break-after-avoid-3.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead-starts-middle-of-page-break-after-avoid.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead-starts-middle-of-page.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead-tfoot-starts-middle-of-page-break-after-avoid-2.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead-tfoot-starts-middle-of-page-break-after-avoid-3.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead-tfoot-starts-middle-of-page-break-after-avoid.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead-tfoot-starts-middle-of-page.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead-tfoot-with-border-spacing-at-top-of-row.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead-tfoot-with-caption.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead-tfoot-with-two-captions.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead-tfoot.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead-with-border-spacing-at-top-of-row.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead-with-caption.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead-with-two-captions.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells-repeating-thead.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/single-line-cells.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/table-in-subpixel-fragmentainer.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/table-overlapping-rowspan.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/table-row-dimensions-break-freely.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/table-row-dimensions-with-thead.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/table-row-dimensions.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/unbreakable-tall-float-before-block.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/fragmentation/unbreakable-tall-float-before-line.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/absolute-position-headers-and-footers.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/absolute-positioned.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/allowed-page-breaks.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/css2.1/page-break-after-000.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/css2.1/page-break-after-002.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/css2.1/page-break-after-003.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/css2.1/page-break-after-004.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/css2.1/page-break-before-000.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/fixed-positioned-but-static-headers-and-footers.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/fixed-positioned-child-repeats-even-when-html-and-body-are-zero-height.html [ Crash ] +crbug.com/591099 virtual/layout_ng_experimental/printing/fixed-positioned-child-shouldnt-print.html [ Crash ] +crbug.com/591099 virtual/layout_ng_experimental/printing/fixed-positioned-headers-and-footers-clipped.html [ Failure ] +crbug.com/824918 virtual/layout_ng_experimental/printing/fixed-positioned-headers-and-footers-inside-transform.html [ Crash Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/fixed-positioned-headers-and-footers-larger-than-page.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/fixed-positioned-headers-and-footers.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/fixed-positioned.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/forced-break-tree-dump-only.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/iframe-print.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/list-item-with-empty-first-line.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/multicol-2-pages.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/multicol.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/no-content-empty-pages.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/page-break-after-avoid.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/page-break-always.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/page-break-avoid.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/page-break-before-avoid.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/page-break-display-none.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/page-break-inside-avoid.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/page-break-margin-collapsed.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/page-break-orphans-and-widows.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/page-break-orphans.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/page-break-widows.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/page-count-relayout-shrink.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/respect-layout-overflow-from-pagination.html [ Failure ] +crbug.com/824918 virtual/layout_ng_experimental/printing/setPrinting.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/single-line-must-not-be-split-into-two-pages.html [ Timeout ] +crbug.com/591099 virtual/layout_ng_experimental/printing/tfoot-repeats-at-bottom-of-each-page-multiple-tables.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/thead-repeats-at-top-of-each-page-multiple-tables.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/thead-repeats-at-top-of-each-page.html [ Failure ] +crbug.com/591099 virtual/layout_ng_experimental/printing/thead-under-multicol.html [ Failure ] +crbug.com/824918 virtual/layout_ng_experimental/printing/width-overflow.html [ Failure ] + # ====== LayoutNG-only failures until here ====== # ====== IncrementalShadowDOM-only failures from here ====== @@ -552,6 +1195,7 @@ # Run these tests with under virtual/scalefactor... only. crbug.com/567837 fast/hidpi/static [ Skip ] +crbug.com/538697 [ Win ] virtual/layout_ng_experimental/printing/webgl-oversized-printing.html [ Failure Crash ] crbug.com/538697 [ Win ] virtual/threaded/printing/webgl-oversized-printing.html [ Failure Crash ] crbug.com/538697 [ Win ] printing/webgl-oversized-printing.html [ Failure Crash ] @@ -2260,9 +2904,8 @@ crbug.com/666993 external/wpt/requestidlecallback/callback-idle-periods.html [ Timeout ] # Crashes with DCHECK enabled, but not on normal Release builds. -crbug.com/828746 external/wpt/css/css-fonts/variations/font-shorthand.html [ Pass Crash Failure ] -crbug.com/828746 external/wpt/css/css-fonts/variations/font-style-interpolation.html [ Pass Crash Timeout ] -crbug.com/828747 external/wpt/css/css-fonts/variations/font-weight-lighter-bolder.html [ Pass Crash Failure ] +crbug.com/809935 external/wpt/css/css-fonts/variations/font-style-interpolation.html [ Timeout ] +crbug.com/828748 external/wpt/css/css-fonts/variations/font-weight-lighter-bolder.html [ Pass Crash Failure ] crbug.com/626703 external/wpt/css/css-ui/text-overflow-011.html [ Failure Crash Pass ] crbug.com/626703 external/wpt/workers/opaque-origin.html [ Failure Crash Timeout ] crbug.com/626703 external/wpt/html/rendering/non-replaced-elements/margin-collapsing-quirks/multicol-quirks-mode.html [ Pass Crash ]
diff --git a/third_party/WebKit/LayoutTests/VirtualTestSuites b/third_party/WebKit/LayoutTests/VirtualTestSuites index bed78f6..e223503 100644 --- a/third_party/WebKit/LayoutTests/VirtualTestSuites +++ b/third_party/WebKit/LayoutTests/VirtualTestSuites
@@ -449,6 +449,31 @@ "--enable-slimming-paint-v175"] }, { + "prefix": "layout_ng_experimental", + "base": "external/wpt/css/css-multicol", + "args": ["--enable-blink-features=LayoutNGBlockFragmentation"] + }, + { + "prefix": "layout_ng_experimental", + "base": "fast/multicol", + "args": ["--enable-blink-features=LayoutNGBlockFragmentation"] + }, + { + "prefix": "layout_ng_experimental", + "base": "fast/pagination", + "args": ["--enable-blink-features=LayoutNGBlockFragmentation"] + }, + { + "prefix": "layout_ng_experimental", + "base": "fragmentation", + "args": ["--enable-blink-features=LayoutNGBlockFragmentation"] + }, + { + "prefix": "layout_ng_experimental", + "base": "printing", + "args": ["--enable-blink-features=LayoutNGBlockFragmentation"] + }, + { "prefix": "print_browser", "base": "print_testharness", "args": ["--enable-print-browser"]
diff --git a/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-crossfade-image-gradient-expected.png b/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-crossfade-image-gradient-expected.png index 3bbff4b..43d24dae 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-crossfade-image-gradient-expected.png +++ b/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-crossfade-image-gradient-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-image-svg-expected.png b/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-image-svg-expected.png index fc4c482c..e12a82d 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-image-svg-expected.png +++ b/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-image-svg-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-svg-color-expected.png b/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-svg-color-expected.png index bdabcd6..91d6f0b 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-svg-color-expected.png +++ b/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-svg-color-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected.https.html index 19ad407..c406e50 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected.https.html
@@ -9,7 +9,7 @@ const test_desc = 'A device disconnecting while connected should fire the ' + 'gattserverdisconnected event.'; -bluetooth_test(() => getHealthThermometerDevice() +bluetooth_test(() => getConnectedHealthThermometerDevice() .then(({device, fake_peripheral}) => { fake_peripheral.simulateGATTDisconnection(); return eventPromise(device, 'gattserverdisconnected');
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.html index bde70370..8208231bf 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.html
@@ -9,7 +9,7 @@ const test_desc = 'A device disconnecting after the BluetoothDevice object ' + 'has been GC\'ed should not access freed memory.'; -bluetooth_test(() => getHealthThermometerDevice() +bluetooth_test(() => getConnectedHealthThermometerDevice() .then(({fake_peripheral}) => { // 1. Disconnect. fake_peripheral.simulateGATTDisconnection();
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.html index 68bf79f..92be9c3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.html
@@ -12,7 +12,7 @@ let device, fake_peripheral; let num_events = 0; -bluetooth_test(() => getHealthThermometerDevice() +bluetooth_test(() => getConnectedHealthThermometerDevice() .then(_ => ({device, fake_peripheral} = _)) // 1. Listen for disconnections. .then(() =>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.html index ee2e598..6d0c8e2 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.html
@@ -10,7 +10,7 @@ 'event should still receive gattserverdisconnected events after ' + 're-connection.'; let device, fake_peripheral; -bluetooth_test(() => getHealthThermometerDevice() +bluetooth_test(() => getConnectedHealthThermometerDevice() .then(_ => ({device, fake_peripheral} = _)) // 1. Disconnect. .then(() => new Promise(resolve => {
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/idl/idl-BluetoothDevice.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/idl/idl-BluetoothDevice.https.html index 855d8fed..631d9dd4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/idl/idl-BluetoothDevice.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/idl/idl-BluetoothDevice.https.html
@@ -17,7 +17,7 @@ const test_desc_attr = 'BluetoothDevice attributes.'; let device; -bluetooth_test(() => getHealthThermometerDevice() +bluetooth_test(() => getConnectedHealthThermometerDevice() .then(({device}) => { assert_equals(device.constructor.name, 'BluetoothDevice'); var old_device_id = device.id;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.html index 5a1dca7c..bd9e586 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.html
@@ -14,7 +14,7 @@ 'requestDevice() options. https://goo.gl/HxfxSQ', 'SecurityError'); -bluetooth_test(() => getHealthThermometerDevice({acceptAllDevices: true}) +bluetooth_test(() => getConnectedHealthThermometerDevice({acceptAllDevices: true}) .then(({device}) => assert_promise_rejects_with_message( device.gatt.getPrimaryServices(), expected)),
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.html index d77486f..7189b643 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.html
@@ -22,8 +22,6 @@ .then(() => fake_peripheral.setNextGATTConnectionResponse({code: HCI_SUCCESS})) .then(() => device.gatt.connect()) - .then(() => - fake_peripheral.setNextGATTDiscoveryResponse({code: HCI_SUCCESS})) .then(() => Promise.all([ assert_promise_rejects_with_message( device.gatt.getPrimaryService('human_interface_device'),
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/cross-origin-iframe.sub.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/cross-origin-iframe.sub.https.html index 858b73f..e97991d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/cross-origin-iframe.sub.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/cross-origin-iframe.sub.https.html
@@ -13,7 +13,7 @@ '/bluetooth/resources/health-thermometer-iframe.html' let iframe = document.createElement('iframe'); -bluetooth_test(() => setUpConnectableHealthThermometerDevice() +bluetooth_test(() => setUpHealthThermometerDevice() // 1. Load the iframe. .then(() => new Promise(resolve => { iframe.src = cross_origin_src;
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/discovery-succeeds.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/discovery-succeeds.https.html index 2ac18485..21219444 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/discovery-succeeds.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/discovery-succeeds.https.html
@@ -8,7 +8,7 @@ 'use strict'; const test_desc = 'Discover a device using alias, name, or UUID.'; -bluetooth_test(() => getHealthThermometerDevice() +bluetooth_test(() => getConnectedHealthThermometerDevice() // Chrome will always close the previous chooser in the process of handling // a user gesture for the next request, so these need to be done // sequentially.
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/request-from-sandboxed-iframe.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/request-from-sandboxed-iframe.https.html index 62a917a7..80798308 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/request-from-sandboxed-iframe.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/requestDevice/request-from-sandboxed-iframe.https.html
@@ -14,7 +14,7 @@ let iframe = document.createElement('iframe'); -bluetooth_test(() => getHealthThermometerDevice() +bluetooth_test(() => getConnectedHealthThermometerDevice() // 1. Load the iframe. .then(() => new Promise(resolve => { iframe.sandbox.add('allow-scripts');
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/resources/bluetooth-helpers.js b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/resources/bluetooth-helpers.js index 0d37e34..f3dc8b7 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/resources/bluetooth-helpers.js +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/resources/bluetooth-helpers.js
@@ -66,7 +66,9 @@ .then(() => promise_test(t => Promise.resolve() // Trigger Chromium-specific setup. .then(performChromiumSetup) - .then(() => func(t)), name, properties)); + .then(() => func(t)) + .then(() => navigator.bluetooth.test.allResponsesConsumed()) + .then(consumed => assert_true(consumed)), name, properties)); } // HCI Error Codes. Used for simulateGATT[Dis]ConnectionResponse. @@ -926,42 +928,53 @@ // The primary service with 'device_information' UUID has a characteristics // with UUID 'serial_number_string'. The device has been connected to and its // attributes are ready to be discovered. -// TODO(crbug.com/719816): Add descriptors. function getHIDDevice(options) { + let device, fake_peripheral; + return getConnectedHIDDevice(options) + .then(_ => ({device, fake_peripheral} = _)) + .then(() => fake_peripheral.setNextGATTDiscoveryResponse({ + code: HCI_SUCCESS, + })) + .then(() => ({device, fake_peripheral})); +} + +// Similar to getHealthThermometerDevice except the GATT discovery +// response has not been set yet so more attributes can still be added. +// TODO(crbug.com/719816): Add descriptors. +function getConnectedHIDDevice(options) { + let device, fake_peripheral; return setUpPreconnectedDevice({ address: '10:10:10:10:10:10', name: 'HID Device', knownServiceUUIDs: [ 'generic_access', 'device_information', - 'human_interface_device' + 'human_interface_device', ], }) - .then(fake_peripheral => { - return requestDeviceWithTrustedClick(options) - .then(device => { - return fake_peripheral - .setNextGATTConnectionResponse({ - code: HCI_SUCCESS}) - .then(() => device.gatt.connect()) - .then(() => fake_peripheral.addFakeService({ - uuid: 'generic_access'})) - .then(() => fake_peripheral.addFakeService({ - uuid: 'device_information'})) - // Blocklisted Characteristic: - // https://github.com/WebBluetoothCG/registries/blob/master/gatt_blocklist.txt - .then(dev_info => dev_info.addFakeCharacteristic({ - uuid: 'serial_number_string', properties: ['read']})) - .then(() => fake_peripheral.addFakeService({ - uuid: 'human_interface_device'})) - .then(() => fake_peripheral.setNextGATTDiscoveryResponse({ - code: HCI_SUCCESS})) - .then(() => ({ - device: device, - fake_peripheral: fake_peripheral - })); - }); - }); + .then(_ => (fake_peripheral = _)) + .then(() => requestDeviceWithTrustedClick(options)) + .then(_ => (device = _)) + .then(() => fake_peripheral.setNextGATTConnectionResponse({ + code: HCI_SUCCESS, + })) + .then(() => device.gatt.connect()) + .then(() => fake_peripheral.addFakeService({ + uuid: 'generic_access', + })) + .then(() => fake_peripheral.addFakeService({ + uuid: 'device_information', + })) + // Blocklisted Characteristic: + // https://github.com/WebBluetoothCG/registries/blob/master/gatt_blocklist.txt + .then(dev_info => dev_info.addFakeCharacteristic({ + uuid: 'serial_number_string', + properties: ['read'], + })) + .then(() => fake_peripheral.addFakeService({ + uuid: 'human_interface_device', + })) + .then(() => ({device, fake_peripheral})); } // Similar to getHealthThermometerDevice() except the device
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/disconnect-called-before.js b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/disconnect-called-before.js index fabc74ff..57704ee29 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/disconnect-called-before.js +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/disconnect-called-before.js
@@ -7,7 +7,7 @@ 'NetworkError'); let device; -bluetooth_test(() => getHealthThermometerDevice({ +bluetooth_test(() => getConnectedHealthThermometerDevice({ filters: [{services: ['health_thermometer']}], optionalServices: ['generic_access'] })
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/invalid-service-name.js b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/invalid-service-name.js index 56e67f0..52cbb24 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/invalid-service-name.js +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/invalid-service-name.js
@@ -11,7 +11,7 @@ " e.g. 'alert_notification'.", 'TypeError'); -bluetooth_test(() => getHealthThermometerDevice() +bluetooth_test(() => getConnectedHealthThermometerDevice() .then(({device}) => assert_promise_rejects_with_message( device.gatt.CALLS([ getPrimaryService('wrong_name')|
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/no-permission-absent-service.js b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/no-permission-absent-service.js index 9bab3be8..200dab3e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/no-permission-absent-service.js +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/no-permission-absent-service.js
@@ -7,7 +7,7 @@ 'https://goo.gl/HxfxSQ', 'SecurityError'); -bluetooth_test(() => getHealthThermometerDevice({ +bluetooth_test(() => getConnectedHealthThermometerDevice({ filters: [{services: ['health_thermometer']}] }) .then(({device}) => Promise.all([
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/no-permission-for-any-service.js b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/no-permission-for-any-service.js index 52b07cc..60e3ef0 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/no-permission-for-any-service.js +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/no-permission-for-any-service.js
@@ -7,7 +7,7 @@ 'https://goo.gl/HxfxSQ', 'SecurityError'); -bluetooth_test(() => getHealthThermometerDevice({acceptAllDevices: true}) +bluetooth_test(() => getConnectedHealthThermometerDevice({acceptAllDevices: true}) .then(({device}) => assert_promise_rejects_with_message( device.gatt.CALLS([ getPrimaryService('heart_rate')|
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/no-permission-present-service.js b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/no-permission-present-service.js index 67081ae..3257410 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/no-permission-present-service.js +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/script-tests/server/no-permission-present-service.js
@@ -6,7 +6,7 @@ 'to \'optionalServices\' in requestDevice() options. https://goo.gl/HxfxSQ', 'SecurityError'); -bluetooth_test(() => getHealthThermometerDevice({ +bluetooth_test(() => getConnectedHealthThermometerDevice({ filters: [{services: ['health_thermometer']}] }) .then(({device}) => Promise.all([
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.html index 8a7e08f..af00c66d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.html
@@ -15,7 +15,7 @@ 'NetworkError'); let device; -bluetooth_test(() => getHealthThermometerDevice({ +bluetooth_test(() => getConnectedHealthThermometerDevice({ filters: [{services: ['health_thermometer']}], optionalServices: ['generic_access'] })
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.html index f055cb30..40777ee 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.html
@@ -19,7 +19,7 @@ " e.g. 'alert_notification'.", 'TypeError'); -bluetooth_test(() => getHealthThermometerDevice() +bluetooth_test(() => getConnectedHealthThermometerDevice() .then(({device}) => assert_promise_rejects_with_message( device.gatt.getPrimaryService('wrong_name'), expected,
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.html index ced2bc6..7883ef3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.html
@@ -15,7 +15,7 @@ 'https://goo.gl/HxfxSQ', 'SecurityError'); -bluetooth_test(() => getHealthThermometerDevice({ +bluetooth_test(() => getConnectedHealthThermometerDevice({ filters: [{services: ['health_thermometer']}] }) .then(({device}) => Promise.all([
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.html index 99d5c2340..566a9fb 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.html
@@ -15,7 +15,7 @@ 'https://goo.gl/HxfxSQ', 'SecurityError'); -bluetooth_test(() => getHealthThermometerDevice({acceptAllDevices: true}) +bluetooth_test(() => getConnectedHealthThermometerDevice({acceptAllDevices: true}) .then(({device}) => assert_promise_rejects_with_message( device.gatt.getPrimaryService('heart_rate'), expected)),
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.html index 2a57836..c9ce1b80 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.html
@@ -14,7 +14,7 @@ 'to \'optionalServices\' in requestDevice() options. https://goo.gl/HxfxSQ', 'SecurityError'); -bluetooth_test(() => getHealthThermometerDevice({ +bluetooth_test(() => getConnectedHealthThermometerDevice({ filters: [{services: ['health_thermometer']}] }) .then(({device}) => Promise.all([
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.html index aa0b556..6ed24fd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.html
@@ -12,7 +12,7 @@ 'UUID to \'optionalServices\' in requestDevice() options. ' + 'https://goo.gl/HxfxSQ', 'SecurityError'); -bluetooth_test(() => getHIDDevice({ +bluetooth_test(() => getConnectedHIDDevice({ filters: [{services: ['device_information']}], optionalServices: ['human_interface_device'] })
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html index bdf55a6..4449d2e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html
@@ -15,7 +15,7 @@ 'NetworkError'); let device; -bluetooth_test(() => getHealthThermometerDevice({ +bluetooth_test(() => getConnectedHealthThermometerDevice({ filters: [{services: ['health_thermometer']}], optionalServices: ['generic_access'] })
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.html index 45f1338..3bf4ed6d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.html
@@ -15,7 +15,7 @@ 'NetworkError'); let device; -bluetooth_test(() => getHealthThermometerDevice({ +bluetooth_test(() => getConnectedHealthThermometerDevice({ filters: [{services: ['health_thermometer']}], optionalServices: ['generic_access'] })
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.html index c497a0ab..969ad61e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.html
@@ -19,7 +19,7 @@ " e.g. 'alert_notification'.", 'TypeError'); -bluetooth_test(() => getHealthThermometerDevice() +bluetooth_test(() => getConnectedHealthThermometerDevice() .then(({device}) => assert_promise_rejects_with_message( device.gatt.getPrimaryServices('wrong_name'), expected,
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.html index 0251ea02..696b1f94 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.html
@@ -15,7 +15,7 @@ 'https://goo.gl/HxfxSQ', 'SecurityError'); -bluetooth_test(() => getHealthThermometerDevice({ +bluetooth_test(() => getConnectedHealthThermometerDevice({ filters: [{services: ['health_thermometer']}] }) .then(({device}) => Promise.all([
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.html index 332f016..41bbf6e 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.html
@@ -15,7 +15,7 @@ 'https://goo.gl/HxfxSQ', 'SecurityError'); -bluetooth_test(() => getHealthThermometerDevice({acceptAllDevices: true}) +bluetooth_test(() => getConnectedHealthThermometerDevice({acceptAllDevices: true}) .then(({device}) => assert_promise_rejects_with_message( device.gatt.getPrimaryServices('heart_rate'), expected)),
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.html index 34d7043c..58bea88 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.html
@@ -15,7 +15,7 @@ 'https://goo.gl/HxfxSQ', 'SecurityError'); -bluetooth_test(() => getHealthThermometerDevice({acceptAllDevices: true}) +bluetooth_test(() => getConnectedHealthThermometerDevice({acceptAllDevices: true}) .then(({device}) => assert_promise_rejects_with_message( device.gatt.getPrimaryServices(), expected)),
diff --git a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.html b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.html index 1f3f291..4f8254a 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.html
@@ -14,7 +14,7 @@ 'to \'optionalServices\' in requestDevice() options. https://goo.gl/HxfxSQ', 'SecurityError'); -bluetooth_test(() => getHealthThermometerDevice({ +bluetooth_test(() => getConnectedHealthThermometerDevice({ filters: [{services: ['health_thermometer']}] }) .then(({device}) => Promise.all([
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/variations/font-shorthand-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/variations/font-shorthand-expected.txt new file mode 100644 index 0000000..81811c1b --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-fonts/variations/font-shorthand-expected.txt
@@ -0,0 +1,25 @@ +This is a testharness.js-based test. +PASS Font shorthand: Font size specified as calc() +PASS Font shorthand: Font weight specified as number +PASS Font shorthand: Font weight specified as number, value less than 1 +PASS Font shorthand: Font weight specified as number, value greater than 1000 +PASS Font shorthand: Font weight specified as calc() +FAIL Font shorthand: Font weight specified as calc(), value smaller than 1 assert_equals: Font shorthand expected weight: Font weight specified as calc(), value smaller than 1 expected "1" but got "400" +FAIL Font shorthand: Font weight specified as calc(), value greater than 1000 assert_equals: Font shorthand expected weight: Font weight specified as calc(), value greater than 1000 expected "1000" but got "400" +PASS Font shorthand: 'oblique' with positive angle +PASS Font shorthand: 'oblique' with hegative angle +FAIL Font shorthand: 'oblique' without slant angle assert_equals: Font shorthand expected style: 'oblique' without slant angle expected "oblique" but got "italic" +FAIL Font shorthand: 'oblique' with negative angle, value out of range assert_equals: Font shorthand: 'oblique' with negative angle, value out of range expected false but got true +FAIL Font shorthand: 'oblique' with positive angle, value out of range assert_equals: Font shorthand: 'oblique' with positive angle, value out of range expected false but got true +FAIL Font shorthand: 'oblique' followed by valid small weight assert_equals: Font shorthand expected style: 'oblique' followed by valid small weight expected "oblique" but got "italic" +FAIL Font shorthand: 'oblique' followed by valid large weight assert_equals: Font shorthand expected style: 'oblique' followed by valid large weight expected "oblique" but got "italic" +PASS Font shorthand: 'oblique' with positive angle followed by valid weight +PASS Font shorthand: 'oblique' with negative angle followed by valid weight +FAIL Font shorthand: 'oblique' followed by valid calc() weight assert_equals: Font shorthand expected style: 'oblique' followed by valid calc() weight expected "oblique" but got "italic" +PASS Font shorthand: 'oblique' with angle followed by valid calc() weight +FAIL Font shorthand: 'oblique' followed by a to-be-clamped calc() weight assert_equals: Font shorthand expected style: 'oblique' followed by a to-be-clamped calc() weight expected "oblique" but got "italic" +FAIL Font shorthand: calc() weight folowed by 'oblique' assert_equals: Font shorthand expected style: calc() weight folowed by 'oblique' expected "oblique" but got "italic" +PASS Font shorthand: calc() weight folowed by 'oblique' and slant angle +FAIL Font shorthand: To-be-clamped calc() weight folowed by 'oblique' and slant angle assert_equals: Font shorthand: To-be-clamped calc() weight folowed by 'oblique' and slant angle expected true but got false +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/web-animations/interfaces/Document/getAnimations-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/web-animations/interfaces/Document/getAnimations-expected.txt deleted file mode 100644 index 2439c821..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/web-animations/interfaces/Document/getAnimations-expected.txt +++ /dev/null
@@ -1,7 +0,0 @@ -This is a testharness.js-based test. -PASS Test document.getAnimations for non-animated content -PASS Test document.getAnimations for script-generated animations -PASS Test the order of document.getAnimations with script generated animations -FAIL Test document.getAnimations with null target assert_equals: document.getAnimations() only returns animations targeting elements in this document expected 0 but got 3 -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/external/wpt/web-animations/interfaces/Document/getAnimations.html b/third_party/WebKit/LayoutTests/external/wpt/web-animations/interfaces/Document/getAnimations.html index 3a1d7be..381d954 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/web-animations/interfaces/Document/getAnimations.html +++ b/third_party/WebKit/LayoutTests/external/wpt/web-animations/interfaces/Document/getAnimations.html
@@ -42,6 +42,19 @@ }, 'Test the order of document.getAnimations with script generated animations') test(t => { + // This element exists but is not a descendent of any document, so isn't + // picked up by getAnimations. + const div = document.createElement('div'); + const anim = div.animate(gKeyFrames, 100 * MS_PER_SEC); + assert_equals(document.getAnimations().length, 0); + + // Now connect the div; it should appear in the list of animations. + document.body.appendChild(div); + t.add_cleanup(() => { div.remove(); }); + assert_equals(document.getAnimations().length, 1); +}, 'Test document.getAnimations for a disconnected node'); + +test(t => { const effect = new KeyframeEffect(null, gKeyFrames, 100 * MS_PER_SEC); const anim = new Animation(effect, document.timeline); anim.play();
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-getStats.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-getStats.https-expected.txt index 8a2e84a..47d407c4 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-getStats.https-expected.txt +++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-getStats.https-expected.txt
@@ -1,15 +1,15 @@ This is a testharness.js-based test. PASS getStats() with no argument should succeed -FAIL getStats(null) should succeed promise_test: Unhandled rejection with value: object "TypeError: Failed to execute 'getStats' on 'RTCPeerConnection': The callback provided as parameter 1 is not a function." -FAIL getStats() with track not added to connection should reject with InvalidAccessError assert_throws: function "function() { throw e }" threw object "TypeError: Failed to execute 'getStats' on 'RTCPeerConnection': The callback provided as parameter 1 is not a function." that is not a DOMException InvalidAccessError: property "code" is equal to undefined, expected 15 -FAIL getStats() with track added via addTrack should succeed promise_test: Unhandled rejection with value: object "TypeError: Failed to execute 'getStats' on 'RTCPeerConnection': The callback provided as parameter 1 is not a function." +PASS getStats(null) should succeed +PASS getStats() with track not added to connection should reject with InvalidAccessError +PASS getStats() with track added via addTrack should succeed FAIL getStats() with track added via addTransceiver should succeed assert_idl_attribute: Expect pc to have addTransceiver() method property "addTransceiver" not found in prototype chain FAIL getStats() with track associated with more than one sender should reject with InvalidAccessError promise_test: Unhandled rejection with value: object "TypeError: pc.addTransceiver is not a function" FAIL getStats() with track associated with both sender and receiver should reject with InvalidAccessError pc.addTransceiver is not a function PASS getStats() with no argument should return stats report containing peer-connection stats on an empty PC FAIL getStats() with no argument should return stats report containing peer-connection stats and outbound-track-stats assert_true: Expect statsReport to contain stats object of type outbound-rtp expected true got false FAIL getStats() with no argument should return stats for no-stream tracks assert_true: Expect statsReport to contain stats object of type outbound-rtp expected true got false -FAIL getStats() on track associated with RtpSender should return stats report containing outbound-rtp stats promise_test: Unhandled rejection with value: object "TypeError: Failed to execute 'getStats' on 'RTCPeerConnection': The callback provided as parameter 1 is not a function." +FAIL getStats() on track associated with RtpSender should return stats report containing outbound-rtp stats assert_true: Expect statsReport to contain stats object of type outbound-rtp expected true got false FAIL getStats() on track associated with RtpReceiver should return stats report containing inbound-rtp stats pc.addTransceiver is not a function FAIL getStats() with connected peer connections having tracks and data channel should return all mandatory to implement stats assert_unreached: test failed with error: Error: assert_true: Expect dictionary.dataChannelIdentifier to be integer expected true got false Reached unreachable code Harness: the test ran to completion.
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-track-stats.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-track-stats.https-expected.txt index 69dc790..2acdf26 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-track-stats.https-expected.txt +++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-track-stats.https-expected.txt
@@ -13,5 +13,9 @@ FAIL replaceTrack(): original track attachment stats present after replacing assert_true: Has stats for original track expected true got false PASS RTCRtpSender.getStats() contains only outbound-rtp and related stats PASS RTCRtpReceiver.getStats() contains only inbound-rtp and related stats +PASS RTCPeerConnection.getStats(sendingTrack) is the same as RTCRtpSender.getStats() +PASS RTCPeerConnection.getStats(receivingTrack) is the same as RTCRtpReceiver.getStats() +PASS RTCPeerConnection.getStats(track) throws InvalidAccessError when there are zero senders or receivers for the track +PASS RTCPeerConnection.getStats(track) throws InvalidAccessError when there are multiple senders for the track Harness: the test ran to completion.
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-track-stats.https.html b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-track-stats.https.html index c6c8ce3..d3873b1 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-track-stats.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-track-stats.https.html
@@ -378,7 +378,7 @@ })); }, 'replaceTrack(): original track attachment stats present after replacing'); - promise_test(async function() { + promise_test(async t => { const caller = new RTCPeerConnection(); const callee = new RTCPeerConnection(); let [tracks, streams] = await getUserMediaTracksAndStreams(2); @@ -424,7 +424,7 @@ 'senderReport should contain remote-candidate stats'); }, 'RTCRtpSender.getStats() contains only outbound-rtp and related stats'); - promise_test(async function() { + promise_test(async t => { const caller = new RTCPeerConnection(); const callee = new RTCPeerConnection(); let [tracks, streams] = await getUserMediaTracksAndStreams(2); @@ -470,6 +470,72 @@ 'receiverReport should contain remote-candidate stats'); }, 'RTCRtpReceiver.getStats() contains only inbound-rtp and related stats'); + promise_test(async t => { + const caller = new RTCPeerConnection(); + const callee = new RTCPeerConnection(); + let [tracks, streams] = await getUserMediaTracksAndStreams(2); + let sender = caller.addTrack(tracks[0], streams[0]); + callee.addTrack(tracks[1], streams[1]); + exchangeIceCandidates(caller, callee); + await doSignalingHandshake(caller, callee); + await onIceConnectionStateCompleted(caller); + + let senderReport = await sender.getStats(); + let trackReport = await caller.getStats(sender.track); + + senderReport.forEach(senderReportStat => { + let trackReportStat = trackReport.get(senderReportStat.id); + assert_object_equals(trackReportStat, senderReportStat); + }); + trackReport.forEach(trackReportStat => { + let senderReportStat = senderReport.get(trackReportStat.id); + assert_object_equals(senderReportStat, trackReportStat); + }); + }, 'RTCPeerConnection.getStats(sendingTrack) is the same as ' + + 'RTCRtpSender.getStats()'); + + promise_test(async t => { + const caller = new RTCPeerConnection(); + const callee = new RTCPeerConnection(); + let [tracks, streams] = await getUserMediaTracksAndStreams(2); + let sender = caller.addTrack(tracks[0], streams[0]); + callee.addTrack(tracks[1], streams[1]); + exchangeIceCandidates(caller, callee); + await doSignalingHandshake(caller, callee); + await onIceConnectionStateCompleted(caller); + let receiver = caller.getReceivers()[0]; + + let receiverReport = await receiver.getStats(); + let trackReport = await caller.getStats(receiver.track); + + receiverReport.forEach(receiverReportStat => { + let trackReportStat = trackReport.get(receiverReportStat.id); + assert_object_equals(trackReportStat, receiverReportStat); + }); + trackReport.forEach(trackReportStat => { + let receiverReportStat = receiverReport.get(trackReportStat.id); + assert_object_equals(receiverReportStat, trackReportStat); + }); + }, 'RTCPeerConnection.getStats(receivingTrack) is the same as ' + + 'RTCRtpReceiver.getStats()'); + + promise_test(async t => { + const pc = new RTCPeerConnection(); + let [tracks, streams] = await getUserMediaTracksAndStreams(1); + await promise_rejects(t, 'InvalidAccessError', pc.getStats(tracks[0])); + }, 'RTCPeerConnection.getStats(track) throws InvalidAccessError when there ' + + 'are zero senders or receivers for the track'); + + promise_test(async t => { + const pc = new RTCPeerConnection(); + let [tracks, streams] = await getUserMediaTracksAndStreams(2); + let sender1 = pc.addTrack(tracks[0]); + let sender2 = pc.addTrack(tracks[1]); + await sender2.replaceTrack(sender1.track); + await promise_rejects(t, 'InvalidAccessError', pc.getStats(sender1.track)); + }, 'RTCPeerConnection.getStats(track) throws InvalidAccessError when there ' + + 'are multiple senders for the track'); + // Helpers. function findStatsByTypeAndId(report, type, identifier) { @@ -541,4 +607,14 @@ } } + async function async_assert_throws(exceptionName, promise, description) { + try { + await promise; + } catch (e) { + assert_equals(e.name, exceptionName); + return; + } + assert_unreached('No exception was thrown.'); + } + </script>
diff --git a/third_party/WebKit/LayoutTests/fast/backgrounds/gradient-background-leakage-expected.png b/third_party/WebKit/LayoutTests/fast/backgrounds/gradient-background-leakage-expected.png index 1728352..9365e423 100644 --- a/third_party/WebKit/LayoutTests/fast/backgrounds/gradient-background-leakage-expected.png +++ b/third_party/WebKit/LayoutTests/fast/backgrounds/gradient-background-leakage-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/backgrounds/gradient-background-leakage-hidpi-expected.png b/third_party/WebKit/LayoutTests/fast/backgrounds/gradient-background-leakage-hidpi-expected.png index 2ecf1d5..8b74f0a5 100644 --- a/third_party/WebKit/LayoutTests/fast/backgrounds/gradient-background-leakage-hidpi-expected.png +++ b/third_party/WebKit/LayoutTests/fast/backgrounds/gradient-background-leakage-hidpi-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/backgrounds/size/contain-and-cover-expected.png b/third_party/WebKit/LayoutTests/fast/backgrounds/size/contain-and-cover-expected.png index 9836c510..6c256c3 100644 --- a/third_party/WebKit/LayoutTests/fast/backgrounds/size/contain-and-cover-expected.png +++ b/third_party/WebKit/LayoutTests/fast/backgrounds/size/contain-and-cover-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/backgrounds/svg-as-mask-expected.png b/third_party/WebKit/LayoutTests/fast/backgrounds/svg-as-mask-expected.png index b1d9776..5dc2656 100644 --- a/third_party/WebKit/LayoutTests/fast/backgrounds/svg-as-mask-expected.png +++ b/third_party/WebKit/LayoutTests/fast/backgrounds/svg-as-mask-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/border-radius-circle-expected.png b/third_party/WebKit/LayoutTests/fast/borders/border-radius-circle-expected.png index 01c3b57..e476af8 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/border-radius-circle-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/border-radius-circle-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/border-radius-different-width-001-double-expected.png b/third_party/WebKit/LayoutTests/fast/borders/border-radius-different-width-001-double-expected.png index 4c686b0..dcc5e10 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/border-radius-different-width-001-double-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/border-radius-different-width-001-double-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/border-radius-different-width-001-expected.png b/third_party/WebKit/LayoutTests/fast/borders/border-radius-different-width-001-expected.png index 0066902..483f5f4a 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/border-radius-different-width-001-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/border-radius-different-width-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed06-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed06-expected.png index 3301198..ebb69c71 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed06-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDashed06-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted01-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted01-expected.png index b0e39abd..5fef672 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted01-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted01-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted02-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted02-expected.png index 215b815..7a5509a 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted02-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted02-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted03-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted03-expected.png index ccf5b82..f1850805 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted03-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted03-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted04-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted04-expected.png index 2e0d02b4..167098e8e 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted04-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted04-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted06-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted06-expected.png index 076ab0d0..f4d0513 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted06-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDotted06-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDouble02-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDouble02-expected.png index b00ce27da..59fa94b48 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDouble02-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDouble02-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDouble03-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDouble03-expected.png index e0c244ba2..939746e 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDouble03-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusDouble03-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusMultiColors02-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusMultiColors02-expected.png index 746f7c9..23a5427 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusMultiColors02-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusMultiColors02-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusSolid01-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusSolid01-expected.png index 3f2af29..2c9835a 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusSolid01-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusSolid01-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusSolid02-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusSolid02-expected.png index d46aa49..dd6c40f7 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusSolid02-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusSolid02-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusSolid03-expected.png b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusSolid03-expected.png index 2362d0e..2f02c4a 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/borderRadiusSolid03-expected.png +++ b/third_party/WebKit/LayoutTests/fast/borders/borderRadiusSolid03-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/box-shadow/box-shadow-clipped-slices-expected.png b/third_party/WebKit/LayoutTests/fast/box-shadow/box-shadow-clipped-slices-expected.png index f9284048e..dcbd0a8 100644 --- a/third_party/WebKit/LayoutTests/fast/box-shadow/box-shadow-clipped-slices-expected.png +++ b/third_party/WebKit/LayoutTests/fast/box-shadow/box-shadow-clipped-slices-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/box-shadow/inset-with-extraordinary-radii-and-border-expected.png b/third_party/WebKit/LayoutTests/fast/box-shadow/inset-with-extraordinary-radii-and-border-expected.png index 7482fd0e..5a22a1f4 100644 --- a/third_party/WebKit/LayoutTests/fast/box-shadow/inset-with-extraordinary-radii-and-border-expected.png +++ b/third_party/WebKit/LayoutTests/fast/box-shadow/inset-with-extraordinary-radii-and-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-arc-circumference-fill-expected.png b/third_party/WebKit/LayoutTests/fast/canvas/canvas-arc-circumference-fill-expected.png index b8fdf6c..b5e27f2 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-arc-circumference-fill-expected.png +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-arc-circumference-fill-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-ellipse-circumference-fill-expected.png b/third_party/WebKit/LayoutTests/fast/canvas/canvas-ellipse-circumference-fill-expected.png index 1fc5a0545..bab6b82 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-ellipse-circumference-fill-expected.png +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-ellipse-circumference-fill-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-ellipse-connecting-line-expected.png b/third_party/WebKit/LayoutTests/fast/canvas/canvas-ellipse-connecting-line-expected.png index e9b38cf4..5b305a15 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-ellipse-connecting-line-expected.png +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-ellipse-connecting-line-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/downsample-quality-expected.png b/third_party/WebKit/LayoutTests/fast/canvas/downsample-quality-expected.png index 54c3794..2d2c5c7 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/downsample-quality-expected.png +++ b/third_party/WebKit/LayoutTests/fast/canvas/downsample-quality-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-skip-ink-expected.png b/third_party/WebKit/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-skip-ink-expected.png index 24b9247..435e5ee 100644 --- a/third_party/WebKit/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-skip-ink-expected.png +++ b/third_party/WebKit/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-skip-ink-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/gradients/background-clipped-expected.png b/third_party/WebKit/LayoutTests/fast/gradients/background-clipped-expected.png index 2347f96..bd4d5bc 100644 --- a/third_party/WebKit/LayoutTests/fast/gradients/background-clipped-expected.png +++ b/third_party/WebKit/LayoutTests/fast/gradients/background-clipped-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/peerconnection/RTCPeerConnection-getStats-overrides.https.html b/third_party/WebKit/LayoutTests/fast/peerconnection/RTCPeerConnection-getStats-overrides.https.html new file mode 100644 index 0000000..5bdc03c6 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/peerconnection/RTCPeerConnection-getStats-overrides.https.html
@@ -0,0 +1,91 @@ +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<html> +<head> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> +</head> +<body> +<script> +'use strict'; + +// When |callback| is invoked, |promise| is resolved. Example: +// let cp = new CallbackPromise(); +// pc.getStats(cp.callback); +// let report = await cp.promise; +class CallbackPromise { + constructor() { + let promiseResolve; + this.promise = new Promise(function(resolve, reject) { + promiseResolve = resolve; + }); + this.callback = promiseResolve; + } +} + +promise_test(async t => { + let pc = new RTCPeerConnection(); + let cp = new CallbackPromise(); + assert_equals(await pc.getStats(cp.callback), undefined); + await cp.promise; +}, 'Signature: getStats(callback) uses callback'); + +promise_test(async t => { + let pc = new RTCPeerConnection(); + let cp = new CallbackPromise(); + let stream = await navigator.mediaDevices.getUserMedia({video:true}); + let track = stream.getTracks()[0]; + assert_equals(await pc.getStats(cp.callback, track), undefined); + await cp.promise; +}, 'Signature: getStats(callback, track) uses callback'); + +promise_test(async t => { + let pc = new RTCPeerConnection(); + let cp = new CallbackPromise(); + assert_equals(await pc.getStats(cp.callback, null), undefined); + await cp.promise; +}, 'Signature: getStats(callback, null) uses callback'); + +promise_test(async t => { + let pc = new RTCPeerConnection(); + let cp = new CallbackPromise(); + assert_equals(await pc.getStats(cp.callback, undefined), undefined); + await cp.promise; +}, 'Signature: getStats(callback, undefined) uses callback'); + +promise_test(async t => { + let pc = new RTCPeerConnection(); + let cp = new CallbackPromise(); + let nonsense = 5; + assert_equals(await pc.getStats(cp.callback, nonsense), undefined); + await cp.promise; +}, 'Signature: getStats(callback, nonsense) uses callback'); + +promise_test(async t => { + let pc = new RTCPeerConnection(); + let nonsense = 5; + await promise_rejects(t, new TypeError(), pc.getStats(nonsense)); +}, 'Signature: getStats(nonsense) throws exception'); + +promise_test(async t => { + let pc = new RTCPeerConnection(); + assert_not_equals(await pc.getStats(), undefined); +}, 'Signature: getStats() resolves with report'); + +promise_test(async t => { + let pc = new RTCPeerConnection(); + let stream = await navigator.mediaDevices.getUserMedia({video:true}); + let track = stream.getTracks()[0]; + pc.addTrack(track); + assert_not_equals(await pc.getStats(track), undefined); +}, 'Signature: getStats(track) resolves with report'); + +promise_test(async t => { + let pc = new RTCPeerConnection(); + assert_not_equals(await pc.getStats(null), undefined); +}, 'Signature: getStats(null) resolves with report'); + +promise_test(async t => { + let pc = new RTCPeerConnection(); + assert_not_equals(await pc.getStats(undefined), undefined); +}, 'Signature: getStats(undefined) resolves with report'); +</script>
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/accessibility/accessibility-nameSources-summary-expected.txt b/third_party/WebKit/LayoutTests/inspector-protocol/accessibility/accessibility-nameSources-summary-expected.txt index 16db3ab..2f44c51 100644 --- a/third_party/WebKit/LayoutTests/inspector-protocol/accessibility/accessibility-nameSources-summary-expected.txt +++ b/third_party/WebKit/LayoutTests/inspector-protocol/accessibility/accessibility-nameSources-summary-expected.txt
@@ -31,7 +31,15 @@ } ] }, - "properties": [], + "properties": [ + { + "name": "expanded", + "value": { + "type": "booleanOrUndefined", + "value": false + } + } + ], "domNode": "summary#summary2" } { @@ -75,7 +83,15 @@ "type": "computedString", "value": "summary3-title" }, - "properties": [], + "properties": [ + { + "name": "expanded", + "value": { + "type": "booleanOrUndefined", + "value": false + } + } + ], "domNode": "summary#summary3" } { @@ -128,7 +144,15 @@ "type": "computedString", "value": "summary4-contents" }, - "properties": [], + "properties": [ + { + "name": "expanded", + "value": { + "type": "booleanOrUndefined", + "value": false + } + } + ], "domNode": "summary#summary4" } { @@ -199,6 +223,13 @@ }, "properties": [ { + "name": "expanded", + "value": { + "type": "booleanOrUndefined", + "value": false + } + }, + { "name": "labelledby", "value": { "type": "nodeList",
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/box/border-radius-repaint-2-expected.png b/third_party/WebKit/LayoutTests/paint/invalidation/box/border-radius-repaint-2-expected.png index a7fe526..759fc0f 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/box/border-radius-repaint-2-expected.png +++ b/third_party/WebKit/LayoutTests/paint/invalidation/box/border-radius-repaint-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/outline/focus-ring-continuation-move-crash-expected.html b/third_party/WebKit/LayoutTests/paint/invalidation/outline/focus-ring-continuation-move-crash-expected.html new file mode 100644 index 0000000..36fbead --- /dev/null +++ b/third_party/WebKit/LayoutTests/paint/invalidation/outline/focus-ring-continuation-move-crash-expected.html
@@ -0,0 +1,5 @@ +<!DOCTYPE html> +<div id="space" style="height: 100px"></div> +<span style="outline: auto"> + <div>A</div>B +</span>
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/outline/focus-ring-continuation-move-crash.html b/third_party/WebKit/LayoutTests/paint/invalidation/outline/focus-ring-continuation-move-crash.html new file mode 100644 index 0000000..6faa5e2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/paint/invalidation/outline/focus-ring-continuation-move-crash.html
@@ -0,0 +1,14 @@ +<!DOCTYPE html> +<div id="space" style="height: 20px"></div> +<div> + <span style="outline: auto"> + <div>A</div> + B + </span> +</div> +<script src="../../../resources/run-after-layout-and-paint.js"></script> +<script> +runAfterLayoutAndPaint(function() { + space.style.height = '100px'; +}, true); +</script>
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/svg/animate-path-morphing-expected.png b/third_party/WebKit/LayoutTests/paint/invalidation/svg/animate-path-morphing-expected.png index ffaa713..b980a5d3 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/svg/animate-path-morphing-expected.png +++ b/third_party/WebKit/LayoutTests/paint/invalidation/svg/animate-path-morphing-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-update-polygon-changes-expected.png b/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-update-polygon-changes-expected.png index 9909f7a..a9b035cd 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-update-polygon-changes-expected.png +++ b/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-update-polygon-changes-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-update-transform-addition-expected.png b/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-update-transform-addition-expected.png index 0c10bbf2..8d74f18 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-update-transform-addition-expected.png +++ b/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-update-transform-addition-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-update-transform-changes-expected.png b/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-update-transform-changes-expected.png index 0c10bbf2..8d74f18 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-update-transform-changes-expected.png +++ b/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-update-transform-changes-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/svg/paintorder-filtered-expected.png b/third_party/WebKit/LayoutTests/paint/invalidation/svg/paintorder-filtered-expected.png index da76c91..db3cbf6 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/svg/paintorder-filtered-expected.png +++ b/third_party/WebKit/LayoutTests/paint/invalidation/svg/paintorder-filtered-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/svg/repaint-paintorder-expected.png b/third_party/WebKit/LayoutTests/paint/invalidation/svg/repaint-paintorder-expected.png index 047a5c5..b4df77f 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/svg/repaint-paintorder-expected.png +++ b/third_party/WebKit/LayoutTests/paint/invalidation/svg/repaint-paintorder-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/svg/stroke-opacity-update-expected.png b/third_party/WebKit/LayoutTests/paint/invalidation/svg/stroke-opacity-update-expected.png index 595d8ef..325a4d0 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/svg/stroke-opacity-update-expected.png +++ b/third_party/WebKit/LayoutTests/paint/invalidation/svg/stroke-opacity-update-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/scaled-mask-expected.png b/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/scaled-mask-expected.png index 8bff888..572498e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/scaled-mask-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/scaled-mask-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-constraints-double-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-constraints-double-expected.png index 1e7e3190..75e7554 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-constraints-double-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-constraints-double-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-constraints-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-constraints-expected.png index 7bb6282..70c8da60 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-constraints-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-constraints-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-mask-canvas-all-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-mask-canvas-all-expected.png index 87ddac7..948282ea 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-mask-canvas-all-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-mask-canvas-all-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-mask-canvas-with-mask-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-mask-canvas-with-mask-expected.png index c384a04..045ee722 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-mask-canvas-with-mask-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-mask-canvas-with-mask-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-mask-canvas-with-shadow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-mask-canvas-with-shadow-expected.png index 111ae3a..d06d683 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-mask-canvas-with-shadow-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-mask-canvas-with-shadow-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-percent-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-percent-expected.png index d0ce3106..98d69a7 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-percent-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-percent-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-with-composited-child-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-with-composited-child-expected.png index 74f33c6..2a611c00 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-with-composited-child-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/borders/border-radius-with-composited-child-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-expected.png index d212ad89..85be241 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-subpixel-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-subpixel-expected.png index 1da473f..1e0926a 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-subpixel-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/box-shadow/inset-subpixel-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/canvas/canvas-incremental-repaint-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/canvas/canvas-incremental-repaint-expected.png index b6ac2b1..8911f50 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/canvas/canvas-incremental-repaint-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/canvas/canvas-incremental-repaint-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/clip/overflow-border-radius-combinations-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/clip/overflow-border-radius-combinations-expected.png index 531de43..852e63c5d 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/clip/overflow-border-radius-combinations-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/clip/overflow-border-radius-combinations-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/clip/overflow-border-radius-composited-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/clip/overflow-border-radius-composited-expected.png index 9f573a7..c6d59d4d 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/clip/overflow-border-radius-composited-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/clip/overflow-border-radius-composited-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/clip/overflow-border-radius-composited-parent-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/clip/overflow-border-radius-composited-parent-expected.png index d83255b..837b4b5 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/clip/overflow-border-radius-composited-parent-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/clip/overflow-border-radius-composited-parent-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/clip/overflow-border-radius-transformed-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/clip/overflow-border-radius-transformed-expected.png index d2dc3d3..7ebef182 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/clip/overflow-border-radius-transformed-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/clip/overflow-border-radius-transformed-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png index 42a240f..62b4eb3 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/multicol/border-radius-clipped-layer-second-column-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/multicol/border-radius-clipped-layer-second-column-expected.png index d89de2d..7e72a95 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/multicol/border-radius-clipped-layer-second-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/multicol/border-radius-clipped-layer-second-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/overflow/overflow-with-local-background-attachment-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/overflow/overflow-with-local-background-attachment-expected.png index 4beda6bb..e72d7c5 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/overflow/overflow-with-local-background-attachment-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/overflow/overflow-with-local-background-attachment-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-cell-collapsed-border-expected.png index 3fbe4a2..e33b5256 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-cell-expected.png index 491c754..2e63962 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-collapsed-border-expected.png index 493d272b..25e7d1c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-collapsed-border-expected.png index e86cb4e7..8c3086e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-expected.png index cc1bc65b..b84c41e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-group-collapsed-border-expected.png index addd781..b591c41e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-group-expected.png index f30e6cb..1a6268f9 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-expected.png index 151811c3..5188451 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-quirks-collapsed-border-expected.png index 9ac5f48..c6fa676 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-quirks-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-quirks-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-quirks-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-quirks-expected.png index 84793cf8..5ca7612 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-quirks-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-quirks-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-collapsed-border-expected.png index fe28e4f..31440827 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-expected.png index 33e4d89..84a4735 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-group-collapsed-border-expected.png index bc25006..e130748 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-group-expected.png index 26fb4ea..61945be3 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_border-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_layers-hide-collapsed-border-expected.png index 307aa6c..75f5289c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_layers-hide-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_layers-hide-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_layers-hide-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_layers-hide-expected.png index 2cfe170d..0889a9a 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_layers-hide-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_layers-hide-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-cell-collapsed-border-expected.png index b2c67b2..d6ab0ea4 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-cell-expected.png index 4d16425..970c4af 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-collapsed-border-expected.png index b4ee0f4b..63ce03a9 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-collapsed-border-expected.png index 5ee837ce..b4cba4bb 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-expected.png index 7375a54..e952b4b 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-group-collapsed-border-expected.png index 2d8e8a9..9e6ff425 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-group-expected.png index 505053d3..b463b5ed 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-expected.png index 9de68671..2be66f6 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-collapsed-border-expected.png index c408508..3b2b7a2 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-expected.png index 946421c..b35ab12 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-group-collapsed-border-expected.png index 60c2f63..e3e3dd08 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-group-expected.png index 7183283..925910c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_position-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-cell-collapsed-border-expected.png index 71f8ec81..56a75e2 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-cell-expected.png index 8334521a..9a52e82 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-collapsed-border-expected.png index b7fd75e5..b3754c78 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-collapsed-border-expected.png index 08cd777..1ea0c8a 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-expected.png index e77f2b1..905ea95 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png index 36eaa1b..d1abea4 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-group-expected.png index e448e75..5443e33 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-expected.png index 3eb8469..ee8313d 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-collapsed-border-expected.png index 9251d590..23421cd59 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-expected.png index 977b6e4..07abb3a4 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png index 84a8312..14138a8 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-group-expected.png index 8b5f0d8..a238f804d 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/backgr_simple-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/001-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/001-expected.png index f187e87..39478ef 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/001-vertical-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/001-vertical-expected.png index 7984a0f..ca9cee03 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/001-vertical-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/table/border-collapsing/001-vertical-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/text/font-format-support-cbdt-sbix-cff2-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/text/font-format-support-cbdt-sbix-cff2-expected.png index f664702..813535d7 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/text/font-format-support-cbdt-sbix-cff2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/text/font-format-support-cbdt-sbix-cff2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-content-edge-001-expected.png b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-content-edge-001-expected.png index c2771f7..5b647686 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-content-edge-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-content-edge-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png index bcd4d70..06bdd53 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-not-inherited-001-expected.png b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-not-inherited-001-expected.png index 8c7a621..13611f346e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-not-inherited-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-not-inherited-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-shorthand-001-expected.png b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-shorthand-001-expected.png index 3375cd3f..85f23753 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-shorthand-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-shorthand-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png index 37acd3c..2357f22 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png index 0ec46a1..25489d7 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-004-expected.png b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-004-expected.png index 8b364da..cde61e5 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-004-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/ietestcenter/css3/bordersbackgrounds/border-radius-style-004-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/images/imagemap-focus-ring-zoom-expected.png b/third_party/WebKit/LayoutTests/platform/linux/images/imagemap-focus-ring-zoom-expected.png index 7977b23..51f413b 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/images/imagemap-focus-ring-zoom-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/images/imagemap-focus-ring-zoom-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.png index 13ad17d..8fe8acf 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.png index fdba594..059af34bd 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/text-repaint-including-stroke-expected.png b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/text-repaint-including-stroke-expected.png index 39cf5e8..60a3705 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/text-repaint-including-stroke-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/paint/invalidation/svg/text-repaint-including-stroke-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-125-expected.png b/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-125-expected.png index e4c0fce4..65a0ff0 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-125-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-125-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-150-expected.png b/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-150-expected.png index 2c32158b..f8d7ab9 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-150-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-150-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-175-expected.png b/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-175-expected.png index 6273062..5020241 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-175-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-175-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-200-expected.png b/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-200-expected.png index 1cde8bd..2664ed77 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-200-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-200-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-250-expected.png b/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-250-expected.png index ee2c80d..d07d05c4 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-250-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/paint/markers/document-markers-zoom-250-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png index b44b2a6b..e80d5b6 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png index 4cfdfb8f..b8abc91 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png index 7fac0bc..1acc746b 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png index 914c803d..273283a 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png index 0bd06d20..5041e26 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-26-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-26-t-expected.png index 6a99ac3..d3d5751 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-26-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-26-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-28-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-28-t-expected.png index 37419edd..e67d239 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-28-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-28-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-29-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-29-b-expected.png index 10345a2..1c74bf76 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-29-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-29-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png index 3222b3a..70f71b7 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-31-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-31-t-expected.png index 18e9950..fb68262 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-31-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-31-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png index e45daf4..27c4c18 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png index 396632d..758032b 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-39-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-39-t-expected.png index 81a3ba6..1f1a2ce 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-39-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-39-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png index d958042b..7d02fc3 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png index 0b55f7e..d4e3e3bc 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png index 5197fdf3..272b7fd 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png index e0c04b9..db7d14e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png index 82f542bff..0a774a435 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png index 28cc24a9..b9e49ca 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png index 8c8dcbf1..1eb3fb7 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/color-prop-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/color-prop-01-b-expected.png index dd4b31cc..98b0f61 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/color-prop-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/color-prop-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png index 62265ca..cbf0bff0 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png index 40b492b5..4bb10f5 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png index a9fad230..50106de 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png index b013c2f..25f7bda 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png index 0320e35..c846826c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png index c8c12f8..eab5067 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/interact-zoom-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/interact-zoom-01-t-expected.png index 6c4503d..7e5cb0d 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/interact-zoom-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/interact-zoom-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/linking-a-04-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/linking-a-04-t-expected.png index 727732c..5994445 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/linking-a-04-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/linking-a-04-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/linking-a-05-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/linking-a-05-t-expected.png index a0aab70..5cc0282 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/linking-a-05-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/linking-a-05-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/linking-a-07-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/linking-a-07-t-expected.png index a9fe12e..26e6e5c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/linking-a-07-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/linking-a-07-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png index 3e57ba0..13d6b7c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png index e2d8921..b0bdd30 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png index ad6f837..ecf5d3a1 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png index 81388ec..ea3f7ed1 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png index 961b29b..3ce48e7a 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-01-t-expected.png index 49bc7d4..d892e9c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-03-f-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-03-f-expected.png index eae96a7..f8cf8c1c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-03-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-03-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-04-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-04-t-expected.png index cf12fd1..18b502b 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-04-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-04-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-05-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-05-t-expected.png index 1cdea76..e336f16 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-05-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-05-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-08-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-08-t-expected.png index cc22133..fd629197 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-08-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-08-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-09-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-09-t-expected.png index df8cb7e..f4f5479 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-09-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-09-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-10-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-10-t-expected.png index d63a6d4..38391c6 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-10-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-10-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-12-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-12-t-expected.png index 2f0b65b..b6fa455 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-12-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-12-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-14-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-14-t-expected.png index 2acc3d2..4513786 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-14-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/paths-data-14-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.png index 09663d2..3d6b864 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-elems-02-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-elems-02-t-expected.png index 4759ad1..bde7a5d 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-elems-02-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-elems-02-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-elems-03-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-elems-03-t-expected.png index 7a1986d5..2764a253 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-elems-03-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-elems-03-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-elems-07-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-elems-07-t-expected.png index 00e7d8d..f5a0a1e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-elems-07-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-elems-07-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-elems-08-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-elems-08-t-expected.png index c233275..dd73b59 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-elems-08-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-elems-08-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-groups-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-groups-01-b-expected.png index 80741933..4de3252 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-groups-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-groups-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-groups-03-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-groups-03-t-expected.png index 050b27a1..eeb1d8c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-groups-03-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/render-groups-03-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/script-handle-02-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/script-handle-02-b-expected.png index 51b07c8..80387b7c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/script-handle-02-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/script-handle-02-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/script-handle-03-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/script-handle-03-b-expected.png index 43975be..7106a3b 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/script-handle-03-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/script-handle-03-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/script-handle-04-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/script-handle-04-b-expected.png index 4e264a3c..093196e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/script-handle-04-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/script-handle-04-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png index 07b0a9b2..25c15f1e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.png index 802e2e8..4df324ca 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-ellipse-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-ellipse-01-t-expected.png index 3b87496a..a89f519f 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-ellipse-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-ellipse-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.png index ea4b907d..0459606 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png index 611c6e6..9188508 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png index 70db92d..12807d9 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-rect-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-rect-01-t-expected.png index 5316afe..f9b3682 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-rect-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-rect-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-rect-02-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-rect-02-t-expected.png index 88b056c..fdc371a 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-rect-02-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/shapes-rect-02-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/struct-group-03-t-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/struct-group-03-t-expected.png index c2f4d16c..950fade 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/struct-group-03-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/struct-group-03-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/text-path-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/text-path-01-b-expected.png index 325219f..c23b61d8 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/text-path-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/text-path-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/text-text-08-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/text-text-08-b-expected.png index 474801e..f31a5f11 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/text-text-08-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/W3C-SVG-1.1/text-text-08-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png index e5f71af..9478cd4b8 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/as-background-image/svg-as-background-1-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/as-background-image/svg-as-background-1-expected.png index 2d4d665a..eb2b33b4 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/as-background-image/svg-as-background-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/as-background-image/svg-as-background-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/as-background-image/svg-as-background-5-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/as-background-image/svg-as-background-5-expected.png index 476671ea..8c997d2 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/as-background-image/svg-as-background-5-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/as-background-image/svg-as-background-5-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/as-background-image/svg-as-background-6-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/as-background-image/svg-as-background-6-expected.png index c654d1ed..256f682 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/as-background-image/svg-as-background-6-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/as-background-image/svg-as-background-6-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/batik/filters/feTile-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/batik/filters/feTile-expected.png index 1febd989..4ad2ccd 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/batik/filters/feTile-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/batik/filters/feTile-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/batik/text/textGlyphOrientationHorizontal-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/batik/text/textGlyphOrientationHorizontal-expected.png index ac086ef..c86020a19 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/batik/text/textGlyphOrientationHorizontal-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/batik/text/textGlyphOrientationHorizontal-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/carto.net/button-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/carto.net/button-expected.png index b45e79b9..7eceed2 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/carto.net/button-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/carto.net/button-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/invalid-css-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/invalid-css-expected.png index bf6c8c0e..5d508837 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/invalid-css-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/invalid-css-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png index c3cf0d4..a075b4e4 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-transform-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-transform-expected.png index eb4230c..8aa541b5a 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-transform-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-transform-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-viewBox-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-viewBox-expected.png index 248330c..361d64d 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-viewBox-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-viewBox-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-viewBox-transform-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-viewBox-transform-expected.png index 84afb585..a83c99ea 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-viewBox-transform-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-viewBox-transform-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-viewTarget-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-viewTarget-expected.png index c3cf0d4..a075b4e4 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-viewTarget-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-viewTarget-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-zoomAndPan-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-zoomAndPan-expected.png index c3cf0d4..a075b4e4 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-zoomAndPan-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/linking-a-03-b-zoomAndPan-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-on-symbol-inside-pattern-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-on-symbol-inside-pattern-expected.png index 164e937..e3977fa 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-on-symbol-inside-pattern-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-on-symbol-inside-pattern-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-transform-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-transform-expected.png index e7697df..3ff97a9 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-transform-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/custom/use-transform-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/error/017-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/error/017-expected.png index e9158cb..ab9410a 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/error/017-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/error/017-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/perf/001-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/perf/001-expected.png index 2aa98830..b383901 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/perf/001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/perf/001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/perf/002-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/perf/002-expected.png index a3187015..964a872 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/perf/002-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/perf/002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/perf/007-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/perf/007-expected.png index 7216f3e..6f4be6663 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/perf/007-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/hixie/perf/007-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/text/small-fonts-3-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/text/small-fonts-3-expected.png index 778504f6..d0844ae 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/text/small-fonts-3-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/text/small-fonts-3-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/text/text-selection-path-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/text/text-selection-path-01-b-expected.png index 60b68dc7..4e8f558a 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/text/text-selection-path-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/text/text-selection-path-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/text/text-selection-text-08-b-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/text/text-selection-text-08-b-expected.png index 34325f74..0d994bf 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/text/text-selection-text-08-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/text/text-selection-text-08-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png index ab61aa7..2cf365f 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/WebKit/LayoutTests/platform/linux/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png index 17a63c4..e1129ea3 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png index 265dfa63..bd218e4 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scaled-mask-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scaled-mask-expected.png index 0c1ea50..5d1fb10 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scaled-mask-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/compositing/overflow/scaled-mask-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-constraints-double-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-constraints-double-expected.png index 1e7e3190..75e7554 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-constraints-double-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-constraints-double-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-constraints-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-constraints-expected.png index 7bb6282..70c8da60 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-constraints-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-constraints-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-all-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-all-expected.png index 87ddac7..948282ea 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-all-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-all-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-mask-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-mask-expected.png index c384a04..045ee722 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-mask-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-mask-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-shadow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-shadow-expected.png deleted file mode 100644 index 111ae3a..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-mask-canvas-with-shadow-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-percent-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-percent-expected.png new file mode 100644 index 0000000..98d69a7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-percent-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-with-composited-child-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-with-composited-child-expected.png index 74f33c6..2a611c00 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-with-composited-child-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/borders/border-radius-with-composited-child-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/border-radius-clipped-layer-second-column-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/border-radius-clipped-layer-second-column-expected.png index d89de2d..7e72a95 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/border-radius-clipped-layer-second-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/fast/multicol/border-radius-clipped-layer-second-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.png index 13ad17d..8fe8acf 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-gradient-and-object-creation-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.png index fdba594..059af34bd 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/js-late-pattern-and-object-creation-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.png index 3cf5699..8b20413 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/repaint-paintorder-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/repaint-paintorder-expected.png index 79cdaac6..631f05d 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/repaint-paintorder-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/repaint-paintorder-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-repaint-including-stroke-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-repaint-including-stroke-expected.png index 39cf5e8..60a3705 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-repaint-including-stroke-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/text-repaint-including-stroke-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-125-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-125-expected.png index e4c0fce4..65a0ff0 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-125-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-125-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-150-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-150-expected.png index 2c32158b..f8d7ab9 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-150-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-150-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-175-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-175-expected.png index 6273062..5020241 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-175-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-175-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-200-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-200-expected.png index 1cde8bd..2664ed77 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-200-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-200-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-250-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-250-expected.png index ee2c80d..d07d05c4 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-250-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/markers/document-markers-zoom-250-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png index b44b2a6b..e80d5b6 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/exotic-color-space/images/imagemap-focus-ring-zoom-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/exotic-color-space/images/imagemap-focus-ring-zoom-expected.png index 71e0adf..47910c56 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/exotic-color-space/images/imagemap-focus-ring-zoom-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/exotic-color-space/images/imagemap-focus-ring-zoom-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.png new file mode 100644 index 0000000..7db66c0 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.txt new file mode 100644 index 0000000..11a0a15 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.txt
@@ -0,0 +1,25 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x248 + LayoutNGBlockFlow {HTML} at (0,0) size 800x248 + LayoutNGBlockFlow {BODY} at (8,16) size 784x224 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 718x39 + text run at (0,0) width 718: "The word 'PASS' should be seen below on the right hand side, inside a rounded box with black border and yellow" + text run at (0,20) width 79: "background." +layer at (8,72) size 784x168 + LayoutNGBlockFlow {DIV} at (0,56) size 784x168 + LayoutMultiColumnSet (anonymous) at (0,0) size 784x168 +layer at (8,72) size 392x264 backgroundClip at (0,0) size 400x240 clip at (0,0) size 400x240 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 392x264 + LayoutNGBlockFlow (anonymous) at (0,0) size 392x200 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 + LayoutBR {BR} at (0,134) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (400,104) size 392x64 clip at (416,120) size 360x32 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,200) size 392x64 [bgcolor=#FFFF00] [border: (16px solid #000000)] + LayoutText {#text} at (177,22) size 38x19 + text run at (177,22) width 38: "PASS"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-inner-multicol-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-inner-multicol-expected.txt new file mode 100644 index 0000000..7741989e --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-inner-multicol-expected.txt
@@ -0,0 +1,40 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x200 + LayoutNGBlockFlow {HTML} at (0,0) size 800x200 + LayoutNGBlockFlow {BODY} at (8,16) size 784x176 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 753x39 + text run at (0,0) width 753: "Below you should see the word 'PASS' (with some extra letter spacing), on a yellow background (which should be a bit" + text run at (0,20) width 694: "faded near the top). The first S is below the A, because they composite together and hence are not fragmented." +layer at (8,72) size 480x120 + LayoutNGBlockFlow {DIV} at (0,56) size 480x120 + LayoutMultiColumnSet (anonymous) at (0,0) size 480x120 +layer at (8,72) size 240x240 backgroundClip at (0,0) size 248x192 clip at (0,0) size 248x192 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 240x240 + LayoutNGBlockFlow (anonymous) at (0,0) size 240x184 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (256,136) size 80x48 + LayoutNGBlockFlow {DIV} at (8,184) size 80x48 [bgcolor=#FFFF00] + LayoutMultiColumnSet (anonymous) at (8,8) size 64x32 +layer at (264,144) size 16x128 backgroundClip at (248,72) size 32x104 clip at (248,72) size 32x104 + LayoutMultiColumnFlowThread (anonymous) at (8,8) size 16x128 + LayoutNGBlockFlow (anonymous) at (0,0) size 16x32 + LayoutText {#text} at (0,6) size 9x19 + text run at (0,6) width 9: "P" + LayoutBR {BR} at (9,6) size 0x0 + LayoutNGBlockFlow (anonymous) at (0,96) size 16x32 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (240,72) size 112x53 transparent + LayoutNGBlockFlow (positioned) {DIV} at (240,72) size 112x52.80 [bgcolor=#FFFFFF] +layer at (280,144) size 16x64 backgroundClip at (280,144) size 16x32 clip at (280,144) size 16x32 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,32) size 16x64 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-expected.txt new file mode 100644 index 0000000..1d7052f --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-expected.txt
@@ -0,0 +1,43 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x320 + LayoutNGBlockFlow {HTML} at (0,0) size 800x320 + LayoutNGBlockFlow {BODY} at (8,16) size 784x256 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 727x39 + text run at (0,0) width 727: "If no compositing were present, there should be two green squares below. Since some elements are composited, and" + text run at (0,20) width 301: "therefore not fragmented, the output is different." +layer at (8,104) size 60x60 + LayoutNGBlockFlow {DIV} at (0,88) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,104) size 20x180 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,140) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,212) size 60x60 + LayoutNGBlockFlow {DIV} at (0,196) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,212) size 20x180 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,140) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,144) size 20x40 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutNGBlockFlow {DIV} at (0,40) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (28,144) size 20x40 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutNGBlockFlow {DIV} at (0,100) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (8,252) size 20x100 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutNGBlockFlow {DIV} at (0,40) size 20x100 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,60) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-translated-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-translated-expected.txt new file mode 100644 index 0000000..a258b6a --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-translated-expected.txt
@@ -0,0 +1,27 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x140 + LayoutNGBlockFlow {HTML} at (0,0) size 800x140 + LayoutNGBlockFlow {BODY} at (8,16) size 784x116 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 778x39 + text run at (0,0) width 778: "There should be two small green squares vertically aligned below, and another red square to the top-right. The second green" + text run at (0,20) width 535: "square does not overlap the red because it is conmposited, and hence not fragmented." +layer at (8,72) size 60x60 + LayoutNGBlockFlow {DIV} at (0,56) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,72) size 20x180 backgroundClip at (0,0) size 28x132 clip at (0,0) size 28x132 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow (anonymous) at (0,0) size 20x100 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,20) size 0x0 + LayoutBR {BR} at (0,40) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#FF0000] +layer at (28,112) size 20x60 backgroundClip at (0,0) size 28x132 clip at (0,0) size 28x132 + LayoutNGBlockFlow {DIV} at (0,100) size 20x60 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow (anonymous) at (0,20) size 20x20 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-layer-nested-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-layer-nested-expected.txt new file mode 100644 index 0000000..1358f763 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-layer-nested-expected.txt
@@ -0,0 +1,51 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x320 + LayoutNGBlockFlow {HTML} at (0,0) size 800x320 + LayoutNGBlockFlow {BODY} at (8,16) size 784x256 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 727x39 + text run at (0,0) width 727: "If no compositing were present, there should be two green squares below. Since some elements are composited, and" + text run at (0,20) width 301: "therefore not fragmented, the output is different." +layer at (8,104) size 60x60 + LayoutNGBlockFlow {DIV} at (0,88) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,104) size 20x180 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,100) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,120) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,140) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,212) size 60x60 + LayoutNGBlockFlow {DIV} at (0,196) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,212) size 20x180 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 +layer at (8,124) size 20x80 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutNGBlockFlow {DIV} at (0,20) size 20x80 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,60) size 20x20 [bgcolor=#008000] +layer at (8,144) size 20x40 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutNGBlockFlow {DIV} at (0,20) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (8,212) size 20x180 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutNGBlockFlow {DIV} at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000] +layer at (8,212) size 20x80 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutNGBlockFlow {DIV} at (0,0) size 20x80 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (8,252) size 20x40 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutNGBlockFlow {DIV} at (0,40) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (8,312) size 20x80 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutNGBlockFlow {DIV} at (0,100) size 20x80 + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,60) size 20x20 [bgcolor=#008000] +layer at (8,312) size 20x40 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutNGBlockFlow {DIV} at (0,0) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-layer-will-change-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-layer-will-change-expected.txt new file mode 100644 index 0000000..0b39004 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-layer-will-change-expected.txt
@@ -0,0 +1,69 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x428 + LayoutNGBlockFlow {HTML} at (0,0) size 800x428 + LayoutNGBlockFlow {BODY} at (8,16) size 784x364 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 727x39 + text run at (0,0) width 727: "If no compositing were present, there should be two green squares below. Since some elements are composited, and" + text run at (0,20) width 301: "therefore not fragmented, the output is different." +layer at (8,104) size 60x60 + LayoutNGBlockFlow {DIV} at (0,88) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,104) size 20x180 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,212) size 60x60 + LayoutNGBlockFlow {DIV} at (0,196) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,212) size 20x180 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,320) size 60x60 + LayoutNGBlockFlow {DIV} at (0,304) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,320) size 20x180 backgroundClip at (0,0) size 28x380 clip at (0,0) size 28x380 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,104) size 20x20 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] +layer at (8,144) size 20x40 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutNGBlockFlow {DIV} at (0,40) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (28,144) size 20x60 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutNGBlockFlow {DIV} at (0,100) size 20x60 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000] +layer at (8,212) size 20x20 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] +layer at (8,252) size 20x40 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutNGBlockFlow {DIV} at (0,40) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (28,252) size 20x60 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutNGBlockFlow {DIV} at (0,100) size 20x60 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000] +layer at (8,320) size 20x20 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,0) size 20x20 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] +layer at (8,360) size 20x40 backgroundClip at (0,0) size 28x380 clip at (0,0) size 28x380 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,40) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (28,360) size 20x60 backgroundClip at (0,0) size 28x380 clip at (0,0) size 28x380 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,100) size 20x60 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-opacity-2nd-and-3rd-column-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-opacity-2nd-and-3rd-column-expected.txt new file mode 100644 index 0000000..47b0eea --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-opacity-2nd-and-3rd-column-expected.txt
@@ -0,0 +1,39 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x288 + LayoutNGBlockFlow {HTML} at (0,0) size 800x288 + LayoutNGBlockFlow {BODY} at (8,16) size 784x264 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 210x19 + text run at (0,0) width 210: "The word 'PASS' should be seen " + LayoutInline {EM} at (0,0) size 33x19 + LayoutText {#text} at (210,0) size 33x19 + text run at (210,0) width 33: "twice" + LayoutText {#text} at (243,0) size 781x39 + text run at (243,0) width 538: " below. The second PASS is not overlapping the yellow because it is composited with" + text run at (0,20) width 249: "the first one, and hence not fragmented." +layer at (8,72) size 272x208 + LayoutNGBlockFlow {DIV} at (0,56) size 272x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 272x208 +layer at (8,72) size 80x456 backgroundClip at (0,0) size 96x280 clip at (0,0) size 96x280 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 80x456 + LayoutNGBlockFlow (anonymous) at (0,0) size 80x368 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 + LayoutBR {BR} at (0,134) size 0x0 + LayoutBR {BR} at (0,166) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,72) size 800x128 + LayoutNGBlockFlow (positioned) {DIV} at (0,72) size 800x128 [bgcolor=#FFFF00] +layer at (112,232) size 64x80 backgroundClip at (0,0) size 96x280 clip at (0,0) size 96x280 transparent + LayoutNGBlockFlow {DIV} at (8,368) size 64x80 + LayoutText {#text} at (0,6) size 37x19 + text run at (0,6) width 37: "PASS" + LayoutBR {BR} at (37,6) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-relpos-clipped-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-relpos-clipped-expected.txt new file mode 100644 index 0000000..1c6f2b0 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-relpos-clipped-expected.txt
@@ -0,0 +1,37 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x288 + LayoutNGBlockFlow {HTML} at (0,0) size 800x288 + LayoutNGBlockFlow {BODY} at (8,16) size 784x264 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 769x39 + text run at (0,0) width 769: "There should be one yellow boxes below, on a blue background. There is only one because the content is composited, and" + text run at (0,20) width 140: "hence not fragmented." +layer at (8,72) size 272x208 + LayoutNGBlockFlow {DIV} at (0,56) size 272x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 272x208 +layer at (8,72) size 128x272 backgroundClip at (0,0) size 144x280 clip at (0,0) size 144x280 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 128x272 + LayoutNGBlockFlow (anonymous) at (0,0) size 128x128 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 +layer at (0,72) size 800x208 + LayoutNGBlockFlow (positioned) {DIV} at (0,72) size 800x208 [bgcolor=#0000FF] +layer at (16,208) size 112x136 backgroundClip at (16,208) size 112x72 clip at (16,208) size 112x72 scrollHeight 176 + LayoutNGBlockFlow (relative positioned) {DIV} at (8,136) size 112x136 [bgcolor=#FFFF00] + LayoutNGBlockFlow (anonymous) at (0,0) size 112x144 + LayoutText {#text} at (0,6) size 24x19 + text run at (0,6) width 24: "first" + LayoutBR {BR} at (24,6) size 0x0 + LayoutText {#text} at (0,38) size 47x19 + text run at (0,38) width 47: "column" + LayoutBR {BR} at (47,38) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (0,144) size 112x32 [bgcolor=#FF0000] + LayoutText {#text} at (0,6) size 34x19 + text run at (0,6) width 34: "FAIL"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-relpos-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-relpos-expected.txt new file mode 100644 index 0000000..76cba5b7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-relpos-expected.txt
@@ -0,0 +1,33 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x288 + LayoutNGBlockFlow {HTML} at (0,0) size 800x288 + LayoutNGBlockFlow {BODY} at (8,16) size 784x264 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 752x39 + text run at (0,0) width 752: "There should be one yellow boxbelow, on a blue background. There is only one because the content is composited, and" + text run at (0,20) width 140: "hence not fragmented." +layer at (8,72) size 272x208 + LayoutNGBlockFlow {DIV} at (0,56) size 272x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 272x208 +layer at (8,72) size 128x280 backgroundClip at (0,0) size 144x280 clip at (0,0) size 144x280 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 128x280 + LayoutNGBlockFlow (anonymous) at (0,0) size 128x128 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 +layer at (0,72) size 800x208 + LayoutNGBlockFlow (positioned) {DIV} at (0,72) size 800x208 [bgcolor=#0000FF] +layer at (16,208) size 112x136 backgroundClip at (0,0) size 144x280 clip at (0,0) size 144x280 + LayoutNGBlockFlow (relative positioned) {DIV} at (8,136) size 112x136 [bgcolor=#FFFF00] + LayoutText {#text} at (0,6) size 24x19 + text run at (0,6) width 24: "first" + LayoutBR {BR} at (24,6) size 0x0 + LayoutText {#text} at (0,38) size 47x19 + text run at (0,38) width 47: "column" + LayoutBR {BR} at (47,38) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-relpos-in-clipped-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-relpos-in-clipped-expected.txt new file mode 100644 index 0000000..5ba239dd --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-relpos-in-clipped-expected.txt
@@ -0,0 +1,36 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x268 + LayoutNGBlockFlow {HTML} at (0,0) size 800x268 + LayoutNGBlockFlow {BODY} at (8,16) size 784x244 + LayoutNGBlockFlow {P} at (0,0) size 784x20 + LayoutText {#text} at (0,0) size 701x19 + text run at (0,0) width 701: "There should be one yellow box below, on a blue background. the \"second column\" part should be clipped out." +layer at (8,52) size 272x208 + LayoutNGBlockFlow {DIV} at (0,36) size 272x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 272x208 +layer at (8,52) size 128x272 backgroundClip at (8,52) size 136x208 clip at (8,52) size 136x208 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 128x272 + LayoutNGBlockFlow (anonymous) at (0,0) size 128x128 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 +layer at (0,52) size 800x208 + LayoutNGBlockFlow (positioned) {DIV} at (0,52) size 800x208 [bgcolor=#0000FF] +layer at (16,188) size 112x136 backgroundClip at (16,188) size 112x72 clip at (16,188) size 112x72 scrollHeight 176 + LayoutNGBlockFlow (relative positioned) {DIV} at (8,136) size 112x136 [bgcolor=#FFFF00] + LayoutNGBlockFlow (anonymous) at (0,0) size 112x144 + LayoutText {#text} at (0,6) size 24x19 + text run at (0,6) width 24: "first" + LayoutBR {BR} at (24,6) size 0x0 + LayoutText {#text} at (0,38) size 47x19 + text run at (0,38) width 47: "column" + LayoutBR {BR} at (47,38) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (0,144) size 112x32 [bgcolor=#FF0000] + LayoutText {#text} at (0,6) size 34x19 + text run at (0,6) width 34: "FAIL"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-relpos-overlapping-will-change-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-relpos-overlapping-will-change-expected.txt new file mode 100644 index 0000000..97e8220 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-relpos-overlapping-will-change-expected.txt
@@ -0,0 +1,39 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x288 + LayoutNGBlockFlow {HTML} at (0,0) size 800x288 + LayoutNGBlockFlow {BODY} at (8,16) size 784x264 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 210x19 + text run at (0,0) width 210: "The word 'PASS' should be seen " + LayoutInline {EM} at (0,0) size 33x19 + LayoutText {#text} at (210,0) size 33x19 + text run at (210,0) width 33: "twice" + LayoutText {#text} at (243,0) size 781x39 + text run at (243,0) width 538: " below. The second PASS is not overlapping the yellow because it is composited with" + text run at (0,20) width 249: "the first one, and hence not fragmented." +layer at (8,72) size 560x208 + LayoutNGBlockFlow {DIV} at (0,56) size 560x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 560x208 +layer at (8,72) size 176x456 backgroundClip at (0,0) size 192x280 clip at (0,0) size 192x280 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 176x456 + LayoutNGBlockFlow (anonymous) at (0,0) size 176x368 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 + LayoutBR {BR} at (0,134) size 0x0 + LayoutBR {BR} at (0,166) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,72) size 800x128 + LayoutNGBlockFlow (positioned) {DIV} at (0,72) size 800x128 [bgcolor=#FFFF00] +layer at (208,232) size 160x80 backgroundClip at (0,0) size 192x280 clip at (0,0) size 192x280 + LayoutNGBlockFlow (relative positioned) {DIV} at (8,368) size 160x80 + LayoutText {#text} at (0,6) size 37x19 + text run at (0,6) width 37: "PASS" + LayoutBR {BR} at (37,6) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-relpos-resize-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-relpos-resize-expected.txt new file mode 100644 index 0000000..311d0a7d --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-relpos-resize-expected.txt
@@ -0,0 +1,32 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x268 + LayoutNGBlockFlow {HTML} at (0,0) size 800x268 + LayoutNGBlockFlow {BODY} at (8,16) size 784x244 + LayoutNGBlockFlow {P} at (0,0) size 784x20 + LayoutText {#text} at (0,0) size 755x19 + text run at (0,0) width 755: "There should be one yellow box below. There is only one because the content is composited, and hence not fragmented." +layer at (8,52) size 706x208 + LayoutNGBlockFlow {DIV} at (0,36) size 705.59x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 705.59x208 +layer at (8,52) size 353x280 backgroundClip at (0,0) size 361x260 clip at (0,0) size 361x260 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 352.80x280 + LayoutNGBlockFlow (anonymous) at (0,0) size 352.80x128 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 +layer at (0,52) size 800x240 + LayoutNGBlockFlow (positioned) {DIV} at (0,52) size 800x240 [bgcolor=#00FFFF] +layer at (16,188) size 337x136 backgroundClip at (0,0) size 361x260 clip at (0,0) size 361x260 + LayoutNGBlockFlow (relative positioned) {DIV} at (8,136) size 336.80x136 [bgcolor=#FFFF00] + LayoutText {#text} at (0,6) size 24x19 + text run at (0,6) width 24: "first" + LayoutBR {BR} at (24,6) size 0x0 + LayoutText {#text} at (0,38) size 47x19 + text run at (0,38) width 47: "column" + LayoutBR {BR} at (47,38) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-with-child-layer-in-next-column-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-with-child-layer-in-next-column-expected.txt new file mode 100644 index 0000000..57be753 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-with-child-layer-in-next-column-expected.txt
@@ -0,0 +1,33 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x224 + LayoutNGBlockFlow {HTML} at (0,0) size 800x224 + LayoutNGBlockFlow {BODY} at (8,16) size 784x200 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 739x39 + text run at (0,0) width 739: "There should be a yellow box in the second column, and the word 'PASS' should be below it. PASS is not in the third" + text run at (0,20) width 461: "column because they are composited together, and hence not fragmented." +layer at (8,72) size 272x144 + LayoutNGBlockFlow {DIV} at (0,56) size 272x144 + LayoutMultiColumnSet (anonymous) at (0,0) size 272x144 +layer at (8,72) size 80x272 backgroundClip at (0,0) size 96x216 clip at (0,0) size 96x216 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 80x272 + LayoutNGBlockFlow (anonymous) at (0,0) size 80x240 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,72) size 800x144 + LayoutNGBlockFlow (positioned) {DIV} at (0,72) size 800x144 [bgcolor=#00FFFF] +layer at (104,168) size 80x32 backgroundClip at (0,0) size 96x216 clip at (0,0) size 96x216 + LayoutNGBlockFlow (relative positioned) zI: 2 {DIV} at (0,240) size 80x32 [bgcolor=#FFFF00] + LayoutNGBlockFlow (anonymous) at (0,0) size 80x80 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (112,232) size 64x32 backgroundClip at (0,0) size 96x216 clip at (0,0) size 96x216 transparent + LayoutNGBlockFlow {DIV} at (8,64) size 64x32 + LayoutText {#text} at (0,6) size 37x19 + text run at (0,6) width 37: "PASS"
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-with-overflow-in-next-column-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-with-overflow-in-next-column-expected.txt new file mode 100644 index 0000000..e6c786c --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/composited-with-overflow-in-next-column-expected.txt
@@ -0,0 +1,28 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x204 + LayoutNGBlockFlow {HTML} at (0,0) size 800x204 + LayoutNGBlockFlow {BODY} at (8,16) size 784x180 + LayoutNGBlockFlow {P} at (0,0) size 784x20 + LayoutText {#text} at (0,0) size 378x19 + text run at (0,0) width 378: "The word 'PASS' should be seen below, in the third column." +layer at (8,52) size 784x144 + LayoutNGBlockFlow {DIV} at (0,36) size 784x144 + LayoutMultiColumnSet (anonymous) at (0,0) size 784x144 +layer at (8,52) size 251x256 backgroundClip at (0,0) size 267x196 clip at (0,0) size 267x196 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 250.66x256 + LayoutNGBlockFlow (anonymous) at (0,0) size 250.66x240 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,100) size 800x18 + LayoutNGBlockFlow (positioned) {DIV} at (0,100) size 800x18 [border: (1px dotted #000000)] +layer at (275,148) size 251x16 backgroundClip at (0,0) size 267x196 clip at (0,0) size 267x196 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,240) size 250.66x16 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/layers-in-multicol-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/layers-in-multicol-expected.txt new file mode 100644 index 0000000..3d40eab --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/layers-in-multicol-expected.txt
@@ -0,0 +1,92 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x320 + LayoutNGBlockFlow {HTML} at (0,0) size 800x320 + LayoutNGBlockFlow {BODY} at (8,16) size 784x296 + LayoutNGBlockFlow {P} at (0,0) size 784x20 + LayoutText {#text} at (0,0) size 381x19 + text run at (0,0) width 381: "Test layers which are fully contained within a single column." + LayoutNGBlockFlow (anonymous) at (0,36) size 784x20 + LayoutText {#text} at (0,0) size 33x19 + text run at (0,0) width 33: "LTR:" + LayoutNGBlockFlow (anonymous) at (0,166) size 784x20 + LayoutText {#text} at (0,0) size 35x19 + text run at (0,0) width 35: "RTL:" +layer at (8,72) size 310x110 + LayoutNGBlockFlow {DIV} at (0,56) size 310x110 [border: (5px solid #800000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 300x100 +layer at (13,77) size 100x280 backgroundClip at (0,0) size 113x177 clip at (0,0) size 113x177 + LayoutMultiColumnFlowThread (anonymous) at (5,5) size 100x280 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (105,30) size 16x10 [bgcolor=#008000] + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 +layer at (8,202) size 310x110 + LayoutNGBlockFlow {DIV} at (0,186) size 310x110 [border: (5px solid #800000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 300x100 +layer at (213,207) size 100x280 backgroundClip at (213,0) size 587x307 clip at (213,0) size 587x307 + LayoutMultiColumnFlowThread (anonymous) at (205,5) size 100x280 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (189,30) size 16x10 [bgcolor=#008000] + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 +layer at (13,73) size 0x0 + LayoutInline (relative positioned) {SPAN} at (0,0) size 0x0 [color=#008000] + LayoutText {#text} at (0,0) size 0x0 +layer at (13,77) size 0x0 transparent + LayoutInline {SPAN} at (0,0) size 0x0 [color=#008000] + LayoutText {#text} at (0,0) size 0x0 + LayoutInline {SPAN} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 +layer at (213,203) size 0x0 + LayoutInline (relative positioned) {SPAN} at (0,0) size 0x0 [color=#008000] + LayoutText {#text} at (0,0) size 0x0 +layer at (213,207) size 0x0 transparent + LayoutInline {SPAN} at (0,0) size 0x0 [color=#008000] + LayoutText {#text} at (0,0) size 0x0 + LayoutInline {SPAN} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/layers-split-across-columns-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/layers-split-across-columns-expected.txt new file mode 100644 index 0000000..59b8af3d --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/layers-split-across-columns-expected.txt
@@ -0,0 +1,84 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x8 + LayoutNGBlockFlow {HTML} at (0,0) size 800x8 + LayoutNGBlockFlow {BODY} at (8,8) size 784x0 +layer at (10,10) size 120x180 + LayoutNGBlockFlow (positioned) {DIV} at (10,10) size 120x180 + LayoutNGBlockFlow (anonymous) at (0,0) size 120x20 + LayoutText {#text} at (0,0) size 65x19 + text run at (0,0) width 65: "Overflow:" +layer at (10,30) size 120x160 + LayoutNGBlockFlow {DIV} at (0,20) size 120x160 [border: (5px solid #000000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 110x150 +layer at (15,35) size 50x300 backgroundClip at (0,0) size 70x185 clip at (0,0) size 70x185 + LayoutMultiColumnFlowThread (anonymous) at (5,5) size 50x300 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#000000] + LayoutNGBlockFlow {DIV} at (0,250) size 50x50 [bgcolor=#000000] +layer at (15,85) size 50x200 backgroundClip at (15,85) size 50x100 clip at (15,85) size 50x100 + LayoutNGBlockFlow {DIV} at (0,50) size 50x200 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#0000F0] + LayoutNGBlockFlow {DIV} at (0,50) size 50x50 [bgcolor=#0000D0] + LayoutNGBlockFlow {DIV} at (0,100) size 50x50 [bgcolor=#0000B0] + LayoutNGBlockFlow {DIV} at (0,150) size 50x50 [bgcolor=#000090] +layer at (150,10) size 120x180 + LayoutNGBlockFlow (positioned) {DIV} at (150,10) size 120x180 + LayoutNGBlockFlow (anonymous) at (0,0) size 120x20 + LayoutText {#text} at (0,0) size 76x19 + text run at (0,0) width 76: "Transforms:" +layer at (150,30) size 120x160 + LayoutNGBlockFlow {DIV} at (0,20) size 120x160 [border: (5px solid #000000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 110x150 +layer at (155,35) size 50x300 backgroundClip at (0,0) size 210x185 clip at (0,0) size 210x185 + LayoutMultiColumnFlowThread (anonymous) at (5,5) size 50x300 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#000000] + LayoutNGBlockFlow {DIV} at (0,250) size 50x50 [bgcolor=#000000] +layer at (55,85) size 50x200 backgroundClip at (0,0) size 210x185 clip at (0,0) size 210x185 + LayoutNGBlockFlow {DIV} at (-100,50) size 50x200 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#0000F0] + LayoutNGBlockFlow {DIV} at (0,50) size 50x50 [bgcolor=#0000D0] + LayoutNGBlockFlow {DIV} at (0,100) size 50x50 [bgcolor=#0000B0] + LayoutNGBlockFlow {DIV} at (0,150) size 50x50 [bgcolor=#000090] +layer at (10,200) size 120x180 + LayoutNGBlockFlow (positioned) {DIV} at (10,200) size 120x180 + LayoutNGBlockFlow (anonymous) at (0,0) size 120x20 + LayoutText {#text} at (0,0) size 87x19 + text run at (0,0) width 87: "Relative Pos.:" +layer at (10,220) size 120x160 + LayoutNGBlockFlow {DIV} at (0,20) size 120x160 [border: (5px solid #000000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 110x150 +layer at (15,225) size 50x300 backgroundClip at (0,0) size 70x375 clip at (0,0) size 70x375 + LayoutMultiColumnFlowThread (anonymous) at (5,5) size 50x300 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#000000] + LayoutNGBlockFlow {DIV} at (0,250) size 50x50 [bgcolor=#000000] +layer at (15,275) size 50x200 backgroundClip at (0,0) size 70x375 clip at (0,0) size 70x375 + LayoutNGBlockFlow (relative positioned) {DIV} at (-100,50) size 50x200 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#0000F0] + LayoutNGBlockFlow {DIV} at (0,50) size 50x50 [bgcolor=#0000D0] + LayoutNGBlockFlow {DIV} at (0,100) size 50x50 [bgcolor=#0000B0] + LayoutNGBlockFlow {DIV} at (0,150) size 50x50 [bgcolor=#000090] +layer at (150,200) size 120x180 + LayoutNGBlockFlow (positioned) {DIV} at (150,200) size 120x180 + LayoutNGBlockFlow (anonymous) at (0,0) size 120x20 + LayoutText {#text} at (0,0) size 54x19 + text run at (0,0) width 54: "Opacity:" +layer at (150,220) size 120x160 + LayoutNGBlockFlow {DIV} at (0,20) size 120x160 [border: (5px solid #000000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 110x150 +layer at (155,225) size 50x300 backgroundClip at (0,0) size 210x375 clip at (0,0) size 210x375 + LayoutMultiColumnFlowThread (anonymous) at (5,5) size 50x300 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#000000] + LayoutNGBlockFlow {DIV} at (0,250) size 50x50 [bgcolor=#000000] +layer at (155,275) size 50x200 backgroundClip at (0,0) size 210x375 clip at (0,0) size 210x375 transparent + LayoutNGBlockFlow {DIV} at (0,50) size 50x200 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#0000F0] + LayoutText {#text} at (0,0) size 4x19 + text run at (0,0) width 4: " " + LayoutNGBlockFlow {DIV} at (0,50) size 50x50 [bgcolor=#0000D0] + LayoutText {#text} at (0,0) size 4x19 + text run at (0,0) width 4: " " + LayoutNGBlockFlow {DIV} at (0,100) size 50x50 [bgcolor=#0000B0] + LayoutText {#text} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (0,150) size 50x50 [bgcolor=#000090] + LayoutText {#text} at (0,0) size 4x19 + text run at (0,0) width 4: " "
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/multicol-with-child-renderLayer-for-input-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/multicol-with-child-renderLayer-for-input-expected.txt new file mode 100644 index 0000000..64aba0d8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/multicol-with-child-renderLayer-for-input-expected.txt
@@ -0,0 +1,19 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutNGBlockFlow {HTML} at (0,0) size 800x600 + LayoutNGBlockFlow {BODY} at (8,8) size 784x584 +layer at (8,8) size 784x66 + LayoutNGBlockFlow {DIV} at (0,0) size 784x66 + LayoutMultiColumnSet (anonymous) at (0,0) size 784x66 +layer at (8,8) size 384x132 backgroundClip at (0,0) size 400x74 clip at (0,0) size 400x74 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 384x132 + LayoutText {#text} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 +layer at (410,50) size 181x22 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0 + LayoutTextControl (relative positioned) {INPUT} at (402,42) size 181x22 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] +layer at (412,53) size 177x16 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0 + LayoutBlockFlow {DIV} at (2,3) size 177x16 + LayoutText {#text} at (0,0) size 42x16 + text run at (0,0) width 42: "Testing" +caret: position 7 of child 0 {#text} of child 0 {DIV} of {#document-fragment} of child 1 {INPUT} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/span/invalid-spanner-in-transform-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/span/invalid-spanner-in-transform-expected.txt new file mode 100644 index 0000000..70ea10cd --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/span/invalid-spanner-in-transform-expected.txt
@@ -0,0 +1,18 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x110 + LayoutNGBlockFlow {HTML} at (0,0) size 800x110 + LayoutNGBlockFlow {BODY} at (8,16) size 784x86 + LayoutNGBlockFlow {P} at (0,0) size 784x20 + LayoutText {#text} at (0,0) size 743x19 + text run at (0,0) width 743: "There should be one blue square below. It is not two because they are composited together, and hence not fragmented." +layer at (8,52) size 110x50 + LayoutNGBlockFlow {DIV} at (0,36) size 110x50 + LayoutMultiColumnSet (anonymous) at (0,0) size 110x50 +layer at (8,52) size 50x100 backgroundClip at (0,0) size 63x102 clip at (0,0) size 63x102 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 50x100 +layer at (8,52) size 50x100 backgroundClip at (0,0) size 63x102 clip at (0,0) size 63x102 + LayoutNGBlockFlow {DIV} at (0,0) size 50x100 + LayoutNGBlockFlow {DIV} at (0,0) size 50x100 [bgcolor=#0000FF] + LayoutBR {BR} at (0,15) size 0x0 + LayoutBR {BR} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change-expected.txt new file mode 100644 index 0000000..d71d322 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change-expected.txt
@@ -0,0 +1,40 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x496 + LayoutNGBlockFlow {HTML} at (0,0) size 800x496 + LayoutNGBlockFlow {BODY} at (8,16) size 784x472 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 210x19 + text run at (0,0) width 210: "The word 'PASS' should be seen " + LayoutInline {EM} at (0,0) size 33x19 + LayoutText {#text} at (210,0) size 33x19 + text run at (210,0) width 33: "twice" + LayoutText {#text} at (243,0) size 706x39 + text run at (243,0) width 463: " below. They appear together because they are composited, and hence not" + text run at (0,20) width 75: "fragmented." +layer at (8,72) size 208x416 + LayoutNGBlockFlow {DIV} at (0,56) size 208x416 + LayoutMultiColumnSet (anonymous) at (0,0) size 208x416 +layer at (8,72) size 456x128 backgroundClip at (0,0) size 216x208 clip at (0,0) size 216x208 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 456x128 + LayoutNGBlockFlow (anonymous) at (0,0) size 368x128 + LayoutBR {BR} at (6,0) size 0x0 + LayoutBR {BR} at (38,0) size 0x0 + LayoutBR {BR} at (70,0) size 0x0 + LayoutBR {BR} at (102,0) size 0x0 + LayoutBR {BR} at (134,0) size 0x0 + LayoutBR {BR} at (166,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,64) size 160x288 + LayoutNGBlockFlow (positioned) {DIV} at (0,64) size 160x288 [bgcolor=#FFFF00] +layer at (168,288) size 80x112 backgroundClip at (0,0) size 216x208 clip at (0,0) size 216x208 + LayoutNGBlockFlow (relative positioned) {DIV} at (160,216) size 80x112 + LayoutText {#text} at (6,0) size 19x37 + text run at (6,0) width 37: "PASS" + LayoutBR {BR} at (6,37) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change-expected.txt new file mode 100644 index 0000000..560d4b526 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/layout_ng_experimental/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change-expected.txt
@@ -0,0 +1,39 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x496 + LayoutNGBlockFlow {HTML} at (0,0) size 800x496 + LayoutNGBlockFlow {BODY} at (8,16) size 784x472 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 210x19 + text run at (0,0) width 210: "The word 'PASS' should be seen " + LayoutInline {EM} at (0,0) size 33x19 + LayoutText {#text} at (210,0) size 33x19 + text run at (210,0) width 33: "twice" + LayoutText {#text} at (243,0) size 706x39 + text run at (243,0) width 463: " below. They appear together because they are composited, and hence not" + text run at (0,20) width 75: "fragmented." +layer at (8,72) size 208x416 + LayoutNGBlockFlow {DIV} at (0,56) size 208x416 + LayoutMultiColumnSet (anonymous) at (0,0) size 208x416 +layer at (-240,72) size 456x128 backgroundClip at (8,0) size 792x208 clip at (8,0) size 792x208 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 456x128 + LayoutNGBlockFlow (anonymous) at (248,0) size 368x128 + LayoutBR {BR} at (183,0) size 0x0 + LayoutBR {BR} at (151,0) size 0x0 + LayoutBR {BR} at (119,0) size 0x0 + LayoutBR {BR} at (87,0) size 0x0 + LayoutBR {BR} at (55,0) size 0x0 + LayoutBR {BR} at (23,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,64) size 160x288 + LayoutNGBlockFlow (positioned) {DIV} at (0,64) size 160x288 [bgcolor=#FFFF00] +layer at (-64,432) size 80x112 backgroundClip at (8,208) size 208x144 clip at (8,208) size 208x144 + LayoutNGBlockFlow (relative positioned) {DIV} at (408,216) size 80x112 + LayoutText {#text} at (23,0) size 19x37 + text run at (23,0) width 37: "PASS" + LayoutBR {BR} at (23,37) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scaled-mask-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scaled-mask-expected.png index 8bff888..572498e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scaled-mask-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scaled-mask-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png index b5e1b528..caf9d85 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor150/fast/hidpi/static/data-suggestion-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor150/fast/hidpi/static/data-suggestion-picker-appearance-expected.png index 2cb3c14f..c672adc 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor150/fast/hidpi/static/data-suggestion-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor150/fast/hidpi/static/data-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png index 3700cba..4ec287e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png index 0a083221..828ae33 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png index 413d2f1..815a76d 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png index 44ba554..ce825704 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png index 0a083221..828ae33 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/data-suggestion-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/data-suggestion-picker-appearance-expected.png index 413d2f1..815a76d 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/data-suggestion-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/data-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png index 44ba554..ce825704 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png index bc549723..3f74592 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/deleting/merge-whitespace-pre-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/deleting/merge-whitespace-pre-expected.png new file mode 100644 index 0000000..17c7b0f --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/deleting/merge-whitespace-pre-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/execCommand/format-block-with-trailing-br-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/execCommand/format-block-with-trailing-br-expected.png index bd7870a2..56c3f44 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/execCommand/format-block-with-trailing-br-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/execCommand/format-block-with-trailing-br-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/input/reveal-caret-of-multiline-input-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/input/reveal-caret-of-multiline-input-expected.png index 24c3a40f..303693f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/input/reveal-caret-of-multiline-input-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/input/reveal-caret-of-multiline-input-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/inserting/4278698-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/inserting/4278698-expected.png index 7dc8ce2..dfa30c7 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/inserting/4278698-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/inserting/4278698-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/pasteboard/pasting-tabs-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/pasteboard/pasting-tabs-expected.png index a7f6064..d9ddc27 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/pasteboard/pasting-tabs-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/pasteboard/pasting-tabs-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/selection/replaced-boundaries-3-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/selection/replaced-boundaries-3-expected.png index 45bfe23f..0ea0675c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/selection/replaced-boundaries-3-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/selection/replaced-boundaries-3-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/selection/select-box-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/selection/select-box-expected.png index 9a04c97..9e86bce 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/selection/select-box-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/selection/select-box-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/selection/select-element-paragraph-boundary-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/selection/select-element-paragraph-boundary-expected.png index 4a95431..440164b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/selection/select-element-paragraph-boundary-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/selection/select-element-paragraph-boundary-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/selection/triple-click-in-pre-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/selection/triple-click-in-pre-expected.png index 8682c378..1fcc4b2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/selection/triple-click-in-pre-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/editing/selection/triple-click-in-pre-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/css/outline-auto-empty-rects-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/css/outline-auto-empty-rects-expected.png index 1b0685c..dc99a28 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/css/outline-auto-empty-rects-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/css/outline-auto-empty-rects-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/plaintext-mode-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/plaintext-mode-2-expected.png index 92fbce9f..8bd57c5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/plaintext-mode-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/plaintext-mode-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/select/select-listbox-multiple-no-focusring-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/select/select-listbox-multiple-no-focusring-expected.png index eec4c16..09c4618 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/select/select-listbox-multiple-no-focusring-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/select/select-listbox-multiple-no-focusring-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png index b522c9d..9a5a482c8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png index e10895b..3583f779 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png index 251c7794..9dabff2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png index b0a15ac..177056b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/text/input-placeholder-paint-order-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/text/input-placeholder-paint-order-expected.png index 42b8eac..4ec6199 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/text/input-placeholder-paint-order-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/text/input-placeholder-paint-order-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/text/textfield-outline-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/text/textfield-outline-expected.png index 27957276..794ef45a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/text/textfield-outline-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/text/textfield-outline-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/spatial-navigation/snav-multiple-select-focusring-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/spatial-navigation/snav-multiple-select-focusring-expected.png index f7fbbec..f561b725 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/spatial-navigation/snav-multiple-select-focusring-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/spatial-navigation/snav-multiple-select-focusring-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-collapsed-border-expected.png index b822342..76254746 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-expected.png index 7680dbf..e01e5d08 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-collapsed-border-expected.png index 0bb02a6..5c4db39 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-collapsed-border-expected.png index d066b224..0796aac 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-expected.png index e2997a0..65f0c4f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-collapsed-border-expected.png index 7b63edc..c869b42 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-expected.png index 2a84c74..d439709 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-expected.png index 8968850..48a24c6 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-collapsed-border-expected.png index 447b7cf0..638aece 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-expected.png index 16cd701..677d815 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-quirks-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-collapsed-border-expected.png index 41f39c64..746b459 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-expected.png index ee88550..f0e064cc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-collapsed-border-expected.png index 5c1b5d8..814c1118 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-expected.png index c0439035..4d9e215 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_border-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_layers-hide-collapsed-border-expected.png index d205ffb4..bffc307 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_layers-hide-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_layers-hide-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_layers-hide-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_layers-hide-expected.png index 95e2aa3..f8555f5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_layers-hide-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_layers-hide-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-collapsed-border-expected.png index 9b2de8bc..94a8b84 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-expected.png index 680a4a8..04564a61 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-collapsed-border-expected.png index 580583d5..7cf8f94 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-collapsed-border-expected.png index 60e4178..55e5dac 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-expected.png index 73a604b..1d13a645 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-collapsed-border-expected.png index e79e8648..f521b30 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-expected.png index fa79eae..0d97e959 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-expected.png index 1f7362f..82f1940 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-collapsed-border-expected.png index e4739686..f734feb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-expected.png index 56879fd..e6d850ebc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-collapsed-border-expected.png index 3f1852d..0ef0ac7 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-expected.png index 3853083..af9f0fac 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_position-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-collapsed-border-expected.png index 0129227d..fce876d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-expected.png index c9e0e5a..0410c98 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-collapsed-border-expected.png index c4d2c95f..4d88c65 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-collapsed-border-expected.png index 3ad8a5c1..c2f328e0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-expected.png index 3ff7e292..db127ed 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png index 3a1bfcc..035bf9d5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-expected.png index a9de723..abc8fd0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-expected.png index c1f714e..b0a06d6 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-collapsed-border-expected.png index e63a275..e5ffe93 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-expected.png index 626407bd..5ac15b7 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png index b5b84532..46fc005 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-expected.png index f29a163..c54b36ab 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/table/backgr_simple-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/font-format-support-cbdt-sbix-cff2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/font-format-support-cbdt-sbix-cff2-expected.png index 70d2fd30..7aa52b2a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/font-format-support-cbdt-sbix-cff2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/font-format-support-cbdt-sbix-cff2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/selection/delete-hard-break-character-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/selection/delete-hard-break-character-expected.png index 5b7f410..eeff69a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/selection/delete-hard-break-character-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/selection/delete-hard-break-character-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/selection/mixed-directionality-selection-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/selection/mixed-directionality-selection-expected.png index 3546316..5b29e9a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/selection/mixed-directionality-selection-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/selection/mixed-directionality-selection-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/selection/rtl-caret-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/selection/rtl-caret-expected.png index 6bd755b..e3b1236 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/selection/rtl-caret-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/text/selection/rtl-caret-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png index 8f700c0..e2bb55fc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/layout_ng_experimental/fast/multicol/multicol-with-child-renderLayer-for-input-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/layout_ng_experimental/fast/multicol/multicol-with-child-renderLayer-for-input-expected.txt new file mode 100644 index 0000000..227b6be --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/layout_ng_experimental/fast/multicol/multicol-with-child-renderLayer-for-input-expected.txt
@@ -0,0 +1,19 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutNGBlockFlow {HTML} at (0,0) size 800x600 + LayoutNGBlockFlow {BODY} at (8,8) size 784x584 +layer at (8,8) size 784x59 + LayoutNGBlockFlow {DIV} at (0,0) size 784x59 + LayoutMultiColumnSet (anonymous) at (0,0) size 784x59 +layer at (8,8) size 384x118 backgroundClip at (0,0) size 400x67 clip at (0,0) size 400x67 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 384x118 + LayoutText {#text} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 +layer at (551,46) size 131x19 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0 + LayoutTextControl (relative positioned) {INPUT} at (543.17,38) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] +layer at (554,49) size 125x13 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0 + LayoutBlockFlow {DIV} at (3,3) size 125x13 + LayoutText {#text} at (0,0) size 36x13 + text run at (0,0) width 36: "Testing" +caret: position 7 of child 0 {#text} of child 0 {DIV} of {#document-fragment} of child 1 {INPUT} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png index bc549723..3f74592 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png index 84b9464ca..107c88e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png index 52d104b..a5edfaa 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png index 13106f75..ea388a9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.10/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png index 580891d..9102d4dd 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/editing/input/reveal-caret-of-multiline-input-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/editing/input/reveal-caret-of-multiline-input-expected.png index f63ccfc8..6d0ae6a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/editing/input/reveal-caret-of-multiline-input-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/editing/input/reveal-caret-of-multiline-input-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/editing/pasteboard/pasting-tabs-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/editing/pasteboard/pasting-tabs-expected.png index 2c72e097..c775b62 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/editing/pasteboard/pasting-tabs-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/editing/pasteboard/pasting-tabs-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/editing/selection/replaced-boundaries-3-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/editing/selection/replaced-boundaries-3-expected.png index 428b707..1141bd4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/editing/selection/replaced-boundaries-3-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/editing/selection/replaced-boundaries-3-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/editing/selection/select-element-paragraph-boundary-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/editing/selection/select-element-paragraph-boundary-expected.png index eb9aada..4157e0d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/editing/selection/select-element-paragraph-boundary-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/editing/selection/select-element-paragraph-boundary-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/plaintext-mode-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/plaintext-mode-2-expected.png index 944cb3a6..ba19705 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/plaintext-mode-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/plaintext-mode-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/select/select-listbox-multiple-no-focusring-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/select/select-listbox-multiple-no-focusring-expected.png index c4bcb02..2dac1f57 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/select/select-listbox-multiple-no-focusring-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/select/select-listbox-multiple-no-focusring-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png index 5df72a5b..f42baea 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png index 5170539..202c02d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png index f19d6948..77a0477 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png index 4b678ad..74ac0d0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/text/input-placeholder-paint-order-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/text/input-placeholder-paint-order-expected.png index 966d3f8..5a172be 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/text/input-placeholder-paint-order-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/text/input-placeholder-paint-order-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/text/textfield-outline-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/text/textfield-outline-expected.png index 88d104b..bb1198f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/text/textfield-outline-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/forms/text/textfield-outline-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/spatial-navigation/snav-multiple-select-focusring-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/spatial-navigation/snav-multiple-select-focusring-expected.png index 1227e4c..7245483c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/spatial-navigation/snav-multiple-select-focusring-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/spatial-navigation/snav-multiple-select-focusring-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-cell-collapsed-border-expected.png index 17523b7..f6726b72 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-cell-expected.png index 5f4f8b1..31f069f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-collapsed-border-expected.png index 01f71b12..6967133b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-column-collapsed-border-expected.png index 3126fa2..e05bbd8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-column-expected.png index 0a2bc40..0e6a9583 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-column-group-collapsed-border-expected.png index 6fbc174..de62ad87 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-column-group-expected.png index 170e774..529edf3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-expected.png index 94318dc4..463d90c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-quirks-collapsed-border-expected.png index 95bef2d..4f55549 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-quirks-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-quirks-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-quirks-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-quirks-expected.png index 2881b9a..26381287 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-quirks-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-quirks-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-row-collapsed-border-expected.png index ab9ed5c0..cb662bed 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-row-expected.png index 251938a..9436e74 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-row-group-collapsed-border-expected.png index 0df4be1..45e12e3a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-row-group-expected.png index 2ad4c85..a9956ce 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_border-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_layers-hide-collapsed-border-expected.png index 074abbf2..bdc481b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_layers-hide-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_layers-hide-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_layers-hide-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_layers-hide-expected.png index 0fde8d7..7dbad57 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_layers-hide-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_layers-hide-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-cell-collapsed-border-expected.png index 3536469..ed31610 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-cell-expected.png index ce89588..9977cc3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-collapsed-border-expected.png index 9b6ed53..bc866e51 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-column-collapsed-border-expected.png index 09fc1ea6..b204afac 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-column-expected.png index d419160..6b364c4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-column-group-collapsed-border-expected.png index 98379a10..17ebc54 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-column-group-expected.png index bbca363..702b43c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-expected.png index e6c7446..cc7c690 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-row-collapsed-border-expected.png index 281b4057..71420bc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-row-expected.png index ae3ce948..705ca77 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-row-group-collapsed-border-expected.png index 2bd1914b..274858e2c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-row-group-expected.png index 6f9f997..c4bbb218 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_position-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-cell-collapsed-border-expected.png index 1d6fecb..189bf42 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-cell-expected.png index add8a45..55c14df 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-collapsed-border-expected.png index 4cce49cf..3b590d5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-collapsed-border-expected.png index dfdea387..3ef852d8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-expected.png index acc78634..452d4cc3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png index d1e905fc..2e2f1a7 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-group-expected.png index adb8973a..0f03bc2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-expected.png index 2bd7fb6..3a7ff95 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-collapsed-border-expected.png index 7d98e366..72dfb16 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-expected.png index 0ee2c212..6990934f9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png index 972cab9..091fa5ce 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-group-expected.png index aebfae9..ba2c2e0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/table/backgr_simple-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/text/selection/mixed-directionality-selection-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/text/selection/mixed-directionality-selection-expected.png index 5cf4e9e..b656a0aa 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/text/selection/mixed-directionality-selection-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/fast/text/selection/mixed-directionality-selection-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png index 7eaa6e7..30b2347a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/layout_ng_experimental/fast/multicol/multicol-with-child-renderLayer-for-input-expected.txt b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/layout_ng_experimental/fast/multicol/multicol-with-child-renderLayer-for-input-expected.txt new file mode 100644 index 0000000..b8cff390 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/layout_ng_experimental/fast/multicol/multicol-with-child-renderLayer-for-input-expected.txt
@@ -0,0 +1,19 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutNGBlockFlow {HTML} at (0,0) size 800x600 + LayoutNGBlockFlow {BODY} at (8,8) size 784x584 +layer at (8,8) size 784x59 + LayoutNGBlockFlow {DIV} at (0,0) size 784x59 + LayoutMultiColumnSet (anonymous) at (0,0) size 784x59 +layer at (8,8) size 384x118 backgroundClip at (0,0) size 400x67 clip at (0,0) size 400x67 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 384x118 + LayoutText {#text} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 +layer at (551,46) size 131x19 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0 + LayoutTextControl (relative positioned) {INPUT} at (543.17,38) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] +layer at (554,49) size 125x13 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0 + LayoutBlockFlow {DIV} at (3,3) size 125x13 + LayoutText {#text} at (0,0) size 38x13 + text run at (0,0) width 38: "Testing" +caret: position 7 of child 0 {#text} of child 0 {DIV} of {#document-fragment} of child 1 {INPUT} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png index 580891d..9102d4dd 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png index 89f34e4d..dd187cf 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png index 09de360..f0772517 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png index d41147e7..95cec71 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.11/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png index 6ae5220..304ddaf7 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/caret/caret-color-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/caret/caret-color-expected.png index 9655b2b..fd43d5b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/caret/caret-color-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/caret/caret-color-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/input/emacs-ctrl-o-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/input/emacs-ctrl-o-expected.png index ad9c5a82..ce84b01 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/input/emacs-ctrl-o-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/input/emacs-ctrl-o-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/input/reveal-caret-of-multiline-input-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/input/reveal-caret-of-multiline-input-expected.png index 1b7d6eb..005d1bb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/input/reveal-caret-of-multiline-input-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/input/reveal-caret-of-multiline-input-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/inserting/insert-space-in-empty-doc-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/inserting/insert-space-in-empty-doc-expected.png index 5d0f265..88821fc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/inserting/insert-space-in-empty-doc-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/inserting/insert-space-in-empty-doc-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/inserting/insert-text-at-tabspan-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/inserting/insert-text-at-tabspan-001-expected.png index 684c25e..09d54559 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/inserting/insert-text-at-tabspan-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/inserting/insert-text-at-tabspan-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/inserting/insert-text-at-tabspan-003-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/inserting/insert-text-at-tabspan-003-expected.png index 276210ce..1b96dad6 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/inserting/insert-text-at-tabspan-003-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/inserting/insert-text-at-tabspan-003-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/emacs-cntl-y-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/emacs-cntl-y-001-expected.png index abdc0d3..7e0d19d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/emacs-cntl-y-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/emacs-cntl-y-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/emacs-ctrl-k-y-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/emacs-ctrl-k-y-001-expected.png index 5fdd201..b64faa1 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/emacs-ctrl-k-y-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/emacs-ctrl-k-y-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-001-expected.png index 7f460c7..8587e184 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-002-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-002-expected.png index 7f460c7..8587e184 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-002-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-003-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-003-expected.png index 7f460c7..8587e184 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-003-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-003-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-004-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-004-expected.png index 7f460c7..8587e184 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-004-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-004-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-005-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-005-expected.png index 7f460c7..8587e184 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-005-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-line-endings-005-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-text-at-tabspan-003-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-text-at-tabspan-003-expected.png index 1a1a712..190270f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-text-at-tabspan-003-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/paste-text-at-tabspan-003-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/pasting-tabs-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/pasting-tabs-expected.png index 325463a2..b1f602c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/pasting-tabs-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/pasteboard/pasting-tabs-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/extend-by-sentence-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/extend-by-sentence-001-expected.png new file mode 100644 index 0000000..8d7d762 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/extend-by-sentence-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/extend-selection-bidi-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/extend-selection-bidi-expected.png index 90c6cac..5ea03c4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/extend-selection-bidi-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/extend-selection-bidi-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/move-backwords-by-word-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/move-backwords-by-word-001-expected.png index 06580a5..0a8e6af 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/move-backwords-by-word-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/move-backwords-by-word-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/move-by-sentence-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/move-by-sentence-001-expected.png index 391f136b..24d8f64a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/move-by-sentence-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/move-by-sentence-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/select-missing-image-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/select-missing-image-expected.png index 5a86e0b..48f1b15 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/select-missing-image-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/selection/select-missing-image-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/style/block-styles-007-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/style/block-styles-007-expected.png index ef848d4..5feb74e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/style/block-styles-007-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/style/block-styles-007-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/list-delete-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/list-delete-001-expected.png index a5ea5d4..4754122 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/list-delete-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/list-delete-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/list-delete-003-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/list-delete-003-expected.png index 71a7a258..a6fc2b50 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/list-delete-003-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/list-delete-003-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/list-type-after-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/list-type-after-expected.png index c4a94b6..5337e902 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/list-type-after-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/list-type-after-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/list-type-before-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/list-type-before-expected.png index 49c86fb..32d57e3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/list-type-before-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/list-type-before-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-delete-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-delete-001-expected.png index 0b2b6dfe..f42e9ea 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-delete-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-delete-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-delete-002-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-delete-002-expected.png index d125e40..216c3859 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-delete-002-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-delete-002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-delete-003-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-delete-003-expected.png index c3873d1..2509f91 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-delete-003-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-delete-003-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-type-after-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-type-after-expected.png index 4721179..60b0431 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-type-after-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-type-after-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-type-before-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-type-before-expected.png index 698637b..1c66849 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-type-before-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/editing/unsupported-content/table-type-before-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/plaintext-mode-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/plaintext-mode-2-expected.png index 6fb6387..7db290d3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/plaintext-mode-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/plaintext-mode-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png index c43652e..cff62fb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png index 36efee6..25e97fe 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png index 27d63a5..23c4199 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png index 24b90882..1abe44a3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/text/input-placeholder-paint-order-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/text/input-placeholder-paint-order-expected.png index c70d9e6ee..2ddb008 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/text/input-placeholder-paint-order-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/text/input-placeholder-paint-order-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/text/textfield-outline-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/text/textfield-outline-expected.png index 3d175ba..7a9e407e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/text/textfield-outline-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/forms/text/textfield-outline-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/text/font-format-support-cbdt-sbix-cff2-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/text/font-format-support-cbdt-sbix-cff2-expected.png index b82a785..7e85366 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/text/font-format-support-cbdt-sbix-cff2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/text/font-format-support-cbdt-sbix-cff2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/text/selection/delete-hard-break-character-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/text/selection/delete-hard-break-character-expected.png index 16b60f10..c809e545aec 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/text/selection/delete-hard-break-character-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/text/selection/delete-hard-break-character-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/text/selection/mixed-directionality-selection-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/text/selection/mixed-directionality-selection-expected.png index 8dcf011..6dce1b6b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/text/selection/mixed-directionality-selection-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/text/selection/mixed-directionality-selection-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/text/selection/rtl-caret-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/text/selection/rtl-caret-expected.png index 28d8bfb..c39f48eb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/text/selection/rtl-caret-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/fast/text/selection/rtl-caret-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/paint/markers/document-markers-zoom-150-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/paint/markers/document-markers-zoom-150-expected.png index 49dba773..53a4998 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/paint/markers/document-markers-zoom-150-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/paint/markers/document-markers-zoom-150-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png index e36e462..f34a089 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/as-background-image/svg-as-background-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/as-background-image/svg-as-background-1-expected.png index 27621a2d..4be4159 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/as-background-image/svg-as-background-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/as-background-image/svg-as-background-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/as-background-image/svg-as-background-6-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/as-background-image/svg-as-background-6-expected.png index b73ca85..43fff59 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/as-background-image/svg-as-background-6-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/as-background-image/svg-as-background-6-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png index f1be31c..ae37ba5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/custom/linking-a-03-b-viewTarget-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/custom/linking-a-03-b-viewTarget-expected.png index f1be31c..ae37ba5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/custom/linking-a-03-b-viewTarget-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/custom/linking-a-03-b-viewTarget-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/custom/linking-a-03-b-zoomAndPan-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/custom/linking-a-03-b-zoomAndPan-expected.png index f1be31c..ae37ba5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/custom/linking-a-03-b-zoomAndPan-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/custom/linking-a-03-b-zoomAndPan-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/hixie/perf/001-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/hixie/perf/001-expected.png index 3c332c6..de242850 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/hixie/perf/001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/hixie/perf/001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/hixie/perf/002-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/hixie/perf/002-expected.png index 3e8e2b9..62aaaa6 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/hixie/perf/002-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/svg/hixie/perf/002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/gpu/fast/canvas/canvas-ellipse-connecting-line-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/gpu/fast/canvas/canvas-ellipse-connecting-line-expected.png deleted file mode 100644 index e9b38cf4..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/gpu/fast/canvas/canvas-ellipse-connecting-line-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png deleted file mode 100644 index fb8b719..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-on-two-ancestors-composited-grandchild-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-on-two-ancestors-composited-grandchild-expected.png deleted file mode 100644 index fe440c9..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/prefer_compositing_to_lcd_text/compositing/overflow/border-radius-on-two-ancestors-composited-grandchild-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png index 6ae5220..304ddaf7 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/prefer_compositing_to_lcd_text/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png index 70401df..58acef5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac-mac10.12/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/border-radius-on-grandparent-composited-grandchild-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/border-radius-on-grandparent-composited-grandchild-expected.png index ec5efbc..2cee245 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/border-radius-on-grandparent-composited-grandchild-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/border-radius-on-grandparent-composited-grandchild-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png index fb8b719..9e367a68 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/border-radius-on-two-ancestors-composited-grandchild-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/border-radius-on-two-ancestors-composited-grandchild-expected.png index fe440c9..b9fac482 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/border-radius-on-two-ancestors-composited-grandchild-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/border-radius-on-two-ancestors-composited-grandchild-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png index e443beb..50994f5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/grandchild-composited-with-border-radius-ancestor-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/grandchild-composited-with-border-radius-ancestor-expected.png index bd6875c..f38a1b2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/grandchild-composited-with-border-radius-ancestor-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/grandchild-composited-with-border-radius-ancestor-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/grandchild-with-border-radius-ancestor-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/grandchild-with-border-radius-ancestor-expected.png index bd6875c..f38a1b2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/grandchild-with-border-radius-ancestor-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/grandchild-with-border-radius-ancestor-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/scaled-mask-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/scaled-mask-expected.png index 5c779084..2040aee 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/scaled-mask-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/scaled-mask-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/siblings-composited-with-border-radius-ancestor-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/siblings-composited-with-border-radius-ancestor-expected.png index bd6875c..f38a1b2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/siblings-composited-with-border-radius-ancestor-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/siblings-composited-with-border-radius-ancestor-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/siblings-composited-with-border-radius-ancestor-one-clipped-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/siblings-composited-with-border-radius-ancestor-one-clipped-expected.png index 4cfe02d..00fa2b9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/siblings-composited-with-border-radius-ancestor-one-clipped-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/siblings-composited-with-border-radius-ancestor-one-clipped-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/siblings-with-border-radius-ancestor-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/siblings-with-border-radius-ancestor-expected.png index e5ed71d..ff3a0270 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/siblings-with-border-radius-ancestor-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/siblings-with-border-radius-ancestor-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-001-expected.png index 951be86..e72e6f5f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-002-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-002-expected.png index 951be86..e72e6f5f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-002-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-003-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-003-expected.png index 02227d2..f74adfc0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-003-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-003-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-007-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-007-expected.png index c0130963..d7be3de99 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-007-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-007-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-010-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-010-expected.png index 8eeeae5..b7d6a53 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-010-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-010-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-011-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-011-expected.png index 78c5dc1..b12b3dc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-011-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-011-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-012-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-012-expected.png index 951be86..e72e6f5f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-012-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-012-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-expected.png index 444a815..abd2689 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/caret/caret-color-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/4922367-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/4922367-expected.png index a006bdc..e5338cf 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/4922367-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/4922367-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/5272440-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/5272440-expected.png new file mode 100644 index 0000000..ce0aac3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/5272440-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/5369009-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/5369009-expected.png index aef1560..856856b7 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/5369009-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/5369009-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/5433862-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/5433862-2-expected.png index 1b43678..1304ae4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/5433862-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/5433862-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/5483370-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/5483370-expected.png index 9690bef..dc90d1c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/5483370-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/5483370-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-br-013-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-br-013-expected.png index 1a28547..94f2ab83 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-br-013-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-br-013-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-line-015-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-line-015-expected.png index 2e94cb7..5fb8997 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-line-015-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-line-015-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-line-016-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-line-016-expected.png index f693771f..6e1dade3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-line-016-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-line-016-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-line-017-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-line-017-expected.png index 79be469..6eeb1c4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-line-017-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/delete-line-017-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/merge-different-styles-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/merge-different-styles-expected.png index 1858dc23..fbcca4c3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/merge-different-styles-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/merge-different-styles-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/merge-endOfParagraph-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/merge-endOfParagraph-expected.png index d95bc8c..0fb9285 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/merge-endOfParagraph-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/merge-endOfParagraph-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/merge-whitespace-pre-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/merge-whitespace-pre-expected.png new file mode 100644 index 0000000..01b6c8ce --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/merge-whitespace-pre-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/table-cells-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/table-cells-expected.png index 240749845..4a43e35 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/table-cells-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/table-cells-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/type-delete-after-quote-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/type-delete-after-quote-expected.png new file mode 100644 index 0000000..2c08bca9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/deleting/type-delete-after-quote-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/4916541-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/4916541-expected.png index 836c1f3d..a047ec9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/4916541-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/4916541-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5138441-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5138441-expected.png new file mode 100644 index 0000000..b793b41 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5138441-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5142012-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5142012-1-expected.png index 081623a..503f39f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5142012-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/5142012-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/format-block-with-trailing-br-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/format-block-with-trailing-br-expected.png index 138e96b..7593216f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/format-block-with-trailing-br-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/format-block-with-trailing-br-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/insertImage-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/insertImage-expected.png index 46797f6..44eb0f2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/insertImage-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/execCommand/insertImage-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/input/caret-read-only-after-editable-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/input/caret-read-only-after-editable-expected.png index 515fb40..6e1ba450 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/input/caret-read-only-after-editable-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/input/caret-read-only-after-editable-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/input/emacs-ctrl-o-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/input/emacs-ctrl-o-expected.png index d414604..cd4732c4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/input/emacs-ctrl-o-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/input/emacs-ctrl-o-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/input/reveal-caret-of-multiline-input-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/input/reveal-caret-of-multiline-input-expected.png index 9e72fdf..746cdbf 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/input/reveal-caret-of-multiline-input-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/input/reveal-caret-of-multiline-input-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/4278698-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/4278698-expected.png index 889adb25..be47e206 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/4278698-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/4278698-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/4840662-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/4840662-expected.png index 1a4c63a..d318d16 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/4840662-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/4840662-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/4875189-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/4875189-1-expected.png new file mode 100644 index 0000000..94d0723f --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/4875189-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/4959067-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/4959067-expected.png new file mode 100644 index 0000000..9e9fa2a --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/4959067-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5002441-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5002441-expected.png index 4371eb33..0277e76a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5002441-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5002441-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5058163-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5058163-1-expected.png index e2919e4..58715d8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5058163-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5058163-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5058163-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5058163-2-expected.png index 3061493..6f907e0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5058163-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5058163-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5156401-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5156401-2-expected.png index 4655319..e2a21fc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5156401-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5156401-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5418891-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5418891-expected.png index 755332e..f8d1e0cc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5418891-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5418891-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5510537-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5510537-expected.png index 1bc85ee..cd894f21 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5510537-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5510537-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5549929-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5549929-2-expected.png index 960fabf..dd8686f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5549929-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5549929-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5549929-3-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5549929-3-expected.png index 52f8d3f..54d2e43 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5549929-3-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/5549929-3-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/6703873-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/6703873-expected.png index f68d8c96..1473ca2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/6703873-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/6703873-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/break-blockquote-after-delete-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/break-blockquote-after-delete-expected.png index 3709234..b80a40b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/break-blockquote-after-delete-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/break-blockquote-after-delete-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-space-in-empty-doc-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-space-in-empty-doc-expected.png index 523a01f2..9f8c7f5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-space-in-empty-doc-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-space-in-empty-doc-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-text-at-tabspan-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-text-at-tabspan-001-expected.png index 00eb191e..33a76b54 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-text-at-tabspan-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-text-at-tabspan-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-text-at-tabspan-003-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-text-at-tabspan-003-expected.png index 5f7d427..8bc550ae1 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-text-at-tabspan-003-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/insert-text-at-tabspan-003-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/line-break-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/line-break-expected.png index 167ce0a..97a3471 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/line-break-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/line-break-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/paragraph-separator-in-table-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/paragraph-separator-in-table-1-expected.png index dbd5ba4..24cca000 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/paragraph-separator-in-table-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/paragraph-separator-in-table-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/paragraph-separator-in-table-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/paragraph-separator-in-table-2-expected.png index 4fefe4a..0cea8eca 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/paragraph-separator-in-table-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/inserting/paragraph-separator-in-table-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/4631972-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/4631972-expected.png index 44621774..34ecdbe5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/4631972-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/4631972-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/4806874-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/4806874-expected.png index 8327919..cb503b5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/4806874-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/4806874-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/4947130-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/4947130-expected.png index f8c9e98..25374843 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/4947130-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/4947130-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5006779-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5006779-expected.png index 7368f3b..c3eaac4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5006779-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5006779-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5071074-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5071074-2-expected.png index 26d2a7d7..b490531f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5071074-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5071074-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5071074-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5071074-expected.png index dfdd3b99..ae054b57 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5071074-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5071074-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5134759-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5134759-expected.png index a9e25be..b8b01827 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5134759-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5134759-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5156401-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5156401-1-expected.png index d998c2b..bdaaf72 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5156401-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5156401-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5478250-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5478250-expected.png index add8fcc..539970d0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5478250-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5478250-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5601583-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5601583-1-expected.png index c9df577..453da62 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5601583-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5601583-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/bad-placeholder-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/bad-placeholder-expected.png index 9ab0c1a..46d74ed 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/bad-placeholder-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/bad-placeholder-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/copy-standalone-image-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/copy-standalone-image-expected.png index 9f94ff5..019ce3f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/copy-standalone-image-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/copy-standalone-image-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/drag-selected-image-to-contenteditable-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/drag-selected-image-to-contenteditable-expected.png index 2a3785b..84d2bb66 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/drag-selected-image-to-contenteditable-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/drag-selected-image-to-contenteditable-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/emacs-cntl-y-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/emacs-cntl-y-001-expected.png index 943ae38..e36a0dac 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/emacs-cntl-y-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/emacs-cntl-y-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/emacs-ctrl-k-y-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/emacs-ctrl-k-y-001-expected.png index db337032..066ee27 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/emacs-ctrl-k-y-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/emacs-ctrl-k-y-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/input-field-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/input-field-1-expected.png index 424ed01..4926488 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/input-field-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/input-field-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/merge-start-blockquote-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/merge-start-blockquote-expected.png index afc47e88..32db5b6 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/merge-start-blockquote-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/merge-start-blockquote-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/merge-start-list-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/merge-start-list-expected.png index e8a30749..89962cae 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/merge-start-list-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/merge-start-list-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-blockquote-after-blockquote-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-blockquote-after-blockquote-expected.png index a68a481..9cf0013 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-blockquote-after-blockquote-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-blockquote-after-blockquote-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-blockquote-into-blockquote-4-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-blockquote-into-blockquote-4-expected.png index 37b41f3..01b3bab 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-blockquote-into-blockquote-4-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-blockquote-into-blockquote-4-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-001-expected.png index 6d8b8d7..bed1b775 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-002-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-002-expected.png index 6d8b8d7..bed1b775 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-002-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-003-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-003-expected.png index 6d8b8d7..bed1b775 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-003-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-003-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-004-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-004-expected.png index 6d8b8d7..bed1b775 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-004-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-004-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-005-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-005-expected.png index 6d8b8d7..bed1b775 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-005-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-line-endings-005-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-text-at-tabspan-003-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-text-at-tabspan-003-expected.png index 57b95a2b2..db4cdce 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-text-at-tabspan-003-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/paste-text-at-tabspan-003-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/pasting-tabs-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/pasting-tabs-expected.png index c1dcbc2..a15bdad 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/pasting-tabs-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/pasting-tabs-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/quirks-mode-br-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/quirks-mode-br-1-expected.png index 575792e3..c17b65d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/quirks-mode-br-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/quirks-mode-br-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/styled-element-markup-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/styled-element-markup-expected.png index 56804d6..f120150 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/styled-element-markup-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/styled-element-markup-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5099303-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5099303-expected.png index f5bd9fc..35a786c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5099303-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5099303-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5131716-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5131716-1-expected.png index 9cb1b38c..59dd689 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5131716-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5131716-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5131716-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5131716-2-expected.png index 9bc475e..5f269d7 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5131716-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5131716-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5131716-3-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5131716-3-expected.png index 9176192..f8bf8f429 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5131716-3-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5131716-3-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5131716-4-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5131716-4-expected.png index e1379eee..df5fe66 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5131716-4-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5131716-4-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5195166-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5195166-2-expected.png index c22efc8b..52b99af1 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5195166-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/5195166-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/6476-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/6476-expected.png index d8940a0e..b5cb359 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/6476-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/6476-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/click-start-of-line-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/click-start-of-line-expected.png index 83936959..c9db756 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/click-start-of-line-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/click-start-of-line-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/contains-boundaries-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/contains-boundaries-expected.png index 183e8c0b..93c85b2d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/contains-boundaries-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/contains-boundaries-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/extend-by-sentence-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/extend-by-sentence-001-expected.png new file mode 100644 index 0000000..e8378c93 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/extend-by-sentence-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/extend-selection-bidi-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/extend-selection-bidi-expected.png index 3dbe7c0b..9b559f5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/extend-selection-bidi-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/extend-selection-bidi-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/leave-requested-block-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/leave-requested-block-expected.png index d76ecf3..e581384 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/leave-requested-block-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/leave-requested-block-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/move-backwords-by-word-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/move-backwords-by-word-001-expected.png index 84667707a..41586ffc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/move-backwords-by-word-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/move-backwords-by-word-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/move-by-sentence-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/move-by-sentence-001-expected.png index 9cb1c12..913f96c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/move-by-sentence-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/move-by-sentence-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/move-past-trailing-space-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/move-past-trailing-space-expected.png index 2b8f05c..32ec5f75 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/move-past-trailing-space-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/move-past-trailing-space-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/previous-line-position-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/previous-line-position-expected.png index e5734c3e..db6056d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/previous-line-position-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/previous-line-position-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/replaced-boundaries-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/replaced-boundaries-1-expected.png index 25e4c08..3bc9bafb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/replaced-boundaries-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/replaced-boundaries-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/replaced-boundaries-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/replaced-boundaries-2-expected.png index 89577e9..ac9aa12 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/replaced-boundaries-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/replaced-boundaries-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/replaced-boundaries-3-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/replaced-boundaries-3-expected.png index 51adb12..15c7974 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/replaced-boundaries-3-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/replaced-boundaries-3-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/select-box-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/select-box-expected.png index 6229f945..2c97e82 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/select-box-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/select-box-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/select-element-paragraph-boundary-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/select-element-paragraph-boundary-expected.png index d2bca48..751e5a2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/select-element-paragraph-boundary-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/select-element-paragraph-boundary-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/select-missing-image-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/select-missing-image-expected.png index 5cc15670..26c76d5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/select-missing-image-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/select-missing-image-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/selection-3748164-fix-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/selection-3748164-fix-expected.png index a0c9599..53445c1 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/selection-3748164-fix-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/selection-3748164-fix-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/triple-click-in-pre-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/triple-click-in-pre-expected.png index 92362b0..1c9c79a0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/triple-click-in-pre-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/triple-click-in-pre-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/wrapped-line-caret-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/wrapped-line-caret-1-expected.png index b80727b..569dad90 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/wrapped-line-caret-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/wrapped-line-caret-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/wrapped-line-caret-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/wrapped-line-caret-2-expected.png index b8bbca2..dab7c6c0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/selection/wrapped-line-caret-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/selection/wrapped-line-caret-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/style/4916887-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/style/4916887-expected.png index 7a57efb..4833102 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/style/4916887-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/style/4916887-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/style/5065910-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/style/5065910-expected.png index 33e88b2..26da497 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/style/5065910-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/style/5065910-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/style/5084241-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/style/5084241-expected.png index 132d435..9c3425f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/style/5084241-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/style/5084241-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/style/5228141-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/style/5228141-expected.png index 041906d6..f2323285 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/style/5228141-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/style/5228141-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/style/5279521-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/style/5279521-expected.png index a5713d4..671a7e25 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/style/5279521-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/style/5279521-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/style/block-styles-007-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/style/block-styles-007-expected.png index 71f83bd..3bc6c57b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/style/block-styles-007-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/style/block-styles-007-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/style/highlight-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/style/highlight-expected.png index 2ac7bfde..bf8ca9c2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/style/highlight-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/style/highlight-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/list-delete-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/list-delete-001-expected.png index f8750ec..878990a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/list-delete-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/list-delete-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/list-delete-003-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/list-delete-003-expected.png index 336395bd..4c2ab54 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/list-delete-003-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/list-delete-003-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/list-type-after-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/list-type-after-expected.png index 5008c3ec..72f5a3c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/list-type-after-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/list-type-after-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/list-type-before-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/list-type-before-expected.png index e13867bd..37de07a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/list-type-before-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/list-type-before-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-delete-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-delete-001-expected.png index 156f5b8..d880a63 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-delete-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-delete-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-delete-002-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-delete-002-expected.png index 5db58aa..9b099d55 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-delete-002-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-delete-002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-delete-003-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-delete-003-expected.png index 9ffe6fd..32895bc4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-delete-003-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-delete-003-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-type-after-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-type-after-expected.png index 9e09173..aa3ab510 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-type-after-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-type-after-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-type-before-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-type-before-expected.png index bb3fdbe..d5db2bb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-type-before-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/editing/unsupported-content/table-type-before-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/backgrounds/background-leakage-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/backgrounds/background-leakage-expected.png index 47bb9ee5..e5300eac 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/backgrounds/background-leakage-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/backgrounds/background-leakage-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/backgrounds/background-leakage-transforms-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/backgrounds/background-leakage-transforms-expected.png index 1822aab5..99a38dcb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/backgrounds/background-leakage-transforms-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/backgrounds/background-leakage-transforms-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-constraints-double-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-constraints-double-expected.png index 8d652b16..8800780 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-constraints-double-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-constraints-double-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-constraints-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-constraints-expected.png index 1276165..42170fb4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-constraints-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-constraints-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-mask-canvas-all-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-mask-canvas-all-expected.png index 8a816c15..b6658d22 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-mask-canvas-all-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-mask-canvas-all-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-mask-canvas-with-mask-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-mask-canvas-with-mask-expected.png index 59ed12a..4542034 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-mask-canvas-with-mask-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-mask-canvas-with-mask-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-mask-canvas-with-shadow-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-mask-canvas-with-shadow-expected.png index 5acfa55..4054d1b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-mask-canvas-with-shadow-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-mask-canvas-with-shadow-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-percent-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-percent-expected.png index 0d0df85..d0297d3c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-percent-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-percent-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-with-composited-child-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-with-composited-child-expected.png index 255e5d5..22fce6fc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-with-composited-child-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/border-radius-with-composited-child-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/mixed-border-styles-radius-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/mixed-border-styles-radius-expected.png index 47673da..2351cf7 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/borders/mixed-border-styles-radius-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/borders/mixed-border-styles-radius-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-box-shadows-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-box-shadows-expected.png index 79ac2109..3eec1c3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-box-shadows-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-box-shadows-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-expected.png index 78eae785..c0492008 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-subpixel-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-subpixel-expected.png index c49a41c..e98c89c2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-subpixel-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/box-shadow/inset-subpixel-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/canvas/canvas-incremental-repaint-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/canvas/canvas-incremental-repaint-expected.png index 8acf591..795ce906 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/canvas/canvas-incremental-repaint-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/canvas/canvas-incremental-repaint-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/clip/overflow-border-radius-combinations-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/clip/overflow-border-radius-combinations-expected.png index 0f1af44..fdae809 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/clip/overflow-border-radius-combinations-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/clip/overflow-border-radius-combinations-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/clip/overflow-border-radius-composited-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/clip/overflow-border-radius-composited-expected.png index 551e946..158f79e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/clip/overflow-border-radius-composited-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/clip/overflow-border-radius-composited-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/clip/overflow-border-radius-composited-parent-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/clip/overflow-border-radius-composited-parent-expected.png index 39a83dd..b408e0dbd 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/clip/overflow-border-radius-composited-parent-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/clip/overflow-border-radius-composited-parent-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/clip/overflow-border-radius-transformed-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/clip/overflow-border-radius-transformed-expected.png index 4357769..d7d56f0e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/clip/overflow-border-radius-transformed-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/clip/overflow-border-radius-transformed-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/css/focus-ring-detached-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/css/focus-ring-detached-expected.png index 91a56cf..66b8f8a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/css/focus-ring-detached-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/css/focus-ring-detached-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/css/focus-ring-multiline-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/css/focus-ring-multiline-expected.png index 6a4c5d5..cb91899 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/css/focus-ring-multiline-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/css/focus-ring-multiline-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/css/nested-rounded-corners-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/css/nested-rounded-corners-expected.png index 3b4c026..7d0d5697 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/css/nested-rounded-corners-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/css/nested-rounded-corners-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/css/outline-auto-empty-rects-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/css/outline-auto-empty-rects-expected.png index 5a83d8c..fd3b9fb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/css/outline-auto-empty-rects-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/css/outline-auto-empty-rects-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/dom/52776-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/dom/52776-expected.png index a966e57b..14512fd 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/dom/52776-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/dom/52776-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/dom/focus-contenteditable-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/dom/focus-contenteditable-expected.png index 4ef486b..5eb8583 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/dom/focus-contenteditable-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/dom/focus-contenteditable-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/events/reveal-link-when-focused-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/events/reveal-link-when-focused-expected.png index d6853f26d..7c0a2ca 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/events/reveal-link-when-focused-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/events/reveal-link-when-focused-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png index 9f75243..304b733 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/datalist/input-appearance-range-with-datalist-zoomed-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png index 5d03f59..2523f278 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/datalist/input-appearance-range-with-padding-with-datalist-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/plaintext-mode-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/plaintext-mode-2-expected.png index e17b6d0..eb65d62 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/plaintext-mode-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/plaintext-mode-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/range/input-appearance-range-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/range/input-appearance-range-expected.png index 08f8183..33a535a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/range/input-appearance-range-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/range/input-appearance-range-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/range/range-appearance-basic-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/range/range-appearance-basic-expected.png index 74d4e9f..edc9bda 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/range/range-appearance-basic-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/range/range-appearance-basic-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/select/select-listbox-multiple-no-focusring-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/select/select-listbox-multiple-no-focusring-expected.png index d1ffa7e..7a6efcbb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/select/select-listbox-multiple-no-focusring-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/select/select-listbox-multiple-no-focusring-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png index 7560bff..0f997a10 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png index d13edd8..80b862663 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-locale-hebrew-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png index 3ec31d2..4258f58 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png index 669e9ab7..876ff935 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/text/input-placeholder-paint-order-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/text/input-placeholder-paint-order-expected.png index 0166637..324596f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/text/input-placeholder-paint-order-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/text/input-placeholder-paint-order-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/inline/25277-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/inline/25277-2-expected.png index e88e7fe..aef8207 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/inline/25277-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/inline/25277-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/inline/25277-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/inline/25277-expected.png index e88e7fe..aef8207 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/inline/25277-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/inline/25277-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/inline/continuation-outlines-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/inline/continuation-outlines-expected.png index 7b8b229..ca8ba3c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/inline/continuation-outlines-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/inline/continuation-outlines-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/inline/continuation-outlines-with-layers-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/inline/continuation-outlines-with-layers-2-expected.png index 07a6f39..43f2e00 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/inline/continuation-outlines-with-layers-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/inline/continuation-outlines-with-layers-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/inline/continuation-outlines-with-layers-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/inline/continuation-outlines-with-layers-expected.png index e6524df..b1b127d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/inline/continuation-outlines-with-layers-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/inline/continuation-outlines-with-layers-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/multicol/border-radius-clipped-layer-second-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/multicol/border-radius-clipped-layer-second-column-expected.png index 1b60bfb..4a30b929 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/multicol/border-radius-clipped-layer-second-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/multicol/border-radius-clipped-layer-second-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/overflow/overflow-with-local-background-attachment-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/overflow/overflow-with-local-background-attachment-expected.png index eafc02f..54d27261 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/overflow/overflow-with-local-background-attachment-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/overflow/overflow-with-local-background-attachment-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/spatial-navigation/snav-multiple-select-focusring-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/spatial-navigation/snav-multiple-select-focusring-expected.png index a1f9da8..8ca6ff8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/spatial-navigation/snav-multiple-select-focusring-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/spatial-navigation/snav-multiple-select-focusring-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-cell-collapsed-border-expected.png index f0cf6f4d..6d61da73 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-cell-expected.png index 8a6d219..f80a0b1 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-collapsed-border-expected.png index a80432ffd..cef5225 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-collapsed-border-expected.png index 9e67221c..865014f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-expected.png index 7fc26de..f5979d56 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-group-collapsed-border-expected.png index 1bc16fc..151ce87 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-group-expected.png index 5afdbfa..04de3e73 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-expected.png index c86060d..bc40773 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-quirks-collapsed-border-expected.png index 7794a21..17f5fc6 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-quirks-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-quirks-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-quirks-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-quirks-expected.png index 30e4dc4..e82dc957 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-quirks-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-quirks-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-collapsed-border-expected.png index e27c67b..c590ac2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-expected.png index 31ee589..2a77afc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-group-collapsed-border-expected.png index 8ce5983..9077a41 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-group-expected.png index a6d8214..1cb9678 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_border-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_layers-hide-collapsed-border-expected.png index 96fd4f4..857fde0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_layers-hide-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_layers-hide-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_layers-hide-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_layers-hide-expected.png index 402cca5..602cdd5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_layers-hide-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_layers-hide-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-cell-collapsed-border-expected.png index a9290a1..5f7f4dc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-cell-expected.png index c067dc6d..c899a724 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-collapsed-border-expected.png index 1d60a23..e4716d9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-collapsed-border-expected.png index 53ce0a8..2e05d0d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-expected.png index 6969d9f..e1b26f4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-group-collapsed-border-expected.png index b3b6691b..11ef78c2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-group-expected.png index 054d231..3b32b3a4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-expected.png index ed07b49..89ad511 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-collapsed-border-expected.png index eab29d2a..878b20e4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-expected.png index 93118ef..b935e71a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-group-collapsed-border-expected.png index 3a6e8c11..96b913a8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-group-expected.png index c3bb5a7..fcfa80d0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_position-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-cell-collapsed-border-expected.png index 726f6c3b..8b780af 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-cell-expected.png index 0865482..5549167d6 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-collapsed-border-expected.png index 2db36517..729b7e1c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-collapsed-border-expected.png index c85dcf1..dd4ce3a9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-expected.png index 0b02a443..0049f322 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png index 5e9942f..bf304d8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-group-expected.png index 202d8f8..9e73bd1 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-expected.png index cf82b62f..0e1d9524 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-collapsed-border-expected.png index 8c62f62..8f4e816 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-expected.png index d26a532..a386d42e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png index 04c9d38..6f2eafb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-group-expected.png index 409c23e..b2c6639 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/backgr_simple-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/border-collapsing/001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/border-collapsing/001-expected.png index 585d1f1..d13b2ef9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/border-collapsing/001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/border-collapsing/001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/table/border-collapsing/001-vertical-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/table/border-collapsing/001-vertical-expected.png index 4b7c86e..7cf07de 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/table/border-collapsing/001-vertical-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/table/border-collapsing/001-vertical-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/text/font-format-support-cbdt-sbix-cff2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/text/font-format-support-cbdt-sbix-cff2-expected.png index e85a296..9045b73 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/text/font-format-support-cbdt-sbix-cff2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/text/font-format-support-cbdt-sbix-cff2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/text/selection/delete-hard-break-character-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/text/selection/delete-hard-break-character-expected.png index b76aa7a5..696eb4c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/text/selection/delete-hard-break-character-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/text/selection/delete-hard-break-character-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/text/selection/mixed-directionality-selection-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/text/selection/mixed-directionality-selection-expected.png index ce32836b..737f597 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/text/selection/mixed-directionality-selection-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/text/selection/mixed-directionality-selection-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/text/selection/rtl-caret-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/text/selection/rtl-caret-expected.png index 5a908292..56e6537 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/text/selection/rtl-caret-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/text/selection/rtl-caret-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-1-and-click-expected.png b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-1-and-click-expected.png index 932bfaa..3b592dc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-1-and-click-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-1-and-click-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-10-and-click-expected.png b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-10-and-click-expected.png index a2a9696..db0f18c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-10-and-click-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-10-and-click-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-2-and-click-expected.png b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-2-and-click-expected.png index 528a87e..15f01e8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-2-and-click-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-2-and-click-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-3-and-click-expected.png b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-3-and-click-expected.png index c2d97443..c9d20e1 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-3-and-click-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-3-and-click-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-4-and-click-expected.png b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-4-and-click-expected.png index 9fee6ab..e234144 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-4-and-click-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-4-and-click-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-5-and-click-expected.png b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-5-and-click-expected.png index 93837e3d..471c0ef 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-5-and-click-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-5-and-click-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-6-and-click-expected.png b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-6-and-click-expected.png index a2a9696..db0f18c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-6-and-click-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-6-and-click-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-7-and-click-expected.png b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-7-and-click-expected.png index a2a9696..db0f18c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-7-and-click-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-7-and-click-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-8-and-click-expected.png b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-8-and-click-expected.png index 77619ba..2481112 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-8-and-click-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-8-and-click-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-9-and-click-expected.png b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-9-and-click-expected.png index 52c65061..4a2dad9c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-9-and-click-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-add-summary-9-and-click-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-1-and-click-expected.png b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-1-and-click-expected.png index a1dc6ea..58d7ff30 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-1-and-click-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-1-and-click-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-2-and-click-expected.png b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-2-and-click-expected.png index 70287d8..02b83e58 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-2-and-click-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-2-and-click-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-3-and-click-expected.png b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-3-and-click-expected.png index 10668ac..7af1fee0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-3-and-click-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-3-and-click-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-4-and-click-expected.png b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-4-and-click-expected.png index 19f5efef..8f2784f6 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-4-and-click-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-4-and-click-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-5-and-click-expected.png b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-5-and-click-expected.png index 8aa5a8b8..3a109229 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-5-and-click-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-5-and-click-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-6-and-click-expected.png b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-6-and-click-expected.png index 22327d4..c55cf1d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-6-and-click-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/html/details_summary/details-remove-summary-6-and-click-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-content-edge-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-content-edge-001-expected.png index 2f829d52..a86356a1 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-content-edge-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-content-edge-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png index 3b6300b..1f53717 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-not-inherited-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-not-inherited-001-expected.png index a8ba763..7f2506c0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-not-inherited-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-not-inherited-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-shorthand-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-shorthand-001-expected.png index eabd253..bf875b9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-shorthand-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-shorthand-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png index b159e2a..12a32fab 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png index abf45b8..6814f01 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-004-expected.png b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-004-expected.png index bc483c20..6ce256a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-004-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-004-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/images/imagemap-circle-focus-ring-expected.png b/third_party/WebKit/LayoutTests/platform/mac/images/imagemap-circle-focus-ring-expected.png index c0b110c..0c56e8c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/images/imagemap-circle-focus-ring-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/images/imagemap-circle-focus-ring-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png b/third_party/WebKit/LayoutTests/platform/mac/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png index 6341a10..3029ddd 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/images/imagemap-overflowing-circle-focus-ring-expected.png b/third_party/WebKit/LayoutTests/platform/mac/images/imagemap-overflowing-circle-focus-ring-expected.png index 9da7c0c..83f56ac0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/images/imagemap-overflowing-circle-focus-ring-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/images/imagemap-overflowing-circle-focus-ring-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/images/imagemap-overflowing-polygon-focus-ring-expected.png b/third_party/WebKit/LayoutTests/platform/mac/images/imagemap-overflowing-polygon-focus-ring-expected.png index 12f8146b0..b918a01 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/images/imagemap-overflowing-polygon-focus-ring-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/images/imagemap-overflowing-polygon-focus-ring-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/4776765-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/4776765-expected.png index ba620ef0..e2ea361 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/4776765-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/4776765-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/delete-into-nested-block-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/delete-into-nested-block-expected.png index 2de9ffa..44f16b65 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/delete-into-nested-block-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/delete-into-nested-block-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/invalidate-caret-before-text-node-update-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/invalidate-caret-before-text-node-update-expected.png index b0de2cc..26b45e1 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/invalidate-caret-before-text-node-update-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/invalidate-caret-before-text-node-update-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/outline/inline-focus-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/outline/inline-focus-expected.png index 0f0551b..638fa78 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/outline/inline-focus-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/outline/inline-focus-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/table/caret-contenteditable-content-after-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/table/caret-contenteditable-content-after-expected.png index 5674348..4ba1e9f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/table/caret-contenteditable-content-after-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/table/caret-contenteditable-content-after-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-expected.png index 2ff15736..475cd233 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-125-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-125-expected.png index ab19b51..fa4536b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-125-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-125-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-150-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-150-expected.png index 6555d35..852e03e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-150-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-150-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-175-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-175-expected.png index 1288609..4c79b59 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-175-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-175-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-200-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-200-expected.png index 4ab79a0c..ba9086e0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-200-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-200-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-250-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-250-expected.png index bff6571..bd7e98d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-250-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/paint/markers/document-markers-zoom-250-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png b/third_party/WebKit/LayoutTests/platform/mac/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png index 18961e19..ea26f98 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png index b4b21d8..c9e51768 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png index 3cc3e6f..9256872 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png index 5df354f..0e18b4a08 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png index 1fcc0e0..987b433f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-26-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-26-t-expected.png index 8c9bc853..911304b57 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-26-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-26-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-28-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-28-t-expected.png index f6cb168..bd49f81 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-28-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-28-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-29-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-29-b-expected.png index 95896d4..6032533 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-29-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-29-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png index 9fbebfe8..fe18994 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-31-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-31-t-expected.png index 255e6550..5c9940e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-31-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-31-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png index 35aa0090..d2a767b0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png index 3e9d976..4e010b90 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-39-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-39-t-expected.png index ba7b01a..ddae108 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-39-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-39-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png index a2b58a3..3703878 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png index abb7587..46b5ef9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png index 15951cc0..11b083a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png index 669d321..654e730 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png index 473af9a..4b2cb47 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png index c91bb7e0..0f04f887 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png index cc28ebe..8b81b3d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/color-prop-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/color-prop-01-b-expected.png index 3e0e01c..032f9ab 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/color-prop-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/color-prop-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png index fb95304..b9d2acf5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png index d95c225..1958a56a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png index 14d1554..9952a06d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png index 9228976..c0e1f25f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png index 2acef1a..fd87ed12 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png index f0a4a0ca..2f407e6f 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/interact-zoom-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/interact-zoom-01-t-expected.png index 879a13e8..ae6868d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/interact-zoom-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/interact-zoom-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/linking-a-04-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/linking-a-04-t-expected.png index efb450d1..31a4bcb1 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/linking-a-04-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/linking-a-04-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/linking-a-05-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/linking-a-05-t-expected.png index 1a79710..c3f48bfb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/linking-a-05-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/linking-a-05-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/linking-a-07-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/linking-a-07-t-expected.png index 7160db2..79a4f52e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/linking-a-07-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/linking-a-07-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png index 34eaec14..9b192a9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png index e0f7635..157d9eb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png index 3682692..be362a5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png index 5f52e61..19fd8c8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png index 61833c4..7e2c8629a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-01-t-expected.png index 416a43a..fb51b24 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-03-f-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-03-f-expected.png index 51d988d9..45593ca 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-03-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-03-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-04-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-04-t-expected.png index 88f909c..b0e0e31 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-04-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-04-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-05-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-05-t-expected.png index 55b27b3..a16936b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-05-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-05-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-08-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-08-t-expected.png index ab28376..1212172 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-08-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-08-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-09-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-09-t-expected.png index d91d6e7..819356a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-09-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-09-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-10-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-10-t-expected.png index 40b1ab5..9013d75 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-10-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-10-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-12-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-12-t-expected.png index a2e112c..10511f0 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-12-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-12-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-14-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-14-t-expected.png index 386129a..37acf074 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-14-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/paths-data-14-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-elems-02-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-elems-02-t-expected.png index 48e197ec..8bad0050 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-elems-02-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-elems-02-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-elems-03-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-elems-03-t-expected.png index 48e4724..62a700c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-elems-03-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/render-elems-03-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/script-handle-02-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/script-handle-02-b-expected.png index 1c97b9d..f9123aa 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/script-handle-02-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/script-handle-02-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/script-handle-03-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/script-handle-03-b-expected.png index baa5dff..1d36f52d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/script-handle-03-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/script-handle-03-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/script-handle-04-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/script-handle-04-b-expected.png index e689ccc..4c30157 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/script-handle-04-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/script-handle-04-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png index b27a7f07..6141c4c9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.png index aefbd9e..99f7ab6 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-ellipse-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-ellipse-01-t-expected.png index de6832bc..7a42023 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-ellipse-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-ellipse-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.png index 99502d58..ea40247e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png index 896f038..b1d55f6 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png index b4d7ce6..36ef8344 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-rect-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-rect-01-t-expected.png index 14698909..252bd9a8 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-rect-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-rect-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-rect-02-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-rect-02-t-expected.png index 82057d7..08c7426 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-rect-02-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/shapes-rect-02-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/struct-group-03-t-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/struct-group-03-t-expected.png index 0a84d2a..be42c8cf 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/struct-group-03-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/struct-group-03-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-path-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-path-01-b-expected.png index cbd288d..833a66d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-path-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/W3C-SVG-1.1/text-path-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/animations/animateMotion-accumulate-1a-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/animations/animateMotion-accumulate-1a-expected.png index 0a9055e4c..499244b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/animations/animateMotion-accumulate-1a-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/animations/animateMotion-accumulate-1a-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/animations/animateMotion-accumulate-1b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/animations/animateMotion-accumulate-1b-expected.png index 687c90af..80843b2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/animations/animateMotion-accumulate-1b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/animations/animateMotion-accumulate-1b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/animations/animateMotion-accumulate-1c-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/animations/animateMotion-accumulate-1c-expected.png index bcc3de2..3fb75dd 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/animations/animateMotion-accumulate-1c-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/animations/animateMotion-accumulate-1c-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png index 1fad25f33..f98f8b4c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/as-background-image/svg-as-background-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/as-background-image/svg-as-background-1-expected.png index ddfb09c..82496d9b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/as-background-image/svg-as-background-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/as-background-image/svg-as-background-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/as-background-image/svg-as-background-5-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/as-background-image/svg-as-background-5-expected.png index 98c2fe3..25d6988 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/as-background-image/svg-as-background-5-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/as-background-image/svg-as-background-5-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/as-background-image/svg-as-background-6-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/as-background-image/svg-as-background-6-expected.png index 5083aab..27ddb0b5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/as-background-image/svg-as-background-6-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/as-background-image/svg-as-background-6-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/batik/filters/feTile-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/batik/filters/feTile-expected.png index 8ae9a67..c373a568 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/batik/filters/feTile-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/batik/filters/feTile-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/batik/text/textGlyphOrientationHorizontal-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/batik/text/textGlyphOrientationHorizontal-expected.png index c8f2bbdb..adabf4c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/batik/text/textGlyphOrientationHorizontal-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/batik/text/textGlyphOrientationHorizontal-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/carto.net/button-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/carto.net/button-expected.png index deccbb0..96027fa 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/carto.net/button-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/carto.net/button-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/focus-ring-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/focus-ring-expected.png index 1b65364e..0ef9f5a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/focus-ring-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/focus-ring-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/invalid-css-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/invalid-css-expected.png index 55b1c442..12455fe 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/invalid-css-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/invalid-css-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png index 543440b..92c7109 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-transform-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-transform-expected.png index fb71396c..59d46b2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-transform-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-transform-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-viewBox-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-viewBox-expected.png index 29a9e69..bac9628 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-viewBox-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-viewBox-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-viewBox-transform-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-viewBox-transform-expected.png index bdd38fb..4ada349 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-viewBox-transform-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-viewBox-transform-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-viewTarget-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-viewTarget-expected.png index 543440b..92c7109 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-viewTarget-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-viewTarget-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-zoomAndPan-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-zoomAndPan-expected.png index 543440b..92c7109 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-zoomAndPan-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/linking-a-03-b-zoomAndPan-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-symbol-inside-pattern-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-symbol-inside-pattern-expected.png index f0d3f05..f0509ba 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-symbol-inside-pattern-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-on-symbol-inside-pattern-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-transform-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-transform-expected.png index bb69b8f5..cacafe1 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-transform-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/custom/use-transform-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/error/017-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/error/017-expected.png index 360b944..ca91365 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/error/017-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/error/017-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/perf/001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/perf/001-expected.png index 2cec160..3670f822 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/perf/001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/perf/001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/perf/002-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/perf/002-expected.png index 29d7494..bd3ef5e9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/perf/002-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/perf/002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/perf/007-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/perf/007-expected.png index 3090a0ab..ff3d730 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/perf/007-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/hixie/perf/007-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/text/small-fonts-3-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/text/small-fonts-3-expected.png index 149f7db..0280a4b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/text/small-fonts-3-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/text/small-fonts-3-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/text/text-selection-path-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/text/text-selection-path-01-b-expected.png index b04506b..c3544a4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/text/text-selection-path-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/text/text-selection-path-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png index b648de12..028bbf5 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png index 18e5488..763e9b0d 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png index a2994a1..d2f057d7 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-circle-focus-ring-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-circle-focus-ring-expected.png index 305253e..0a95c70 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-circle-focus-ring-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-circle-focus-ring-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.png index 01483d8..30303d4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png index 89cb1a9..09fdcd3 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-overflowing-circle-focus-ring-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-overflowing-circle-focus-ring-expected.png index beb21b6..fd6a710 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-overflowing-circle-focus-ring-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-overflowing-circle-focus-ring-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-overflowing-polygon-focus-ring-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-overflowing-polygon-focus-ring-expected.png index 8fa8c43..344afcf01 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-overflowing-polygon-focus-ring-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/exotic-color-space/images/imagemap-overflowing-polygon-focus-ring-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png index 03f4ef0..36fbe81 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu-rasterization/images/imagemap-overflowing-polygon-focus-ring-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu/fast/canvas/downsample-quality-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu/fast/canvas/downsample-quality-expected.png index a232d55..38523ea 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu/fast/canvas/downsample-quality-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu/fast/canvas/downsample-quality-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.png new file mode 100644 index 0000000..3f9d59d --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.txt new file mode 100644 index 0000000..d0b344c --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.txt
@@ -0,0 +1,25 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x244 + LayoutNGBlockFlow {HTML} at (0,0) size 800x244 + LayoutNGBlockFlow {BODY} at (8,16) size 784x220 + LayoutNGBlockFlow {P} at (0,0) size 784x36 + LayoutText {#text} at (0,0) size 726x36 + text run at (0,0) width 726: "The word 'PASS' should be seen below on the right hand side, inside a rounded box with black border and yellow" + text run at (0,18) width 80: "background." +layer at (8,68) size 784x168 + LayoutNGBlockFlow {DIV} at (0,52) size 784x168 + LayoutMultiColumnSet (anonymous) at (0,0) size 784x168 +layer at (8,68) size 392x264 backgroundClip at (0,0) size 400x236 clip at (0,0) size 400x236 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 392x264 + LayoutNGBlockFlow (anonymous) at (0,0) size 392x200 + LayoutBR {BR} at (0,7) size 0x0 + LayoutBR {BR} at (0,39) size 0x0 + LayoutBR {BR} at (0,71) size 0x0 + LayoutBR {BR} at (0,103) size 0x0 + LayoutBR {BR} at (0,135) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (400,100) size 392x64 clip at (416,116) size 360x32 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,200) size 392x64 [bgcolor=#FFFF00] [border: (16px solid #000000)] + LayoutText {#text} at (177,23) size 38x18 + text run at (177,23) width 38: "PASS"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-inner-multicol-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-inner-multicol-expected.txt new file mode 100644 index 0000000..c1cf777 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-inner-multicol-expected.txt
@@ -0,0 +1,40 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x196 + LayoutNGBlockFlow {HTML} at (0,0) size 800x196 + LayoutNGBlockFlow {BODY} at (8,16) size 784x172 + LayoutNGBlockFlow {P} at (0,0) size 784x36 + LayoutText {#text} at (0,0) size 763x36 + text run at (0,0) width 763: "Below you should see the word 'PASS' (with some extra letter spacing), on a yellow background (which should be a bit" + text run at (0,18) width 705: "faded near the top). The first S is below the A, because they composite together and hence are not fragmented." +layer at (8,68) size 480x120 + LayoutNGBlockFlow {DIV} at (0,52) size 480x120 + LayoutMultiColumnSet (anonymous) at (0,0) size 480x120 +layer at (8,68) size 240x240 backgroundClip at (0,0) size 248x188 clip at (0,0) size 248x188 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 240x240 + LayoutNGBlockFlow (anonymous) at (0,0) size 240x184 + LayoutBR {BR} at (0,7) size 0x0 + LayoutBR {BR} at (0,39) size 0x0 + LayoutBR {BR} at (0,71) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (256,132) size 80x48 + LayoutNGBlockFlow {DIV} at (8,184) size 80x48 [bgcolor=#FFFF00] + LayoutMultiColumnSet (anonymous) at (8,8) size 64x32 +layer at (264,140) size 16x128 backgroundClip at (248,68) size 32x104 clip at (248,68) size 32x104 + LayoutMultiColumnFlowThread (anonymous) at (8,8) size 16x128 + LayoutNGBlockFlow (anonymous) at (0,0) size 16x32 + LayoutText {#text} at (0,7) size 9x18 + text run at (0,7) width 9: "P" + LayoutBR {BR} at (8,7) size 0x0 + LayoutNGBlockFlow (anonymous) at (0,96) size 16x32 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (240,68) size 112x53 transparent + LayoutNGBlockFlow (positioned) {DIV} at (240,68) size 112x52.80 [bgcolor=#FFFFFF] +layer at (280,140) size 16x64 backgroundClip at (280,140) size 16x32 clip at (280,140) size 16x32 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,32) size 16x64 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-expected.txt new file mode 100644 index 0000000..a5b595c --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-expected.txt
@@ -0,0 +1,43 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x316 + LayoutNGBlockFlow {HTML} at (0,0) size 800x316 + LayoutNGBlockFlow {BODY} at (8,16) size 784x252 + LayoutNGBlockFlow {P} at (0,0) size 784x36 + LayoutText {#text} at (0,0) size 741x36 + text run at (0,0) width 741: "If no compositing were present, there should be two green squares below. Since some elements are composited, and" + text run at (0,18) width 309: "therefore not fragmented, the output is different." +layer at (8,100) size 60x60 + LayoutNGBlockFlow {DIV} at (0,84) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,100) size 20x180 backgroundClip at (0,0) size 28x160 clip at (0,0) size 28x160 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,140) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,208) size 60x60 + LayoutNGBlockFlow {DIV} at (0,192) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,208) size 20x180 backgroundClip at (0,0) size 28x268 clip at (0,0) size 28x268 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,140) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,140) size 20x40 backgroundClip at (0,0) size 28x160 clip at (0,0) size 28x160 + LayoutNGBlockFlow {DIV} at (0,40) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (28,140) size 20x40 backgroundClip at (0,0) size 28x160 clip at (0,0) size 28x160 + LayoutNGBlockFlow {DIV} at (0,100) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (8,248) size 20x100 backgroundClip at (0,0) size 28x268 clip at (0,0) size 28x268 + LayoutNGBlockFlow {DIV} at (0,40) size 20x100 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,60) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-translated-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-translated-expected.png new file mode 100644 index 0000000..3ad6d33 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-translated-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-translated-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-translated-expected.txt new file mode 100644 index 0000000..c5e2845 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-translated-expected.txt
@@ -0,0 +1,27 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x136 + LayoutNGBlockFlow {HTML} at (0,0) size 800x136 + LayoutNGBlockFlow {BODY} at (8,16) size 784x112 + LayoutNGBlockFlow {P} at (0,0) size 784x36 + LayoutText {#text} at (0,0) size 754x36 + text run at (0,0) width 754: "There should be two small green squares vertically aligned below, and another red square to the top-right. The second" + text run at (0,18) width 585: "green square does not overlap the red because it is conmposited, and hence not fragmented." +layer at (8,68) size 60x60 + LayoutNGBlockFlow {DIV} at (0,52) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,68) size 20x180 backgroundClip at (0,0) size 28x128 clip at (0,0) size 28x128 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow (anonymous) at (0,0) size 20x100 + LayoutBR {BR} at (0,1) size 0x0 + LayoutBR {BR} at (0,21) size 0x0 + LayoutBR {BR} at (0,41) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#FF0000] +layer at (28,108) size 20x60 backgroundClip at (0,0) size 28x128 clip at (0,0) size 28x128 + LayoutNGBlockFlow {DIV} at (0,100) size 20x60 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow (anonymous) at (0,20) size 20x20 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-layer-nested-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-layer-nested-expected.txt new file mode 100644 index 0000000..febd0d0 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-layer-nested-expected.txt
@@ -0,0 +1,51 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x316 + LayoutNGBlockFlow {HTML} at (0,0) size 800x316 + LayoutNGBlockFlow {BODY} at (8,16) size 784x252 + LayoutNGBlockFlow {P} at (0,0) size 784x36 + LayoutText {#text} at (0,0) size 741x36 + text run at (0,0) width 741: "If no compositing were present, there should be two green squares below. Since some elements are composited, and" + text run at (0,18) width 309: "therefore not fragmented, the output is different." +layer at (8,100) size 60x60 + LayoutNGBlockFlow {DIV} at (0,84) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,100) size 20x180 backgroundClip at (0,0) size 28x160 clip at (0,0) size 28x160 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,100) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,120) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,140) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,208) size 60x60 + LayoutNGBlockFlow {DIV} at (0,192) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,208) size 20x180 backgroundClip at (0,0) size 28x268 clip at (0,0) size 28x268 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 +layer at (8,120) size 20x80 backgroundClip at (0,0) size 28x160 clip at (0,0) size 28x160 + LayoutNGBlockFlow {DIV} at (0,20) size 20x80 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,60) size 20x20 [bgcolor=#008000] +layer at (8,140) size 20x40 backgroundClip at (0,0) size 28x160 clip at (0,0) size 28x160 + LayoutNGBlockFlow {DIV} at (0,20) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (8,208) size 20x180 backgroundClip at (0,0) size 28x268 clip at (0,0) size 28x268 + LayoutNGBlockFlow {DIV} at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000] +layer at (8,208) size 20x80 backgroundClip at (0,0) size 28x268 clip at (0,0) size 28x268 + LayoutNGBlockFlow {DIV} at (0,0) size 20x80 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (8,248) size 20x40 backgroundClip at (0,0) size 28x268 clip at (0,0) size 28x268 + LayoutNGBlockFlow {DIV} at (0,40) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (8,308) size 20x80 backgroundClip at (0,0) size 28x268 clip at (0,0) size 28x268 + LayoutNGBlockFlow {DIV} at (0,100) size 20x80 + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,60) size 20x20 [bgcolor=#008000] +layer at (8,308) size 20x40 backgroundClip at (0,0) size 28x268 clip at (0,0) size 28x268 + LayoutNGBlockFlow {DIV} at (0,0) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-layer-will-change-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-layer-will-change-expected.txt new file mode 100644 index 0000000..fa628f2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-layer-will-change-expected.txt
@@ -0,0 +1,69 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x424 + LayoutNGBlockFlow {HTML} at (0,0) size 800x424 + LayoutNGBlockFlow {BODY} at (8,16) size 784x360 + LayoutNGBlockFlow {P} at (0,0) size 784x36 + LayoutText {#text} at (0,0) size 741x36 + text run at (0,0) width 741: "If no compositing were present, there should be two green squares below. Since some elements are composited, and" + text run at (0,18) width 309: "therefore not fragmented, the output is different." +layer at (8,100) size 60x60 + LayoutNGBlockFlow {DIV} at (0,84) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,100) size 20x180 backgroundClip at (0,0) size 28x160 clip at (0,0) size 28x160 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,208) size 60x60 + LayoutNGBlockFlow {DIV} at (0,192) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,208) size 20x180 backgroundClip at (0,0) size 28x268 clip at (0,0) size 28x268 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,316) size 60x60 + LayoutNGBlockFlow {DIV} at (0,300) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,316) size 20x180 backgroundClip at (0,0) size 28x376 clip at (0,0) size 28x376 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,100) size 20x20 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] +layer at (8,140) size 20x40 backgroundClip at (0,0) size 28x160 clip at (0,0) size 28x160 + LayoutNGBlockFlow {DIV} at (0,40) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (28,140) size 20x60 backgroundClip at (0,0) size 28x160 clip at (0,0) size 28x160 + LayoutNGBlockFlow {DIV} at (0,100) size 20x60 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000] +layer at (8,208) size 20x20 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] +layer at (8,248) size 20x40 backgroundClip at (0,0) size 28x268 clip at (0,0) size 28x268 + LayoutNGBlockFlow {DIV} at (0,40) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (28,248) size 20x60 backgroundClip at (0,0) size 28x268 clip at (0,0) size 28x268 + LayoutNGBlockFlow {DIV} at (0,100) size 20x60 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000] +layer at (8,316) size 20x20 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,0) size 20x20 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] +layer at (8,356) size 20x40 backgroundClip at (0,0) size 28x376 clip at (0,0) size 28x376 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,40) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (28,356) size 20x60 backgroundClip at (0,0) size 28x376 clip at (0,0) size 28x376 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,100) size 20x60 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-opacity-2nd-and-3rd-column-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-opacity-2nd-and-3rd-column-expected.txt new file mode 100644 index 0000000..3e8a90b --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-opacity-2nd-and-3rd-column-expected.txt
@@ -0,0 +1,39 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x284 + LayoutNGBlockFlow {HTML} at (0,0) size 800x284 + LayoutNGBlockFlow {BODY} at (8,16) size 784x260 + LayoutNGBlockFlow {P} at (0,0) size 784x36 + LayoutText {#text} at (0,0) size 211x18 + text run at (0,0) width 211: "The word 'PASS' should be seen " + LayoutInline {EM} at (0,0) size 35x18 + LayoutText {#text} at (210,0) size 35x18 + text run at (210,0) width 35: "twice" + LayoutText {#text} at (244,0) size 759x36 + text run at (244,0) width 515: " below. The second PASS is not overlapping the yellow because it is composited" + text run at (0,18) width 286: "with the first one, and hence not fragmented." +layer at (8,68) size 272x208 + LayoutNGBlockFlow {DIV} at (0,52) size 272x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 272x208 +layer at (8,68) size 80x456 backgroundClip at (0,0) size 96x276 clip at (0,0) size 96x276 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 80x456 + LayoutNGBlockFlow (anonymous) at (0,0) size 80x368 + LayoutBR {BR} at (0,7) size 0x0 + LayoutBR {BR} at (0,39) size 0x0 + LayoutBR {BR} at (0,71) size 0x0 + LayoutBR {BR} at (0,103) size 0x0 + LayoutBR {BR} at (0,135) size 0x0 + LayoutBR {BR} at (0,167) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,68) size 800x128 + LayoutNGBlockFlow (positioned) {DIV} at (0,68) size 800x128 [bgcolor=#FFFF00] +layer at (112,228) size 64x80 backgroundClip at (0,0) size 96x276 clip at (0,0) size 96x276 transparent + LayoutNGBlockFlow {DIV} at (8,368) size 64x80 + LayoutText {#text} at (0,7) size 37x18 + text run at (0,7) width 37: "PASS" + LayoutBR {BR} at (36,7) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-relpos-clipped-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-relpos-clipped-expected.txt new file mode 100644 index 0000000..a799ecd --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-relpos-clipped-expected.txt
@@ -0,0 +1,37 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x284 + LayoutNGBlockFlow {HTML} at (0,0) size 800x284 + LayoutNGBlockFlow {BODY} at (8,16) size 784x260 + LayoutNGBlockFlow {P} at (0,0) size 784x36 + LayoutText {#text} at (0,0) size 780x36 + text run at (0,0) width 780: "There should be one yellow boxes below, on a blue background. There is only one because the content is composited, and" + text run at (0,18) width 143: "hence not fragmented." +layer at (8,68) size 272x208 + LayoutNGBlockFlow {DIV} at (0,52) size 272x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 272x208 +layer at (8,68) size 128x272 backgroundClip at (0,0) size 144x276 clip at (0,0) size 144x276 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 128x272 + LayoutNGBlockFlow (anonymous) at (0,0) size 128x128 + LayoutBR {BR} at (0,7) size 0x0 + LayoutBR {BR} at (0,39) size 0x0 + LayoutBR {BR} at (0,71) size 0x0 + LayoutBR {BR} at (0,103) size 0x0 +layer at (0,68) size 800x208 + LayoutNGBlockFlow (positioned) {DIV} at (0,68) size 800x208 [bgcolor=#0000FF] +layer at (16,204) size 112x136 backgroundClip at (16,204) size 112x72 clip at (16,204) size 112x72 scrollHeight 176 + LayoutNGBlockFlow (relative positioned) {DIV} at (8,136) size 112x136 [bgcolor=#FFFF00] + LayoutNGBlockFlow (anonymous) at (0,0) size 112x144 + LayoutText {#text} at (0,7) size 25x18 + text run at (0,7) width 25: "first" + LayoutBR {BR} at (24,7) size 0x0 + LayoutText {#text} at (0,39) size 48x18 + text run at (0,39) width 48: "column" + LayoutBR {BR} at (48,39) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (0,144) size 112x32 [bgcolor=#FF0000] + LayoutText {#text} at (0,7) size 35x18 + text run at (0,7) width 35: "FAIL"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-relpos-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-relpos-expected.txt new file mode 100644 index 0000000..3651f17 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-relpos-expected.txt
@@ -0,0 +1,33 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x284 + LayoutNGBlockFlow {HTML} at (0,0) size 800x284 + LayoutNGBlockFlow {BODY} at (8,16) size 784x260 + LayoutNGBlockFlow {P} at (0,0) size 784x36 + LayoutText {#text} at (0,0) size 763x36 + text run at (0,0) width 763: "There should be one yellow boxbelow, on a blue background. There is only one because the content is composited, and" + text run at (0,18) width 143: "hence not fragmented." +layer at (8,68) size 272x208 + LayoutNGBlockFlow {DIV} at (0,52) size 272x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 272x208 +layer at (8,68) size 128x280 backgroundClip at (0,0) size 144x276 clip at (0,0) size 144x276 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 128x280 + LayoutNGBlockFlow (anonymous) at (0,0) size 128x128 + LayoutBR {BR} at (0,7) size 0x0 + LayoutBR {BR} at (0,39) size 0x0 + LayoutBR {BR} at (0,71) size 0x0 + LayoutBR {BR} at (0,103) size 0x0 +layer at (0,68) size 800x208 + LayoutNGBlockFlow (positioned) {DIV} at (0,68) size 800x208 [bgcolor=#0000FF] +layer at (16,204) size 112x136 backgroundClip at (0,0) size 144x276 clip at (0,0) size 144x276 + LayoutNGBlockFlow (relative positioned) {DIV} at (8,136) size 112x136 [bgcolor=#FFFF00] + LayoutText {#text} at (0,7) size 25x18 + text run at (0,7) width 25: "first" + LayoutBR {BR} at (24,7) size 0x0 + LayoutText {#text} at (0,39) size 48x18 + text run at (0,39) width 48: "column" + LayoutBR {BR} at (48,39) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-relpos-in-clipped-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-relpos-in-clipped-expected.txt new file mode 100644 index 0000000..745bb74 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-relpos-in-clipped-expected.txt
@@ -0,0 +1,36 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x266 + LayoutNGBlockFlow {HTML} at (0,0) size 800x266 + LayoutNGBlockFlow {BODY} at (8,16) size 784x242 + LayoutNGBlockFlow {P} at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 710x18 + text run at (0,0) width 710: "There should be one yellow box below, on a blue background. the \"second column\" part should be clipped out." +layer at (8,50) size 272x208 + LayoutNGBlockFlow {DIV} at (0,34) size 272x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 272x208 +layer at (8,50) size 128x272 backgroundClip at (8,50) size 136x208 clip at (8,50) size 136x208 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 128x272 + LayoutNGBlockFlow (anonymous) at (0,0) size 128x128 + LayoutBR {BR} at (0,7) size 0x0 + LayoutBR {BR} at (0,39) size 0x0 + LayoutBR {BR} at (0,71) size 0x0 + LayoutBR {BR} at (0,103) size 0x0 +layer at (0,50) size 800x208 + LayoutNGBlockFlow (positioned) {DIV} at (0,50) size 800x208 [bgcolor=#0000FF] +layer at (16,186) size 112x136 backgroundClip at (16,186) size 112x72 clip at (16,186) size 112x72 scrollHeight 176 + LayoutNGBlockFlow (relative positioned) {DIV} at (8,136) size 112x136 [bgcolor=#FFFF00] + LayoutNGBlockFlow (anonymous) at (0,0) size 112x144 + LayoutText {#text} at (0,7) size 25x18 + text run at (0,7) width 25: "first" + LayoutBR {BR} at (24,7) size 0x0 + LayoutText {#text} at (0,39) size 48x18 + text run at (0,39) width 48: "column" + LayoutBR {BR} at (48,39) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (0,144) size 112x32 [bgcolor=#FF0000] + LayoutText {#text} at (0,7) size 35x18 + text run at (0,7) width 35: "FAIL"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-relpos-overlapping-will-change-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-relpos-overlapping-will-change-expected.txt new file mode 100644 index 0000000..2050d0b --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-relpos-overlapping-will-change-expected.txt
@@ -0,0 +1,39 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x284 + LayoutNGBlockFlow {HTML} at (0,0) size 800x284 + LayoutNGBlockFlow {BODY} at (8,16) size 784x260 + LayoutNGBlockFlow {P} at (0,0) size 784x36 + LayoutText {#text} at (0,0) size 211x18 + text run at (0,0) width 211: "The word 'PASS' should be seen " + LayoutInline {EM} at (0,0) size 35x18 + LayoutText {#text} at (210,0) size 35x18 + text run at (210,0) width 35: "twice" + LayoutText {#text} at (244,0) size 759x36 + text run at (244,0) width 515: " below. The second PASS is not overlapping the yellow because it is composited" + text run at (0,18) width 286: "with the first one, and hence not fragmented." +layer at (8,68) size 560x208 + LayoutNGBlockFlow {DIV} at (0,52) size 560x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 560x208 +layer at (8,68) size 176x456 backgroundClip at (0,0) size 192x276 clip at (0,0) size 192x276 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 176x456 + LayoutNGBlockFlow (anonymous) at (0,0) size 176x368 + LayoutBR {BR} at (0,7) size 0x0 + LayoutBR {BR} at (0,39) size 0x0 + LayoutBR {BR} at (0,71) size 0x0 + LayoutBR {BR} at (0,103) size 0x0 + LayoutBR {BR} at (0,135) size 0x0 + LayoutBR {BR} at (0,167) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,68) size 800x128 + LayoutNGBlockFlow (positioned) {DIV} at (0,68) size 800x128 [bgcolor=#FFFF00] +layer at (208,228) size 160x80 backgroundClip at (0,0) size 192x276 clip at (0,0) size 192x276 + LayoutNGBlockFlow (relative positioned) {DIV} at (8,368) size 160x80 + LayoutText {#text} at (0,7) size 37x18 + text run at (0,7) width 37: "PASS" + LayoutBR {BR} at (36,7) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-relpos-resize-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-relpos-resize-expected.txt new file mode 100644 index 0000000..10866430 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-relpos-resize-expected.txt
@@ -0,0 +1,32 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x266 + LayoutNGBlockFlow {HTML} at (0,0) size 800x266 + LayoutNGBlockFlow {BODY} at (8,16) size 784x242 + LayoutNGBlockFlow {P} at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 767x18 + text run at (0,0) width 767: "There should be one yellow box below. There is only one because the content is composited, and hence not fragmented." +layer at (8,50) size 706x208 + LayoutNGBlockFlow {DIV} at (0,34) size 705.59x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 705.59x208 +layer at (8,50) size 353x280 backgroundClip at (0,0) size 361x258 clip at (0,0) size 361x258 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 352.80x280 + LayoutNGBlockFlow (anonymous) at (0,0) size 352.80x128 + LayoutBR {BR} at (0,7) size 0x0 + LayoutBR {BR} at (0,39) size 0x0 + LayoutBR {BR} at (0,71) size 0x0 + LayoutBR {BR} at (0,103) size 0x0 +layer at (0,50) size 800x240 + LayoutNGBlockFlow (positioned) {DIV} at (0,50) size 800x240 [bgcolor=#00FFFF] +layer at (16,186) size 337x136 backgroundClip at (0,0) size 361x258 clip at (0,0) size 361x258 + LayoutNGBlockFlow (relative positioned) {DIV} at (8,136) size 336.80x136 [bgcolor=#FFFF00] + LayoutText {#text} at (0,7) size 25x18 + text run at (0,7) width 25: "first" + LayoutBR {BR} at (24,7) size 0x0 + LayoutText {#text} at (0,39) size 48x18 + text run at (0,39) width 48: "column" + LayoutBR {BR} at (48,39) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-with-child-layer-in-next-column-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-with-child-layer-in-next-column-expected.txt new file mode 100644 index 0000000..db1e5f6a --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-with-child-layer-in-next-column-expected.txt
@@ -0,0 +1,33 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x220 + LayoutNGBlockFlow {HTML} at (0,0) size 800x220 + LayoutNGBlockFlow {BODY} at (8,16) size 784x196 + LayoutNGBlockFlow {P} at (0,0) size 784x36 + LayoutText {#text} at (0,0) size 749x36 + text run at (0,0) width 749: "There should be a yellow box in the second column, and the word 'PASS' should be below it. PASS is not in the third" + text run at (0,18) width 469: "column because they are composited together, and hence not fragmented." +layer at (8,68) size 272x144 + LayoutNGBlockFlow {DIV} at (0,52) size 272x144 + LayoutMultiColumnSet (anonymous) at (0,0) size 272x144 +layer at (8,68) size 80x272 backgroundClip at (0,0) size 96x212 clip at (0,0) size 96x212 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 80x272 + LayoutNGBlockFlow (anonymous) at (0,0) size 80x240 + LayoutBR {BR} at (0,7) size 0x0 + LayoutBR {BR} at (0,39) size 0x0 + LayoutBR {BR} at (0,71) size 0x0 + LayoutBR {BR} at (0,103) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,68) size 800x144 + LayoutNGBlockFlow (positioned) {DIV} at (0,68) size 800x144 [bgcolor=#00FFFF] +layer at (104,164) size 80x32 backgroundClip at (0,0) size 96x212 clip at (0,0) size 96x212 + LayoutNGBlockFlow (relative positioned) zI: 2 {DIV} at (0,240) size 80x32 [bgcolor=#FFFF00] + LayoutNGBlockFlow (anonymous) at (0,0) size 80x80 + LayoutBR {BR} at (0,7) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (112,228) size 64x32 backgroundClip at (0,0) size 96x212 clip at (0,0) size 96x212 transparent + LayoutNGBlockFlow {DIV} at (8,64) size 64x32 + LayoutText {#text} at (0,7) size 37x18 + text run at (0,7) width 37: "PASS"
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-with-overflow-in-next-column-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-with-overflow-in-next-column-expected.txt new file mode 100644 index 0000000..8714fd7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/composited-with-overflow-in-next-column-expected.txt
@@ -0,0 +1,28 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x202 + LayoutNGBlockFlow {HTML} at (0,0) size 800x202 + LayoutNGBlockFlow {BODY} at (8,16) size 784x178 + LayoutNGBlockFlow {P} at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 383x18 + text run at (0,0) width 383: "The word 'PASS' should be seen below, in the third column." +layer at (8,50) size 784x144 + LayoutNGBlockFlow {DIV} at (0,34) size 784x144 + LayoutMultiColumnSet (anonymous) at (0,0) size 784x144 +layer at (8,50) size 251x256 backgroundClip at (0,0) size 267x194 clip at (0,0) size 267x194 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 250.66x256 + LayoutNGBlockFlow (anonymous) at (0,0) size 250.66x240 + LayoutBR {BR} at (0,7) size 0x0 + LayoutBR {BR} at (0,39) size 0x0 + LayoutBR {BR} at (0,71) size 0x0 + LayoutBR {BR} at (0,103) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,98) size 800x18 + LayoutNGBlockFlow (positioned) {DIV} at (0,98) size 800x18 [border: (1px dotted #000000)] +layer at (275,146) size 251x16 backgroundClip at (0,0) size 267x194 clip at (0,0) size 267x194 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,240) size 250.66x16 + LayoutBR {BR} at (0,7) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/layers-in-multicol-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/layers-in-multicol-expected.txt new file mode 100644 index 0000000..c71c860 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/layers-in-multicol-expected.txt
@@ -0,0 +1,92 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x314 + LayoutNGBlockFlow {HTML} at (0,0) size 800x314 + LayoutNGBlockFlow {BODY} at (8,16) size 784x290 + LayoutNGBlockFlow {P} at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 390x18 + text run at (0,0) width 390: "Test layers which are fully contained within a single column." + LayoutNGBlockFlow (anonymous) at (0,34) size 784x18 + LayoutText {#text} at (0,0) size 34x18 + text run at (0,0) width 34: "LTR:" + LayoutNGBlockFlow (anonymous) at (0,162) size 784x18 + LayoutText {#text} at (0,0) size 34x18 + text run at (0,0) width 34: "RTL:" +layer at (8,68) size 310x110 + LayoutNGBlockFlow {DIV} at (0,52) size 310x110 [border: (5px solid #800000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 300x100 +layer at (13,73) size 100x280 backgroundClip at (0,0) size 113x173 clip at (0,0) size 113x173 + LayoutMultiColumnFlowThread (anonymous) at (5,5) size 100x280 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (105,30) size 16x10 [bgcolor=#008000] + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 +layer at (8,196) size 310x110 + LayoutNGBlockFlow {DIV} at (0,180) size 310x110 [border: (5px solid #800000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 300x100 +layer at (213,201) size 100x280 backgroundClip at (213,0) size 587x301 clip at (213,0) size 587x301 + LayoutMultiColumnFlowThread (anonymous) at (205,5) size 100x280 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (189,30) size 16x10 [bgcolor=#008000] + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 +layer at (13,69) size 0x0 + LayoutInline (relative positioned) {SPAN} at (0,0) size 0x0 [color=#008000] + LayoutText {#text} at (0,0) size 0x0 +layer at (13,73) size 0x0 transparent + LayoutInline {SPAN} at (0,0) size 0x0 [color=#008000] + LayoutText {#text} at (0,0) size 0x0 + LayoutInline {SPAN} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 +layer at (213,197) size 0x0 + LayoutInline (relative positioned) {SPAN} at (0,0) size 0x0 [color=#008000] + LayoutText {#text} at (0,0) size 0x0 +layer at (213,201) size 0x0 transparent + LayoutInline {SPAN} at (0,0) size 0x0 [color=#008000] + LayoutText {#text} at (0,0) size 0x0 + LayoutInline {SPAN} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/layers-split-across-columns-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/layers-split-across-columns-expected.txt new file mode 100644 index 0000000..d5f6bed --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/layers-split-across-columns-expected.txt
@@ -0,0 +1,84 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x8 + LayoutNGBlockFlow {HTML} at (0,0) size 800x8 + LayoutNGBlockFlow {BODY} at (8,8) size 784x0 +layer at (10,10) size 120x178 + LayoutNGBlockFlow (positioned) {DIV} at (10,10) size 120x178 + LayoutNGBlockFlow (anonymous) at (0,0) size 120x18 + LayoutText {#text} at (0,0) size 65x18 + text run at (0,0) width 65: "Overflow:" +layer at (10,28) size 120x160 + LayoutNGBlockFlow {DIV} at (0,18) size 120x160 [border: (5px solid #000000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 110x150 +layer at (15,33) size 50x300 backgroundClip at (0,0) size 70x183 clip at (0,0) size 70x183 + LayoutMultiColumnFlowThread (anonymous) at (5,5) size 50x300 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#000000] + LayoutNGBlockFlow {DIV} at (0,250) size 50x50 [bgcolor=#000000] +layer at (15,83) size 50x200 backgroundClip at (15,83) size 50x100 clip at (15,83) size 50x100 + LayoutNGBlockFlow {DIV} at (0,50) size 50x200 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#0000F0] + LayoutNGBlockFlow {DIV} at (0,50) size 50x50 [bgcolor=#0000D0] + LayoutNGBlockFlow {DIV} at (0,100) size 50x50 [bgcolor=#0000B0] + LayoutNGBlockFlow {DIV} at (0,150) size 50x50 [bgcolor=#000090] +layer at (150,10) size 120x178 + LayoutNGBlockFlow (positioned) {DIV} at (150,10) size 120x178 + LayoutNGBlockFlow (anonymous) at (0,0) size 120x18 + LayoutText {#text} at (0,0) size 78x18 + text run at (0,0) width 78: "Transforms:" +layer at (150,28) size 120x160 + LayoutNGBlockFlow {DIV} at (0,18) size 120x160 [border: (5px solid #000000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 110x150 +layer at (155,33) size 50x300 backgroundClip at (0,0) size 210x183 clip at (0,0) size 210x183 + LayoutMultiColumnFlowThread (anonymous) at (5,5) size 50x300 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#000000] + LayoutNGBlockFlow {DIV} at (0,250) size 50x50 [bgcolor=#000000] +layer at (55,83) size 50x200 backgroundClip at (0,0) size 210x183 clip at (0,0) size 210x183 + LayoutNGBlockFlow {DIV} at (-100,50) size 50x200 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#0000F0] + LayoutNGBlockFlow {DIV} at (0,50) size 50x50 [bgcolor=#0000D0] + LayoutNGBlockFlow {DIV} at (0,100) size 50x50 [bgcolor=#0000B0] + LayoutNGBlockFlow {DIV} at (0,150) size 50x50 [bgcolor=#000090] +layer at (10,200) size 120x178 + LayoutNGBlockFlow (positioned) {DIV} at (10,200) size 120x178 + LayoutNGBlockFlow (anonymous) at (0,0) size 120x18 + LayoutText {#text} at (0,0) size 89x18 + text run at (0,0) width 89: "Relative Pos.:" +layer at (10,218) size 120x160 + LayoutNGBlockFlow {DIV} at (0,18) size 120x160 [border: (5px solid #000000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 110x150 +layer at (15,223) size 50x300 backgroundClip at (0,0) size 70x373 clip at (0,0) size 70x373 + LayoutMultiColumnFlowThread (anonymous) at (5,5) size 50x300 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#000000] + LayoutNGBlockFlow {DIV} at (0,250) size 50x50 [bgcolor=#000000] +layer at (15,273) size 50x200 backgroundClip at (0,0) size 70x373 clip at (0,0) size 70x373 + LayoutNGBlockFlow (relative positioned) {DIV} at (-100,50) size 50x200 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#0000F0] + LayoutNGBlockFlow {DIV} at (0,50) size 50x50 [bgcolor=#0000D0] + LayoutNGBlockFlow {DIV} at (0,100) size 50x50 [bgcolor=#0000B0] + LayoutNGBlockFlow {DIV} at (0,150) size 50x50 [bgcolor=#000090] +layer at (150,200) size 120x178 + LayoutNGBlockFlow (positioned) {DIV} at (150,200) size 120x178 + LayoutNGBlockFlow (anonymous) at (0,0) size 120x18 + LayoutText {#text} at (0,0) size 56x18 + text run at (0,0) width 56: "Opacity:" +layer at (150,218) size 120x160 + LayoutNGBlockFlow {DIV} at (0,18) size 120x160 [border: (5px solid #000000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 110x150 +layer at (155,223) size 50x300 backgroundClip at (0,0) size 210x373 clip at (0,0) size 210x373 + LayoutMultiColumnFlowThread (anonymous) at (5,5) size 50x300 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#000000] + LayoutNGBlockFlow {DIV} at (0,250) size 50x50 [bgcolor=#000000] +layer at (155,273) size 50x200 backgroundClip at (0,0) size 210x373 clip at (0,0) size 210x373 transparent + LayoutNGBlockFlow {DIV} at (0,50) size 50x200 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#0000F0] + LayoutText {#text} at (0,0) size 4x18 + text run at (0,0) width 4: " " + LayoutNGBlockFlow {DIV} at (0,50) size 50x50 [bgcolor=#0000D0] + LayoutText {#text} at (0,0) size 4x18 + text run at (0,0) width 4: " " + LayoutNGBlockFlow {DIV} at (0,100) size 50x50 [bgcolor=#0000B0] + LayoutText {#text} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (0,150) size 50x50 [bgcolor=#000090] + LayoutText {#text} at (0,0) size 4x18 + text run at (0,0) width 4: " "
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/multicol-with-child-renderLayer-for-input-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/multicol-with-child-renderLayer-for-input-expected.txt new file mode 100644 index 0000000..2b04d696 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/multicol-with-child-renderLayer-for-input-expected.txt
@@ -0,0 +1,19 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutNGBlockFlow {HTML} at (0,0) size 800x600 + LayoutNGBlockFlow {BODY} at (8,8) size 784x584 +layer at (8,8) size 784x59 + LayoutNGBlockFlow {DIV} at (0,0) size 784x59 + LayoutMultiColumnSet (anonymous) at (0,0) size 784x59 +layer at (8,8) size 384x118 backgroundClip at (0,0) size 400x67 clip at (0,0) size 400x67 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 384x118 + LayoutText {#text} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 +layer at (551,46) size 131x19 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0 + LayoutTextControl (relative positioned) {INPUT} at (543.17,38) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] +layer at (554,49) size 125x13 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0 + LayoutBlockFlow {DIV} at (3,3) size 125x13 + LayoutText {#text} at (0,0) size 39x13 + text run at (0,0) width 39: "Testing" +caret: position 7 of child 0 {#text} of child 0 {DIV} of {#document-fragment} of child 1 {INPUT} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/span/invalid-spanner-in-transform-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/span/invalid-spanner-in-transform-expected.txt new file mode 100644 index 0000000..e55fb66 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/span/invalid-spanner-in-transform-expected.txt
@@ -0,0 +1,18 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x108 + LayoutNGBlockFlow {HTML} at (0,0) size 800x108 + LayoutNGBlockFlow {BODY} at (8,16) size 784x84 + LayoutNGBlockFlow {P} at (0,0) size 784x18 + LayoutText {#text} at (0,0) size 756x18 + text run at (0,0) width 756: "There should be one blue square below. It is not two because they are composited together, and hence not fragmented." +layer at (8,50) size 110x50 + LayoutNGBlockFlow {DIV} at (0,34) size 110x50 + LayoutMultiColumnSet (anonymous) at (0,0) size 110x50 +layer at (8,50) size 50x100 backgroundClip at (0,0) size 63x100 clip at (0,0) size 63x100 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 50x100 +layer at (8,50) size 50x100 backgroundClip at (0,0) size 63x100 clip at (0,0) size 63x100 + LayoutNGBlockFlow {DIV} at (0,0) size 50x100 + LayoutNGBlockFlow {DIV} at (0,0) size 50x100 [bgcolor=#0000FF] + LayoutBR {BR} at (0,16) size 0x0 + LayoutBR {BR} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change-expected.txt new file mode 100644 index 0000000..a7df235 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change-expected.txt
@@ -0,0 +1,40 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x492 + LayoutNGBlockFlow {HTML} at (0,0) size 800x492 + LayoutNGBlockFlow {BODY} at (8,16) size 784x468 + LayoutNGBlockFlow {P} at (0,0) size 784x36 + LayoutText {#text} at (0,0) size 211x18 + text run at (0,0) width 211: "The word 'PASS' should be seen " + LayoutInline {EM} at (0,0) size 35x18 + LayoutText {#text} at (210,0) size 35x18 + text run at (210,0) width 35: "twice" + LayoutText {#text} at (244,0) size 715x36 + text run at (244,0) width 471: " below. They appear together because they are composited, and hence not" + text run at (0,18) width 77: "fragmented." +layer at (8,68) size 208x416 + LayoutNGBlockFlow {DIV} at (0,52) size 208x416 + LayoutMultiColumnSet (anonymous) at (0,0) size 208x416 +layer at (8,68) size 456x128 backgroundClip at (0,0) size 216x204 clip at (0,0) size 216x204 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 456x128 + LayoutNGBlockFlow (anonymous) at (0,0) size 368x128 + LayoutBR {BR} at (7,0) size 0x0 + LayoutBR {BR} at (39,0) size 0x0 + LayoutBR {BR} at (71,0) size 0x0 + LayoutBR {BR} at (103,0) size 0x0 + LayoutBR {BR} at (135,0) size 0x0 + LayoutBR {BR} at (167,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,64) size 160x288 + LayoutNGBlockFlow (positioned) {DIV} at (0,64) size 160x288 [bgcolor=#FFFF00] +layer at (168,284) size 80x112 backgroundClip at (0,0) size 216x204 clip at (0,0) size 216x204 + LayoutNGBlockFlow (relative positioned) {DIV} at (160,216) size 80x112 + LayoutText {#text} at (7,0) size 18x37 + text run at (7,0) width 37: "PASS" + LayoutBR {BR} at (7,36) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change-expected.txt new file mode 100644 index 0000000..dd36ab2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/layout_ng_experimental/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change-expected.txt
@@ -0,0 +1,39 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x492 + LayoutNGBlockFlow {HTML} at (0,0) size 800x492 + LayoutNGBlockFlow {BODY} at (8,16) size 784x468 + LayoutNGBlockFlow {P} at (0,0) size 784x36 + LayoutText {#text} at (0,0) size 211x18 + text run at (0,0) width 211: "The word 'PASS' should be seen " + LayoutInline {EM} at (0,0) size 35x18 + LayoutText {#text} at (210,0) size 35x18 + text run at (210,0) width 35: "twice" + LayoutText {#text} at (244,0) size 715x36 + text run at (244,0) width 471: " below. They appear together because they are composited, and hence not" + text run at (0,18) width 77: "fragmented." +layer at (8,68) size 208x416 + LayoutNGBlockFlow {DIV} at (0,52) size 208x416 + LayoutMultiColumnSet (anonymous) at (0,0) size 208x416 +layer at (-240,68) size 456x128 backgroundClip at (8,0) size 792x204 clip at (8,0) size 792x204 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 456x128 + LayoutNGBlockFlow (anonymous) at (248,0) size 368x128 + LayoutBR {BR} at (183,0) size 0x0 + LayoutBR {BR} at (151,0) size 0x0 + LayoutBR {BR} at (119,0) size 0x0 + LayoutBR {BR} at (87,0) size 0x0 + LayoutBR {BR} at (55,0) size 0x0 + LayoutBR {BR} at (23,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,64) size 160x288 + LayoutNGBlockFlow (positioned) {DIV} at (0,64) size 160x288 [bgcolor=#FFFF00] +layer at (-64,428) size 80x112 backgroundClip at (8,204) size 208x144 clip at (8,204) size 208x144 + LayoutNGBlockFlow (relative positioned) {DIV} at (408,216) size 80x112 + LayoutText {#text} at (23,0) size 18x37 + text run at (23,0) width 37: "PASS" + LayoutBR {BR} at (23,36) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/prefer_compositing_to_lcd_text/compositing/overflow/siblings-with-border-radius-ancestor-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/prefer_compositing_to_lcd_text/compositing/overflow/siblings-with-border-radius-ancestor-expected.png deleted file mode 100644 index e5ed71d..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/prefer_compositing_to_lcd_text/compositing/overflow/siblings-with-border-radius-ancestor-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png index 4cef308..75b57cb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png index 0b40722c..ca344dc 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/scalefactor200/fast/hidpi/static/data-suggestion-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png index 6965d15c..c84813fd 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-on-grandparent-composited-grandchild-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-on-grandparent-composited-grandchild-expected.png index be2634c..f4b4fff8 100644 --- a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-on-grandparent-composited-grandchild-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-on-grandparent-composited-grandchild-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png index f6727dd7..f380d7a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-on-parent-composited-grandchild-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-on-two-ancestors-composited-grandchild-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-on-two-ancestors-composited-grandchild-expected.png index 935b76cb..61743f1 100644 --- a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-on-two-ancestors-composited-grandchild-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/border-radius-on-two-ancestors-composited-grandchild-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/grandchild-composited-with-border-radius-ancestor-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/grandchild-composited-with-border-radius-ancestor-expected.png index d8a18f5..b219e48 100644 --- a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/grandchild-composited-with-border-radius-ancestor-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/grandchild-composited-with-border-radius-ancestor-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/grandchild-with-border-radius-ancestor-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/grandchild-with-border-radius-ancestor-expected.png index d8a18f5..b219e48 100644 --- a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/grandchild-with-border-radius-ancestor-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/grandchild-with-border-radius-ancestor-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/scaled-mask-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/scaled-mask-expected.png index 20c80a59..6caaca55 100644 --- a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/scaled-mask-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/scaled-mask-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/siblings-composited-with-border-radius-ancestor-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/siblings-composited-with-border-radius-ancestor-expected.png index d8a18f5..b219e48 100644 --- a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/siblings-composited-with-border-radius-ancestor-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/siblings-composited-with-border-radius-ancestor-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/siblings-composited-with-border-radius-ancestor-one-clipped-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/siblings-composited-with-border-radius-ancestor-one-clipped-expected.png index 518f1b2..ef41de3 100644 --- a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/siblings-composited-with-border-radius-ancestor-one-clipped-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/siblings-composited-with-border-radius-ancestor-one-clipped-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/siblings-with-border-radius-ancestor-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/siblings-with-border-radius-ancestor-expected.png index 2a2653d..fa893ed 100644 --- a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/siblings-with-border-radius-ancestor-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/siblings-with-border-radius-ancestor-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/backgrounds/background-leakage-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/backgrounds/background-leakage-expected.png index 04fd5785..a868918 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/backgrounds/background-leakage-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/backgrounds/background-leakage-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/backgrounds/background-leakage-transforms-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/backgrounds/background-leakage-transforms-expected.png index 589c243..02a17ce 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/backgrounds/background-leakage-transforms-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/backgrounds/background-leakage-transforms-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-constraints-double-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-constraints-double-expected.png index 728ad63..776b35b 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-constraints-double-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-constraints-double-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-constraints-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-constraints-expected.png index 43434817..0c110d0 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-constraints-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-constraints-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-mask-canvas-all-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-mask-canvas-all-expected.png index 59019a0..a799151 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-mask-canvas-all-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-mask-canvas-all-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-mask-canvas-with-mask-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-mask-canvas-with-mask-expected.png index 6fe4a29..03486d4 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-mask-canvas-with-mask-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-mask-canvas-with-mask-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-mask-canvas-with-shadow-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-mask-canvas-with-shadow-expected.png index 91538834..f7cc6b8 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-mask-canvas-with-shadow-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-mask-canvas-with-shadow-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-percent-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-percent-expected.png index 6d746ccb..16f58da 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-percent-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-percent-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-with-composited-child-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-with-composited-child-expected.png index d7c86c5..a9316ac 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-with-composited-child-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/border-radius-with-composited-child-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/borders/mixed-border-styles-radius-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/borders/mixed-border-styles-radius-expected.png index d2e1aa2..2297e8cc 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/borders/mixed-border-styles-radius-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/borders/mixed-border-styles-radius-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-box-shadows-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-box-shadows-expected.png index d5054c3..7178f5b1 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-box-shadows-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-box-shadows-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-expected.png index 305eb26..596ad0d 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-subpixel-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-subpixel-expected.png index df36d00e..a243a128 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-subpixel-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/box-shadow/inset-subpixel-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/canvas/canvas-incremental-repaint-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/canvas/canvas-incremental-repaint-expected.png index 22bce0f..7b90679a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/canvas/canvas-incremental-repaint-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/canvas/canvas-incremental-repaint-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/clip/overflow-border-radius-combinations-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/clip/overflow-border-radius-combinations-expected.png index ba40064c..93e230ff 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/clip/overflow-border-radius-combinations-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/clip/overflow-border-radius-combinations-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/clip/overflow-border-radius-composited-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/clip/overflow-border-radius-composited-expected.png index 238645c..dcf2f1a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/clip/overflow-border-radius-composited-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/clip/overflow-border-radius-composited-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/clip/overflow-border-radius-composited-parent-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/clip/overflow-border-radius-composited-parent-expected.png index 43f46a4..b8f93907 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/clip/overflow-border-radius-composited-parent-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/clip/overflow-border-radius-composited-parent-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/clip/overflow-border-radius-transformed-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/clip/overflow-border-radius-transformed-expected.png index ede249d1..e22e79f 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/clip/overflow-border-radius-transformed-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/clip/overflow-border-radius-transformed-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/css/nested-rounded-corners-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/css/nested-rounded-corners-expected.png index 39cc864..636737c 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/css/nested-rounded-corners-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/css/nested-rounded-corners-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png index 1d97b90..c169041 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/multicol/border-radius-clipped-layer-second-column-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/multicol/border-radius-clipped-layer-second-column-expected.png index 87b3d02..22f5cf9d 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/multicol/border-radius-clipped-layer-second-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/multicol/border-radius-clipped-layer-second-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/overflow/overflow-with-local-background-attachment-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/overflow/overflow-with-local-background-attachment-expected.png index be61ff8..40ff31b 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/overflow/overflow-with-local-background-attachment-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/overflow/overflow-with-local-background-attachment-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-cell-collapsed-border-expected.png index 34abc8c6..c0ffac2 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-cell-expected.png index a98ff371..ef6dfa60 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-collapsed-border-expected.png index c632253..72e3fd8 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-column-collapsed-border-expected.png index 08e9c31..061e1b4a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-column-expected.png index a0653dc..2da3cb40 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-column-group-collapsed-border-expected.png index 4dc67a4..5a8d40b 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-column-group-expected.png index e8883c2..df79d9a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-expected.png index 2acbeaa..1e5b73c2 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-quirks-collapsed-border-expected.png index 39c68b9a..7fce2d66 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-quirks-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-quirks-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-quirks-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-quirks-expected.png index 0e32acb..ad49523 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-quirks-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-quirks-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-row-collapsed-border-expected.png index 6983149c..3137985 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-row-expected.png index 9bf126bf..8e8ef785 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-row-group-collapsed-border-expected.png index a0ef844..02d38bf1 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-row-group-expected.png index 9aca8301..27319380 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_border-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_layers-hide-collapsed-border-expected.png index df381a7e..2eba4f4 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_layers-hide-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_layers-hide-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_layers-hide-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_layers-hide-expected.png index bfc8e067..c11bedad 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_layers-hide-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_layers-hide-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-cell-collapsed-border-expected.png index fb6d832f..ea7c8a5 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-cell-expected.png index c056d66..90be337 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-collapsed-border-expected.png index 97b5450..ae15658 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-column-collapsed-border-expected.png index ba8c6045..0d22e8e8 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-column-expected.png index 9ce0f85..f4ace1d0 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-column-group-collapsed-border-expected.png index 7cb51fe..7b3f927 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-column-group-expected.png index 4bfb3952..b27d98d 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-expected.png index fb7f673b..9f059dd 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-row-collapsed-border-expected.png index 55441b9..3619d19c0 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-row-expected.png index d690f88..12f254b2 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-row-group-collapsed-border-expected.png index 3f1ce2a..cff5a0a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-row-group-expected.png index cbf79e40..9f4b2a9 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_position-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-cell-collapsed-border-expected.png index a3709fc..8dac279c 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-cell-expected.png index 62969ff..2fe83ff 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-collapsed-border-expected.png index 1148375..92488df2 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-column-collapsed-border-expected.png index 87867bc..d8071beb 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-column-expected.png index 1f03049..0de0cde 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png index d947759..f68b45a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-column-group-expected.png index 9f8546f..06bd3c0 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-expected.png index 3de9de8..6c6a84a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-row-collapsed-border-expected.png index 78b9f8e0..a0e3ceb 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-row-expected.png index 21fcf09..12996d400a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png index 22698b1..66407706 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-row-group-expected.png index 91fbdde..840fe6e6 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/backgr_simple-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/border-collapsing/001-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/border-collapsing/001-expected.png index 780376eb..75bf2ad9 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/border-collapsing/001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/border-collapsing/001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/table/border-collapsing/001-vertical-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/table/border-collapsing/001-vertical-expected.png index e48f31f..023b258 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/table/border-collapsing/001-vertical-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/table/border-collapsing/001-vertical-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/color-emoji-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/text/color-emoji-expected.png index 26d4872..f06ff03 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/text/color-emoji-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/color-emoji-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/emoticons-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/text/emoticons-expected.png index fffd982..51eeffd 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/text/emoticons-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/emoticons-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/font-format-support-cbdt-sbix-cff2-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/text/font-format-support-cbdt-sbix-cff2-expected.png index 1e39896d..d0271788 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/text/font-format-support-cbdt-sbix-cff2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/font-format-support-cbdt-sbix-cff2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-content-edge-001-expected.png b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-content-edge-001-expected.png index 9034585..b2aadb07 100644 --- a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-content-edge-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-content-edge-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png index aa6655f..a650458 100644 --- a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-different-width-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-not-inherited-001-expected.png b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-not-inherited-001-expected.png index 2a1ee0d..0dfd1e3d 100644 --- a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-not-inherited-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-not-inherited-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-shorthand-001-expected.png b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-shorthand-001-expected.png index 4e09fdc..88427eb 100644 --- a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-shorthand-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-shorthand-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png index ca32592..ffd46e6 100644 --- a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png index fa3ea49f..299db45 100644 --- a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-004-expected.png b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-004-expected.png index 76c9b3f7..044a592 100644 --- a/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-004-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/ietestcenter/css3/bordersbackgrounds/border-radius-style-004-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/images/imagemap-focus-ring-zoom-expected.png b/third_party/WebKit/LayoutTests/platform/win/images/imagemap-focus-ring-zoom-expected.png index 915c36607..af0e4b2 100644 --- a/third_party/WebKit/LayoutTests/platform/win/images/imagemap-focus-ring-zoom-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/images/imagemap-focus-ring-zoom-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-125-expected.png b/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-125-expected.png index 72ddf66..92600e6 100644 --- a/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-125-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-125-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-150-expected.png b/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-150-expected.png index deae741..da54e0e9 100644 --- a/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-150-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-150-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-175-expected.png b/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-175-expected.png index 939eb268..d6589d9 100644 --- a/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-175-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-175-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-200-expected.png b/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-200-expected.png index fb152977..52a059a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-200-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-200-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-250-expected.png b/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-250-expected.png index d288fa73..3963e75 100644 --- a/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-250-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/paint/markers/document-markers-zoom-250-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png b/third_party/WebKit/LayoutTests/platform/win/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png index ea6fe64..19806856 100644 --- a/third_party/WebKit/LayoutTests/platform/win/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/paint/roundedrects/input-with-rounded-rect-and-shadow-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png index a8a40c8..f8a68c0a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-04-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png index 3976f8b9..70688d88 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-05-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png index bcf129e..2e75b4b 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-06-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png index 7d7415e..eedb5d8 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-07-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-26-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-26-t-expected.png index 6fd1ed1..c3a8eac 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-26-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-26-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-28-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-28-t-expected.png index 69fdfe57..0717fdb 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-28-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-28-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-29-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-29-b-expected.png index 6a93dbe..f410d30d 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-29-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-29-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png index 51bcc03c..1e90c76 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-31-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-31-t-expected.png index 129cf8776..1752305 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-31-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-31-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png index 52960dc7..7c6204fe 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-34-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png index be75edf..8e266358 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-37-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-39-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-39-t-expected.png index 810b910d..d78d28c 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-39-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-39-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png index 93d6fb7..cf6c392 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-41-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png index 32622c74..c565f8bd 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-44-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png index 6ed4b56..3e51d81 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-78-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png index d7ae35c..c3faa56 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-80-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png index 3d5c36a..7c2b91d 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-81-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png index fa5ed25..1fe47d5e 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-82-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png index 9012060..8877b122 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/animate-elem-83-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/color-prop-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/color-prop-01-b-expected.png index fc46689..36ab2053 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/color-prop-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/color-prop-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png index a3529fc..9c2ed05 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/coords-viewattr-03-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png index 41e1c613..eb6d47e 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/extend-namespace-01-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png index b24ce22..af1ee9a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png index 68f13831..8bda5cb 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png index d591c9d..42012a4 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png index fbbb3d02..26ad3b0 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/interact-cursor-01-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/interact-zoom-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/interact-zoom-01-t-expected.png index 57e3585..f472f01 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/interact-zoom-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/interact-zoom-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/linking-a-04-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/linking-a-04-t-expected.png index 89ba5f0f..012cc2b0 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/linking-a-04-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/linking-a-04-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/linking-a-05-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/linking-a-05-t-expected.png index ee30a79a..7ebfe59 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/linking-a-05-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/linking-a-05-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/linking-a-07-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/linking-a-07-t-expected.png index 7fa470b..860b0cc 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/linking-a-07-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/linking-a-07-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png index 943a6abc..eae58a0 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png index 1f3e46b..474c8e8 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/metadata-example-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png index 2f57b2a..20a2d97 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/painting-marker-03-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png index 85ba30c..911ba2dd 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/painting-stroke-04-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png index 36630298..03d6601 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/painting-stroke-07-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-01-t-expected.png index a093388..69ae353 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-03-f-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-03-f-expected.png index c14d942..5a2db0f 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-03-f-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-03-f-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-04-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-04-t-expected.png index cb60a76..13773ab9 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-04-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-04-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-05-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-05-t-expected.png index 4c99563..3556c96 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-05-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-05-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-08-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-08-t-expected.png index 27a5d39..00677d99 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-08-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-08-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-09-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-09-t-expected.png index fbee046..a5e3e855 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-09-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-09-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-10-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-10-t-expected.png index 6d436ac..21fc6ed 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-10-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-10-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-12-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-12-t-expected.png index 170576f..bcea738f 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-12-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-12-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-14-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-14-t-expected.png index 9854a7e..0b8fe78 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-14-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/paths-data-14-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/render-elems-02-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/render-elems-02-t-expected.png index 10a9e9b1..d7c1a92 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/render-elems-02-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/render-elems-02-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/render-elems-03-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/render-elems-03-t-expected.png index 44794435..6bf73677 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/render-elems-03-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/render-elems-03-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/script-handle-02-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/script-handle-02-b-expected.png index c7b4433d..23b0e80 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/script-handle-02-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/script-handle-02-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/script-handle-03-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/script-handle-03-b-expected.png index 2ab8c5ee..8bd37dd0 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/script-handle-03-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/script-handle-03-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/script-handle-04-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/script-handle-04-b-expected.png index 7b4a93e..6b88331 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/script-handle-04-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/script-handle-04-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png index 400747cc..f1329cb 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-circle-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.png index 16aba363..18fa392 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-circle-02-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-ellipse-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-ellipse-01-t-expected.png index 8051c60..5ddf5d45 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-ellipse-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-ellipse-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.png index 7e38ff71..0e6756e2 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-ellipse-02-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png index 8577fa8..1a14e8a6 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-polygon-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png index bad6c832..c738a7a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-polyline-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-rect-01-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-rect-01-t-expected.png index 7f76a299..8ae17e54 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-rect-01-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-rect-01-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-rect-02-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-rect-02-t-expected.png index 0ba95d1b..3fffaaf 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-rect-02-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/shapes-rect-02-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/struct-group-03-t-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/struct-group-03-t-expected.png index 47b988f..c72b5ee 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/struct-group-03-t-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/struct-group-03-t-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-path-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-path-01-b-expected.png index ac8fed9..370dae5 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-path-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/W3C-SVG-1.1/text-path-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/animations/animateMotion-accumulate-1a-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/animations/animateMotion-accumulate-1a-expected.png index 80c2eaa..fdb6e85 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/animations/animateMotion-accumulate-1a-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/animations/animateMotion-accumulate-1a-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/animations/animateMotion-accumulate-1b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/animations/animateMotion-accumulate-1b-expected.png index da34291e..02e8d43b 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/animations/animateMotion-accumulate-1b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/animations/animateMotion-accumulate-1b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/animations/animateMotion-accumulate-1c-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/animations/animateMotion-accumulate-1c-expected.png index d1d235b..ddbe31d7 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/animations/animateMotion-accumulate-1c-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/animations/animateMotion-accumulate-1c-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png index c22c04cc..bf8ab25 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/as-background-image/background-image-preserveaspectRatio-support-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/as-background-image/svg-as-background-1-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/as-background-image/svg-as-background-1-expected.png index f7e6122..0d29935 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/as-background-image/svg-as-background-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/as-background-image/svg-as-background-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/as-background-image/svg-as-background-5-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/as-background-image/svg-as-background-5-expected.png index 3bb285c..8808ecbf 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/as-background-image/svg-as-background-5-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/as-background-image/svg-as-background-5-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/as-background-image/svg-as-background-6-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/as-background-image/svg-as-background-6-expected.png index 03fe6d0..6a86fac 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/as-background-image/svg-as-background-6-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/as-background-image/svg-as-background-6-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/batik/filters/feTile-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/batik/filters/feTile-expected.png index bd910de..f2b6f15 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/batik/filters/feTile-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/batik/filters/feTile-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/batik/text/textGlyphOrientationHorizontal-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/batik/text/textGlyphOrientationHorizontal-expected.png index 69afcb6..09838a4 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/batik/text/textGlyphOrientationHorizontal-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/batik/text/textGlyphOrientationHorizontal-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/carto.net/button-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/carto.net/button-expected.png index 130a17e..44453cb0 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/carto.net/button-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/carto.net/button-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/invalid-css-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/invalid-css-expected.png index 38f0762..48589de1 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/invalid-css-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/invalid-css-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png index ee30ca0..3364e6a4 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-preserveAspectRatio-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-transform-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-transform-expected.png index be0c3a6..0df9a7bc 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-transform-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-transform-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-viewBox-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-viewBox-expected.png index 839f09d..4a41777 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-viewBox-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-viewBox-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-viewBox-transform-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-viewBox-transform-expected.png index a17ca00..93944465 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-viewBox-transform-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-viewBox-transform-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-viewTarget-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-viewTarget-expected.png index ee30ca0..3364e6a4 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-viewTarget-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-viewTarget-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-zoomAndPan-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-zoomAndPan-expected.png index ee30ca0..3364e6a4 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-zoomAndPan-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/linking-a-03-b-zoomAndPan-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/use-on-symbol-inside-pattern-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/use-on-symbol-inside-pattern-expected.png index 18f1d4c..3fb071a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/use-on-symbol-inside-pattern-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/use-on-symbol-inside-pattern-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/custom/use-transform-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/custom/use-transform-expected.png index 0c12fad2e..fd898d9 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/custom/use-transform-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/custom/use-transform-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/hixie/error/017-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/hixie/error/017-expected.png index bdd0e09..79ec104 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/hixie/error/017-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/hixie/error/017-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/hixie/perf/001-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/hixie/perf/001-expected.png index 3392089b..85f85c0 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/hixie/perf/001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/hixie/perf/001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/hixie/perf/002-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/hixie/perf/002-expected.png index c76b8d34..d9a39dc 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/hixie/perf/002-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/hixie/perf/002-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/hixie/perf/007-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/hixie/perf/007-expected.png index b708e40..e7630ed 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/hixie/perf/007-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/hixie/perf/007-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/text/small-fonts-3-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/text/small-fonts-3-expected.png index cd6d7534..6d63387 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/text/small-fonts-3-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/text/small-fonts-3-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/text/text-selection-path-01-b-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/text/text-selection-path-01-b-expected.png index bd6fedd..d732a786 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/text/text-selection-path-01-b-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/text/text-selection-path-01-b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png index 285bbed8..2e4879c 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/WebKit/LayoutTests/platform/win/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png index d282a61..2d4f5a0 100644 --- a/third_party/WebKit/LayoutTests/platform/win/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/exotic-color-space/images/imagemap-focus-ring-zoom-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/exotic-color-space/images/imagemap-focus-ring-zoom-expected.png index 93acc9b2..cccfc99 100644 --- a/third_party/WebKit/LayoutTests/platform/win/virtual/exotic-color-space/images/imagemap-focus-ring-zoom-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/exotic-color-space/images/imagemap-focus-ring-zoom-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/gpu/fast/canvas/downsample-quality-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/gpu/fast/canvas/downsample-quality-expected.png index 841817a..0a9dc0c 100644 --- a/third_party/WebKit/LayoutTests/platform/win/virtual/gpu/fast/canvas/downsample-quality-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/gpu/fast/canvas/downsample-quality-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.png new file mode 100644 index 0000000..a7bdfe7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.txt new file mode 100644 index 0000000..424c730b --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/border-radius-clipped-layer-second-column-expected.txt
@@ -0,0 +1,24 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x228 + LayoutNGBlockFlow {HTML} at (0,0) size 800x228 + LayoutNGBlockFlow {BODY} at (8,16) size 784x204 + LayoutNGBlockFlow {P} at (0,0) size 784x20 + LayoutText {#text} at (0,0) size 766x19 + text run at (0,0) width 766: "The word 'PASS' should be seen below on the right hand side, inside a rounded box with black border and yellow background." +layer at (8,52) size 784x168 + LayoutNGBlockFlow {DIV} at (0,36) size 784x168 + LayoutMultiColumnSet (anonymous) at (0,0) size 784x168 +layer at (8,52) size 392x264 backgroundClip at (0,0) size 400x220 clip at (0,0) size 400x220 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 392x264 + LayoutNGBlockFlow (anonymous) at (0,0) size 392x200 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 + LayoutBR {BR} at (0,134) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (400,84) size 392x64 clip at (416,100) size 360x32 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,200) size 392x64 [bgcolor=#FFFF00] [border: (16px solid #000000)] + LayoutText {#text} at (177,22) size 38x19 + text run at (177,22) width 38: "PASS"
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-inner-multicol-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-inner-multicol-expected.txt new file mode 100644 index 0000000..8a49c931 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-inner-multicol-expected.txt
@@ -0,0 +1,40 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x200 + LayoutNGBlockFlow {HTML} at (0,0) size 800x200 + LayoutNGBlockFlow {BODY} at (8,16) size 784x176 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 756x39 + text run at (0,0) width 756: "Below you should see the word 'PASS' (with some extra letter spacing), on a yellow background (which should be a bit faded" + text run at (0,20) width 628: "near the top). The first S is below the A, because they composite together and hence are not fragmented." +layer at (8,72) size 480x120 + LayoutNGBlockFlow {DIV} at (0,56) size 480x120 + LayoutMultiColumnSet (anonymous) at (0,0) size 480x120 +layer at (8,72) size 240x240 backgroundClip at (0,0) size 248x192 clip at (0,0) size 248x192 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 240x240 + LayoutNGBlockFlow (anonymous) at (0,0) size 240x184 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (256,136) size 80x48 + LayoutNGBlockFlow {DIV} at (8,184) size 80x48 [bgcolor=#FFFF00] + LayoutMultiColumnSet (anonymous) at (8,8) size 64x32 +layer at (264,144) size 16x128 backgroundClip at (248,72) size 32x104 clip at (248,72) size 32x104 + LayoutMultiColumnFlowThread (anonymous) at (8,8) size 16x128 + LayoutNGBlockFlow (anonymous) at (0,0) size 16x32 + LayoutText {#text} at (0,6) size 9x19 + text run at (0,6) width 9: "P" + LayoutBR {BR} at (9,6) size 0x0 + LayoutNGBlockFlow (anonymous) at (0,96) size 16x32 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (240,72) size 112x53 transparent + LayoutNGBlockFlow (positioned) {DIV} at (240,72) size 112x52.80 [bgcolor=#FFFFFF] +layer at (280,144) size 16x64 backgroundClip at (280,144) size 16x32 clip at (280,144) size 16x32 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,32) size 16x64 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-expected.txt new file mode 100644 index 0000000..7b1c8798 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-expected.txt
@@ -0,0 +1,43 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x320 + LayoutNGBlockFlow {HTML} at (0,0) size 800x320 + LayoutNGBlockFlow {BODY} at (8,16) size 784x256 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 781x39 + text run at (0,0) width 781: "If no compositing were present, there should be two green squares below. Since some elements are composited, and therefore not" + text run at (0,20) width 205: "fragmented, the output is different." +layer at (8,104) size 60x60 + LayoutNGBlockFlow {DIV} at (0,88) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,104) size 20x180 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,140) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,212) size 60x60 + LayoutNGBlockFlow {DIV} at (0,196) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,212) size 20x180 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,140) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,144) size 20x40 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutNGBlockFlow {DIV} at (0,40) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (28,144) size 20x40 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutNGBlockFlow {DIV} at (0,100) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (8,252) size 20x100 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutNGBlockFlow {DIV} at (0,40) size 20x100 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,60) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-translated-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-translated-expected.txt new file mode 100644 index 0000000..3c86a2a1 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-layer-multiple-fragments-translated-expected.txt
@@ -0,0 +1,27 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x140 + LayoutNGBlockFlow {HTML} at (0,0) size 800x140 + LayoutNGBlockFlow {BODY} at (8,16) size 784x116 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 744x39 + text run at (0,0) width 744: "There should be two small green squares vertically aligned below, and another red square to the top-right. The second green" + text run at (0,20) width 516: "square does not overlap the red because it is conmposited, and hence not fragmented." +layer at (8,72) size 60x60 + LayoutNGBlockFlow {DIV} at (0,56) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,72) size 20x180 backgroundClip at (0,0) size 28x132 clip at (0,0) size 28x132 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow (anonymous) at (0,0) size 20x100 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,20) size 0x0 + LayoutBR {BR} at (0,40) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#FF0000] +layer at (28,112) size 20x60 backgroundClip at (0,0) size 28x132 clip at (0,0) size 28x132 + LayoutNGBlockFlow {DIV} at (0,100) size 20x60 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow (anonymous) at (0,20) size 20x20 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-layer-nested-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-layer-nested-expected.txt new file mode 100644 index 0000000..6fb87ad --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-layer-nested-expected.txt
@@ -0,0 +1,51 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x320 + LayoutNGBlockFlow {HTML} at (0,0) size 800x320 + LayoutNGBlockFlow {BODY} at (8,16) size 784x256 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 781x39 + text run at (0,0) width 781: "If no compositing were present, there should be two green squares below. Since some elements are composited, and therefore not" + text run at (0,20) width 205: "fragmented, the output is different." +layer at (8,104) size 60x60 + LayoutNGBlockFlow {DIV} at (0,88) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,104) size 20x180 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,100) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,120) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,140) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,212) size 60x60 + LayoutNGBlockFlow {DIV} at (0,196) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,212) size 20x180 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 +layer at (8,124) size 20x80 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutNGBlockFlow {DIV} at (0,20) size 20x80 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,60) size 20x20 [bgcolor=#008000] +layer at (8,144) size 20x40 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutNGBlockFlow {DIV} at (0,20) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (8,212) size 20x180 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutNGBlockFlow {DIV} at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000] +layer at (8,212) size 20x80 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutNGBlockFlow {DIV} at (0,0) size 20x80 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (8,252) size 20x40 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutNGBlockFlow {DIV} at (0,40) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (8,312) size 20x80 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutNGBlockFlow {DIV} at (0,100) size 20x80 + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,60) size 20x20 [bgcolor=#008000] +layer at (8,312) size 20x40 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutNGBlockFlow {DIV} at (0,0) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-layer-will-change-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-layer-will-change-expected.txt new file mode 100644 index 0000000..dec0f29 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-layer-will-change-expected.txt
@@ -0,0 +1,69 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x428 + LayoutNGBlockFlow {HTML} at (0,0) size 800x428 + LayoutNGBlockFlow {BODY} at (8,16) size 784x364 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 781x39 + text run at (0,0) width 781: "If no compositing were present, there should be two green squares below. Since some elements are composited, and therefore not" + text run at (0,20) width 205: "fragmented, the output is different." +layer at (8,104) size 60x60 + LayoutNGBlockFlow {DIV} at (0,88) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,104) size 20x180 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,212) size 60x60 + LayoutNGBlockFlow {DIV} at (0,196) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,212) size 20x180 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,320) size 60x60 + LayoutNGBlockFlow {DIV} at (0,304) size 60x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 60x60 +layer at (8,320) size 20x180 backgroundClip at (0,0) size 28x380 clip at (0,0) size 28x380 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 20x180 + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,80) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,160) size 20x20 [bgcolor=#008000] +layer at (8,104) size 20x20 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] +layer at (8,144) size 20x40 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutNGBlockFlow {DIV} at (0,40) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (28,144) size 20x60 backgroundClip at (0,0) size 28x164 clip at (0,0) size 28x164 + LayoutNGBlockFlow {DIV} at (0,100) size 20x60 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000] +layer at (8,212) size 20x20 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] +layer at (8,252) size 20x40 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutNGBlockFlow {DIV} at (0,40) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (28,252) size 20x60 backgroundClip at (0,0) size 28x272 clip at (0,0) size 28x272 + LayoutNGBlockFlow {DIV} at (0,100) size 20x60 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000] +layer at (8,320) size 20x20 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,0) size 20x20 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] +layer at (8,360) size 20x40 backgroundClip at (0,0) size 28x380 clip at (0,0) size 28x380 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,40) size 20x40 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] +layer at (28,360) size 20x60 backgroundClip at (0,0) size 28x380 clip at (0,0) size 28x380 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,100) size 20x60 + LayoutNGBlockFlow {DIV} at (0,0) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000] + LayoutNGBlockFlow {DIV} at (0,40) size 20x20 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-opacity-2nd-and-3rd-column-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-opacity-2nd-and-3rd-column-expected.txt new file mode 100644 index 0000000..54b13982 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-opacity-2nd-and-3rd-column-expected.txt
@@ -0,0 +1,39 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x288 + LayoutNGBlockFlow {HTML} at (0,0) size 800x288 + LayoutNGBlockFlow {BODY} at (8,16) size 784x264 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 203x19 + text run at (0,0) width 203: "The word 'PASS' should be seen " + LayoutInline {EM} at (0,0) size 34x19 + LayoutText {#text} at (203,0) size 34x19 + text run at (203,0) width 34: "twice" + LayoutText {#text} at (237,0) size 773x39 + text run at (237,0) width 536: " below. The second PASS is not overlapping the yellow because it is composited with the" + text run at (0,20) width 215: "first one, and hence not fragmented." +layer at (8,72) size 272x208 + LayoutNGBlockFlow {DIV} at (0,56) size 272x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 272x208 +layer at (8,72) size 80x456 backgroundClip at (0,0) size 96x280 clip at (0,0) size 96x280 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 80x456 + LayoutNGBlockFlow (anonymous) at (0,0) size 80x368 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 + LayoutBR {BR} at (0,134) size 0x0 + LayoutBR {BR} at (0,166) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,72) size 800x128 + LayoutNGBlockFlow (positioned) {DIV} at (0,72) size 800x128 [bgcolor=#FFFF00] +layer at (112,232) size 64x80 backgroundClip at (0,0) size 96x280 clip at (0,0) size 96x280 transparent + LayoutNGBlockFlow {DIV} at (8,368) size 64x80 + LayoutText {#text} at (0,6) size 37x19 + text run at (0,6) width 37: "PASS" + LayoutBR {BR} at (37,6) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-relpos-clipped-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-relpos-clipped-expected.txt new file mode 100644 index 0000000..360c351 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-relpos-clipped-expected.txt
@@ -0,0 +1,37 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x288 + LayoutNGBlockFlow {HTML} at (0,0) size 800x288 + LayoutNGBlockFlow {BODY} at (8,16) size 784x264 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 775x39 + text run at (0,0) width 775: "There should be one yellow boxes below, on a blue background. There is only one because the content is composited, and hence" + text run at (0,20) width 94: "not fragmented." +layer at (8,72) size 272x208 + LayoutNGBlockFlow {DIV} at (0,56) size 272x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 272x208 +layer at (8,72) size 128x272 backgroundClip at (0,0) size 144x280 clip at (0,0) size 144x280 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 128x272 + LayoutNGBlockFlow (anonymous) at (0,0) size 128x128 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 +layer at (0,72) size 800x208 + LayoutNGBlockFlow (positioned) {DIV} at (0,72) size 800x208 [bgcolor=#0000FF] +layer at (16,208) size 112x136 backgroundClip at (16,208) size 112x72 clip at (16,208) size 112x72 scrollHeight 176 + LayoutNGBlockFlow (relative positioned) {DIV} at (8,136) size 112x136 [bgcolor=#FFFF00] + LayoutNGBlockFlow (anonymous) at (0,0) size 112x144 + LayoutText {#text} at (0,6) size 22x19 + text run at (0,6) width 22: "first" + LayoutBR {BR} at (22,6) size 0x0 + LayoutText {#text} at (0,38) size 43x19 + text run at (0,38) width 43: "column" + LayoutBR {BR} at (43,38) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (0,144) size 112x32 [bgcolor=#FF0000] + LayoutText {#text} at (0,6) size 33x19 + text run at (0,6) width 33: "FAIL"
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-relpos-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-relpos-expected.txt new file mode 100644 index 0000000..d619252 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-relpos-expected.txt
@@ -0,0 +1,33 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x288 + LayoutNGBlockFlow {HTML} at (0,0) size 800x288 + LayoutNGBlockFlow {BODY} at (8,16) size 784x264 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 781x39 + text run at (0,0) width 781: "There should be one yellow boxbelow, on a blue background. There is only one because the content is composited, and hence not" + text run at (0,20) width 71: "fragmented." +layer at (8,72) size 272x208 + LayoutNGBlockFlow {DIV} at (0,56) size 272x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 272x208 +layer at (8,72) size 128x280 backgroundClip at (0,0) size 144x280 clip at (0,0) size 144x280 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 128x280 + LayoutNGBlockFlow (anonymous) at (0,0) size 128x128 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 +layer at (0,72) size 800x208 + LayoutNGBlockFlow (positioned) {DIV} at (0,72) size 800x208 [bgcolor=#0000FF] +layer at (16,208) size 112x136 backgroundClip at (0,0) size 144x280 clip at (0,0) size 144x280 + LayoutNGBlockFlow (relative positioned) {DIV} at (8,136) size 112x136 [bgcolor=#FFFF00] + LayoutText {#text} at (0,6) size 22x19 + text run at (0,6) width 22: "first" + LayoutBR {BR} at (22,6) size 0x0 + LayoutText {#text} at (0,38) size 43x19 + text run at (0,38) width 43: "column" + LayoutBR {BR} at (43,38) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-relpos-in-clipped-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-relpos-in-clipped-expected.txt new file mode 100644 index 0000000..d4cd7b4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-relpos-in-clipped-expected.txt
@@ -0,0 +1,36 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x268 + LayoutNGBlockFlow {HTML} at (0,0) size 800x268 + LayoutNGBlockFlow {BODY} at (8,16) size 784x244 + LayoutNGBlockFlow {P} at (0,0) size 784x20 + LayoutText {#text} at (0,0) size 667x19 + text run at (0,0) width 667: "There should be one yellow box below, on a blue background. the \"second column\" part should be clipped out." +layer at (8,52) size 272x208 + LayoutNGBlockFlow {DIV} at (0,36) size 272x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 272x208 +layer at (8,52) size 128x272 backgroundClip at (8,52) size 136x208 clip at (8,52) size 136x208 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 128x272 + LayoutNGBlockFlow (anonymous) at (0,0) size 128x128 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 +layer at (0,52) size 800x208 + LayoutNGBlockFlow (positioned) {DIV} at (0,52) size 800x208 [bgcolor=#0000FF] +layer at (16,188) size 112x136 backgroundClip at (16,188) size 112x72 clip at (16,188) size 112x72 scrollHeight 176 + LayoutNGBlockFlow (relative positioned) {DIV} at (8,136) size 112x136 [bgcolor=#FFFF00] + LayoutNGBlockFlow (anonymous) at (0,0) size 112x144 + LayoutText {#text} at (0,6) size 22x19 + text run at (0,6) width 22: "first" + LayoutBR {BR} at (22,6) size 0x0 + LayoutText {#text} at (0,38) size 43x19 + text run at (0,38) width 43: "column" + LayoutBR {BR} at (43,38) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (0,144) size 112x32 [bgcolor=#FF0000] + LayoutText {#text} at (0,6) size 33x19 + text run at (0,6) width 33: "FAIL"
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-relpos-overlapping-will-change-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-relpos-overlapping-will-change-expected.txt new file mode 100644 index 0000000..787810b2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-relpos-overlapping-will-change-expected.txt
@@ -0,0 +1,39 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x288 + LayoutNGBlockFlow {HTML} at (0,0) size 800x288 + LayoutNGBlockFlow {BODY} at (8,16) size 784x264 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 203x19 + text run at (0,0) width 203: "The word 'PASS' should be seen " + LayoutInline {EM} at (0,0) size 34x19 + LayoutText {#text} at (203,0) size 34x19 + text run at (203,0) width 34: "twice" + LayoutText {#text} at (237,0) size 773x39 + text run at (237,0) width 536: " below. The second PASS is not overlapping the yellow because it is composited with the" + text run at (0,20) width 215: "first one, and hence not fragmented." +layer at (8,72) size 560x208 + LayoutNGBlockFlow {DIV} at (0,56) size 560x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 560x208 +layer at (8,72) size 176x456 backgroundClip at (0,0) size 192x280 clip at (0,0) size 192x280 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 176x456 + LayoutNGBlockFlow (anonymous) at (0,0) size 176x368 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 + LayoutBR {BR} at (0,134) size 0x0 + LayoutBR {BR} at (0,166) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,72) size 800x128 + LayoutNGBlockFlow (positioned) {DIV} at (0,72) size 800x128 [bgcolor=#FFFF00] +layer at (208,232) size 160x80 backgroundClip at (0,0) size 192x280 clip at (0,0) size 192x280 + LayoutNGBlockFlow (relative positioned) {DIV} at (8,368) size 160x80 + LayoutText {#text} at (0,6) size 37x19 + text run at (0,6) width 37: "PASS" + LayoutBR {BR} at (37,6) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-relpos-resize-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-relpos-resize-expected.txt new file mode 100644 index 0000000..c637c6f --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-relpos-resize-expected.txt
@@ -0,0 +1,32 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x268 + LayoutNGBlockFlow {HTML} at (0,0) size 800x268 + LayoutNGBlockFlow {BODY} at (8,16) size 784x244 + LayoutNGBlockFlow {P} at (0,0) size 784x20 + LayoutText {#text} at (0,0) size 721x19 + text run at (0,0) width 721: "There should be one yellow box below. There is only one because the content is composited, and hence not fragmented." +layer at (8,52) size 706x208 + LayoutNGBlockFlow {DIV} at (0,36) size 705.59x208 + LayoutMultiColumnSet (anonymous) at (0,0) size 705.59x208 +layer at (8,52) size 353x280 backgroundClip at (0,0) size 361x260 clip at (0,0) size 361x260 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 352.80x280 + LayoutNGBlockFlow (anonymous) at (0,0) size 352.80x128 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 +layer at (0,52) size 800x240 + LayoutNGBlockFlow (positioned) {DIV} at (0,52) size 800x240 [bgcolor=#00FFFF] +layer at (16,188) size 337x136 backgroundClip at (0,0) size 361x260 clip at (0,0) size 361x260 + LayoutNGBlockFlow (relative positioned) {DIV} at (8,136) size 336.80x136 [bgcolor=#FFFF00] + LayoutText {#text} at (0,6) size 22x19 + text run at (0,6) width 22: "first" + LayoutBR {BR} at (22,6) size 0x0 + LayoutText {#text} at (0,38) size 43x19 + text run at (0,38) width 43: "column" + LayoutBR {BR} at (43,38) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-with-child-layer-in-next-column-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-with-child-layer-in-next-column-expected.txt new file mode 100644 index 0000000..b5d3bee6 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-with-child-layer-in-next-column-expected.txt
@@ -0,0 +1,33 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x224 + LayoutNGBlockFlow {HTML} at (0,0) size 800x224 + LayoutNGBlockFlow {BODY} at (8,16) size 784x200 + LayoutNGBlockFlow {P} at (0,0) size 784x40 + LayoutText {#text} at (0,0) size 752x39 + text run at (0,0) width 752: "There should be a yellow box in the second column, and the word 'PASS' should be below it. PASS is not in the third column" + text run at (0,20) width 394: "because they are composited together, and hence not fragmented." +layer at (8,72) size 272x144 + LayoutNGBlockFlow {DIV} at (0,56) size 272x144 + LayoutMultiColumnSet (anonymous) at (0,0) size 272x144 +layer at (8,72) size 80x272 backgroundClip at (0,0) size 96x216 clip at (0,0) size 96x216 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 80x272 + LayoutNGBlockFlow (anonymous) at (0,0) size 80x240 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,72) size 800x144 + LayoutNGBlockFlow (positioned) {DIV} at (0,72) size 800x144 [bgcolor=#00FFFF] +layer at (104,168) size 80x32 backgroundClip at (0,0) size 96x216 clip at (0,0) size 96x216 + LayoutNGBlockFlow (relative positioned) zI: 2 {DIV} at (0,240) size 80x32 [bgcolor=#FFFF00] + LayoutNGBlockFlow (anonymous) at (0,0) size 80x80 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (112,232) size 64x32 backgroundClip at (0,0) size 96x216 clip at (0,0) size 96x216 transparent + LayoutNGBlockFlow {DIV} at (8,64) size 64x32 + LayoutText {#text} at (0,6) size 37x19 + text run at (0,6) width 37: "PASS"
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-with-overflow-in-next-column-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-with-overflow-in-next-column-expected.txt new file mode 100644 index 0000000..eab15099 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/composited-with-overflow-in-next-column-expected.txt
@@ -0,0 +1,28 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x204 + LayoutNGBlockFlow {HTML} at (0,0) size 800x204 + LayoutNGBlockFlow {BODY} at (8,16) size 784x180 + LayoutNGBlockFlow {P} at (0,0) size 784x20 + LayoutText {#text} at (0,0) size 361x19 + text run at (0,0) width 361: "The word 'PASS' should be seen below, in the third column." +layer at (8,52) size 784x144 + LayoutNGBlockFlow {DIV} at (0,36) size 784x144 + LayoutMultiColumnSet (anonymous) at (0,0) size 784x144 +layer at (8,52) size 251x256 backgroundClip at (0,0) size 267x196 clip at (0,0) size 267x196 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 250.66x256 + LayoutNGBlockFlow (anonymous) at (0,0) size 250.66x240 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,38) size 0x0 + LayoutBR {BR} at (0,70) size 0x0 + LayoutBR {BR} at (0,102) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,100) size 800x18 + LayoutNGBlockFlow (positioned) {DIV} at (0,100) size 800x18 [border: (1px dotted #000000)] +layer at (275,148) size 251x16 backgroundClip at (0,0) size 267x196 clip at (0,0) size 267x196 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,240) size 250.66x16 + LayoutBR {BR} at (0,6) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/layers-in-multicol-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/layers-in-multicol-expected.txt new file mode 100644 index 0000000..5d912c47 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/layers-in-multicol-expected.txt
@@ -0,0 +1,92 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x320 + LayoutNGBlockFlow {HTML} at (0,0) size 800x320 + LayoutNGBlockFlow {BODY} at (8,16) size 784x296 + LayoutNGBlockFlow {P} at (0,0) size 784x20 + LayoutText {#text} at (0,0) size 354x19 + text run at (0,0) width 354: "Test layers which are fully contained within a single column." + LayoutNGBlockFlow (anonymous) at (0,36) size 784x20 + LayoutText {#text} at (0,0) size 30x19 + text run at (0,0) width 30: "LTR:" + LayoutNGBlockFlow (anonymous) at (0,166) size 784x20 + LayoutText {#text} at (0,0) size 30x19 + text run at (0,0) width 30: "RTL:" +layer at (8,72) size 310x110 + LayoutNGBlockFlow {DIV} at (0,56) size 310x110 [border: (5px solid #800000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 300x100 +layer at (13,77) size 100x280 backgroundClip at (0,0) size 113x177 clip at (0,0) size 113x177 + LayoutMultiColumnFlowThread (anonymous) at (5,5) size 100x280 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (105,30) size 16x10 [bgcolor=#008000] + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 +layer at (8,202) size 310x110 + LayoutNGBlockFlow {DIV} at (0,186) size 310x110 [border: (5px solid #800000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 300x100 +layer at (213,207) size 100x280 backgroundClip at (213,0) size 587x307 clip at (213,0) size 587x307 + LayoutMultiColumnFlowThread (anonymous) at (205,5) size 100x280 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (189,30) size 16x10 [bgcolor=#008000] + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 +layer at (13,73) size 0x0 + LayoutInline (relative positioned) {SPAN} at (0,0) size 0x0 [color=#008000] + LayoutText {#text} at (0,0) size 0x0 +layer at (13,77) size 0x0 transparent + LayoutInline {SPAN} at (0,0) size 0x0 [color=#008000] + LayoutText {#text} at (0,0) size 0x0 + LayoutInline {SPAN} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 +layer at (213,203) size 0x0 + LayoutInline (relative positioned) {SPAN} at (0,0) size 0x0 [color=#008000] + LayoutText {#text} at (0,0) size 0x0 +layer at (213,207) size 0x0 transparent + LayoutInline {SPAN} at (0,0) size 0x0 [color=#008000] + LayoutText {#text} at (0,0) size 0x0 + LayoutInline {SPAN} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/layers-split-across-columns-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/layers-split-across-columns-expected.txt new file mode 100644 index 0000000..57c55fb --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/layers-split-across-columns-expected.txt
@@ -0,0 +1,84 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x8 + LayoutNGBlockFlow {HTML} at (0,0) size 800x8 + LayoutNGBlockFlow {BODY} at (8,8) size 784x0 +layer at (10,10) size 120x180 + LayoutNGBlockFlow (positioned) {DIV} at (10,10) size 120x180 + LayoutNGBlockFlow (anonymous) at (0,0) size 120x20 + LayoutText {#text} at (0,0) size 60x19 + text run at (0,0) width 60: "Overflow:" +layer at (10,30) size 120x160 + LayoutNGBlockFlow {DIV} at (0,20) size 120x160 [border: (5px solid #000000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 110x150 +layer at (15,35) size 50x300 backgroundClip at (0,0) size 70x185 clip at (0,0) size 70x185 + LayoutMultiColumnFlowThread (anonymous) at (5,5) size 50x300 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#000000] + LayoutNGBlockFlow {DIV} at (0,250) size 50x50 [bgcolor=#000000] +layer at (15,85) size 50x200 backgroundClip at (15,85) size 50x100 clip at (15,85) size 50x100 + LayoutNGBlockFlow {DIV} at (0,50) size 50x200 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#0000F0] + LayoutNGBlockFlow {DIV} at (0,50) size 50x50 [bgcolor=#0000D0] + LayoutNGBlockFlow {DIV} at (0,100) size 50x50 [bgcolor=#0000B0] + LayoutNGBlockFlow {DIV} at (0,150) size 50x50 [bgcolor=#000090] +layer at (150,10) size 120x180 + LayoutNGBlockFlow (positioned) {DIV} at (150,10) size 120x180 + LayoutNGBlockFlow (anonymous) at (0,0) size 120x20 + LayoutText {#text} at (0,0) size 70x19 + text run at (0,0) width 70: "Transforms:" +layer at (150,30) size 120x160 + LayoutNGBlockFlow {DIV} at (0,20) size 120x160 [border: (5px solid #000000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 110x150 +layer at (155,35) size 50x300 backgroundClip at (0,0) size 210x185 clip at (0,0) size 210x185 + LayoutMultiColumnFlowThread (anonymous) at (5,5) size 50x300 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#000000] + LayoutNGBlockFlow {DIV} at (0,250) size 50x50 [bgcolor=#000000] +layer at (55,85) size 50x200 backgroundClip at (0,0) size 210x185 clip at (0,0) size 210x185 + LayoutNGBlockFlow {DIV} at (-100,50) size 50x200 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#0000F0] + LayoutNGBlockFlow {DIV} at (0,50) size 50x50 [bgcolor=#0000D0] + LayoutNGBlockFlow {DIV} at (0,100) size 50x50 [bgcolor=#0000B0] + LayoutNGBlockFlow {DIV} at (0,150) size 50x50 [bgcolor=#000090] +layer at (10,200) size 120x180 + LayoutNGBlockFlow (positioned) {DIV} at (10,200) size 120x180 + LayoutNGBlockFlow (anonymous) at (0,0) size 120x20 + LayoutText {#text} at (0,0) size 82x19 + text run at (0,0) width 82: "Relative Pos.:" +layer at (10,220) size 120x160 + LayoutNGBlockFlow {DIV} at (0,20) size 120x160 [border: (5px solid #000000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 110x150 +layer at (15,225) size 50x300 backgroundClip at (0,0) size 70x375 clip at (0,0) size 70x375 + LayoutMultiColumnFlowThread (anonymous) at (5,5) size 50x300 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#000000] + LayoutNGBlockFlow {DIV} at (0,250) size 50x50 [bgcolor=#000000] +layer at (15,275) size 50x200 backgroundClip at (0,0) size 70x375 clip at (0,0) size 70x375 + LayoutNGBlockFlow (relative positioned) {DIV} at (-100,50) size 50x200 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#0000F0] + LayoutNGBlockFlow {DIV} at (0,50) size 50x50 [bgcolor=#0000D0] + LayoutNGBlockFlow {DIV} at (0,100) size 50x50 [bgcolor=#0000B0] + LayoutNGBlockFlow {DIV} at (0,150) size 50x50 [bgcolor=#000090] +layer at (150,200) size 120x180 + LayoutNGBlockFlow (positioned) {DIV} at (150,200) size 120x180 + LayoutNGBlockFlow (anonymous) at (0,0) size 120x20 + LayoutText {#text} at (0,0) size 51x19 + text run at (0,0) width 51: "Opacity:" +layer at (150,220) size 120x160 + LayoutNGBlockFlow {DIV} at (0,20) size 120x160 [border: (5px solid #000000)] + LayoutMultiColumnSet (anonymous) at (5,5) size 110x150 +layer at (155,225) size 50x300 backgroundClip at (0,0) size 210x375 clip at (0,0) size 210x375 + LayoutMultiColumnFlowThread (anonymous) at (5,5) size 50x300 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#000000] + LayoutNGBlockFlow {DIV} at (0,250) size 50x50 [bgcolor=#000000] +layer at (155,275) size 50x200 backgroundClip at (0,0) size 210x375 clip at (0,0) size 210x375 transparent + LayoutNGBlockFlow {DIV} at (0,50) size 50x200 + LayoutNGBlockFlow {DIV} at (0,0) size 50x50 [bgcolor=#0000F0] + LayoutText {#text} at (0,0) size 4x19 + text run at (0,0) width 4: " " + LayoutNGBlockFlow {DIV} at (0,50) size 50x50 [bgcolor=#0000D0] + LayoutText {#text} at (0,0) size 4x19 + text run at (0,0) width 4: " " + LayoutNGBlockFlow {DIV} at (0,100) size 50x50 [bgcolor=#0000B0] + LayoutText {#text} at (0,0) size 0x0 + LayoutNGBlockFlow {DIV} at (0,150) size 50x50 [bgcolor=#000090] + LayoutText {#text} at (0,0) size 4x19 + text run at (0,0) width 4: " "
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/multicol-with-child-renderLayer-for-input-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/multicol-with-child-renderLayer-for-input-expected.txt new file mode 100644 index 0000000..a588e7e --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/multicol-with-child-renderLayer-for-input-expected.txt
@@ -0,0 +1,19 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutNGBlockFlow {HTML} at (0,0) size 800x600 + LayoutNGBlockFlow {BODY} at (8,8) size 784x584 +layer at (8,8) size 784x60 + LayoutNGBlockFlow {DIV} at (0,0) size 784x60 + LayoutMultiColumnSet (anonymous) at (0,0) size 784x60 +layer at (8,8) size 384x106 backgroundClip at (0,0) size 400x68 clip at (0,0) size 400x68 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 384x106 + LayoutText {#text} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 +layer at (602,30) size 173x22 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0 + LayoutTextControl (relative positioned) {INPUT} at (594,22) size 173x22 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] +layer at (604,33) size 169x16 backgroundClip at (0,0) size 0x0 clip at (0,0) size 0x0 + LayoutBlockFlow {DIV} at (2,3) size 169x16 + LayoutText {#text} at (0,0) size 41x16 + text run at (0,0) width 41: "Testing" +caret: position 7 of child 0 {#text} of child 0 {DIV} of {#document-fragment} of child 1 {INPUT} of child 1 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/span/invalid-spanner-in-transform-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/span/invalid-spanner-in-transform-expected.txt new file mode 100644 index 0000000..7fa562b5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/span/invalid-spanner-in-transform-expected.txt
@@ -0,0 +1,18 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x110 + LayoutNGBlockFlow {HTML} at (0,0) size 800x110 + LayoutNGBlockFlow {BODY} at (8,16) size 784x86 + LayoutNGBlockFlow {P} at (0,0) size 784x20 + LayoutText {#text} at (0,0) size 714x19 + text run at (0,0) width 714: "There should be one blue square below. It is not two because they are composited together, and hence not fragmented." +layer at (8,52) size 110x50 + LayoutNGBlockFlow {DIV} at (0,36) size 110x50 + LayoutMultiColumnSet (anonymous) at (0,0) size 110x50 +layer at (8,52) size 50x100 backgroundClip at (0,0) size 63x102 clip at (0,0) size 63x102 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 50x100 +layer at (8,52) size 50x100 backgroundClip at (0,0) size 63x102 clip at (0,0) size 63x102 + LayoutNGBlockFlow {DIV} at (0,0) size 50x100 + LayoutNGBlockFlow {DIV} at (0,0) size 50x100 [bgcolor=#0000FF] + LayoutBR {BR} at (0,15) size 0x0 + LayoutBR {BR} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change-expected.txt new file mode 100644 index 0000000..970dc7c --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/vertical-lr/composited-relpos-overlapping-will-change-expected.txt
@@ -0,0 +1,39 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x476 + LayoutNGBlockFlow {HTML} at (0,0) size 800x476 + LayoutNGBlockFlow {BODY} at (8,16) size 784x452 + LayoutNGBlockFlow {P} at (0,0) size 784x20 + LayoutText {#text} at (0,0) size 203x19 + text run at (0,0) width 203: "The word 'PASS' should be seen " + LayoutInline {EM} at (0,0) size 34x19 + LayoutText {#text} at (203,0) size 34x19 + text run at (203,0) width 34: "twice" + LayoutText {#text} at (237,0) size 523x19 + text run at (237,0) width 523: " below. They appear together because they are composited, and hence not fragmented." +layer at (8,52) size 208x416 + LayoutNGBlockFlow {DIV} at (0,36) size 208x416 + LayoutMultiColumnSet (anonymous) at (0,0) size 208x416 +layer at (8,52) size 456x128 backgroundClip at (0,0) size 216x188 clip at (0,0) size 216x188 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 456x128 + LayoutNGBlockFlow (anonymous) at (0,0) size 368x128 + LayoutBR {BR} at (6,0) size 0x0 + LayoutBR {BR} at (38,0) size 0x0 + LayoutBR {BR} at (70,0) size 0x0 + LayoutBR {BR} at (102,0) size 0x0 + LayoutBR {BR} at (134,0) size 0x0 + LayoutBR {BR} at (166,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutText {#text} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,64) size 160x288 + LayoutNGBlockFlow (positioned) {DIV} at (0,64) size 160x288 [bgcolor=#FFFF00] +layer at (168,268) size 80x112 backgroundClip at (0,0) size 216x188 clip at (0,0) size 216x188 + LayoutNGBlockFlow (relative positioned) {DIV} at (160,216) size 80x112 + LayoutText {#text} at (6,0) size 19x37 + text run at (6,0) width 37: "PASS" + LayoutBR {BR} at (6,37) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change-expected.txt new file mode 100644 index 0000000..a24555e4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/layout_ng_experimental/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change-expected.txt
@@ -0,0 +1,38 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x476 + LayoutNGBlockFlow {HTML} at (0,0) size 800x476 + LayoutNGBlockFlow {BODY} at (8,16) size 784x452 + LayoutNGBlockFlow {P} at (0,0) size 784x20 + LayoutText {#text} at (0,0) size 203x19 + text run at (0,0) width 203: "The word 'PASS' should be seen " + LayoutInline {EM} at (0,0) size 34x19 + LayoutText {#text} at (203,0) size 34x19 + text run at (203,0) width 34: "twice" + LayoutText {#text} at (237,0) size 523x19 + text run at (237,0) width 523: " below. They appear together because they are composited, and hence not fragmented." +layer at (8,52) size 208x416 + LayoutNGBlockFlow {DIV} at (0,36) size 208x416 + LayoutMultiColumnSet (anonymous) at (0,0) size 208x416 +layer at (-240,52) size 456x128 backgroundClip at (8,0) size 792x188 clip at (8,0) size 792x188 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 456x128 + LayoutNGBlockFlow (anonymous) at (248,0) size 368x128 + LayoutBR {BR} at (183,0) size 0x0 + LayoutBR {BR} at (151,0) size 0x0 + LayoutBR {BR} at (119,0) size 0x0 + LayoutBR {BR} at (87,0) size 0x0 + LayoutBR {BR} at (55,0) size 0x0 + LayoutBR {BR} at (23,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 + LayoutBR {BR} at (0,0) size 0x0 +layer at (0,64) size 160x288 + LayoutNGBlockFlow (positioned) {DIV} at (0,64) size 160x288 [bgcolor=#FFFF00] +layer at (-64,412) size 80x112 backgroundClip at (8,188) size 208x144 clip at (8,188) size 208x144 + LayoutNGBlockFlow (relative positioned) {DIV} at (408,216) size 80x112 + LayoutText {#text} at (23,0) size 19x37 + text run at (23,0) width 37: "PASS" + LayoutBR {BR} at (23,37) size 0x0 + LayoutText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png index f5e0803a..ed342c04 100644 --- a/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png index b6c2932..0c2ca3b 100644 --- a/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png index dcfcd22b..781526b9 100644 --- a/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png index 33eccef..0a219d1 100644 --- a/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png index dcfcd22b..781526b9 100644 --- a/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png index 33eccef..0a219d1 100644 --- a/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/scalefactor200withzoom/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png index b9afb8d..24ab328 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/forms/calendar-picker/calendar-picker-appearance-zoom200-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-cell-collapsed-border-expected.png index 0431fe1..2b03999 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-cell-expected.png index 04c1a42..5fd681f 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-collapsed-border-expected.png index 286d64d..443404a 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-column-collapsed-border-expected.png index 25606e8..57004b4 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-column-expected.png index 8b33c8a..fc3d69e 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-column-group-collapsed-border-expected.png index 830c44bc..5e303389 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-column-group-expected.png index 3a67261..2a3c98db 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-expected.png index b12801cc..b2e35f3 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-quirks-collapsed-border-expected.png index b4a13eb..7c649995 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-quirks-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-quirks-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-quirks-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-quirks-expected.png index 838766a..bfb79b9 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-quirks-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-quirks-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-row-collapsed-border-expected.png index 946a906..db37d5cd 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-row-expected.png index 46926e9..725a0c6 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-row-group-collapsed-border-expected.png index 0ae24b9..a4ba142d 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-row-group-expected.png index bd7f449..cd7a107 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_border-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_layers-hide-collapsed-border-expected.png index fbfb847..2e9a764 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_layers-hide-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_layers-hide-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_layers-hide-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_layers-hide-expected.png index fb6be40..2767901 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_layers-hide-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_layers-hide-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-cell-collapsed-border-expected.png index ead4ee7..8058e03f 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-cell-expected.png index 6b2648a..5387e6ec 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-collapsed-border-expected.png index 575f56e..be1b89f7 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-column-collapsed-border-expected.png index 43e1c41d..5db70f3 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-column-expected.png index fd85abc..258593fb 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-column-group-collapsed-border-expected.png index 0f761cd..29b30be 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-column-group-expected.png index 65236d2..6958ea4 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-expected.png index b810299..6c37c72 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-row-collapsed-border-expected.png index c3e2f5f..dd8e253f 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-row-expected.png index 53fb776..ecb70ee 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-row-group-collapsed-border-expected.png index 5dbd96f..d0b023e2 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-row-group-expected.png index 184ab5b..532d7c8 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_position-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-cell-collapsed-border-expected.png index 542383b..bd81922 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-cell-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-cell-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-cell-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-cell-expected.png index 2966d27..8ed9fee 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-cell-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-cell-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-collapsed-border-expected.png index 4227b04..3574a0d 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-column-collapsed-border-expected.png index 4cc322c8..4889a75a 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-column-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-column-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-column-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-column-expected.png index 5eeff13..6d5b8cbe 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-column-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-column-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png index 966abd72..a84fd5f 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-column-group-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-column-group-expected.png index ef0558e..bc35aa8 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-column-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-column-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-expected.png index d8b4d7ee..1b59ce2b 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-row-collapsed-border-expected.png index 7bf16c04..af35c4b9 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-row-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-row-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-row-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-row-expected.png index 0b1154b..1b57024 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-row-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-row-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png index 6759142..91ae3a4 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-row-group-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-row-group-expected.png index 7056f70..da005dc 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-row-group-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/table/backgr_simple-table-row-group-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/text/font-format-support-cbdt-sbix-cff2-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/text/font-format-support-cbdt-sbix-cff2-expected.png index 9da28913b..78454c7 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/text/font-format-support-cbdt-sbix-cff2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/text/font-format-support-cbdt-sbix-cff2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/svg/as-background-image/svg-as-background-5-expected.png b/third_party/WebKit/LayoutTests/platform/win7/svg/as-background-image/svg-as-background-5-expected.png index 4469f08..2968e14 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/svg/as-background-image/svg-as-background-5-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/svg/as-background-image/svg-as-background-5-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png b/third_party/WebKit/LayoutTests/platform/win7/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png index af634c2..1523db9 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/win7/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png index e030ff7..d868472 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/virtual/scalefactor150/fast/hidpi/static/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/win7/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png index 6689d90e..f876bc7 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/virtual/scalefactor200/fast/hidpi/static/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png b/third_party/WebKit/LayoutTests/platform/win7/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png index 6689d90e..f876bc7 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/virtual/scalefactor200withzoom/fast/hidpi/static/calendar-picker-appearance-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-display-expected.png b/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-display-expected.png index 888f577..588d0bc 100644 --- a/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-display-expected.png +++ b/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-display-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/animations/animateMotion-accumulate-1b-expected.png b/third_party/WebKit/LayoutTests/svg/animations/animateMotion-accumulate-1b-expected.png deleted file mode 100644 index 320e773..0000000 --- a/third_party/WebKit/LayoutTests/svg/animations/animateMotion-accumulate-1b-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/animations/animateMotion-accumulate-2a-expected.png b/third_party/WebKit/LayoutTests/svg/animations/animateMotion-accumulate-2a-expected.png index dabade4a..6df4525 100644 --- a/third_party/WebKit/LayoutTests/svg/animations/animateMotion-accumulate-2a-expected.png +++ b/third_party/WebKit/LayoutTests/svg/animations/animateMotion-accumulate-2a-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/animations/animateMotion-accumulate-2b-expected.png b/third_party/WebKit/LayoutTests/svg/animations/animateMotion-accumulate-2b-expected.png index 583efbc..8985141 100644 --- a/third_party/WebKit/LayoutTests/svg/animations/animateMotion-accumulate-2b-expected.png +++ b/third_party/WebKit/LayoutTests/svg/animations/animateMotion-accumulate-2b-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/clip-path/clip-in-mask-expected.png b/third_party/WebKit/LayoutTests/svg/clip-path/clip-in-mask-expected.png index c1a4266..24bd37e8 100644 --- a/third_party/WebKit/LayoutTests/svg/clip-path/clip-in-mask-expected.png +++ b/third_party/WebKit/LayoutTests/svg/clip-path/clip-in-mask-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/clip-path/clip-path-child-clipped-expected.png b/third_party/WebKit/LayoutTests/svg/clip-path/clip-path-child-clipped-expected.png index ce43779..fe10e2ef 100644 --- a/third_party/WebKit/LayoutTests/svg/clip-path/clip-path-child-clipped-expected.png +++ b/third_party/WebKit/LayoutTests/svg/clip-path/clip-path-child-clipped-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/clip-path/clip-path-evenodd-expected.png b/third_party/WebKit/LayoutTests/svg/clip-path/clip-path-evenodd-expected.png index 8d84556d..92983858 100644 --- a/third_party/WebKit/LayoutTests/svg/clip-path/clip-path-evenodd-expected.png +++ b/third_party/WebKit/LayoutTests/svg/clip-path/clip-path-evenodd-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/clip-path/nested-clip-in-mask-path-and-image-based-clipping-expected.png b/third_party/WebKit/LayoutTests/svg/clip-path/nested-clip-in-mask-path-and-image-based-clipping-expected.png index 7532f38..41715b7f 100644 --- a/third_party/WebKit/LayoutTests/svg/clip-path/nested-clip-in-mask-path-and-image-based-clipping-expected.png +++ b/third_party/WebKit/LayoutTests/svg/clip-path/nested-clip-in-mask-path-and-image-based-clipping-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/custom/dasharrayOrigin-expected.png b/third_party/WebKit/LayoutTests/svg/custom/dasharrayOrigin-expected.png index dd623da..d4696b03 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/dasharrayOrigin-expected.png +++ b/third_party/WebKit/LayoutTests/svg/custom/dasharrayOrigin-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/custom/gradient-stroke-width-expected.png b/third_party/WebKit/LayoutTests/svg/custom/gradient-stroke-width-expected.png index bde8ad55..25422aeec 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/gradient-stroke-width-expected.png +++ b/third_party/WebKit/LayoutTests/svg/custom/gradient-stroke-width-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/filters/feDropShadow-expected.png b/third_party/WebKit/LayoutTests/svg/filters/feDropShadow-expected.png index 712b4b2..b967d88 100644 --- a/third_party/WebKit/LayoutTests/svg/filters/feDropShadow-expected.png +++ b/third_party/WebKit/LayoutTests/svg/filters/feDropShadow-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/stroke/zero-length-subpaths-linecap-rendering-expected.png b/third_party/WebKit/LayoutTests/svg/stroke/zero-length-subpaths-linecap-rendering-expected.png index a248a89..5393c8c 100644 --- a/third_party/WebKit/LayoutTests/svg/stroke/zero-length-subpaths-linecap-rendering-expected.png +++ b/third_party/WebKit/LayoutTests/svg/stroke/zero-length-subpaths-linecap-rendering-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-enable-continuations-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-enable-continuations-expected.txt index 83c02c9f..f0f095d 100644 --- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-enable-continuations-expected.txt +++ b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-enable-continuations-expected.txt
@@ -35,6 +35,10 @@ "reason": "style change" }, { + "object": "LayoutText #text", + "reason": "geometry" + }, + { "object": "LayoutBlockFlow (anonymous)", "reason": "geometry" },
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt index 772ac439..755b772 100644 --- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt +++ b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-ring-on-continuation-move-expected.txt
@@ -46,6 +46,10 @@ "reason": "outline" }, { + "object": "LayoutText #text", + "reason": "geometry" + }, + { "object": "LayoutBlockFlow (relative positioned) DIV id='block'", "reason": "geometry" }
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt index 46a79c2..12fd5100 100644 --- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt +++ b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/focus-ring-on-inline-continuation-move-expected.txt
@@ -51,6 +51,10 @@ "reason": "outline" }, { + "object": "LayoutText #text", + "reason": "geometry" + }, + { "object": "LayoutBlockFlow (anonymous)", "reason": "geometry" },
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-continuations-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-continuations-expected.txt index f81c6ef4..5c78c75 100644 --- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-continuations-expected.txt +++ b/third_party/WebKit/LayoutTests/virtual/disable-spv175/paint/invalidation/outline/outline-change-continuations-expected.txt
@@ -28,6 +28,10 @@ "reason": "style change" }, { + "object": "LayoutText #text", + "reason": "geometry" + }, + { "object": "LayoutBlockFlow (anonymous)", "reason": "geometry" },
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/external/wpt/css/css-multicol/README.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/external/wpt/css/css-multicol/README.txt new file mode 100644 index 0000000..fed8185 --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/external/wpt/css/css-multicol/README.txt
@@ -0,0 +1,3 @@ + This suite runs the tests in external/wpt/css/css-multicol with +# --enable-blink-features=LayoutNGBlockFragmentation. +# The LayoutNG project is described here: http://goo.gl/1hwhfX
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/README.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/README.txt new file mode 100644 index 0000000..188643d --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/README.txt
@@ -0,0 +1,3 @@ +# This suite runs the tests in fast/multicol with +# --enable-blink-features=LayoutNGBlockFragmentation. +# The LayoutNG project is described here: http://goo.gl/1hwhfX
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/composited-layer-expected.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/composited-layer-expected.txt new file mode 100644 index 0000000..15ae8c55 --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/composited-layer-expected.txt
@@ -0,0 +1,38 @@ +{ +"layers": [ +{ +"name": "LayoutView #document", +"bounds": [800, 600], +"drawsContent": false, +"backgroundColor": "#FFFFFF" +}, +{ +"name": "Scrolling Layer", +"bounds": [800, 600], +"drawsContent": false +}, +{ +"name": "Scrolling Contents Layer", +"bounds": [800, 600], +"contentsOpaque": true, +"backgroundColor": "#FFFFFF" +}, +{ +"name": "LayoutNGBlockFlow DIV id='multicol'", +"bounds": [200, 100], +"transform": 1 +} +], +"transforms": [ +{ +"id": 1, +"transform": [ +[1, 0, 0, 0], +[0, 1, 0, 0], +[0, 0, 1, 0], +[8, 8, 0, 1] +] +} +] +} +
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/dynamic/insert-spanner-after-inner-multicol-crash-expected.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/dynamic/insert-spanner-after-inner-multicol-crash-expected.txt new file mode 100644 index 0000000..31f175b --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/dynamic/insert-spanner-after-inner-multicol-crash-expected.txt
@@ -0,0 +1,6 @@ +Insert a spanner right after an inner multicol container and before column content, splitting an existing column row. + +PASS if no crash or assertion failure. + + +
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/fixedpos-in-transform-at-column-boundary-expected.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/fixedpos-in-transform-at-column-boundary-expected.txt new file mode 100644 index 0000000..9a73c31 --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/fixedpos-in-transform-at-column-boundary-expected.txt
@@ -0,0 +1,7 @@ +Test that a fixed positioned object inside a transform inside a multicol isn't paginated. + +The word "YO" should be seen below, with large letter spacing. + +Y +O +PASS
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/nested-after-composited-layer-crash-expected.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/nested-after-composited-layer-crash-expected.txt new file mode 100644 index 0000000..9c314504 --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/nested-after-composited-layer-crash-expected.txt
@@ -0,0 +1,3 @@ +PASS if no crash or assertion failure. + +
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/transform-inside-opacity-expected.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/transform-inside-opacity-expected.txt new file mode 100644 index 0000000..4657acc --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/transform-inside-opacity-expected.txt
@@ -0,0 +1,15 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x600 + LayoutNGBlockFlow {HTML} at (0,0) size 800x600 + LayoutNGBlockFlow {BODY} at (8,8) size 784x584 +layer at (8,8) size 424x204 + LayoutNGBlockFlow (relative positioned) {DIV} at (0,0) size 424x204 [border: (2px solid #000000)] + LayoutMultiColumnSet (anonymous) at (2,2) size 420x200 +layer at (10,10) size 200x300 backgroundClip at (0,0) size 220x210 clip at (0,0) size 220x210 + LayoutMultiColumnFlowThread (anonymous) at (2,2) size 200x300 + LayoutNGBlockFlow {DIV} at (0,0) size 200x200 +layer at (230,10) size 200x0 transparent + LayoutNGBlockFlow {DIV} at (0,200) size 200x0 +layer at (230,10) size 200x100 + LayoutNGBlockFlow (floating) {DIV} at (0,0) size 200x100 [bgcolor=#008000]
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/under-scroll-expected.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/under-scroll-expected.txt new file mode 100644 index 0000000..6f87d621 --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/multicol/under-scroll-expected.txt
@@ -0,0 +1,15 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 800x600 +layer at (0,0) size 800x216 + LayoutNGBlockFlow {HTML} at (0,0) size 800x216 + LayoutNGBlockFlow {BODY} at (8,8) size 784x200 +layer at (8,8) size 300x200 scrollY 50.00 scrollHeight 400 + LayoutNGBlockFlow {DIV} at (0,0) size 300x200 + LayoutNGBlockFlow {DIV} at (0,100) size 100x300 +layer at (8,-42) size 200x100 backgroundClip at (8,8) size 300x200 clip at (8,8) size 300x200 + LayoutNGBlockFlow {DIV} at (0,0) size 200x100 + LayoutMultiColumnSet (anonymous) at (0,0) size 200x100 +layer at (8,-42) size 92x200 backgroundClip at (8,8) size 100x50 clip at (8,8) size 100x50 + LayoutMultiColumnFlowThread (anonymous) at (0,0) size 92x200 + LayoutNGBlockFlow {DIV} at (0,0) size 100x100 [bgcolor=#ADD8E6] + LayoutNGBlockFlow {DIV} at (0,100) size 100x100 [bgcolor=#D3D3D3]
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/pagination/README.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/pagination/README.txt new file mode 100644 index 0000000..00a8f4e --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fast/pagination/README.txt
@@ -0,0 +1,3 @@ +# This suite runs the tests in fast/pagination with +# --enable-blink-features=LayoutNGBlockFragmentation. +# The LayoutNG project is described here: http://goo.gl/1hwhfX
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fragmentation/README.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fragmentation/README.txt new file mode 100644 index 0000000..174aefe --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fragmentation/README.txt
@@ -0,0 +1,3 @@ +# This suite runs the tests in fragmentation with +# --enable-blink-features=LayoutNGBlockFragmentation. +# The LayoutNG project is described here: http://goo.gl/1hwhfX
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fragmentation/block-with-float-and-1-orphaned-line-expected.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fragmentation/block-with-float-and-1-orphaned-line-expected.txt new file mode 100644 index 0000000..734601f --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fragmentation/block-with-float-and-1-orphaned-line-expected.txt
@@ -0,0 +1,3 @@ +First column. +This cyan block should all be in the first column.Second column. +PASS
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fragmentation/single-cell-too-large-for-page-expected.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fragmentation/single-cell-too-large-for-page-expected.txt new file mode 100644 index 0000000..d97b83c --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/fragmentation/single-cell-too-large-for-page-expected.txt
@@ -0,0 +1,19 @@ +crbug.com/99124: Table rows shouldn't straddle page boundaries. + +Text +Text +Text +Text +Text +Text +Text +Text +Text +Text +Text +Text +Text +Text +Text +Text +PASS
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/README.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/README.txt new file mode 100644 index 0000000..382a681d --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/README.txt
@@ -0,0 +1,3 @@ +# This suite runs the tests in printing with +# --enable-blink-features=LayoutNGBlockFragmentation. +# The LayoutNG project is described here: http://goo.gl/1hwhfX
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/ellipsis-printing-style-expected.png b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/ellipsis-printing-style-expected.png new file mode 100644 index 0000000..fdc6e84 --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/ellipsis-printing-style-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/ellipsis-printing-style-expected.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/ellipsis-printing-style-expected.txt new file mode 100644 index 0000000..d9e9377 --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/ellipsis-printing-style-expected.txt
@@ -0,0 +1,10 @@ +layer at (0,0) size 800x600 + LayoutView at (0,0) size 1066x799 +layer at (0,0) size 1066x40 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600 + LayoutNGBlockFlow {HTML} at (0,0) size 1066x40 + LayoutNGBlockFlow {BODY} at (8,8) size 1050x24 +layer at (8,8) size 168x24 + LayoutNGBlockFlow {DIV} at (0,0) size 168x24 [color=#FFFFFF] [bgcolor=#000000] + LayoutText {#text} at (0,0) size 160x16 + text run at (0,0) width 144: "This text" + text run at (144,0) width 16: "\x{2026}"
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/page-height-zero-expected.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/page-height-zero-expected.txt new file mode 100644 index 0000000..333b0b7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/page-height-zero-expected.txt
@@ -0,0 +1,11 @@ +Test that an exception is thrown when attempting to set zero page height + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +PASS internals.numberOfPages(100, 0) threw exception TypeError: Failed to execute 'numberOfPages' on 'Internals': Page width and height must be larger than 0.. +PASS internals.pageNumber(document.body, 100, 0) threw exception TypeError: Failed to execute 'pageNumber' on 'Internals': Page width and height must be larger than 0.. +PASS successfullyParsed is true + +TEST COMPLETE +
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/webgl-repeated-printing-expected.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/webgl-repeated-printing-expected.txt new file mode 100644 index 0000000..fa71a2b --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/webgl-repeated-printing-expected.txt
@@ -0,0 +1,19 @@ +PASS successfullyParsed is true + +TEST COMPLETE +Snapshot width: 800 height: 600 +Test 0: canvas should be green +PASS pixel[0] is within 1 of 0 +PASS pixel[1] is within 1 of 255 +PASS pixel[2] is within 1 of 0 +Snapshot width: 800 height: 600 +Test 1: canvas should be red +PASS pixel[0] is within 1 of 255 +PASS pixel[1] is within 1 of 0 +PASS pixel[2] is within 1 of 0 +Snapshot width: 800 height: 600 +Test 2: canvas should be blue +PASS pixel[0] is within 1 of 0 +PASS pixel[1] is within 1 of 0 +PASS pixel[2] is within 1 of 255 +
diff --git a/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/webgl-repeated-printing-preservedrawingbuffer-expected.txt b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/webgl-repeated-printing-preservedrawingbuffer-expected.txt new file mode 100644 index 0000000..fa71a2b --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/layout_ng_experimental/printing/webgl-repeated-printing-preservedrawingbuffer-expected.txt
@@ -0,0 +1,19 @@ +PASS successfullyParsed is true + +TEST COMPLETE +Snapshot width: 800 height: 600 +Test 0: canvas should be green +PASS pixel[0] is within 1 of 0 +PASS pixel[1] is within 1 of 255 +PASS pixel[2] is within 1 of 0 +Snapshot width: 800 height: 600 +Test 1: canvas should be red +PASS pixel[0] is within 1 of 255 +PASS pixel[1] is within 1 of 0 +PASS pixel[2] is within 1 of 0 +Snapshot width: 800 height: 600 +Test 2: canvas should be blue +PASS pixel[0] is within 1 of 0 +PASS pixel[1] is within 1 of 0 +PASS pixel[2] is within 1 of 255 +
diff --git a/third_party/WebKit/Source/core/DEPS b/third_party/WebKit/Source/core/DEPS index 2c01d6f6..d583886 100644 --- a/third_party/WebKit/Source/core/DEPS +++ b/third_party/WebKit/Source/core/DEPS
@@ -16,7 +16,7 @@ "+mojo/public/cpp/system", "+public/common", "+public/mojom", - "+public/public_features.h", + "+public/public_buildflags.h", "+public/web", "+services/metrics/public", "+services/network/public/cpp/features.h",
diff --git a/third_party/WebKit/Source/core/animation/DocumentTimeline.cpp b/third_party/WebKit/Source/core/animation/DocumentTimeline.cpp index 80264cf2..10adc62 100644 --- a/third_party/WebKit/Source/core/animation/DocumentTimeline.cpp +++ b/third_party/WebKit/Source/core/animation/DocumentTimeline.cpp
@@ -117,12 +117,24 @@ } HeapVector<Member<Animation>> DocumentTimeline::getAnimations() { + // This method implements the Document::getAnimations method defined in the + // web-animations-1 spec. + // https://drafts.csswg.org/web-animations-1/#dom-document-getanimations document_->UpdateStyleAndLayoutTree(); HeapVector<Member<Animation>> animations; for (const auto& animation : animations_) { - if (animation->effect() && - (animation->effect()->IsCurrent() || animation->effect()->IsInEffect())) - animations.push_back(animation); + if (!animation->effect() || (!animation->effect()->IsCurrent() && + !animation->effect()->IsInEffect())) { + continue; + } + if (animation->effect()->IsKeyframeEffect()) { + Element* target = ToKeyframeEffect(animation->effect())->target(); + if (!target || !target->isConnected() || + document_ != target->GetDocument()) { + continue; + } + } + animations.push_back(animation); } std::sort(animations.begin(), animations.end(), CompareAnimations); return animations;
diff --git a/third_party/WebKit/Source/core/clipboard/DataTransfer.cpp b/third_party/WebKit/Source/core/clipboard/DataTransfer.cpp index afe55061..fefec33 100644 --- a/third_party/WebKit/Source/core/clipboard/DataTransfer.cpp +++ b/third_party/WebKit/Source/core/clipboard/DataTransfer.cpp
@@ -133,8 +133,7 @@ dragged_layout_object->GetDocument().Lifecycle().AdvanceTo( DocumentLifecycle::kPaintClean); - FloatPoint paint_offset = dragged_layout_object->LocalToAncestorPoint( - FloatPoint(), &layer->GetLayoutObject(), kUseTransforms); + FloatPoint paint_offset = bounding_box.Location(); PropertyTreeState border_box_properties = PropertyTreeState::Root(); if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) { border_box_properties =
diff --git a/third_party/WebKit/Source/core/clipboard/DataTransferTest.cpp b/third_party/WebKit/Source/core/clipboard/DataTransferTest.cpp index 5c126943..3bfd03cc 100644 --- a/third_party/WebKit/Source/core/clipboard/DataTransferTest.cpp +++ b/third_party/WebKit/Source/core/clipboard/DataTransferTest.cpp
@@ -349,4 +349,47 @@ } } +TEST_P(DataTransferTest, NodeImageWithLargerPositionedDescendant) { + SetBodyInnerHTML(R"HTML( + <style> + * { margin: 0; } + #drag { + position: absolute; + top: 100px; + left: 0; + height: 1px; + width: 1px; + background: #00f; + } + #child { + position: absolute; + top: -1px; + left: 0; + height: 3px; + width: 1px; + background: #0f0; + } + </style> + <div id="drag" draggable="true"> + <div id="child"></div> + </div> + )HTML"); + Element& drag = *GetDocument().getElementById("drag"); + const auto image = DataTransfer::NodeImage(GetFrame(), drag); + + // The positioned #child should expand the dragged image's size. + constexpr int drag_width = 1; + constexpr int drag_height = 3; + EXPECT_EQ(IntSize(drag_width, drag_height), image->Size()); + + // The dragged image should be (drag_width x drag_height) and fully green + // which is the color of the #child which fully covers the dragged element. + Color green = 0xFF00FF00; + const SkBitmap& bitmap = image->Bitmap(); + for (int x = 0; x < drag_width; ++x) { + for (int y = 0; y < drag_height; ++y) + EXPECT_EQ(green, bitmap.getColor(x, y)); + } +} + } // namespace blink
diff --git a/third_party/WebKit/Source/core/css/properties/ComputedStyleUtils.cpp b/third_party/WebKit/Source/core/css/properties/ComputedStyleUtils.cpp index 9f4fb49..aa490b7 100644 --- a/third_party/WebKit/Source/core/css/properties/ComputedStyleUtils.cpp +++ b/third_party/WebKit/Source/core/css/properties/ComputedStyleUtils.cpp
@@ -11,6 +11,7 @@ #include "core/css/CSSCounterValue.h" #include "core/css/CSSCustomIdentValue.h" #include "core/css/CSSFontFamilyValue.h" +#include "core/css/CSSFontStyleRangeValue.h" #include "core/css/CSSFunctionValue.h" #include "core/css/CSSGridLineNamesValue.h" #include "core/css/CSSInitialValue.h" @@ -745,8 +746,7 @@ CSSPrimitiveValue::UnitType::kPercentage); } -CSSIdentifierValue* ComputedStyleUtils::ValueForFontStyle( - const ComputedStyle& style) { +CSSValue* ComputedStyleUtils::ValueForFontStyle(const ComputedStyle& style) { FontSelectionValue angle = style.GetFontDescription().Style(); if (angle == NormalSlopeValue()) { return CSSIdentifierValue::Create(CSSValueNormal); @@ -756,8 +756,14 @@ return CSSIdentifierValue::Create(CSSValueItalic); } - NOTREACHED(); - return CSSIdentifierValue::Create(CSSValueNormal); + // The spec says: 'The lack of a number represents an angle of + // "20deg"', but since we compute that to 'italic' (handled above), + // we don't perform any special treatment of that value here. + CSSValueList* oblique_values = CSSValueList::CreateSpaceSeparated(); + oblique_values->Append( + *CSSPrimitiveValue::Create(angle, CSSPrimitiveValue::UnitType::kDegrees)); + return CSSFontStyleRangeValue::Create( + *CSSIdentifierValue::Create(CSSValueOblique), *oblique_values); } CSSPrimitiveValue* ComputedStyleUtils::ValueForFontWeight(
diff --git a/third_party/WebKit/Source/core/css/properties/ComputedStyleUtils.h b/third_party/WebKit/Source/core/css/properties/ComputedStyleUtils.h index b992d5b..a64ae8c1 100644 --- a/third_party/WebKit/Source/core/css/properties/ComputedStyleUtils.h +++ b/third_party/WebKit/Source/core/css/properties/ComputedStyleUtils.h
@@ -102,7 +102,7 @@ static CSSValueList* ValueForFontFamily(const ComputedStyle&); static CSSPrimitiveValue* ValueForFontSize(const ComputedStyle&); static CSSPrimitiveValue* ValueForFontStretch(const ComputedStyle&); - static CSSIdentifierValue* ValueForFontStyle(const ComputedStyle&); + static CSSValue* ValueForFontStyle(const ComputedStyle&); static CSSPrimitiveValue* ValueForFontWeight(const ComputedStyle&); static CSSIdentifierValue* ValueForFontVariantCaps(const ComputedStyle&); static CSSValue* ValueForFontVariantLigatures(const ComputedStyle&);
diff --git a/third_party/WebKit/Source/core/exported/WebViewTest.cpp b/third_party/WebKit/Source/core/exported/WebViewTest.cpp index febbdb8..1535b9e9c0 100644 --- a/third_party/WebKit/Source/core/exported/WebViewTest.cpp +++ b/third_party/WebKit/Source/core/exported/WebViewTest.cpp
@@ -101,7 +101,7 @@ #include "public/platform/WebSize.h" #include "public/platform/WebThread.h" #include "public/platform/WebURLLoaderMockFactory.h" -#include "public/public_features.h" +#include "public/public_buildflags.h" #include "public/web/WebAutofillClient.h" #include "public/web/WebConsoleMessage.h" #include "public/web/WebDateTimeChooserCompletion.h"
diff --git a/third_party/WebKit/Source/core/html/HTMLAnchorElement.cpp b/third_party/WebKit/Source/core/html/HTMLAnchorElement.cpp index 595640d04..8b91b84 100644 --- a/third_party/WebKit/Source/core/html/HTMLAnchorElement.cpp +++ b/third_party/WebKit/Source/core/html/HTMLAnchorElement.cpp
@@ -51,7 +51,6 @@ Document& document) : HTMLElement(tag_name, document), link_relations_(0), - was_focused_by_mouse_(false), cached_visited_link_hash_(0), rel_list_(RelList::Create(this)) {} @@ -74,27 +73,7 @@ } bool HTMLAnchorElement::ShouldHaveFocusAppearance() const { - return !was_focused_by_mouse_ || HTMLElement::SupportsFocus(); -} - -void HTMLAnchorElement::DispatchFocusEvent( - Element* old_focused_element, - WebFocusType type, - InputDeviceCapabilities* source_capabilities) { - if (type != kWebFocusTypePage) - was_focused_by_mouse_ = type == kWebFocusTypeMouse; - HTMLElement::DispatchFocusEvent(old_focused_element, type, - source_capabilities); -} - -void HTMLAnchorElement::DispatchBlurEvent( - Element* new_focused_element, - WebFocusType type, - InputDeviceCapabilities* source_capabilities) { - if (type != kWebFocusTypePage) - was_focused_by_mouse_ = false; - HTMLElement::DispatchBlurEvent(new_focused_element, type, - source_capabilities); + return !WasFocusedByMouse() || HTMLElement::SupportsFocus(); } bool HTMLAnchorElement::IsMouseFocusable() const {
diff --git a/third_party/WebKit/Source/core/html/HTMLAnchorElement.h b/third_party/WebKit/Source/core/html/HTMLAnchorElement.h index 9cda790..4090eed 100644 --- a/third_party/WebKit/Source/core/html/HTMLAnchorElement.h +++ b/third_party/WebKit/Source/core/html/HTMLAnchorElement.h
@@ -105,13 +105,6 @@ private: void AttributeChanged(const AttributeModificationParams&) override; bool ShouldHaveFocusAppearance() const final; - void DispatchFocusEvent( - Element* old_focused_element, - WebFocusType, - InputDeviceCapabilities* source_capabilities) override; - void DispatchBlurEvent(Element* new_focused_element, - WebFocusType, - InputDeviceCapabilities* source_capabilities) override; bool IsMouseFocusable() const override; bool IsKeyboardFocusable() const override; void DefaultEventHandler(Event*) final; @@ -128,7 +121,6 @@ void HandleClick(Event*); unsigned link_relations_ : 31; - unsigned was_focused_by_mouse_ : 1; mutable LinkHash cached_visited_link_hash_; TraceWrapperMember<RelList> rel_list_; };
diff --git a/third_party/WebKit/Source/core/html/forms/HTMLFormControlElement.cpp b/third_party/WebKit/Source/core/html/forms/HTMLFormControlElement.cpp index 1d6ea8d..3dd828a7 100644 --- a/third_party/WebKit/Source/core/html/forms/HTMLFormControlElement.cpp +++ b/third_party/WebKit/Source/core/html/forms/HTMLFormControlElement.cpp
@@ -61,7 +61,6 @@ will_validate_(true), is_valid_(true), validity_is_dirty_(false), - was_focused_by_mouse_(false), blocks_form_submission_(false) { SetHasCustomStyleCallbacks(); } @@ -409,33 +408,21 @@ } bool HTMLFormControlElement::ShouldHaveFocusAppearance() const { - return !was_focused_by_mouse_ || ShouldShowFocusRingOnMouseFocus(); -} - -void HTMLFormControlElement::DispatchFocusEvent( - Element* old_focused_element, - WebFocusType type, - InputDeviceCapabilities* source_capabilities) { - if (type != kWebFocusTypePage) - was_focused_by_mouse_ = type == kWebFocusTypeMouse; - // ContainerNode::handleStyleChangeOnFocusStateChange() will inform - // LayoutTheme about the focus state change. - HTMLElement::DispatchFocusEvent(old_focused_element, type, - source_capabilities); + return !WasFocusedByMouse() || ShouldShowFocusRingOnMouseFocus(); } void HTMLFormControlElement::WillCallDefaultEventHandler(const Event& event) { - if (!was_focused_by_mouse_) + if (!WasFocusedByMouse()) return; if (!event.IsKeyboardEvent() || event.type() != EventTypeNames::keydown) return; bool old_should_have_focus_appearance = ShouldHaveFocusAppearance(); - was_focused_by_mouse_ = false; + SetWasFocusedByMouse(false); - // Change of m_wasFocusByMouse may affect shouldHaveFocusAppearance() and - // LayoutTheme::isFocused(). Inform LayoutTheme if - // shouldHaveFocusAppearance() changes. + // Changes to WasFocusedByMouse may affect ShouldHaveFocusAppearance() and + // LayoutTheme::IsFocused(). Inform LayoutTheme if + // ShouldHaveFocusAppearance() changes. if (old_should_have_focus_appearance != ShouldHaveFocusAppearance() && GetLayoutObject()) { GetLayoutObject()->InvalidateIfControlStateChanged(kFocusControlState); @@ -654,8 +641,6 @@ Element* new_focused_element, WebFocusType type, InputDeviceCapabilities* source_capabilities) { - if (type != kWebFocusTypePage) - was_focused_by_mouse_ = false; HTMLElement::DispatchBlurEvent(new_focused_element, type, source_capabilities); HideVisibleValidationMessage();
diff --git a/third_party/WebKit/Source/core/html/forms/HTMLFormControlElement.h b/third_party/WebKit/Source/core/html/forms/HTMLFormControlElement.h index c8f99d5..fd2a9aa 100644 --- a/third_party/WebKit/Source/core/html/forms/HTMLFormControlElement.h +++ b/third_party/WebKit/Source/core/html/forms/HTMLFormControlElement.h
@@ -162,10 +162,6 @@ void DispatchBlurEvent(Element* new_focused_element, WebFocusType, InputDeviceCapabilities* source_capabilities) override; - void DispatchFocusEvent( - Element* old_focused_element, - WebFocusType, - InputDeviceCapabilities* source_capabilities) override; void WillCallDefaultEventHandler(const Event&) final; void DidRecalcStyle(StyleRecalcChange) override; @@ -216,7 +212,6 @@ bool is_valid_ : 1; bool validity_is_dirty_ : 1; - bool was_focused_by_mouse_ : 1; bool blocks_form_submission_ : 1; };
diff --git a/third_party/WebKit/Source/core/input/BUILD.gn b/third_party/WebKit/Source/core/input/BUILD.gn index d24a107b3..b655038 100644 --- a/third_party/WebKit/Source/core/input/BUILD.gn +++ b/third_party/WebKit/Source/core/input/BUILD.gn
@@ -38,6 +38,6 @@ "TouchList.h", ] deps = [ - "//third_party/WebKit/public:features", + "//third_party/WebKit/public:buildflags", ] }
diff --git a/third_party/WebKit/Source/core/input/GestureManager.cpp b/third_party/WebKit/Source/core/input/GestureManager.cpp index 044c337..c135f61 100644 --- a/third_party/WebKit/Source/core/input/GestureManager.cpp +++ b/third_party/WebKit/Source/core/input/GestureManager.cpp
@@ -18,7 +18,7 @@ #include "core/input/InputDeviceCapabilities.h" #include "core/page/ChromeClient.h" #include "core/page/Page.h" -#include "public/public_features.h" +#include "public/public_buildflags.h" #if BUILDFLAG(ENABLE_UNHANDLED_TAP) #include "core/editing/FrameSelection.h"
diff --git a/third_party/WebKit/Source/core/inspector/browser_protocol.json b/third_party/WebKit/Source/core/inspector/browser_protocol.json index 34ff7118..33efbe5 100644 --- a/third_party/WebKit/Source/core/inspector/browser_protocol.json +++ b/third_party/WebKit/Source/core/inspector/browser_protocol.json
@@ -10795,6 +10795,11 @@ "$ref": "DialogType" }, { + "name": "hasBrowserHandler", + "description": "True iff browser is capable showing or acting on the given dialog. When browser has no\ndialog handler for given target, calling alert while Page domain is engaged will stall\nthe page execution. Execution can be resumed via calling Page.handleJavaScriptDialog.", + "type": "boolean" + }, + { "name": "defaultPrompt", "description": "Default dialog prompt.", "optional": true,
diff --git a/third_party/WebKit/Source/core/inspector/browser_protocol.pdl b/third_party/WebKit/Source/core/inspector/browser_protocol.pdl index e7e47600..b024259d 100644 --- a/third_party/WebKit/Source/core/inspector/browser_protocol.pdl +++ b/third_party/WebKit/Source/core/inspector/browser_protocol.pdl
@@ -4955,6 +4955,10 @@ string message # Dialog type. DialogType type + # True iff browser is capable showing or acting on the given dialog. When browser has no + # dialog handler for given target, calling alert while Page domain is engaged will stall + # the page execution. Execution can be resumed via calling Page.handleJavaScriptDialog. + boolean hasBrowserHandler # Default dialog prompt. optional string defaultPrompt
diff --git a/third_party/WebKit/Source/core/layout/LayoutObject.cpp b/third_party/WebKit/Source/core/layout/LayoutObject.cpp index 0e6015b..aa1a219 100644 --- a/third_party/WebKit/Source/core/layout/LayoutObject.cpp +++ b/third_party/WebKit/Source/core/layout/LayoutObject.cpp
@@ -3731,28 +3731,10 @@ } inline void LayoutObject::SetNeedsPaintOffsetAndVisualRectUpdate() { - if (NeedsPaintOffsetAndVisualRectUpdate()) - return; for (auto* object = this; object && !object->NeedsPaintOffsetAndVisualRectUpdate(); object = object->ParentCrossingFrames()) { object->bitfields_.SetNeedsPaintOffsetAndVisualRectUpdate(true); - - // Focus ring is special because continuations affect shape of focus ring. - // Mark the start object for paint invalidation if it has focus ring. - if (!object->IsAnonymous() || !object->IsLayoutBlockFlow()) - continue; - auto* block_flow = ToLayoutBlockFlow(object); - if (!block_flow->IsAnonymousBlockContinuation()) - continue; - if (auto* inline_element_continuation = - block_flow->InlineElementContinuation()) { - auto* start_of_continuations = - inline_element_continuation->GetNode()->GetLayoutObject(); - if (start_of_continuations && - start_of_continuations->StyleRef().OutlineStyleIsAuto()) - start_of_continuations->SetMayNeedPaintInvalidation(); - } } }
diff --git a/third_party/WebKit/Source/core/layout/LayoutObject.h b/third_party/WebKit/Source/core/layout/LayoutObject.h index cc19d1e..ece5275 100644 --- a/third_party/WebKit/Source/core/layout/LayoutObject.h +++ b/third_party/WebKit/Source/core/layout/LayoutObject.h
@@ -1954,6 +1954,10 @@ void InvalidateIfControlStateChanged(ControlState); + bool ContainsInlineWithOutlineAndContinuation() const { + return bitfields_.ContainsInlineWithOutlineAndContinuation(); + } + protected: enum LayoutObjectType { kLayoutObjectBr, @@ -2123,9 +2127,6 @@ // LayoutFlowThread. void RemoveFromLayoutFlowThread(); - bool ContainsInlineWithOutlineAndContinuation() const { - return bitfields_.ContainsInlineWithOutlineAndContinuation(); - } void SetContainsInlineWithOutlineAndContinuation(bool b) { bitfields_.SetContainsInlineWithOutlineAndContinuation(b); }
diff --git a/third_party/WebKit/Source/core/layout/ScrollbarsTest.cpp b/third_party/WebKit/Source/core/layout/ScrollbarsTest.cpp index a7b65978..b1395b4 100644 --- a/third_party/WebKit/Source/core/layout/ScrollbarsTest.cpp +++ b/third_party/WebKit/Source/core/layout/ScrollbarsTest.cpp
@@ -1826,6 +1826,48 @@ } } +TEST_P(ScrollbarsTest, + HideTheOverlayScrollbarNotCrashAfterPLSADisposedPaintLayer) { + WebView().Resize(WebSize(200, 200)); + SimRequest request("https://example.com/test.html", "text/html"); + LoadURL("https://example.com/test.html"); + request.Complete(R"HTML( + <!DOCTYPE html> + <style> + #div{ height: 100px; overflow-y:scroll; } + .big{ height: 2000px; } + .hide { display: none; } + </style> + <div id='div'> + <div class='big'> + </div> + </div> + )HTML"); + Compositor().BeginFrame(); + + Document& document = GetDocument(); + Element* div = document.getElementById("div"); + PaintLayerScrollableArea* scrollable_div = + ToLayoutBox(div->GetLayoutObject())->GetScrollableArea(); + + scrollable_div->SetScrollbarsHiddenIfOverlay(false); + ASSERT_TRUE(scrollable_div); + ASSERT_TRUE(scrollable_div->GetPageScrollbarTheme().UsesOverlayScrollbars()); + ASSERT_TRUE(scrollable_div->VerticalScrollbar()); + + EXPECT_FALSE(scrollable_div->ScrollbarsHiddenIfOverlay()); + + // Set display:none calls Dispose(). + div->setAttribute(HTMLNames::classAttr, "hide"); + Compositor().BeginFrame(); + + // After paint layer in scrollable dispose, we can still call scrollbar hidden + // just not change scrollbar. + scrollable_div->SetScrollbarsHiddenIfOverlay(true); + + EXPECT_FALSE(scrollable_div->ScrollbarsHiddenIfOverlay()); +} + class ScrollbarTrackMarginsTest : public ScrollbarsTest { public: void PrepareTest(const String& track_style) {
diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGImage.cpp b/third_party/WebKit/Source/core/layout/svg/LayoutSVGImage.cpp index 533453b7..c336313 100644 --- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGImage.cpp +++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGImage.cpp
@@ -155,27 +155,27 @@ if (hit_test_action != kHitTestForeground) return false; + const ComputedStyle& style = StyleRef(); PointerEventsHitRules hit_rules(PointerEventsHitRules::SVG_IMAGE_HITTESTING, result.GetHitTestRequest(), - Style()->PointerEvents()); - bool is_visible = (Style()->Visibility() == EVisibility::kVisible); - if (is_visible || !hit_rules.require_visible) { - FloatPoint local_point; - if (!SVGLayoutSupport::TransformToUserSpaceAndCheckClipping( - *this, LocalToSVGParentTransform(), point_in_parent, local_point)) - return false; + style.PointerEvents()); + if (hit_rules.require_visible && style.Visibility() != EVisibility::kVisible) + return false; - if (hit_rules.can_hit_fill || hit_rules.can_hit_bounding_box) { - if (object_bounding_box_.Contains(local_point)) { - const LayoutPoint& local_layout_point = LayoutPoint(local_point); - UpdateHitTestResult(result, local_layout_point); - if (result.AddNodeToListBasedTestResult( - GetElement(), local_layout_point) == kStopHitTesting) - return true; - } + FloatPoint local_point; + if (!SVGLayoutSupport::TransformToUserSpaceAndCheckClipping( + *this, LocalToSVGParentTransform(), point_in_parent, local_point)) + return false; + + if (hit_rules.can_hit_fill || hit_rules.can_hit_bounding_box) { + if (object_bounding_box_.Contains(local_point)) { + const LayoutPoint& local_layout_point = LayoutPoint(local_point); + UpdateHitTestResult(result, local_layout_point); + if (result.AddNodeToListBasedTestResult( + GetElement(), local_layout_point) == kStopHitTesting) + return true; } } - return false; }
diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGShape.cpp b/third_party/WebKit/Source/core/layout/svg/LayoutSVGShape.cpp index 181242a..542b030 100644 --- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGShape.cpp +++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGShape.cpp
@@ -366,22 +366,24 @@ bool LayoutSVGShape::NodeAtFloatPointInternal(const HitTestRequest& request, const FloatPoint& local_point, PointerEventsHitRules hit_rules) { - bool is_visible = (Style()->Visibility() == EVisibility::kVisible); - if (is_visible || !hit_rules.require_visible) { - const SVGComputedStyle& svg_style = Style()->SvgStyle(); - WindRule fill_rule = svg_style.FillRule(); - if (request.SvgClipContent()) - fill_rule = svg_style.ClipRule(); - if ((hit_rules.can_hit_bounding_box && - ObjectBoundingBox().Contains(local_point)) || - (hit_rules.can_hit_stroke && - (svg_style.HasStroke() || !hit_rules.require_stroke) && - StrokeContains(local_point, hit_rules.require_stroke)) || - (hit_rules.can_hit_fill && - (svg_style.HasFill() || !hit_rules.require_fill) && - FillContains(local_point, hit_rules.require_fill, fill_rule))) - return true; - } + const ComputedStyle& style = StyleRef(); + if (hit_rules.require_visible && style.Visibility() != EVisibility::kVisible) + return false; + if (hit_rules.can_hit_bounding_box && + ObjectBoundingBox().Contains(local_point)) + return true; + const SVGComputedStyle& svg_style = style.SvgStyle(); + if (hit_rules.can_hit_stroke && + (svg_style.HasStroke() || !hit_rules.require_stroke) && + StrokeContains(local_point, hit_rules.require_stroke)) + return true; + WindRule fill_rule = svg_style.FillRule(); + if (request.SvgClipContent()) + fill_rule = svg_style.ClipRule(); + if (hit_rules.can_hit_fill && + (svg_style.HasFill() || !hit_rules.require_fill) && + FillContains(local_point, hit_rules.require_fill, fill_rule)) + return true; return false; }
diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGText.cpp b/third_party/WebKit/Source/core/layout/svg/LayoutSVGText.cpp index 06b25315..64aa8b9 100644 --- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGText.cpp +++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGText.cpp
@@ -305,38 +305,39 @@ if (hit_test_action != kHitTestForeground) return false; + const ComputedStyle& style = StyleRef(); PointerEventsHitRules hit_rules(PointerEventsHitRules::SVG_TEXT_HITTESTING, result.GetHitTestRequest(), - Style()->PointerEvents()); - bool is_visible = (Style()->Visibility() == EVisibility::kVisible); - if (is_visible || !hit_rules.require_visible) { - if ((hit_rules.can_hit_bounding_box && !ObjectBoundingBox().IsEmpty()) || - (hit_rules.can_hit_stroke && - (Style()->SvgStyle().HasStroke() || !hit_rules.require_stroke)) || - (hit_rules.can_hit_fill && - (Style()->SvgStyle().HasFill() || !hit_rules.require_fill))) { - FloatPoint local_point; - if (!SVGLayoutSupport::TransformToUserSpaceAndCheckClipping( - *this, LocalToSVGParentTransform(), point_in_parent, local_point)) - return false; + style.PointerEvents()); - HitTestLocation hit_test_location(local_point); - if (LayoutBlock::NodeAtPoint(result, hit_test_location, LayoutPoint(), - hit_test_action)) + if (hit_rules.require_visible && style.Visibility() != EVisibility::kVisible) + return false; + + if ((hit_rules.can_hit_bounding_box && !ObjectBoundingBox().IsEmpty()) || + (hit_rules.can_hit_stroke && + (style.SvgStyle().HasStroke() || !hit_rules.require_stroke)) || + (hit_rules.can_hit_fill && + (style.SvgStyle().HasFill() || !hit_rules.require_fill))) { + FloatPoint local_point; + if (!SVGLayoutSupport::TransformToUserSpaceAndCheckClipping( + *this, LocalToSVGParentTransform(), point_in_parent, local_point)) + return false; + + HitTestLocation hit_test_location(local_point); + if (LayoutBlock::NodeAtPoint(result, hit_test_location, LayoutPoint(), + hit_test_action)) + return true; + + // Consider the bounding box if requested. + if (hit_rules.can_hit_bounding_box && + ObjectBoundingBox().Contains(local_point)) { + const LayoutPoint& local_layout_point = LayoutPoint(local_point); + UpdateHitTestResult(result, local_layout_point); + if (result.AddNodeToListBasedTestResult( + GetElement(), local_layout_point) == kStopHitTesting) return true; - - // Consider the bounding box if requested. - if (hit_rules.can_hit_bounding_box && - ObjectBoundingBox().Contains(local_point)) { - const LayoutPoint& local_layout_point = LayoutPoint(local_point); - UpdateHitTestResult(result, local_layout_point); - if (result.AddNodeToListBasedTestResult( - GetElement(), local_layout_point) == kStopHitTesting) - return true; - } } } - return false; }
diff --git a/third_party/WebKit/Source/core/layout/svg/line/SVGInlineTextBox.cpp b/third_party/WebKit/Source/core/layout/svg/line/SVGInlineTextBox.cpp index dc4fdb86..c314ea5c4 100644 --- a/third_party/WebKit/Source/core/layout/svg/line/SVGInlineTextBox.cpp +++ b/third_party/WebKit/Source/core/layout/svg/line/SVGInlineTextBox.cpp
@@ -283,45 +283,41 @@ // FIXME: integrate with InlineTextBox::nodeAtPoint better. DCHECK(!IsLineBreak()); + auto line_layout_item = LineLayoutSVGInlineText(GetLineLayoutItem()); + const ComputedStyle& style = line_layout_item.StyleRef(); PointerEventsHitRules hit_rules(PointerEventsHitRules::SVG_TEXT_HITTESTING, result.GetHitTestRequest(), - GetLineLayoutItem().Style()->PointerEvents()); - bool is_visible = - GetLineLayoutItem().Style()->Visibility() == EVisibility::kVisible; - if (is_visible || !hit_rules.require_visible) { - if (hit_rules.can_hit_bounding_box || - (hit_rules.can_hit_stroke && - (GetLineLayoutItem().Style()->SvgStyle().HasStroke() || - !hit_rules.require_stroke)) || - (hit_rules.can_hit_fill && - (GetLineLayoutItem().Style()->SvgStyle().HasFill() || - !hit_rules.require_fill))) { - LayoutRect rect(Location(), Size()); - rect.MoveBy(accumulated_offset); - if (location_in_container.Intersects(rect)) { - LineLayoutSVGInlineText line_layout_item = - LineLayoutSVGInlineText(GetLineLayoutItem()); - const SimpleFontData* font_data = - line_layout_item.ScaledFont().PrimaryFont(); - DCHECK(font_data); - if (!font_data) - return false; + style.PointerEvents()); + if (hit_rules.require_visible && style.Visibility() != EVisibility::kVisible) + return false; + if (hit_rules.can_hit_bounding_box || + (hit_rules.can_hit_stroke && + (style.SvgStyle().HasStroke() || !hit_rules.require_stroke)) || + (hit_rules.can_hit_fill && + (style.SvgStyle().HasFill() || !hit_rules.require_fill))) { + LayoutRect rect(Location(), Size()); + rect.MoveBy(accumulated_offset); + if (location_in_container.Intersects(rect)) { + const SimpleFontData* font_data = + line_layout_item.ScaledFont().PrimaryFont(); + DCHECK(font_data); + if (!font_data) + return false; - DCHECK(line_layout_item.ScalingFactor()); - float baseline = font_data->GetFontMetrics().FloatAscent() / - line_layout_item.ScalingFactor(); - FloatPoint float_location = FloatPoint(location_in_container.Point()); - for (const SVGTextFragment& fragment : text_fragments_) { - FloatQuad fragment_quad = fragment.BoundingQuad(baseline); - if (fragment_quad.ContainsPoint(float_location)) { - line_layout_item.UpdateHitTestResult( - result, location_in_container.Point() - - ToLayoutSize(accumulated_offset)); - if (result.AddNodeToListBasedTestResult(line_layout_item.GetNode(), - location_in_container, - rect) == kStopHitTesting) - return true; - } + DCHECK(line_layout_item.ScalingFactor()); + float baseline = font_data->GetFontMetrics().FloatAscent() / + line_layout_item.ScalingFactor(); + FloatPoint float_location = FloatPoint(location_in_container.Point()); + for (const SVGTextFragment& fragment : text_fragments_) { + FloatQuad fragment_quad = fragment.BoundingQuad(baseline); + if (fragment_quad.ContainsPoint(float_location)) { + line_layout_item.UpdateHitTestResult( + result, + location_in_container.Point() - ToLayoutSize(accumulated_offset)); + if (result.AddNodeToListBasedTestResult(line_layout_item.GetNode(), + location_in_container, + rect) == kStopHitTesting) + return true; } } }
diff --git a/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.cpp b/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.cpp index c532552..a8a4e0a 100644 --- a/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.cpp +++ b/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.cpp
@@ -121,9 +121,9 @@ EXPECT_FALSE(div.Layer()->IsJustCreated()); // Client used by only paint chunks and non-cachaeable display items but not // by any cacheable display items won't be marked as validly cached. - EXPECT_TRUE(RootPaintController().ClientCacheIsValid(*div.Layer())); - EXPECT_FALSE(RootPaintController().ClientCacheIsValid(div)); - EXPECT_TRUE(RootPaintController().ClientCacheIsValid(sub_div)); + EXPECT_TRUE(ClientCacheIsValid(*div.Layer())); + EXPECT_FALSE(ClientCacheIsValid(div)); + EXPECT_TRUE(ClientCacheIsValid(sub_div)); } TEST_P(PaintControllerPaintTestForNonSPv1, CompositingNoFold) {
diff --git a/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.h b/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.h index eb1819c1..1ea9c9b 100644 --- a/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.h +++ b/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.h
@@ -108,6 +108,10 @@ void InvalidateAll(PaintController& paint_controller) { paint_controller.InvalidateAllForTesting(); } + + bool ClientCacheIsValid(const DisplayItemClient& client) { + return RootPaintController().ClientCacheIsValid(client); + } }; class PaintControllerPaintTest : public PaintTestConfigurations,
diff --git a/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp b/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp index d40d440..9fcee4f 100644 --- a/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp +++ b/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp
@@ -643,6 +643,15 @@ context.subtree_flags |= PaintInvalidatorContext::kSubtreeVisualRectUpdate; } + if (context.NeedsVisualRectUpdate(object) && + object.ContainsInlineWithOutlineAndContinuation()) { + // Force subtree visual rect update and invalidation checking to ensure + // invalidation of focus rings when continuation's geometry changes. + context.subtree_flags |= + PaintInvalidatorContext::kSubtreeVisualRectUpdate | + PaintInvalidatorContext::kSubtreeInvalidationChecking; + } + // The object is under a frame for WebViewPlugin, SVG images etc. Need to // inform the chrome client of the invalidation so that the client will // initiate painting of the contents. For SPv1 this is done by
diff --git a/third_party/WebKit/Source/core/paint/PaintLayer.cpp b/third_party/WebKit/Source/core/paint/PaintLayer.cpp index 384dc62..f53a017 100644 --- a/third_party/WebKit/Source/core/paint/PaintLayer.cpp +++ b/third_party/WebKit/Source/core/paint/PaintLayer.cpp
@@ -3283,6 +3283,15 @@ return; } + // For a non-self-painting layer having self-painting descendant, the + // descendant will be painted through this layer's Parent() instead of + // this layer's Container(), so in addition to the CompositingContainer() + // chain, we also need to mark NeedsRepaint for Parent(). + // TODO(crbug.com/828103): clean up this. + if (layer->Parent() && !layer->IsSelfPaintingLayer() && + layer->HasSelfPaintingLayerDescendant()) + layer->Parent()->SetNeedsRepaint(); + PaintLayer* container = layer->CompositingContainer(); if (!container) { auto* owner = layer->GetLayoutObject().GetFrame()->OwnerLayoutObject();
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp index 7e27f31..a518637 100644 --- a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp +++ b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
@@ -2544,6 +2544,10 @@ } ScrollbarTheme& PaintLayerScrollableArea::GetPageScrollbarTheme() const { + // If PaintLayer is destructed before PaintLayerScrollable area, we can not + // get the page scrollbar theme setting. + DCHECK(!HasBeenDisposed()); + Page* page = GetLayoutBox()->GetFrame()->GetPage(); DCHECK(page);
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp b/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp index cd3540f..36f80d6 100644 --- a/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp +++ b/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp
@@ -1300,4 +1300,31 @@ EXPECT_EQ(GetDocument().getElementById("hit"), result.InnerNode()); } +TEST_P(PaintLayerTest, SetNeedsRepaintSelfPaintingUnderNonSelfPainting) { + SetHtmlInnerHTML(R"HTML( + <span id='span' style='opacity: 0.5'> + <div id='floating' style='float: left; overflow: hidden'> + <div id='multicol' style='columns: 2'>A</div> + </div> + </span> + )HTML"); + + auto* html_layer = + ToLayoutBoxModelObject(GetDocument().documentElement()->GetLayoutObject()) + ->Layer(); + auto* span_layer = GetPaintLayerByElementId("span"); + auto* floating_layer = GetPaintLayerByElementId("floating"); + auto* multicol_layer = GetPaintLayerByElementId("multicol"); + EXPECT_FALSE(html_layer->NeedsRepaint()); + EXPECT_FALSE(span_layer->NeedsRepaint()); + EXPECT_FALSE(floating_layer->NeedsRepaint()); + EXPECT_FALSE(multicol_layer->NeedsRepaint()); + + multicol_layer->SetNeedsRepaint(); + EXPECT_TRUE(html_layer->NeedsRepaint()); + EXPECT_TRUE(span_layer->NeedsRepaint()); + EXPECT_TRUE(floating_layer->NeedsRepaint()); + EXPECT_TRUE(multicol_layer->NeedsRepaint()); +} + } // namespace blink
diff --git a/third_party/WebKit/Source/core/svg/SVGAElement.cpp b/third_party/WebKit/Source/core/svg/SVGAElement.cpp index 0c7769d6..0f83465e9 100644 --- a/third_party/WebKit/Source/core/svg/SVGAElement.cpp +++ b/third_party/WebKit/Source/core/svg/SVGAElement.cpp
@@ -52,8 +52,7 @@ inline SVGAElement::SVGAElement(Document& document) : SVGGraphicsElement(SVGNames::aTag, document), SVGURIReference(this), - svg_target_(SVGAnimatedString::Create(this, SVGNames::targetAttr)), - was_focused_by_mouse_(false) { + svg_target_(SVGAnimatedString::Create(this, SVGNames::targetAttr)) { AddToPropertyMap(svg_target_); } @@ -164,29 +163,7 @@ } bool SVGAElement::ShouldHaveFocusAppearance() const { - return !was_focused_by_mouse_ || SVGGraphicsElement::SupportsFocus(); -} - -// TODO(lanwei): Will add the InputDeviceCapabilities when SVGAElement gets -// focus later, see https://crbug.com/476530. -void SVGAElement::DispatchFocusEvent( - Element* old_focused_element, - WebFocusType type, - InputDeviceCapabilities* source_capabilities) { - if (type != kWebFocusTypePage) - was_focused_by_mouse_ = type == kWebFocusTypeMouse; - SVGGraphicsElement::DispatchFocusEvent(old_focused_element, type, - source_capabilities); -} - -void SVGAElement::DispatchBlurEvent( - Element* new_focused_element, - WebFocusType type, - InputDeviceCapabilities* source_capabilities) { - if (type != kWebFocusTypePage) - was_focused_by_mouse_ = false; - SVGGraphicsElement::DispatchBlurEvent(new_focused_element, type, - source_capabilities); + return !WasFocusedByMouse() || SVGGraphicsElement::SupportsFocus(); } bool SVGAElement::IsURLAttribute(const Attribute& attribute) const {
diff --git a/third_party/WebKit/Source/core/svg/SVGAElement.h b/third_party/WebKit/Source/core/svg/SVGAElement.h index 6486222..f186a8b 100644 --- a/third_party/WebKit/Source/core/svg/SVGAElement.h +++ b/third_party/WebKit/Source/core/svg/SVGAElement.h
@@ -55,13 +55,6 @@ bool SupportsFocus() const override; bool ShouldHaveFocusAppearance() const final; - void DispatchFocusEvent( - Element* old_focused_element, - WebFocusType, - InputDeviceCapabilities* source_capabilities) override; - void DispatchBlurEvent(Element* new_focused_element, - WebFocusType, - InputDeviceCapabilities* source_capabilities) override; bool IsMouseFocusable() const override; bool IsKeyboardFocusable() const override; bool IsURLAttribute(const Attribute&) const override; @@ -71,7 +64,6 @@ bool WillRespondToMouseClickEvents() override; Member<SVGAnimatedString> svg_target_; - bool was_focused_by_mouse_; }; } // namespace blink
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/ResourceTreeModel.js b/third_party/WebKit/Source/devtools/front_end/sdk/ResourceTreeModel.js index f14d6e4..26b821f 100644 --- a/third_party/WebKit/Source/devtools/front_end/sdk/ResourceTreeModel.js +++ b/third_party/WebKit/Source/devtools/front_end/sdk/ResourceTreeModel.js
@@ -877,9 +877,12 @@ * @param {string} url * @param {string} message * @param {string} dialogType + * @param {boolean} hasBrowserHandler * @param {string=} prompt */ - javascriptDialogOpening(url, message, dialogType, prompt) { + javascriptDialogOpening(url, message, dialogType, hasBrowserHandler, prompt) { + if (!hasBrowserHandler) + this._resourceTreeModel._agent.handleJavaScriptDialog(false); } /**
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/ScreenCaptureModel.js b/third_party/WebKit/Source/devtools/front_end/sdk/ScreenCaptureModel.js index f1cbffc4..c04f63f 100644 --- a/third_party/WebKit/Source/devtools/front_end/sdk/ScreenCaptureModel.js +++ b/third_party/WebKit/Source/devtools/front_end/sdk/ScreenCaptureModel.js
@@ -173,9 +173,10 @@ * @param {string} url * @param {string} message * @param {string} dialogType + * @param {boolean} hasBrowserHandler * @param {string=} prompt */ - javascriptDialogOpening(url, message, dialogType, prompt) { + javascriptDialogOpening(url, message, dialogType, hasBrowserHandler, prompt) { } /**
diff --git a/third_party/WebKit/Source/modules/accessibility/AXObject.cpp b/third_party/WebKit/Source/modules/accessibility/AXObject.cpp index 23157ec..1a093c1 100644 --- a/third_party/WebKit/Source/modules/accessibility/AXObject.cpp +++ b/third_party/WebKit/Source/modules/accessibility/AXObject.cpp
@@ -1550,7 +1550,7 @@ } bool AXObject::SupportsARIAExpanded() const { - switch (AriaRoleAttribute()) { + switch (RoleValue()) { case kAlertDialogRole: case kAlertRole: case kArticleRole:
diff --git a/third_party/WebKit/Source/modules/accessibility/OWNERS b/third_party/WebKit/Source/modules/accessibility/OWNERS index 214d52cf..2f62f51 100644 --- a/third_party/WebKit/Source/modules/accessibility/OWNERS +++ b/third_party/WebKit/Source/modules/accessibility/OWNERS
@@ -1,4 +1,5 @@ aboxhall@chromium.org +aleventhal@chromium.org dmazzoni@chromium.org nektar@chromium.org
diff --git a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp index 4004908d..4ad03cb 100644 --- a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp +++ b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
@@ -1280,9 +1280,65 @@ return usage_count; } +ScriptPromise RTCPeerConnection::getStats( + ScriptState* script_state, + blink::ScriptValue callback_or_selector) { + auto argument = callback_or_selector.V8Value(); + // Custom binding for legacy "getStats(RTCStatsCallback callback)". + if (argument->IsFunction()) { + V8RTCStatsCallback* success_callback = + V8RTCStatsCallback::Create(argument.As<v8::Function>()); + return LegacyCallbackBasedGetStats(script_state, success_callback, nullptr); + } + // Custom binding for spec-compliant "getStats()" and "getStats(undefined)". + if (argument->IsUndefined()) + return PromiseBasedGetStats(script_state, nullptr); + auto isolate = callback_or_selector.GetIsolate(); + // Default type error message, as it would have been generated by V8 bindings. + const char* type_error_message = + "The callback provided as parameter 1 is not a function."; + // Custom binding for spec-compliant "getStats(MediaStreamTrack? selector)". + if (RuntimeEnabledFeatures::RTCPeerConnectionGetStatsSelectorEnabled()) { + // null is a valid selector value, but value of wrong type isn't. |selector| + // set to no value means type error. + base::Optional<MediaStreamTrack*> selector; + if (argument->IsNull()) { + selector = base::Optional<MediaStreamTrack*>(nullptr); + } else { + MediaStreamTrack* track = + V8MediaStreamTrack::ToImplWithTypeCheck(isolate, argument); + if (track) + selector = base::Optional<MediaStreamTrack*>(track); + } + if (selector.has_value()) + return PromiseBasedGetStats(script_state, *selector); + // Override type error message to reflect that a selector is also a valid + // argument. + type_error_message = + "The argument provided as parameter 1 is neither a callback (function) " + "or selector (MediaStreamTrack or null)."; + } + ExceptionState exception_state(isolate, ExceptionState::kExecutionContext, + "RTCPeerConnection", "getStats"); + exception_state.ThrowTypeError(type_error_message); + return exception_state.Reject(script_state); +} + ScriptPromise RTCPeerConnection::getStats(ScriptState* script_state, V8RTCStatsCallback* success_callback, MediaStreamTrack* selector) { + return LegacyCallbackBasedGetStats(script_state, success_callback, selector); +} + +ScriptPromise RTCPeerConnection::getStats(ScriptState* script_state, + MediaStreamTrack* selector) { + return PromiseBasedGetStats(script_state, selector); +} + +ScriptPromise RTCPeerConnection::LegacyCallbackBasedGetStats( + ScriptState* script_state, + V8RTCStatsCallback* success_callback, + MediaStreamTrack* selector) { ExecutionContext* context = ExecutionContext::From(script_state); ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state); ScriptPromise promise = resolver->Promise(); @@ -1298,15 +1354,58 @@ return promise; } -ScriptPromise RTCPeerConnection::getStats(ScriptState* script_state) { - ExecutionContext* context = ExecutionContext::From(script_state); - UseCounter::Count(context, WebFeature::kRTCPeerConnectionGetStats); +ScriptPromise RTCPeerConnection::PromiseBasedGetStats( + ScriptState* script_state, + MediaStreamTrack* selector) { + if (!selector) { + ExecutionContext* context = ExecutionContext::From(script_state); + UseCounter::Count(context, WebFeature::kRTCPeerConnectionGetStats); - ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state); - ScriptPromise promise = resolver->Promise(); - peer_handler_->GetStats(WebRTCStatsReportCallbackResolver::Create(resolver)); + ScriptPromiseResolver* resolver = + ScriptPromiseResolver::Create(script_state); + ScriptPromise promise = resolver->Promise(); + peer_handler_->GetStats( + WebRTCStatsReportCallbackResolver::Create(resolver)); - return promise; + return promise; + } + + // Find the sender or receiver that represent the selector. + size_t track_uses = 0u; + RTCRtpSender* track_sender = nullptr; + for (const auto& sender : rtp_senders_) { + if (sender->track() == selector) { + ++track_uses; + track_sender = sender; + } + } + RTCRtpReceiver* track_receiver = nullptr; + for (const auto& receiver : rtp_receivers_) { + if (receiver->track() == selector) { + ++track_uses; + track_receiver = receiver; + } + } + if (track_uses == 0u) { + return ScriptPromise::RejectWithDOMException( + script_state, + DOMException::Create(kInvalidAccessError, + "There is no sender or receiver for the track.")); + } + if (track_uses > 1u) { + return ScriptPromise::RejectWithDOMException( + script_state, + DOMException::Create( + kInvalidAccessError, + "There are more than one sender or receiver for the track.")); + } + // There is just one use of the track, a sender or receiver. + if (track_sender) { + DCHECK(!track_receiver); + return track_sender->getStats(script_state); + } + DCHECK(track_receiver); + return track_receiver->getStats(script_state); } const HeapVector<Member<RTCRtpSender>>& RTCPeerConnection::getSenders() const {
diff --git a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.h b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.h index a225b1a..496f2c2 100644 --- a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.h +++ b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.h
@@ -156,10 +156,20 @@ String id(ScriptState*) const; + // Calls one of the below versions (or rejects with an exception) depending on + // type, see RTCPeerConnection.idl. + ScriptPromise getStats(ScriptState*, blink::ScriptValue callback_or_selector); + // Calls LegacyCallbackBasedGetStats(). ScriptPromise getStats(ScriptState*, V8RTCStatsCallback* success_callback, MediaStreamTrack* selector = nullptr); - ScriptPromise getStats(ScriptState*); + // Calls PromiseBasedGetStats(). + ScriptPromise getStats(ScriptState*, MediaStreamTrack* selector = nullptr); + ScriptPromise LegacyCallbackBasedGetStats( + ScriptState*, + V8RTCStatsCallback* success_callback, + MediaStreamTrack* selector); + ScriptPromise PromiseBasedGetStats(ScriptState*, MediaStreamTrack* selector); const HeapVector<Member<RTCRtpSender>>& getSenders() const; const HeapVector<Member<RTCRtpReceiver>>& getReceivers() const;
diff --git a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.idl b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.idl index 2ad13fce..a377294 100644 --- a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.idl +++ b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.idl
@@ -101,14 +101,35 @@ [CallWith=ScriptState] Promise<void> setRemoteDescription(RTCSessionDescriptionInit description, VoidFunction successCallback, [Default=Undefined] optional RTCPeerConnectionErrorCallback failureCallback); [CallWith=ScriptState, MeasureAs=RTCPeerConnectionAddIceCandidateLegacy] Promise<void> addIceCandidate((RTCIceCandidateInit or RTCIceCandidate) candidate, VoidFunction successCallback, RTCPeerConnectionErrorCallback failureCallback); - // TODO(guidou): The selector argument should the first (nullable, - // non-optional) argument, and there should be a third failureCallback - // argument. - [CallWith=ScriptState, LegacyInterfaceTypeChecking] Promise<void> getStats(RTCStatsCallback successCallback, optional MediaStreamTrack? selector); - // TODO(hbos): The spec has an optional |selector| argument that is not - // supported yet. There is a discussion about what to do with it (clarify - // spec, remove it or change it?): https://github.com/w3c/webrtc-stats/issues/116 - [CallWith=ScriptState] Promise<RTCStatsReport> getStats(); + // Legacy getStats() API. The returned metrics are a completely different + // set of metrics than the standard compliant version, presented in a + // different format. They are undocumented, implementation-specific and + // should go away but it is still heavily used. The selector argument can + // optionally be used to filter the results only to return metrics relevant + // for the selector. + // TODO(hbos): Deprecate and remove this API. https://crbug.com/822696 + [CallWith=ScriptState, LegacyInterfaceTypeChecking] Promise<void> getStats(RTCStatsCallback successCallback, MediaStreamTrack? selector); + // Due to a limitation of generated V8 bindings (https://crbug.com/828401), + // it is not possible to express both legacy and spec-compliant versions of + // getStats() in IDL. This version implements two different APIs with custom + // bindings to resolve which one to call in RTCPeerConnection.cpp: + // + // 1. Promise<void> getStats(RTCStatsCallback successCallback, optional MediaStreamTrack? selector); + // This is the legacy getStats() API handling the case when the selector + // argument is missing, for more details on the legacy API and the IDL + // for when the selector is present, see above. + // + // 2. Promise<RTCStatsReport> getStats(optional MediaStreamTrack? selector = null); + // This is the spec-compliant version of getStats(). Spec for API: + // https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-getstats + // Spec for metrics: https://w3c.github.io/webrtc-stats/ + // List of implemented stats: + // https://cs.chromium.org/chromium/src/third_party/webrtc/api/stats/rtcstats_objects.h + // See also RTCRtpSender.getStats() and RTCRtpReceiver.getStats(). + // + // Note: The version of 2) that takes a |selector| is behind flag + // RuntimeEnabled=RTCPeerConnectionGetStatsSelector. + [CallWith=ScriptState] Promise<any> getStats(optional any callbackOrSelector); // RTP Media API // https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-getsenders
diff --git a/third_party/WebKit/Source/modules/webdatabase/BUILD.gn b/third_party/WebKit/Source/modules/webdatabase/BUILD.gn index 1908deb8..a0b59e8e 100644 --- a/third_party/WebKit/Source/modules/webdatabase/BUILD.gn +++ b/third_party/WebKit/Source/modules/webdatabase/BUILD.gn
@@ -84,7 +84,7 @@ if (is_win) { sources += [ "sqlite/SQLiteFileSystemWin.cpp" ] - } else if (is_posix) { + } else if (is_posix || is_fuchsia) { sources += [ "sqlite/SQLiteFileSystemPosix.cpp" ] }
diff --git a/third_party/WebKit/Source/modules/xr/XRWebGLLayer.cpp b/third_party/WebKit/Source/modules/xr/XRWebGLLayer.cpp index 01d206e..2b7a0f9 100644 --- a/third_party/WebKit/Source/modules/xr/XRWebGLLayer.cpp +++ b/third_party/WebKit/Source/modules/xr/XRWebGLLayer.cpp
@@ -125,12 +125,16 @@ // If the contents need mirroring, indicate that to the drawing buffer. if (session->exclusive() && session->outputContext() && session->device()->external()) { + mirroring_ = true; drawing_buffer_->SetMirrorClient(this); } UpdateViewports(); } -XRWebGLLayer::~XRWebGLLayer() {} +XRWebGLLayer::~XRWebGLLayer() { + if (mirroring_) + drawing_buffer_->SetMirrorClient(nullptr); +} void XRWebGLLayer::getXRWebGLRenderingContext( WebGLRenderingContextOrWebGL2RenderingContext& result) const {
diff --git a/third_party/WebKit/Source/modules/xr/XRWebGLLayer.h b/third_party/WebKit/Source/modules/xr/XRWebGLLayer.h index fe0422e..95397a9 100644 --- a/third_party/WebKit/Source/modules/xr/XRWebGLLayer.h +++ b/third_party/WebKit/Source/modules/xr/XRWebGLLayer.h
@@ -99,6 +99,7 @@ double requested_viewport_scale_ = 1.0; double viewport_scale_ = 1.0; bool viewports_dirty_ = true; + bool mirroring_ = false; }; } // namespace blink
diff --git a/third_party/WebKit/Source/platform/BUILD.gn b/third_party/WebKit/Source/platform/BUILD.gn index f722bac..e691336 100644 --- a/third_party/WebKit/Source/platform/BUILD.gn +++ b/third_party/WebKit/Source/platform/BUILD.gn
@@ -187,7 +187,7 @@ visibility = [ "//third_party/WebKit/Source/platform/*" ] public_deps = [ ":make_platform_generated", - ":rcs_count_everything", + ":rcs_count_everything_buildflags", "//base", "//cc", "//cc/animation", @@ -207,7 +207,7 @@ "//services/service_manager/public/mojom:mojom_blink", "//skia", "//third_party:jpeg", - "//third_party/WebKit/Source/platform/heap:blink_heap_flags", + "//third_party/WebKit/Source/platform/heap:blink_heap_buildflags", "//third_party/WebKit/Source/platform/network:make_generated", "//third_party/WebKit/Source/platform/wtf", "//third_party/WebKit/public:blink_headers", @@ -228,8 +228,8 @@ runtime_call_stats_count_everything = false } -buildflag_header("rcs_count_everything") { - header = "runtime_call_stats_count_everything.h" +buildflag_header("rcs_count_everything_buildflags") { + header = "runtime_call_stats_count_everything_buildflags.h" header_dir = "blink/platform/bindings" @@ -1936,7 +1936,7 @@ sources += [ "text/LocaleWinTest.cpp" ] } else if (is_mac) { sources += [ "text/LocaleMacTest.cpp" ] - } else if (is_posix) { + } else if (is_posix || is_fuchsia) { sources += [ "text/LocaleICUTest.cpp" ] }
diff --git a/third_party/WebKit/Source/platform/bindings/RuntimeCallStats.h b/third_party/WebKit/Source/platform/bindings/RuntimeCallStats.h index b7f648f..6d7a69d 100644 --- a/third_party/WebKit/Source/platform/bindings/RuntimeCallStats.h +++ b/third_party/WebKit/Source/platform/bindings/RuntimeCallStats.h
@@ -9,7 +9,7 @@ #define RuntimeCallStats_h #include "platform/PlatformExport.h" -#include "platform/bindings/runtime_call_stats_count_everything.h" +#include "platform/bindings/runtime_call_stats_count_everything_buildflags.h" #include "platform/instrumentation/tracing/TraceEvent.h" #include "platform/instrumentation/tracing/TracedValue.h" #include "platform/runtime_enabled_features.h"
diff --git a/third_party/WebKit/Source/platform/graphics/gpu/ImageLayerBridge.cpp b/third_party/WebKit/Source/platform/graphics/gpu/ImageLayerBridge.cpp index 088f8f464..fd6dbde 100644 --- a/third_party/WebKit/Source/platform/graphics/gpu/ImageLayerBridge.cpp +++ b/third_party/WebKit/Source/platform/graphics/gpu/ImageLayerBridge.cpp
@@ -36,6 +36,9 @@ } void ImageLayerBridge::SetImage(scoped_refptr<StaticBitmapImage> image) { + if (disposed_) + return; + image_ = std::move(image); if (image_) { if (opacity_mode_ == kNonOpaque) { @@ -58,6 +61,9 @@ void ImageLayerBridge::SetUV(const FloatPoint left_top, const FloatPoint right_bottom) { + if (disposed_) + return; + layer_->SetUV(WebFloatPoint(left_top.X(), left_top.Y()), WebFloatPoint(right_bottom.X(), right_bottom.Y())); }
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClient.h b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClient.h index 0298878..29964ab9 100644 --- a/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClient.h +++ b/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClient.h
@@ -68,6 +68,11 @@ return false; } + // Indicates that the client will paint display items different from the ones + // cached by PaintController. However, PaintController allows a client to + // paint new display items that are not cached or to no longer paint some + // cached display items without calling this method. + // See PaintController::ClientCacheIsValid() for more details. void SetDisplayItemsUncached( PaintInvalidationReason reason = PaintInvalidationReason::kFull) const { cache_generation_or_invalidation_reason_.Invalidate(reason);
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp b/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp index a37e628..5167a72 100644 --- a/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp +++ b/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp
@@ -480,7 +480,7 @@ #endif // Ensure our paint invalidation tests don't trigger the less performant // situation which should be rare. - CHECK(false) << "Can't find cached display item: " << id.client.DebugName() + LOG(WARNING) << "Can't find cached display item: " << id.client.DebugName() << " " << id.ToString(); } return kNotFound;
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PaintController.h b/third_party/WebKit/Source/platform/graphics/paint/PaintController.h index b2c7232..9bb74b8 100644 --- a/third_party/WebKit/Source/platform/graphics/paint/PaintController.h +++ b/third_party/WebKit/Source/platform/graphics/paint/PaintController.h
@@ -173,8 +173,6 @@ return GetPaintArtifact().PaintChunks(); } - bool ClientCacheIsValid(const DisplayItemClient&) const; - // For micro benchmarking of record time. bool DisplayItemConstructionIsDisabled() const { return construction_disabled_; @@ -249,6 +247,18 @@ friend class PaintControllerTestBase; friend class PaintControllerPaintTestBase; + // True if all display items associated with the client are validly cached. + // However, the current algorithm allows the following situations even if + // ClientCacheIsValid() is true for a client during painting: + // 1. The client paints a new display item that is not cached: + // UseCachedDrawingIfPossible() returns false for the display item and the + // newly painted display item will be added into the cache. This situation + // has slight performance hit (see FindOutOfOrderCachedItemForward()) so we + // print a warning in the situation and should keep it rare. + // 2. the client no longer paints a display item that is cached: the cached + // display item will be removed. This doesn't affect performance. + bool ClientCacheIsValid(const DisplayItemClient&) const; + void InvalidateAllForTesting() { InvalidateAllInternal(); } void InvalidateAllInternal();
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.cpp b/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.cpp index 1b4bc8e..a40c2db 100644 --- a/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.cpp +++ b/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.cpp
@@ -645,8 +645,8 @@ EXPECT_DISPLAY_LIST(GetPaintController().GetDisplayItemList(), 2, TestDisplayItem(first, kBackgroundType), TestDisplayItem(second, kBackgroundType)); - EXPECT_TRUE(GetPaintController().ClientCacheIsValid(first)); - EXPECT_TRUE(GetPaintController().ClientCacheIsValid(second)); + EXPECT_TRUE(ClientCacheIsValid(first)); + EXPECT_TRUE(ClientCacheIsValid(second)); sk_sp<const PaintRecord> first_paint_record = static_cast<const DrawingDisplayItem&>( GetPaintController().GetDisplayItemList()[0]) @@ -657,8 +657,8 @@ .GetPaintRecord(); first.SetDisplayItemsUncached(); - EXPECT_FALSE(GetPaintController().ClientCacheIsValid(first)); - EXPECT_TRUE(GetPaintController().ClientCacheIsValid(second)); + EXPECT_FALSE(ClientCacheIsValid(first)); + EXPECT_TRUE(ClientCacheIsValid(second)); if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) { InitRootChunk(); @@ -682,12 +682,12 @@ GetPaintController().GetDisplayItemList()[1]) .GetPaintRecord()); } - EXPECT_TRUE(GetPaintController().ClientCacheIsValid(first)); - EXPECT_TRUE(GetPaintController().ClientCacheIsValid(second)); + EXPECT_TRUE(ClientCacheIsValid(first)); + EXPECT_TRUE(ClientCacheIsValid(second)); InvalidateAll(); - EXPECT_FALSE(GetPaintController().ClientCacheIsValid(first)); - EXPECT_FALSE(GetPaintController().ClientCacheIsValid(second)); + EXPECT_FALSE(ClientCacheIsValid(first)); + EXPECT_FALSE(ClientCacheIsValid(second)); } TEST_P(PaintControllerTest, UpdateSwapOrderWithChildren) { @@ -1653,7 +1653,7 @@ } // Draw again with nothing invalidated. - EXPECT_TRUE(GetPaintController().ClientCacheIsValid(multicol)); + EXPECT_TRUE(ClientCacheIsValid(multicol)); DrawRect(context, multicol, kBackgroundType, FloatRect(100, 200, 100, 100)); GetPaintController().BeginSkippingCache(); @@ -1762,7 +1762,7 @@ EXPECT_NE(record1, record2); // Content's cache is invalid because it has display items skipped cache. - EXPECT_FALSE(GetPaintController().ClientCacheIsValid(content)); + EXPECT_FALSE(ClientCacheIsValid(content)); EXPECT_EQ(PaintInvalidationReason::kFull, content.GetPaintInvalidationReason()); @@ -2046,6 +2046,8 @@ DrawRect(context, first, kBackgroundType, FloatRect(100, 100, 300, 300)); DrawRect(context, first, kForegroundType, FloatRect(100, 100, 300, 300)); GetPaintController().CommitNewDisplayItems(); + + InitRootChunk(); first.SetVisualRect(LayoutRect(200, 200, 300, 300)); DrawRect(context, first, kBackgroundType, FloatRect(200, 200, 300, 300)); DrawRect(context, first, kForegroundType, FloatRect(100, 100, 300, 300)); @@ -2059,6 +2061,8 @@ InitRootChunk(); DrawRect(context, first, kBackgroundType, FloatRect(100, 100, 300, 300)); GetPaintController().CommitNewDisplayItems(); + + InitRootChunk(); DrawRect(context, first, kBackgroundType, FloatRect(100, 100, 300, 300)); DrawRect(context, first, kForegroundType, FloatRect(100, 100, 300, 300)); GetPaintController().CommitNewDisplayItems(); @@ -2072,6 +2076,7 @@ DrawRect(context, first, kBackgroundType, FloatRect(100, 100, 300, 300)); DrawRect(context, first, kForegroundType, FloatRect(100, 100, 300, 300)); GetPaintController().CommitNewDisplayItems(); + InitRootChunk(); DrawRect(context, first, kBackgroundType, FloatRect(100, 100, 300, 300)); GetPaintController().CommitNewDisplayItems(); @@ -2084,7 +2089,6 @@ GraphicsContext context(GetPaintController()); InitRootChunk(); - { SubsequenceRecorder r(context, container); DrawRect(context, container, kBackgroundType, @@ -2093,7 +2097,6 @@ GetPaintController().CommitNewDisplayItems(); InitRootChunk(); - EXPECT_FALSE(SubsequenceRecorder::UseCachedSubsequenceIfPossible( context, container)); { @@ -2119,6 +2122,7 @@ void TestChangeDrawingInSubsequence() { FakeDisplayItemClient first("first"); GraphicsContext context(GetPaintController()); + InitRootChunk(); { SubsequenceRecorder r(context, first); first.SetVisualRect(LayoutRect(100, 100, 300, 300)); @@ -2126,6 +2130,8 @@ DrawRect(context, first, kForegroundType, FloatRect(100, 100, 300, 300)); } GetPaintController().CommitNewDisplayItems(); + + InitRootChunk(); { EXPECT_FALSE( SubsequenceRecorder::UseCachedSubsequenceIfPossible(context, first)); @@ -2141,12 +2147,14 @@ FakeDisplayItemClient first("first"); GraphicsContext context(GetPaintController()); + InitRootChunk(); { SubsequenceRecorder r(context, first); DrawRect(context, first, kBackgroundType, FloatRect(100, 100, 300, 300)); } GetPaintController().CommitNewDisplayItems(); + InitRootChunk(); { EXPECT_FALSE( SubsequenceRecorder::UseCachedSubsequenceIfPossible(context, first)); @@ -2161,6 +2169,7 @@ FakeDisplayItemClient first("first"); GraphicsContext context(GetPaintController()); + InitRootChunk(); { SubsequenceRecorder r(context, first); DrawRect(context, first, kBackgroundType, FloatRect(100, 100, 300, 300)); @@ -2168,6 +2177,7 @@ } GetPaintController().CommitNewDisplayItems(); + InitRootChunk(); { EXPECT_FALSE( SubsequenceRecorder::UseCachedSubsequenceIfPossible(context, first)); @@ -2182,6 +2192,7 @@ FakeDisplayItemClient content("content"); GraphicsContext context(GetPaintController()); + InitRootChunk(); { SubsequenceRecorder r(context, container); { ClipPathRecorder clip_path_recorder(context, container, Path()); } @@ -2191,6 +2202,7 @@ } GetPaintController().CommitNewDisplayItems(); + InitRootChunk(); { EXPECT_FALSE(SubsequenceRecorder::UseCachedSubsequenceIfPossible( context, container)); @@ -2233,12 +2245,14 @@ FakeDisplayItemClient target("target"); GraphicsContext context(GetPaintController()); + InitRootChunk(); { SubsequenceRecorder r(context, target); DrawRect(context, target, kBackgroundType, FloatRect(100, 100, 300, 300)); } GetPaintController().CommitNewDisplayItems(); + InitRootChunk(); { EXPECT_FALSE( SubsequenceRecorder::UseCachedSubsequenceIfPossible(context, target)); @@ -2249,18 +2263,18 @@ }; TEST_F(PaintControllerUnderInvalidationTest, ChangeDrawing) { - EXPECT_DEATH(TestChangeDrawing(), ""); + EXPECT_DEATH(TestChangeDrawing(), "under-invalidation: display item changed"); } TEST_F(PaintControllerUnderInvalidationTest, MoreDrawing) { - EXPECT_DEATH(TestMoreDrawing(), ""); + // We don't detect under-invalidation in this case, and PaintController can + // also handle the case gracefully. + TestMoreDrawing(); } TEST_F(PaintControllerUnderInvalidationTest, LessDrawing) { // We don't detect under-invalidation in this case, and PaintController can - // also handle the case gracefully. However, less drawing at one time often - // means more-drawing at another time, so eventually we'll detect such - // under-invalidations. + // also handle the case gracefully. TestLessDrawing(); } @@ -2270,23 +2284,28 @@ } TEST_F(PaintControllerUnderInvalidationTest, ChangeDrawingInSubsequence) { - EXPECT_DEATH(TestChangeDrawingInSubsequence(), ""); + EXPECT_DEATH(TestChangeDrawingInSubsequence(), + "In cached subsequence for first.*" + "under-invalidation: display item changed"); } TEST_F(PaintControllerUnderInvalidationTest, MoreDrawingInSubsequence) { - EXPECT_DEATH(TestMoreDrawingInSubsequence(), ""); + // TODO(wangxianzhu): Detect more drawings at the end of a subsequence. + TestMoreDrawingInSubsequence(); } TEST_F(PaintControllerUnderInvalidationTest, LessDrawingInSubsequence) { - // We allow invalidated display item clients as long as they would produce the - // same display items. The cases of changed display items are tested by other - // test cases. - EXPECT_DEATH(TestLessDrawingInSubsequence(), ""); + EXPECT_DEATH(TestLessDrawingInSubsequence(), + "In cached subsequence for first.*" + "under-invalidation: new subsequence wrong length"); } TEST_F(PaintControllerUnderInvalidationTest, ChangeNonDrawingInSubsequence) { - if (!RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) - EXPECT_DEATH(TestChangeNonDrawingInSubsequence(), ""); + if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) + return; + EXPECT_DEATH(TestChangeNonDrawingInSubsequence(), + "In cached subsequence for first.*" + "under-invalidation: new subsequence wrong length"); } TEST_F(PaintControllerUnderInvalidationTest, InvalidationInSubsequence) { @@ -2297,7 +2316,9 @@ } TEST_F(PaintControllerUnderInvalidationTest, SubsequenceBecomesEmpty) { - EXPECT_DEATH(TestSubsequenceBecomesEmpty(), ""); + EXPECT_DEATH(TestSubsequenceBecomesEmpty(), + "In cached subsequence for target.*" + "under-invalidation: new subsequence wrong length"); } TEST_F(PaintControllerUnderInvalidationTest, SkipCacheInSubsequence) {
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.h b/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.h index 0a286957..8c1a515c9 100644 --- a/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.h +++ b/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.h
@@ -74,6 +74,15 @@ return paint_controller_->GetSubsequenceMarkers(client); } + static bool ClientCacheIsValid(const PaintController& paint_controller, + const DisplayItemClient& client) { + return paint_controller.ClientCacheIsValid(client); + } + + bool ClientCacheIsValid(const DisplayItemClient& client) const { + return ClientCacheIsValid(*paint_controller_, client); + } + private: FakeDisplayItemClient root_paint_property_client_; PaintChunk::Id root_paint_chunk_id_;
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PaintRecordBuilderTest.cpp b/third_party/WebKit/Source/platform/graphics/paint/PaintRecordBuilderTest.cpp index b9d1cfa..9b2458d5 100644 --- a/third_party/WebKit/Source/platform/graphics/paint/PaintRecordBuilderTest.cpp +++ b/third_party/WebKit/Source/platform/graphics/paint/PaintRecordBuilderTest.cpp
@@ -20,7 +20,7 @@ FakeDisplayItemClient client("client", LayoutRect(10, 10, 20, 20)); DrawRect(context, client, kBackgroundType, FloatRect(10, 10, 20, 20)); DrawRect(context, client, kForegroundType, FloatRect(15, 15, 10, 10)); - EXPECT_FALSE(context.GetPaintController().ClientCacheIsValid(client)); + EXPECT_FALSE(ClientCacheIsValid(context.GetPaintController(), client)); MockPaintCanvas canvas; PaintFlags flags; @@ -30,7 +30,7 @@ EXPECT_DISPLAY_LIST(context.GetPaintController().GetDisplayItemList(), 2, TestDisplayItem(client, kBackgroundType), TestDisplayItem(client, kForegroundType)); - EXPECT_FALSE(context.GetPaintController().ClientCacheIsValid(client)); + EXPECT_FALSE(ClientCacheIsValid(context.GetPaintController(), client)); } TEST_F(PaintRecordBuilderTest, LastingPaintController) { @@ -46,13 +46,13 @@ FakeDisplayItemClient client("client", LayoutRect(10, 10, 20, 20)); DrawRect(context, client, kBackgroundType, FloatRect(10, 10, 20, 20)); DrawRect(context, client, kForegroundType, FloatRect(15, 15, 10, 10)); - EXPECT_FALSE(GetPaintController().ClientCacheIsValid(client)); + EXPECT_FALSE(ClientCacheIsValid(client)); MockPaintCanvas canvas; PaintFlags flags; EXPECT_CALL(canvas, drawPicture(_)).Times(1); builder.EndRecording(canvas); - EXPECT_TRUE(GetPaintController().ClientCacheIsValid(client)); + EXPECT_TRUE(ClientCacheIsValid(client)); EXPECT_DISPLAY_LIST(GetPaintController().GetDisplayItemList(), 2, TestDisplayItem(client, kBackgroundType), @@ -73,7 +73,7 @@ EXPECT_DISPLAY_LIST(GetPaintController().GetDisplayItemList(), 2, TestDisplayItem(client, kBackgroundType), TestDisplayItem(client, kForegroundType)); - EXPECT_TRUE(GetPaintController().ClientCacheIsValid(client)); + EXPECT_TRUE(ClientCacheIsValid(client)); } TEST_F(PaintRecordBuilderTest, TransientAndAnotherPaintController) { @@ -87,7 +87,7 @@ EXPECT_DISPLAY_LIST(GetPaintController().GetDisplayItemList(), 2, TestDisplayItem(client, kBackgroundType), TestDisplayItem(client, kForegroundType)); - EXPECT_TRUE(GetPaintController().ClientCacheIsValid(client)); + EXPECT_TRUE(ClientCacheIsValid(client)); PaintRecordBuilder builder; EXPECT_NE(&builder.Context().GetPaintController(), &GetPaintController()); @@ -97,9 +97,9 @@ // The transient PaintController in PaintRecordBuilder doesn't affect the // client's cache status in another PaintController. - EXPECT_TRUE(GetPaintController().ClientCacheIsValid(client)); + EXPECT_TRUE(ClientCacheIsValid(client)); EXPECT_FALSE( - builder.Context().GetPaintController().ClientCacheIsValid(client)); + ClientCacheIsValid(builder.Context().GetPaintController(), client)); } } // namespace blink
diff --git a/third_party/WebKit/Source/platform/heap/BUILD.gn b/third_party/WebKit/Source/platform/heap/BUILD.gn index b4e1601..113264a6 100644 --- a/third_party/WebKit/Source/platform/heap/BUILD.gn +++ b/third_party/WebKit/Source/platform/heap/BUILD.gn
@@ -20,8 +20,8 @@ enable_blink_heap_verification = enable_blink_heap_incremental_marking } -buildflag_header("blink_heap_flags") { - header = "heap_flags.h" +buildflag_header("blink_heap_buildflags") { + header = "heap_buildflags.h" header_dir = "blink/platform/heap" flags = [ @@ -80,7 +80,7 @@ ] deps = [ - ":blink_heap_flags", + ":blink_heap_buildflags", "//base", "//third_party/WebKit/Source/platform:make_platform_generated", "//third_party/WebKit/Source/platform/heap/asm",
diff --git a/third_party/WebKit/Source/platform/heap/HeapAllocator.h b/third_party/WebKit/Source/platform/heap/HeapAllocator.h index aecc0a1..71419af 100644 --- a/third_party/WebKit/Source/platform/heap/HeapAllocator.h +++ b/third_party/WebKit/Source/platform/heap/HeapAllocator.h
@@ -10,7 +10,7 @@ #include "platform/heap/MarkingVisitor.h" #include "platform/heap/Persistent.h" #include "platform/heap/TraceTraits.h" -#include "platform/heap/heap_flags.h" +#include "platform/heap/heap_buildflags.h" #include "platform/wtf/Allocator.h" #include "platform/wtf/Assertions.h" #include "platform/wtf/ConstructTraits.h"
diff --git a/third_party/WebKit/Source/platform/heap/IncrementalMarkingTest.cpp b/third_party/WebKit/Source/platform/heap/IncrementalMarkingTest.cpp index a80cba3..0322a0f0 100644 --- a/third_party/WebKit/Source/platform/heap/IncrementalMarkingTest.cpp +++ b/third_party/WebKit/Source/platform/heap/IncrementalMarkingTest.cpp
@@ -14,7 +14,7 @@ #include "platform/heap/ThreadState.h" #include "platform/heap/TraceTraits.h" #include "platform/heap/Visitor.h" -#include "platform/heap/heap_flags.h" +#include "platform/heap/heap_buildflags.h" #include "testing/gtest/include/gtest/gtest.h" #if BUILDFLAG(BLINK_HEAP_INCREMENTAL_MARKING) @@ -22,6 +22,54 @@ namespace blink { namespace incremental_marking_test { +// Visitor that expects every directly reachable object from a given backing +// store to be in the set of provided objects. +template <typename T> +class BackingVisitor : public Visitor { + public: + explicit BackingVisitor(ThreadState* state, std::vector<T*>* objects) + : Visitor(state), objects_(objects) {} + virtual ~BackingVisitor() {} + + void ProcessBackingStore(HeapObjectHeader* header) { + EXPECT_TRUE(header->IsValid()); + EXPECT_TRUE(header->IsMarked()); + header->Unmark(); + ThreadHeap::GcInfo(header->GcInfoIndex())->trace_(this, header->Payload()); + } + + void Visit(void* obj, TraceDescriptor desc) final { + EXPECT_TRUE(obj); + auto pos = std::find(objects_->begin(), objects_->end(), obj); + if (objects_->end() != pos) + objects_->erase(pos); + // The garbage collector will find those objects so we can mark them. + HeapObjectHeader* const header = + HeapObjectHeader::FromPayload(desc.base_object_payload); + if (!header->IsMarked()) + header->Mark(); + } + + // Unused overrides. + void VisitWeak(void* object, + void** object_slot, + TraceDescriptor desc, + WeakCallback callback) final {} + void VisitBackingStoreStrongly(void* object, + void** object_slot, + TraceDescriptor desc) final {} + void VisitBackingStoreWeakly(void* object, + void** object_slot, + TraceDescriptor desc) final {} + void RegisterBackingStoreCallback(void* backing_store, + MovingObjectCallback, + void* callback_data) final {} + void RegisterWeakCallback(void* closure, WeakCallback) final {} + + private: + std::vector<T*>* objects_; +}; + // Base class for initializing worklists. class IncrementalMarkingScopeBase { public: @@ -102,31 +150,28 @@ ~ExpectWriteBarrierFires() { EXPECT_FALSE(marking_worklist_->IsGlobalEmpty()); - // All headers of objects watched should be marked. - for (HeapObjectHeader* header : headers_) { - EXPECT_TRUE(header->IsMarked()); - header->Unmark(); - } MarkingItem item; // All objects watched should be on the marking stack. while (marking_worklist_->Pop(WorklistTaskId::MainThread, &item)) { T* obj = reinterpret_cast<T*>(item.object); - // Ignore the backing object. + // Inspect backing stores to allow specifying objects that are only + // reachable through a backing store. if (!ThreadHeap::IsNormalArenaIndex( PageFromObject(obj)->Arena()->ArenaIndex())) { - HeapObjectHeader::FromPayload(obj)->Unmark(); + BackingVisitor<T> visitor(thread_state_, &objects_); + visitor.ProcessBackingStore(HeapObjectHeader::FromPayload(obj)); continue; } auto pos = std::find(objects_.begin(), objects_.end(), obj); - // The following check makes sure that there are no unexpected objects on - // the marking stack. If it fails then the write barrier fired for an - // unexpected object. - EXPECT_NE(objects_.end(), pos); - // Avoid crashing. if (objects_.end() != pos) objects_.erase(pos); } EXPECT_TRUE(objects_.empty()); + // All headers of objects watched should be marked at this point. + for (HeapObjectHeader* header : headers_) { + EXPECT_TRUE(header->IsMarked()); + header->Unmark(); + } EXPECT_TRUE(marking_worklist_->IsGlobalEmpty()); }
diff --git a/third_party/WebKit/Source/platform/heap/Member.h b/third_party/WebKit/Source/platform/heap/Member.h index 617181d..ff7290b 100644 --- a/third_party/WebKit/Source/platform/heap/Member.h +++ b/third_party/WebKit/Source/platform/heap/Member.h
@@ -7,7 +7,7 @@ #include "platform/heap/Heap.h" #include "platform/heap/HeapPage.h" -#include "platform/heap/heap_flags.h" +#include "platform/heap/heap_buildflags.h" #include "platform/wtf/Allocator.h" #include "platform/wtf/HashFunctions.h" #include "platform/wtf/HashTraits.h"
diff --git a/third_party/WebKit/Source/platform/heap/ThreadState.cpp b/third_party/WebKit/Source/platform/heap/ThreadState.cpp index 0cbe366b5..3eb63807 100644 --- a/third_party/WebKit/Source/platform/heap/ThreadState.cpp +++ b/third_party/WebKit/Source/platform/heap/ThreadState.cpp
@@ -51,7 +51,7 @@ #include "platform/heap/PagePool.h" #include "platform/heap/SafePoint.h" #include "platform/heap/Visitor.h" -#include "platform/heap/heap_flags.h" +#include "platform/heap/heap_buildflags.h" #include "platform/instrumentation/tracing/TraceEvent.h" #include "platform/instrumentation/tracing/web_memory_allocator_dump.h" #include "platform/instrumentation/tracing/web_process_memory_dump.h"
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp b/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp index b39af113..fd40210 100644 --- a/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp +++ b/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp
@@ -592,6 +592,11 @@ } void ScrollableArea::SetScrollbarsHiddenIfOverlay(bool hidden) { + // If scrollable area has been disposed, we can not get the page scrollbar + // theme setting. Should early return here. + if (HasBeenDisposed()) + return; + if (!GetPageScrollbarTheme().UsesOverlayScrollbars()) return;
diff --git a/third_party/WebKit/Source/platform/wtf/HashTable.h b/third_party/WebKit/Source/platform/wtf/HashTable.h index 02eeed3..dfd1595 100644 --- a/third_party/WebKit/Source/platform/wtf/HashTable.h +++ b/third_party/WebKit/Source/platform/wtf/HashTable.h
@@ -1932,15 +1932,6 @@ #if DUMP_HASHTABLE_STATS_PER_TABLE HashTableStatsPtr<Allocator>::swap(stats_, other.stats_); #endif - - if (table_) { - ConstructTraits<ValueType, Traits, Allocator>::NotifyNewElements( - table_, table_size_); - } - if (other.table_) { - ConstructTraits<ValueType, Traits, Allocator>::NotifyNewElements( - other.table_, other.table_size_); - } } template <typename Key,
diff --git a/third_party/WebKit/Source/platform/wtf/Vector.h b/third_party/WebKit/Source/platform/wtf/Vector.h index 946da865..c04a90f 100644 --- a/third_party/WebKit/Source/platform/wtf/Vector.h +++ b/third_party/WebKit/Source/platform/wtf/Vector.h
@@ -545,14 +545,6 @@ Allocator::BackingWriteBarrier(other.buffer_); std::swap(capacity_, other.capacity_); std::swap(size_, other.size_); - if (buffer_) { - ConstructTraits<T, VectorTraits<T>, Allocator>::NotifyNewElements(buffer_, - size_); - } - if (other.buffer_) { - ConstructTraits<T, VectorTraits<T>, Allocator>::NotifyNewElements( - other.buffer_, other.size_); - } } using Base::AllocateBuffer; @@ -700,14 +692,6 @@ Allocator::BackingWriteBarrier(other.buffer_); std::swap(capacity_, other.capacity_); std::swap(size_, other.size_); - if (buffer_) { - ConstructTraits<T, VectorTraits<T>, Allocator>::NotifyNewElements( - buffer_, size_); - } - if (other.buffer_) { - ConstructTraits<T, VectorTraits<T>, Allocator>::NotifyNewElements( - other.buffer_, other.size_); - } return; }
diff --git a/third_party/WebKit/public/BUILD.gn b/third_party/WebKit/public/BUILD.gn index 14fec8a0..eb9a01c 100644 --- a/third_party/WebKit/public/BUILD.gn +++ b/third_party/WebKit/public/BUILD.gn
@@ -61,8 +61,8 @@ } # Public feature flags used outside of Blink. -buildflag_header("features") { - header = "public_features.h" +buildflag_header("buildflags") { + header = "public_buildflags.h" flags = [ "DEBUG_DEVTOOLS=$debug_devtools", "USE_DEFAULT_RENDER_THEME=$use_default_render_theme",
diff --git a/third_party/boringssl/BUILD.gn b/third_party/boringssl/BUILD.gn index 7319524..64de692 100644 --- a/third_party/boringssl/BUILD.gn +++ b/third_party/boringssl/BUILD.gn
@@ -33,7 +33,7 @@ "//build/config/compiler:no_size_t_to_int_warning", "//build/config/sanitizers:cfi_icall_generalize_pointers", ] - if (is_posix) { + if (is_posix || is_fuchsia) { cflags_c = [ "-std=c99" ] defines += [ "_XOPEN_SOURCE=700" ] }
diff --git a/third_party/freetype/BUILD.gn b/third_party/freetype/BUILD.gn index 4cd42c1..82f11b1 100644 --- a/third_party/freetype/BUILD.gn +++ b/third_party/freetype/BUILD.gn
@@ -85,7 +85,7 @@ # While Chromium itself avoids using this code, any build of Chromium which # depends on //third_party/fontconfig:fontconfig with use_bundled_fontconfig # will make heavy use of these implementations, so use the best available. - if (is_posix) { + if (is_posix || is_fuchsia) { sources += [ "src/builds/unix/ftsystem.c" ] # builds/unix/ftsystem.c directly includes <ftconfig.h> instead of using
diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn index 205746aa..7e7c7145 100644 --- a/third_party/libaom/BUILD.gn +++ b/third_party/libaom/BUILD.gn
@@ -50,7 +50,8 @@ # aom_config.asm if (is_ios && current_cpu == "arm") { os_category = current_os - } else if (is_posix) { # Should cover linux, mac, and the ios simulator. + } else if (is_posix || is_fuchsia) { + # Should cover linux, fuchsia, mac, and the ios simulator. os_category = "linux" } else { # This should only match windows. os_category = current_os
diff --git a/third_party/libvpx/BUILD.gn b/third_party/libvpx/BUILD.gn index 3d4c5ca..4e817b6 100644 --- a/third_party/libvpx/BUILD.gn +++ b/third_party/libvpx/BUILD.gn
@@ -38,7 +38,8 @@ # vpx_config.asm if (is_ios && current_cpu == "arm") { os_category = current_os - } else if (is_posix) { # Should cover linux, mac, and the ios simulator. + } else if (is_posix || is_fuchsia) { + # Should cover linux, fuchsia, mac, and the ios simulator. os_category = "linux" } else { # This should only match windows. os_category = current_os
diff --git a/third_party/mesa/BUILD.gn b/third_party/mesa/BUILD.gn index c36212b0..148b7ec8 100644 --- a/third_party/mesa/BUILD.gn +++ b/third_party/mesa/BUILD.gn
@@ -99,7 +99,7 @@ ] } - if (is_posix) { + if (is_posix || is_fuchsia) { defines += [ "HAVE_DLOPEN", "HAVE_PTHREAD=1",
diff --git a/third_party/yasm/BUILD.gn b/third_party/yasm/BUILD.gn index e403dee..ab2f9414 100644 --- a/third_party/yasm/BUILD.gn +++ b/third_party/yasm/BUILD.gn
@@ -72,7 +72,7 @@ "source/patched-yasm", ] defines = [ "HAVE_CONFIG_H" ] - if (is_posix) { + if (is_posix || is_fuchsia) { cflags = [ "-std=gnu99" ] } }
diff --git a/third_party/yasm/yasm_assemble.gni b/third_party/yasm/yasm_assemble.gni index 73d5548..07bf5f9 100644 --- a/third_party/yasm/yasm_assemble.gni +++ b/third_party/yasm/yasm_assemble.gni
@@ -55,7 +55,7 @@ "amd64", ] } -} else if (is_posix) { +} else if (is_posix || is_fuchsia) { if (current_cpu == "x86") { _yasm_flags = [ "-felf32",
diff --git a/third_party/zlib/google/zip_reader.cc b/third_party/zlib/google/zip_reader.cc index cca9c46..207683c 100644 --- a/third_party/zlib/google/zip_reader.cc +++ b/third_party/zlib/google/zip_reader.cc
@@ -441,7 +441,7 @@ FileWriterDelegate::~FileWriterDelegate() { if (!file_->SetLength(file_length_)) { - DPLOG(ERROR) << "Failed updating length of written file"; + DVPLOG(1) << "Failed updating length of written file"; } }
diff --git a/tools/gn/commands.cc b/tools/gn/commands.cc index c47f1b1..59d2391 100644 --- a/tools/gn/commands.cc +++ b/tools/gn/commands.cc
@@ -338,6 +338,35 @@ } } +#if defined(OS_WIN) +// Git bash will remove the first "/" in "//" paths +// This also happens for labels assigned to command line parameters, e.g. +// --filters +// Fix "//" paths, but not absolute and relative paths +inline std::string FixGitBashLabelEdit(const std::string& label) { + static std::unique_ptr<base::Environment> git_bash_env; + if (!git_bash_env) + git_bash_env = base::Environment::Create(); + + std::string temp_label(label); + + if (git_bash_env->HasVar( + "MSYSTEM") && // Only for MinGW based shells like Git Bash + temp_label[0] == '/' && // Only fix for //foo paths, not /f:oo paths + (temp_label.length() < 2 || + (temp_label[1] != '/' && + (temp_label.length() < 3 || temp_label[1] != ':')))) + temp_label.insert(0, "/"); + return temp_label; +} +#else +// Only repair on Windows +inline std::string FixGitBashLabelEdit(const std::string& label) { + return label; +} +#endif + + } // namespace CommandInfo::CommandInfo() @@ -383,22 +412,8 @@ Setup* setup, const std::string& label_string) { // Need to resolve the label after we know the default toolchain. - std::string temp_label = label_string; -#if defined(OS_WIN) - // Git bash will remove the first "/" in "//" paths - // Fix "//" paths, but not absolute and relative paths - std::unique_ptr<base::Environment> env(base::Environment::Create()); - - if (env->HasVar("MSYSTEM") && // Only for MinGW based shells like Git Bash - temp_label[0] == '/' && // Only fix for //foo paths, not /f:oo paths - (temp_label.length() < 2 || - (temp_label[1] != '/' && (temp_label.length() < 3 || - temp_label[1] != ':' )))) - temp_label.insert(0, "/"); -#endif - Label default_toolchain = setup->loader()->default_toolchain_label(); - Value arg_value(nullptr, temp_label); + Value arg_value(nullptr, FixGitBashLabelEdit(label_string)); Err err; Label label = Label::Resolve(SourceDirForCurrentDirectory( setup->build_settings().root_path()), @@ -485,13 +500,12 @@ Err* err) { std::vector<std::string> tokens = base::SplitString( label_list_string, ";", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); - SourceDir root_dir = - SourceDirForCurrentDirectory(build_settings->root_path()); + SourceDir root_dir("//"); filters->reserve(tokens.size()); for (const std::string& token : tokens) { - LabelPattern pattern = - LabelPattern::GetPattern(root_dir, Value(nullptr, token), err); + LabelPattern pattern = LabelPattern::GetPattern( + root_dir, Value(nullptr, FixGitBashLabelEdit(token)), err); if (err->has_error()) return false; filters->push_back(pattern);
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl index 1301648..a31141d5 100644 --- a/tools/mb/mb_config.pyl +++ b/tools/mb/mb_config.pyl
@@ -681,45 +681,11 @@ 'tryserver.chromium.perf': { 'Android Compile Perf': 'official_goma_minimal_symbols_android', 'Android arm64 Compile Perf': 'official_goma_minimal_symbols_android_arm64', - 'android_arm64_perf_bisect_builder': 'official_goma_minimal_symbols_android_arm64', - 'android_fyi_perf_bisect': 'official_goma_minimal_symbols_android', - 'android_nexus5X_perf_bisect': 'official_goma_minimal_symbols_android', - 'android_nexus5_perf_bisect': 'official_goma_minimal_symbols_android', - 'android_nexus6_perf_bisect': 'official_goma_minimal_symbols_android', - 'android_nexus7_perf_bisect': 'official_goma_minimal_symbols_android', - 'android_nexus9_perf_bisect': 'official_goma_minimal_symbols_android_arm64', - 'android_one_perf_bisect': 'official_goma_minimal_symbols_android', - 'android_perf_bisect_builder': 'official_goma_minimal_symbols_android', - 'android_s5_perf_bisect': 'official_goma_minimal_symbols_android', - 'android_webview_arm64_aosp_perf_bisect': 'official_goma_minimal_symbols_android', 'Linux Builder Perf': 'official_goma_perf', - 'linux_fyi_perf_bisect': 'official_goma', - 'linux_perf_bisect': 'official_goma', - 'linux_perf_bisect_builder': 'official_goma', - 'linux_perf_cq': 'official_goma', 'Mac Builder Perf': 'official_goma', - 'mac_10_10_perf_bisect': 'official_goma', - 'mac_10_11_perf_bisect': 'official_goma', - 'mac_fyi_perf_bisect': 'official_goma', - 'mac_hdd_perf_bisect': 'official_goma', - 'mac_perf_bisect_builder': 'official_goma', - 'mac_retina_perf_bisect': 'official_goma', - 'mac_retina_perf_cq': 'official_goma', 'obbs_fyi': 'official_goma_perf', 'Win Builder Perf': 'official_goma_x86', 'Win x64 Builder Perf': 'official_goma', - 'win_8_perf_bisect': 'official_goma_x86', - 'win_fyi_perf_bisect': 'official_goma_x86', - 'win_perf_bisect': 'official_goma_x86', - 'win_perf_bisect_builder': 'official_goma_x86', - 'win_x64_perf_bisect': 'official_goma', - 'winx64_10_perf_bisect': 'official_goma', - 'winx64_10_perf_cq': 'official_goma', - 'winx64_bisect_builder': 'official_goma', - 'winx64_zen_perf_bisect': 'official_goma', - 'winx64ati_perf_bisect': 'official_goma', - 'winx64intel_perf_bisect': 'official_goma', - 'winx64nvidia_perf_bisect': 'official_goma', }, 'tryserver.chromium.win': {
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index cdd57918..8f01a40 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -45916,6 +45916,24 @@ <int value="12" label="RequestDenied"/> </enum> +<enum name="VRSessionStartAction"> + <int value="1" label="Headset Activation"> + The user activated a headset. For example, inserted phone in Daydream, or + put on an Occulus or Vive. + </int> + <int value="2" label="Presentation Requested"> + The user triggered a presentation request on a page, probably by clicking an + enter VR button. + </int> + <int value="3" label="Deep Linked App"> + The user launched a deep linked app, probably from Daydream home. + </int> + <int value="4" label="Intent Launch"> + Chrome VR was started by an intent from another app. Most likely the user + clicked the icon in Daydream home. + </int> +</enum> + <enum name="VRSuppressedElement"> <int value="0" label="File chooser was suppressed in VR"/> <int value="1" label="Bluetooth picker was suppressed in VR"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 4c5bbbd..01a2368 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -71071,6 +71071,9 @@ </histogram> <histogram name="Privacy.ConsentAuditor.UserEventServiceReady" enum="Boolean"> + <obsolete> + Deprecated as of 4/2018. + </obsolete> <owner>dullweber@google.com</owner> <owner>msramek@google.com</owner> <summary> @@ -75932,6 +75935,14 @@ </summary> </histogram> +<histogram name="Rlz.SetRlzPingSent" enum="BooleanSuccess"> + <owner>wzang@chromium.org</owner> + <summary> + Record if updating |should_send_rlz_ping| in RW_VPD is successful within the + maximum retry counts. + </summary> +</histogram> + <histogram name="SadTab.Created" enum="SadTabKind"> <obsolete> Replaced with Tabs.SadTab.* in R20. @@ -105390,6 +105401,14 @@ </summary> </histogram> +<histogram name="XR.VRSession.StartAction" enum="VRSessionStartAction"> + <owner>offenwanger@chromium.org</owner> + <summary> + The action that triggered the transition into Chrome in VR, either from 2D + or another VR app. + </summary> +</histogram> + <histogram name="XR.WebXR.RenderPath.Used" enum="XRRenderPath"> <owner>klausw@chromium.org</owner> <summary>
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_es-419.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_es-419.xtb index 39649f2..65569b6 100644 --- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_es-419.xtb +++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_es-419.xtb
@@ -58,7 +58,7 @@ <translation id="7586636300921797327">Paso 2. Ajusta el control deslizante hasta que todas las estrellas sean visibles en la fila seleccionada.</translation> <translation id="7658239707568436148">Cancelar</translation> -<translation id="786423340267544509">Agregar límite a elementos con atributos aria-describedat o longdesc</translation> +<translation id="786423340267544509">Agregar borde a elementos con atributos aria-describedat o longdesc</translation> <translation id="7942349550061667556">Rojo</translation> <translation id="8254860724243898966">Presiona <span class='key'>Alt</span> + <img src='increase_brightness.png'> (la tecla de Aumentar brillo o F7) para habilitar la navegación por cursor de texto. Vuelve a presionar la misma tecla para inhabilitarla.</translation> <translation id="8260673944985561857">Opciones de navegación por cursor de texto</translation>
diff --git a/ui/arc/notification/arc_notification_delegate.cc b/ui/arc/notification/arc_notification_delegate.cc index 30d8d02..a689675 100644 --- a/ui/arc/notification/arc_notification_delegate.cc +++ b/ui/arc/notification/arc_notification_delegate.cc
@@ -33,7 +33,9 @@ item_->Close(by_user); } -void ArcNotificationDelegate::Click() { +void ArcNotificationDelegate::Click( + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { DCHECK(item_); item_->Click(); }
diff --git a/ui/arc/notification/arc_notification_delegate.h b/ui/arc/notification/arc_notification_delegate.h index c90da5dc..3448138 100644 --- a/ui/arc/notification/arc_notification_delegate.h +++ b/ui/arc/notification/arc_notification_delegate.h
@@ -32,7 +32,8 @@ // message_center::NotificationDelegate overrides: void Close(bool by_user) override; - void Click() override; + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; void SettingsClick() override; private:
diff --git a/ui/aura/client/aura_constants.cc b/ui/aura/client/aura_constants.cc index c171556d..2f3957d 100644 --- a/ui/aura/client/aura_constants.cc +++ b/ui/aura/client/aura_constants.cc
@@ -48,6 +48,7 @@ DEFINE_UI_CLASS_PROPERTY_KEY(bool, kDrawAttentionKey, false); DEFINE_UI_CLASS_PROPERTY_KEY(FocusClient*, kFocusClientKey, nullptr); DEFINE_UI_CLASS_PROPERTY_KEY(bool, kHasBackdrop, false); +DEFINE_UI_CLASS_PROPERTY_KEY(bool, kHasOverviewIcon, false); DEFINE_UI_CLASS_PROPERTY_KEY(Window*, kHostWindowKey, nullptr); DEFINE_UI_CLASS_PROPERTY_KEY(bool, kImmersiveFullscreenKey, false); DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(gfx::Size, kMinimumSize, nullptr);
diff --git a/ui/aura/client/aura_constants.h b/ui/aura/client/aura_constants.h index f0f8b6c..4c3795a 100644 --- a/ui/aura/client/aura_constants.h +++ b/ui/aura/client/aura_constants.h
@@ -81,6 +81,10 @@ // (typically black) that covers the desktop behind the window. AURA_EXPORT extern const WindowProperty<bool>* const kHasBackdrop; +// A bool property key to specify if the window has a icon set for displaying in +// overivew mode. +AURA_EXPORT extern const WindowProperty<bool>* const kHasOverviewIcon; + // A property key to store the host window of a window. This lets // WebContentsViews find the windows that should constrain NPAPI plugins. AURA_EXPORT extern const WindowProperty<Window*>* const kHostWindowKey;
diff --git a/ui/aura/test/mus/test_window_tree.cc b/ui/aura/test/mus/test_window_tree.cc index d3bb905..5f8d2918d 100644 --- a/ui/aura/test/mus/test_window_tree.cc +++ b/ui/aura/test/mus/test_window_tree.cc
@@ -4,6 +4,8 @@ #include "ui/aura/test/mus/test_window_tree.h" +#include "base/bind.h" +#include "base/threading/thread_task_runner_handle.h" #include "build/build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/display/manager/display_manager.h" @@ -55,6 +57,31 @@ } } +void TestWindowTree::AddScheduledEmbedToken( + const base::UnguessableToken& token) { + DCHECK_NE(token, scheduled_embed_); + scheduled_embed_ = token; +} + +void TestWindowTree::AddEmbedRootForToken(const base::UnguessableToken& token) { + DCHECK_EQ(token, scheduled_embed_); + scheduled_embed_ = base::UnguessableToken(); + + ui::mojom::WindowDataPtr embedder_window_data = ui::mojom::WindowData::New(); + const uint64_t kFakeEmbedderClientId = 1u; + const uint64_t kFakeEmbedderWindowId = 1u; + embedder_window_data->window_id = + (kFakeEmbedderClientId << 32) | kFakeEmbedderWindowId; + embedder_window_data->bounds = gfx::Rect(320, 240); + + client_->OnEmbedFromToken(token, std::move(embedder_window_data), 0, + base::nullopt); +} + +void TestWindowTree::RemoveEmbedderWindow(ui::Id embedder_window_id) { + client_->OnUnembed(embedder_window_id); +} + void TestWindowTree::AckAllChanges() { while (!changes_.empty()) { client_->OnChangeCompleted(changes_[0].id, true); @@ -278,11 +305,36 @@ void TestWindowTree::EmbedUsingToken(ui::Id window_id, const base::UnguessableToken& token, uint32_t embed_flags, - EmbedUsingTokenCallback callback) {} + EmbedUsingTokenCallback callback) { + if (token != scheduled_embed_) { + std::move(callback).Run(false); + return; + } + + scheduled_embed_ = base::UnguessableToken(); + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce( + [](EmbedUsingTokenCallback callback) { + std::move(callback).Run(true); + }, + std::move(callback))); +} void TestWindowTree::ScheduleEmbedForExistingClient( ui::ClientSpecificId window_id, - ScheduleEmbedForExistingClientCallback callback) {} + ScheduleEmbedForExistingClientCallback callback) { + base::UnguessableToken token = base::UnguessableToken::Create(); + DCHECK_NE(token, scheduled_embed_); + + scheduled_embed_ = token; + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce( + [](ScheduleEmbedForExistingClientCallback callback, + const base::UnguessableToken& token) { + std::move(callback).Run(token); + }, + std::move(callback), token)); +} void TestWindowTree::SetFocus(uint32_t change_id, ui::Id window_id) { OnChangeReceived(change_id, WindowTreeChangeType::FOCUS);
diff --git a/ui/aura/test/mus/test_window_tree.h b/ui/aura/test/mus/test_window_tree.h index 5ba297b0..48ffe1b 100644 --- a/ui/aura/test/mus/test_window_tree.h +++ b/ui/aura/test/mus/test_window_tree.h
@@ -80,6 +80,15 @@ void NotifyClientAboutAcceleratedWidgets( display::DisplayManager* display_manager); + // Pretends that there is a scheduled embed request for |token|. + void AddScheduledEmbedToken(const base::UnguessableToken& token); + + // Pretends the other side has called EmbedUsingToken for |token|. + void AddEmbedRootForToken(const base::UnguessableToken& token); + + // Pretends the embedder window goes away. + void RemoveEmbedderWindow(ui::Id embedder_window_id); + // Acks all changes with a value of true. void AckAllChanges(); @@ -275,6 +284,9 @@ std::string last_wm_action_; + // Support only one scheduled embed in test. + base::UnguessableToken scheduled_embed_; + DISALLOW_COPY_AND_ASSIGN(TestWindowTree); };
diff --git a/ui/events/chromecast/OWNERS b/ui/events/chromecast/OWNERS new file mode 100644 index 0000000..16454c36 --- /dev/null +++ b/ui/events/chromecast/OWNERS
@@ -0,0 +1,4 @@ +alexst@chromium.org +kpschoedel@chromium.org +rdaum@chromium.org +spang@chromium.org
diff --git a/ui/events/chromecast/scroller.cc b/ui/events/chromecast/scroller.cc index 9c989a95..0e2e2dc 100644 --- a/ui/events/chromecast/scroller.cc +++ b/ui/events/chromecast/scroller.cc
@@ -186,7 +186,7 @@ distance_(0), fling_friction_(config.fling_friction), deceleration_(ComputeDeceleration(fling_friction_)), - tuning_coeff_(ComputeDeceleration(0.84f)) { + tuning_coeff_(ComputeDeceleration(3.25f)) { } Scroller::~Scroller() {
diff --git a/ui/message_center/message_center_impl.cc b/ui/message_center/message_center_impl.cc index 5a4dac2..5415b33 100644 --- a/ui/message_center/message_center_impl.cc +++ b/ui/message_center/message_center_impl.cc
@@ -310,9 +310,9 @@ scoped_refptr<NotificationDelegate> delegate = notification_list_->GetNotificationDelegate(id); for (auto& observer : observer_list_) - observer.OnNotificationClicked(id); - if (delegate.get()) - delegate->Click(); + observer.OnNotificationClicked(id, base::nullopt, base::nullopt); + if (delegate) + delegate->Click(base::nullopt, base::nullopt); } void MessageCenterImpl::ClickOnNotificationButton(const std::string& id, @@ -327,9 +327,9 @@ scoped_refptr<NotificationDelegate> delegate = notification_list_->GetNotificationDelegate(id); for (auto& observer : observer_list_) - observer.OnNotificationButtonClicked(id, button_index); - if (delegate.get()) - delegate->ButtonClick(button_index); + observer.OnNotificationClicked(id, button_index, base::nullopt); + if (delegate) + delegate->Click(button_index, base::nullopt); } void MessageCenterImpl::ClickOnNotificationButtonWithReply( @@ -346,9 +346,9 @@ scoped_refptr<NotificationDelegate> delegate = notification_list_->GetNotificationDelegate(id); for (auto& observer : observer_list_) - observer.OnNotificationButtonClickedWithReply(id, button_index, reply); - if (delegate.get()) - delegate->ButtonClickWithReply(button_index, reply); + observer.OnNotificationClicked(id, button_index, reply); + if (delegate) + delegate->Click(button_index, reply); } void MessageCenterImpl::ClickOnSettingsButton(const std::string& id) {
diff --git a/ui/message_center/message_center_observer.h b/ui/message_center/message_center_observer.h index 9ef0ec6..c88c1166 100644 --- a/ui/message_center/message_center_observer.h +++ b/ui/message_center/message_center_observer.h
@@ -7,6 +7,7 @@ #include <string> +#include "base/optional.h" #include "ui/message_center/message_center_export.h" #include "ui/message_center/message_center_types.h" @@ -34,20 +35,13 @@ virtual void OnNotificationUpdated(const std::string& notification_id) {} // Called when a click event happens on the notification associated with - // |notification_id|. - virtual void OnNotificationClicked(const std::string& notification_id) {} - - // Called when a click event happens on a button indexed by |button_index| - // of the notification associated with |notification_id|. - virtual void OnNotificationButtonClicked(const std::string& notification_id, - int button_index) {} - - // Called when a click event happens on a button with an input indexed by - // |button_index| of the notification associated with |notification_id|. - virtual void OnNotificationButtonClickedWithReply( + // |notification_id|. |button_index| will be nullopt if the click occurred on + // the body of the notification. |reply| will be filled in only if there was + // an input field associated with the button. + virtual void OnNotificationClicked( const std::string& notification_id, - int button_index, - const base::string16& reply) {} + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) {} // Called when notification settings button is clicked. The |handled| argument // indicates whether the notification delegate already handled the operation.
diff --git a/ui/message_center/message_center_stats_collector.cc b/ui/message_center/message_center_stats_collector.cc index 210e0bf..c6503a3 100644 --- a/ui/message_center/message_center_stats_collector.cc +++ b/ui/message_center/message_center_stats_collector.cc
@@ -92,24 +92,17 @@ } void MessageCenterStatsCollector::OnNotificationClicked( - const std::string& notification_id) { - StatsCollection::iterator iter = stats_.find(notification_id); - if (iter == stats_.end()) - return; - NotificationStats& notification_stat = iter->second; - - notification_stat.CollectAction(NOTIFICATION_ACTION_CLICK); -} - -void MessageCenterStatsCollector::OnNotificationButtonClicked( const std::string& notification_id, - int button_index) { + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { StatsCollection::iterator iter = stats_.find(notification_id); if (iter == stats_.end()) return; NotificationStats& notification_stat = iter->second; - notification_stat.CollectAction(NOTIFICATION_ACTION_BUTTON_CLICK); + notification_stat.CollectAction(button_index + ? NOTIFICATION_ACTION_BUTTON_CLICK + : NOTIFICATION_ACTION_CLICK); } void MessageCenterStatsCollector::OnNotificationSettingsClicked(bool handled) {
diff --git a/ui/message_center/message_center_stats_collector.h b/ui/message_center/message_center_stats_collector.h index 6906f65..c2e212c 100644 --- a/ui/message_center/message_center_stats_collector.h +++ b/ui/message_center/message_center_stats_collector.h
@@ -66,9 +66,10 @@ void OnNotificationRemoved(const std::string& notification_id, bool by_user) override; void OnNotificationUpdated(const std::string& notification_id) override; - void OnNotificationClicked(const std::string& notification_id) override; - void OnNotificationButtonClicked(const std::string& notification_id, - int button_index) override; + void OnNotificationClicked( + const std::string& notification_id, + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; void OnNotificationSettingsClicked(bool handled) override; void OnNotificationDisplayed(const std::string& notification_id, const DisplaySource source) override;
diff --git a/ui/message_center/public/cpp/notification.h b/ui/message_center/public/cpp/notification.h index 3e9ee69..bbe62a4 100644 --- a/ui/message_center/public/cpp/notification.h +++ b/ui/message_center/public/cpp/notification.h
@@ -423,11 +423,6 @@ // method explicitly, to avoid setting it accidentally. void SetSystemPriority(); - // Delegate actions. - void Click() const { delegate()->Click(); } - void ButtonClick(int index) const { delegate()->ButtonClick(index); } - void Close(bool by_user) const { delegate()->Close(by_user); } - // Helper method to create a simple system notification. |click_callback| // will be invoked when the notification is clicked. //
diff --git a/ui/message_center/public/cpp/notification_delegate.cc b/ui/message_center/public/cpp/notification_delegate.cc index 42b536b9..267b215 100644 --- a/ui/message_center/public/cpp/notification_delegate.cc +++ b/ui/message_center/public/cpp/notification_delegate.cc
@@ -20,21 +20,11 @@ impl_->Close(by_user); } -void ThunkNotificationDelegate::Click() { +void ThunkNotificationDelegate::Click( + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { if (impl_) - impl_->Click(); -} - -void ThunkNotificationDelegate::ButtonClick(int button_index) { - if (impl_) - impl_->ButtonClick(button_index); -} - -void ThunkNotificationDelegate::ButtonClickWithReply( - int button_index, - const base::string16& reply) { - if (impl_) - impl_->ButtonClickWithReply(button_index, reply); + impl_->Click(button_index, reply); } void ThunkNotificationDelegate::SettingsClick() { @@ -72,12 +62,9 @@ HandleNotificationClickDelegate::~HandleNotificationClickDelegate() {} -void HandleNotificationClickDelegate::Click() { - if (!callback_.is_null()) - callback_.Run(base::nullopt); -} - -void HandleNotificationClickDelegate::ButtonClick(int button_index) { +void HandleNotificationClickDelegate::Click( + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { if (!callback_.is_null()) callback_.Run(button_index); }
diff --git a/ui/message_center/public/cpp/notification_delegate.h b/ui/message_center/public/cpp/notification_delegate.h index 8f5a532..1c2e62c4 100644 --- a/ui/message_center/public/cpp/notification_delegate.h +++ b/ui/message_center/public/cpp/notification_delegate.h
@@ -21,22 +21,19 @@ // Handles actions performed on a notification. class MESSAGE_CENTER_PUBLIC_EXPORT NotificationObserver { public: - // To be called when the desktop notification is closed. If closed by a - // user explicitly (as opposed to timeout/script), |by_user| should be true. + // Called when the desktop notification is closed. If closed by a user + // explicitly (as opposed to timeout/script), |by_user| should be true. virtual void Close(bool by_user) {} - // To be called when a desktop notification is clicked. - virtual void Click() {} + // Called when a desktop notification is clicked. |button_index| is filled in + // if a button was clicked (as opposed to the body of the notification) while + // |reply| is filled in if there was an input field associated with the + // button. + virtual void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) {} - // To be called when the user clicks a button in a notification. - virtual void ButtonClick(int button_index) {} - - // To be called when the user types a reply to a notification. - virtual void ButtonClickWithReply(int button_index, - const base::string16& reply) {} - - // To be called when the user clicks the settings button in a notification - // which has a DELEGATE settings button action. + // Called when the user clicks the settings button in a notification which has + // a DELEGATE settings button action. virtual void SettingsClick() {} // Called when the user attempts to disable the notification. @@ -58,8 +55,7 @@ // A pass-through which converts the RefCounted requirement to a WeakPtr // requirement. This class replaces the need for individual delegates that pass // through to an actual controller class, and which only exist because the -// actual controller has a strong ownership model. TODO(estade): replace many -// existing NotificationDelegate overrides with an instance of this class. +// actual controller has a strong ownership model. class MESSAGE_CENTER_PUBLIC_EXPORT ThunkNotificationDelegate : public NotificationDelegate { public: @@ -67,10 +63,8 @@ // NotificationDelegate: void Close(bool by_user) override; - void Click() override; - void ButtonClick(int button_index) override; - void ButtonClickWithReply(int button_index, - const base::string16& reply) override; + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; void SettingsClick() override; void DisableNotification() override; @@ -102,8 +96,8 @@ const base::RepeatingClosure& closure); // NotificationDelegate overrides: - void Click() override; - void ButtonClick(int button_index) override; + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; protected: ~HandleNotificationClickDelegate() override;
diff --git a/ui/message_center/public/cpp/notification_delegate_unittest.cc b/ui/message_center/public/cpp/notification_delegate_unittest.cc index 09874d1c..bd600a7ee 100644 --- a/ui/message_center/public/cpp/notification_delegate_unittest.cc +++ b/ui/message_center/public/cpp/notification_delegate_unittest.cc
@@ -37,7 +37,7 @@ base::Bind(&NotificationDelegateTest::BodyClickCallback, base::Unretained(this))); - delegate->Click(); + delegate->Click(base::nullopt, base::nullopt); EXPECT_EQ(1, callback_count_); } @@ -45,7 +45,7 @@ auto delegate = base::MakeRefCounted<HandleNotificationClickDelegate>(base::Closure()); - delegate->Click(); + delegate->Click(base::nullopt, base::nullopt); EXPECT_EQ(0, callback_count_); } @@ -54,11 +54,11 @@ base::Bind(&NotificationDelegateTest::ButtonClickCallback, base::Unretained(this))); - delegate->Click(); + delegate->Click(base::nullopt, base::nullopt); EXPECT_EQ(1, callback_count_); EXPECT_EQ(base::nullopt, last_button_index_); - delegate->ButtonClick(3); + delegate->Click(3, base::nullopt); EXPECT_EQ(2, callback_count_); EXPECT_EQ(3, *last_button_index_); }
diff --git a/ui/message_center/ui_controller.cc b/ui/message_center/ui_controller.cc index 997b2475..15722431 100644 --- a/ui/message_center/ui_controller.cc +++ b/ui/message_center/ui_controller.cc
@@ -130,14 +130,10 @@ OnMessageCenterChanged(); } -void UiController::OnNotificationClicked(const std::string& notification_id) { - if (popups_visible_) - OnMessageCenterChanged(); -} - -void UiController::OnNotificationButtonClicked( +void UiController::OnNotificationClicked( const std::string& notification_id, - int button_index) { + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) { if (popups_visible_) OnMessageCenterChanged(); }
diff --git a/ui/message_center/ui_controller.h b/ui/message_center/ui_controller.h index 582ad52..5b489e0 100644 --- a/ui/message_center/ui_controller.h +++ b/ui/message_center/ui_controller.h
@@ -60,9 +60,10 @@ void OnNotificationRemoved(const std::string& notification_id, bool by_user) override; void OnNotificationUpdated(const std::string& notification_id) override; - void OnNotificationClicked(const std::string& notification_id) override; - void OnNotificationButtonClicked(const std::string& notification_id, - int button_index) override; + void OnNotificationClicked( + const std::string& notification_id, + const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override; void OnNotificationSettingsClicked(bool handled) override; void OnNotificationDisplayed(const std::string& notification_id, const DisplaySource source) override;
diff --git a/ui/message_center/views/notification_view_md_unittest.cc b/ui/message_center/views/notification_view_md_unittest.cc index 73b8915..ae5a861 100644 --- a/ui/message_center/views/notification_view_md_unittest.cc +++ b/ui/message_center/views/notification_view_md_unittest.cc
@@ -37,26 +37,23 @@ public: NotificationTestDelegate() = default; - void ButtonClick(int button_index) override { - if (!expecting_button_click_) - ADD_FAILURE() << "ClickOnNotificationButton should not be invoked."; - clicked_button_index_ = button_index; - } + void Click(const base::Optional<int>& button_index, + const base::Optional<base::string16>& reply) override { + if (!button_index) + return; - void ButtonClickWithReply(int button_index, - const base::string16& reply) override { - if (!expecting_reply_submission_) { - ADD_FAILURE() - << "ClickOnNotificationButtonWithReply should not be invoked."; - } + if (!reply && !expecting_button_click_) + ADD_FAILURE() << "Click should not be invoked with a button index."; + if (reply && !expecting_reply_submission_) + ADD_FAILURE() << "Click should not be invoked with a reply."; - clicked_button_index_ = button_index; - submitted_reply_string_ = reply; + clicked_button_index_ = *button_index; + submitted_reply_string_ = reply.value_or(base::string16()); } void Reset() { clicked_button_index_ = -1; - submitted_reply_string_ = base::EmptyString16(); + submitted_reply_string_.clear(); } void DisableNotification() override { disable_notification_called_ = true; }
diff --git a/ui/ozone/platform/drm/common/drm_util.cc b/ui/ozone/platform/drm/common/drm_util.cc index 0c17e967..91463ae 100644 --- a/ui/ozone/platform/drm/common/drm_util.cc +++ b/ui/ozone/platform/drm/common/drm_util.cc
@@ -660,6 +660,19 @@ if (primaries_area_twice < kBT709PrimariesArea) return gfx::ColorSpace(); + // Sanity check: https://crbug.com/809909, the blue primary coordinates should + // not be too far left/upwards of the expected location (namely [0.15, 0.06] + // for sRGB/ BT.709/ Adobe RGB/ DCI-P3, and [0.131, 0.046] for BT.2020). + constexpr float kExpectedBluePrimaryX = 0.15f; + constexpr float kBluePrimaryXDelta = 0.02f; + constexpr float kExpectedBluePrimaryY = 0.06f; + constexpr float kBluePrimaryYDelta = 0.031f; + const bool is_blue_primary_broken = + (std::abs(primaries.fBX - kExpectedBluePrimaryX) > kBluePrimaryXDelta) || + (std::abs(primaries.fBY - kExpectedBluePrimaryY) > kBluePrimaryYDelta); + if (is_blue_primary_broken) + return gfx::ColorSpace(); + SkMatrix44 color_space_as_matrix; if (!primaries.toXYZD50(&color_space_as_matrix)) return gfx::ColorSpace();
diff --git a/ui/ozone/platform/drm/common/drm_util_unittest.cc b/ui/ozone/platform/drm/common/drm_util_unittest.cc index 92227ba..6546416 100644 --- a/ui/ozone/platform/drm/common/drm_util_unittest.cc +++ b/ui/ozone/platform/drm/common/drm_util_unittest.cc
@@ -93,6 +93,17 @@ "\x30\x31\x20\x54\x69\x44\x69\x67\x61\x74\x0a\x6c\x00\x00\xff\x00" "\x48\x00\x4b\x34\x41\x54\x30\x30\x32\x38\x0a\x38\x20\x20\xf8\x00"; +// This EDID produces blue primary coordinates too far off the expected point, +// which would paint blue colors as purple. See https://crbug.com/809909. +const unsigned char kBrokenBluePrimaries[] = + "\x00\xff\xff\xff\xff\xff\xff\x00\x4c\x83\x4d\x83\x00\x00\x00\x00" + "\x00\x19\x01\x04\x95\x1d\x10\x78\x0a\xee\x25\xa3\x54\x4c\x99\x29" + "\x26\x50\x54\x00\x00\x00\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01" + "\x01\x01\x01\x01\x01\x01\xd2\x37\x80\xa2\x70\x38\x40\x40\x30\x20" + "\x25\x00\x25\xa5\x10\x00\x00\x1a\xa6\x2c\x80\xa2\x70\x38\x40\x40" + "\x30\x20\x25\x00\x25\xa5\x10\x00\x00\x1a\x00\x00\x00\xfe\x00\x56" + "\x59\x54\x39\x36\x80\x31\x33\x33\x48\x4c\x0a\x20\x00\x00\x00\x00"; + } // anonymous namespace bool operator==(const ui::DisplayMode_Params& a, @@ -356,6 +367,14 @@ GetColorSpaceFromEdid(sst210_edid_2); EXPECT_FALSE(sst210_color_space_2.IsValid()) << sst210_color_space_2.ToString(); + + const std::vector<uint8_t> broken_blue_edid( + kBrokenBluePrimaries, + kBrokenBluePrimaries + arraysize(kBrokenBluePrimaries) - 1); + const gfx::ColorSpace broken_blue_color_space = + GetColorSpaceFromEdid(broken_blue_edid); + EXPECT_FALSE(broken_blue_color_space.IsValid()) + << broken_blue_color_space.ToString(); } TEST_F(DrmUtilTest, TestDisplayModesExtraction) {
diff --git a/ui/views/mus/BUILD.gn b/ui/views/mus/BUILD.gn index 89219f7..dfe239c1 100644 --- a/ui/views/mus/BUILD.gn +++ b/ui/views/mus/BUILD.gn
@@ -192,6 +192,7 @@ "//ui/views", "//ui/views:test_support_internal", "//ui/views:views_unittests_sources", + "//ui/views/mus/remote_view:tests", "//ui/wm", "//url", ]
diff --git a/ui/views/mus/remote_view/BUILD.gn b/ui/views/mus/remote_view/BUILD.gn new file mode 100644 index 0000000..a523299 --- /dev/null +++ b/ui/views/mus/remote_view/BUILD.gn
@@ -0,0 +1,66 @@ +# Copyright 2018 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. + +source_set("remote_view_host") { + sources = [ + "remote_view_host.cc", + "remote_view_host.h", + ] + + deps = [ + "//base", + "//ui/aura", + "//ui/views", + ] +} + +source_set("remote_view_provider") { + sources = [ + "remote_view_provider.cc", + "remote_view_provider.h", + ] + + deps = [ + "//base", + "//ui/aura", + "//ui/views", + "//ui/views/mus", + ] +} + +source_set("test_support") { + testonly = true + + sources = [ + "remote_view_provider_test_api.cc", + "remote_view_provider_test_api.h", + ] + + deps = [ + ":remote_view_provider", + "//base", + ] +} + +source_set("tests") { + testonly = true + + sources = [ + "remote_view_host_unittest.cc", + "remote_view_provider_unittest.cc", + ] + + deps = [ + ":remote_view_host", + ":remote_view_provider", + ":test_support", + "//base", + "//testing/gtest", + "//ui/aura", + "//ui/aura:test_support", + "//ui/base", + "//ui/views", + "//ui/views/mus", + ] +}
diff --git a/ui/views/mus/remote_view/README.md b/ui/views/mus/remote_view/README.md new file mode 100644 index 0000000..391437e --- /dev/null +++ b/ui/views/mus/remote_view/README.md
@@ -0,0 +1,55 @@ +This directory contains helper classes to embed a `Window`. + +## `RemoteViewProvider` + +`RemoteViewProvider` wraps the work needed to provide a `Window` to another +(remote) client. Typical usage is to create an instance of it with the window to +provide to the remote client. + +e.g. +``` + ... + + // Step 1: Prepares for embedding after |window_for_remote_client_| is ready. + void StartEmbed() { + remote_view_provider_ = + std::make_unique<views::RemoteViewProvider>(window_for_remote_client_); + remote_view_client->GetEmbedToken(base::BindOnce( + &EmbeddedClient::OnGotEmbedToken, base::Unretained(this))); + } + + void OnGotEmbedToken(const base::UnguessableToken& token) { + // Step 2: Pass |token| to the embedder. + } + + // A Window to to provide to the remote client. + aura::Window* window_for_remote_client_; + + // Helper to prepare |window_for_remote_client_| for embedding. + std::unique_ptr<views::RemoteViewProvider> remote_view_provider_; + + ... +``` + +## `RemoteViewHost` + +`RemoteViewHost` wraps the work on the embedder side and is a `NativeViewHost` +that embeds the window from the `RemoteViewProvider`. `RemoveViewHost` is a +`View` that you add to your existing `View` hierarchy. + +e.g. +``` + class EmbedderView : public views::View { + public: + ... + // Creates a RemoteViewHost using |token| from the embedded client. + void AddEmbeddedView(const base::UnguessableToken& token) { + // Ownership will be passed to the view hierarchy in AddChildView. + views::RemoteViewHost* remote_view_host = new RemoteViewHost(); + remote_view_host->EmbedUsingToken(token, base::DoNothing()); + AddChildView(remote_view_host); + } + ... + }; +``` +
diff --git a/ui/views/mus/remote_view/remote_view_host.cc b/ui/views/mus/remote_view/remote_view_host.cc new file mode 100644 index 0000000..3023825 --- /dev/null +++ b/ui/views/mus/remote_view/remote_view_host.cc
@@ -0,0 +1,68 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/views/mus/remote_view/remote_view_host.h" + +#include <utility> + +#include "base/bind.h" +#include "base/callback.h" +#include "base/logging.h" +#include "ui/aura/client/aura_constants.h" +#include "ui/aura/env.h" +#include "ui/aura/mus/window_port_mus.h" + +namespace views { + +RemoteViewHost::RemoteViewHost() = default; +RemoteViewHost::~RemoteViewHost() = default; + +void RemoteViewHost::EmbedUsingToken(const base::UnguessableToken& embed_token, + int embed_flags, + EmbedCallback callback) { + // Only works with mus. + DCHECK_EQ(aura::Env::Mode::MUS, aura::Env::GetInstanceDontCreate()->mode()); + + // Should not be attached to anything. + DCHECK(!native_view()); + + embedding_root_ = std::make_unique<aura::Window>(nullptr); + embedding_root_->set_owned_by_parent(false); + + embedding_root_->SetName("RemoteViewHostWindow"); + embedding_root_->SetProperty(aura::client::kEmbedType, + aura::client::WindowEmbedType::EMBED_IN_OWNER); + embedding_root_->SetType(aura::client::WINDOW_TYPE_CONTROL); + embedding_root_->Init(ui::LAYER_NOT_DRAWN); + + aura::WindowPortMus::Get(embedding_root_.get()) + ->EmbedUsingToken(embed_token, embed_flags, + base::BindOnce(&RemoteViewHost::OnEmbedResult, + weak_ptr_factory_.GetWeakPtr(), + embed_token, std::move(callback))); +} + +void RemoteViewHost::OnEmbedResult(const base::UnguessableToken& token, + EmbedCallback callback, + bool success) { + LOG_IF(ERROR, !success) << "Failed to embed, token=" << token; + + // Attach to |embedding_root_| if embed succeeds and this view is added to a + // widget but has not yet attached to |embedding_root_|. + if (success && GetWidget() && !native_view()) + Attach(embedding_root_.get()); + + if (!success && embedding_root_) + embedding_root_.reset(); + + if (callback) + std::move(callback).Run(success); +} + +void RemoteViewHost::AddedToWidget() { + if (embedding_root_ && !native_view()) + Attach(embedding_root_.get()); +} + +} // namespace views
diff --git a/ui/views/mus/remote_view/remote_view_host.h b/ui/views/mus/remote_view/remote_view_host.h new file mode 100644 index 0000000..d52ddaf --- /dev/null +++ b/ui/views/mus/remote_view/remote_view_host.h
@@ -0,0 +1,53 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_VIEWS_MUS_REMOTE_VIEW_REMOTE_VIEW_HOST_H_ +#define UI_VIEWS_MUS_REMOTE_VIEW_REMOTE_VIEW_HOST_H_ + +#include <memory> + +#include "base/callback_forward.h" +#include "base/macros.h" +#include "base/memory/weak_ptr.h" +#include "base/unguessable_token.h" +#include "ui/aura/window.h" +#include "ui/views/controls/native/native_view_host.h" + +namespace views { + +// A view at the embedder side to embed an aura::Window from another window +// tree. Note this only works with mus. +class RemoteViewHost : public views::NativeViewHost { + public: + RemoteViewHost(); + ~RemoteViewHost() override; + + // Creates an aura::window to embed the remote contents and attach to it when + // the embed succeeds. |embed_token| is the token obtained from the WindowTree + // embed API (ScheduleEmbed/ForExistingClient). |embed_flags| are the + // embedding flags (see window_tree_constants.mojom). |callback| is an + // optional callback invoked with the embed result. + using EmbedCallback = base::OnceCallback<void(bool success)>; + void EmbedUsingToken(const base::UnguessableToken& embed_token, + int embed_flags, + EmbedCallback callback); + + private: + // Invoked after the embed operation. + void OnEmbedResult(const base::UnguessableToken& token, + EmbedCallback callback, + bool success); + + // views::NativeViewHost: + void AddedToWidget() override; + + std::unique_ptr<aura::Window> embedding_root_; + base::WeakPtrFactory<RemoteViewHost> weak_ptr_factory_{this}; + + DISALLOW_COPY_AND_ASSIGN(RemoteViewHost); +}; + +} // namespace views + +#endif // UI_VIEWS_MUS_REMOTE_VIEW_REMOTE_VIEW_HOST_H_
diff --git a/ui/views/mus/remote_view/remote_view_host_unittest.cc b/ui/views/mus/remote_view/remote_view_host_unittest.cc new file mode 100644 index 0000000..6497543 --- /dev/null +++ b/ui/views/mus/remote_view/remote_view_host_unittest.cc
@@ -0,0 +1,160 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/views/mus/remote_view/remote_view_host.h" + +#include <memory> +#include <utility> + +#include "base/bind.h" +#include "base/macros.h" +#include "base/run_loop.h" +#include "base/unguessable_token.h" +#include "ui/aura/test/aura_test_base.h" +#include "ui/aura/test/mus/test_window_tree.h" +#include "ui/gfx/geometry/rect.h" +#include "ui/views/widget/widget.h" +#include "ui/views/widget/widget_delegate.h" + +namespace views { + +namespace { + +// Embeds using |token| and waits for it. Returns true if embed succeeds. +bool Embed(RemoteViewHost* host, const base::UnguessableToken& token) { + base::RunLoop run_loop; + bool embed_result = false; + host->EmbedUsingToken( + token, 0u /* no flags */, + base::BindOnce( + [](base::RunLoop* run_loop, bool* result, bool success) { + *result = success; + run_loop->Quit(); + }, + &run_loop, &embed_result)); + run_loop.Run(); + return embed_result; +} + +} // namespace + +class RemoteViewHostTest : public aura::test::AuraTestBase { + public: + RemoteViewHostTest() = default; + ~RemoteViewHostTest() override = default; + + // aura::test::AuraTestBase + void SetUp() override { + EnableMusWithTestWindowTree(); + AuraTestBase::SetUp(); + } + + // Creates a widget to host |contents|. + std::unique_ptr<views::Widget> CreateTestWidget(views::View* contents) { + std::unique_ptr<views::Widget> widget = std::make_unique<views::Widget>(); + views::Widget::InitParams params; + params.type = views::Widget::InitParams::TYPE_WINDOW_FRAMELESS; + params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; + params.bounds = gfx::Rect(0, 0, 100, 100); + params.context = root_window(); + widget->Init(params); + widget->SetContentsView(contents); + + return widget; + } + + // Helper callback invoked during embed to simulate adding to widget during + // embed operation. + void CreateTestWidgetWhileEmbeddingHelper( + base::RunLoop* run_loop, + views::View* contents, + std::unique_ptr<views::Widget>* widget, + bool success) { + ASSERT_TRUE(success); + *widget = CreateTestWidget(contents); + run_loop->Quit(); + } + + private: + DISALLOW_COPY_AND_ASSIGN(RemoteViewHostTest); +}; + +// Tests that the embed operation fails with an unknown token and RemoteViewHost +// will not be attached. +TEST_F(RemoteViewHostTest, BadEmbed) { + const base::UnguessableToken unknown_token = base::UnguessableToken::Create(); + + // Ownership will be passed to |widget| later. + RemoteViewHost* host = new RemoteViewHost(); + + // Embed fails with unknown token. + EXPECT_FALSE(Embed(host, unknown_token)); + + // |host| is not attached before and after adding to a widget. + EXPECT_FALSE(host->native_view()); + std::unique_ptr<views::Widget> widget = CreateTestWidget(host); + EXPECT_FALSE(host->native_view()); +} + +// Tests when RemoveViewHost is added to a widget before embedding. +TEST_F(RemoteViewHostTest, AddToWidgetBeforeEmbed) { + const base::UnguessableToken token = base::UnguessableToken::Create(); + window_tree()->AddScheduledEmbedToken(token); + + // Ownership will be passed to |widget| later. + RemoteViewHost* host = new RemoteViewHost(); + + // |host| is not attached because embed operation is not performed. + EXPECT_FALSE(host->native_view()); + std::unique_ptr<views::Widget> widget = CreateTestWidget(host); + EXPECT_FALSE(host->native_view()); + + // Embed succeeds. + EXPECT_TRUE(Embed(host, token)); + + // |host| is now attached to the embedding window. + EXPECT_TRUE(host->native_view()); +} + +// Tests when RemoveViewHost is added to a widget while embedding. +TEST_F(RemoteViewHostTest, AddToWidgetWhileEmbedding) { + const base::UnguessableToken token = base::UnguessableToken::Create(); + window_tree()->AddScheduledEmbedToken(token); + + // Ownership will be passed to |widget| later. + RemoteViewHost* host = new RemoteViewHost(); + + // |host| is not attached because embed operation is not performed. + EXPECT_FALSE(host->native_view()); + + base::RunLoop run_loop; + std::unique_ptr<views::Widget> widget; + host->EmbedUsingToken( + token, 0u /* no flags */, + base::BindOnce(&RemoteViewHostTest::CreateTestWidgetWhileEmbeddingHelper, + base::Unretained(this), &run_loop, host, &widget)); + run_loop.Run(); + + // |host| is attached to the embedding window. + EXPECT_TRUE(host->native_view()); +} + +// Tests when RemoveViewHost is added to a widget after embedding. +TEST_F(RemoteViewHostTest, AddToWidgetAfterEmbed) { + const base::UnguessableToken token = base::UnguessableToken::Create(); + window_tree()->AddScheduledEmbedToken(token); + + // Ownership will be passed to |widget| later. + RemoteViewHost* host = new RemoteViewHost(); + + // Embed succeeds. + EXPECT_TRUE(Embed(host, token)); + + // |host| is attached after adding to a widget. + EXPECT_FALSE(host->native_view()); + std::unique_ptr<views::Widget> widget = CreateTestWidget(host); + EXPECT_TRUE(host->native_view()); +} + +} // namespace views
diff --git a/ui/views/mus/remote_view/remote_view_provider.cc b/ui/views/mus/remote_view/remote_view_provider.cc new file mode 100644 index 0000000..12286cd --- /dev/null +++ b/ui/views/mus/remote_view/remote_view_provider.cc
@@ -0,0 +1,154 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/views/mus/remote_view/remote_view_provider.h" + +#include <utility> + +#include "base/callback_helpers.h" +#include "base/logging.h" +#include "base/scoped_observer.h" +#include "ui/aura/mus/embed_root.h" +#include "ui/aura/mus/window_tree_client.h" +#include "ui/aura/window.h" +#include "ui/aura/window_observer.h" +#include "ui/gfx/geometry/size.h" +#include "ui/views/mus/mus_client.h" + +namespace views { + +// static +aura::WindowTreeClient* RemoteViewProvider::window_tree_client_for_test = + nullptr; + +// Observes a window and invokes a callback when the window is destroyed. +class RemoteViewProvider::EmbeddedWindowObserver : public aura::WindowObserver { + public: + EmbeddedWindowObserver(aura::Window* window, base::OnceClosure on_destroyed) + : window_observer_(this), on_destroyed_(std::move(on_destroyed)) { + window_observer_.Add(window); + } + ~EmbeddedWindowObserver() override = default; + + // aura::WindowObserver: + void OnWindowDestroyed(aura::Window* window) override { + DCHECK(!on_destroyed_.is_null()); + + window_observer_.RemoveAll(); + base::ResetAndReturn(&on_destroyed_).Run(); + } + + private: + ScopedObserver<aura::Window, EmbeddedWindowObserver> window_observer_; + base::OnceClosure on_destroyed_; + + DISALLOW_COPY_AND_ASSIGN(EmbeddedWindowObserver); +}; + +// Observes a window and invokes a callback when the window size changes. +class RemoteViewProvider::EmbeddingWindowObserver + : public aura::WindowObserver { + public: + using SizeChangedCallback = base::RepeatingCallback<void(const gfx::Size&)>; + EmbeddingWindowObserver(aura::Window* window, + const SizeChangedCallback& callback) + : window_observer_(this), on_size_changed_(callback) { + window_observer_.Add(window); + } + ~EmbeddingWindowObserver() override = default; + + // aura::WindowObserver: + void OnWindowBoundsChanged(aura::Window* window, + const gfx::Rect& old_bounds, + const gfx::Rect& new_bounds, + ui::PropertyChangeReason reason) override { + on_size_changed_.Run(new_bounds.size()); + } + void OnWindowDestroyed(aura::Window* window) override { + window_observer_.RemoveAll(); + } + + private: + ScopedObserver<aura::Window, EmbeddingWindowObserver> window_observer_; + SizeChangedCallback on_size_changed_; + + DISALLOW_COPY_AND_ASSIGN(EmbeddingWindowObserver); +}; + +RemoteViewProvider::RemoteViewProvider(aura::Window* embedded) + : embedded_(embedded) { + DCHECK(embedded_); + embedded_window_observer_ = std::make_unique<EmbeddedWindowObserver>( + embedded_, base::BindOnce(&RemoteViewProvider::OnEmbeddedWindowDestroyed, + base::Unretained(this))); +} + +RemoteViewProvider::~RemoteViewProvider() = default; + +void RemoteViewProvider::GetEmbedToken(GetEmbedTokenCallback callback) { + DCHECK(embedded_); + + if (embed_root_) { + std::move(callback).Run(embed_root_->token()); + return; + } + + DCHECK(get_embed_token_callback_.is_null()); + get_embed_token_callback_ = std::move(callback); + + aura::WindowTreeClient* window_tree_client = window_tree_client_for_test; + if (!window_tree_client) { + DCHECK(views::MusClient::Exists()); + window_tree_client = views::MusClient::Get()->window_tree_client(); + } + + embed_root_ = window_tree_client->CreateEmbedRoot(this); +} + +void RemoteViewProvider::SetCallbacks(const OnEmbedCallback& on_embed, + const OnUnembedCallback& on_unembed) { + on_embed_callback_ = on_embed; + on_unembed_callback_ = on_unembed; +} + +void RemoteViewProvider::OnEmbeddedWindowDestroyed() { + embedded_ = nullptr; +} + +void RemoteViewProvider::OnEmbeddingWindowResized(const gfx::Size& size) { + // |embedded_| is owned by external code. Bail if it is destroyed while being + // embedded. + if (!embedded_) + return; + embedded_->SetBounds(gfx::Rect(size)); +} + +void RemoteViewProvider::OnEmbedTokenAvailable( + const base::UnguessableToken& token) { + if (get_embed_token_callback_) + std::move(get_embed_token_callback_).Run(token); +} + +void RemoteViewProvider::OnEmbed(aura::Window* window) { + DCHECK(embedded_); + + embedding_window_observer_ = std::make_unique<EmbeddingWindowObserver>( + window, base::BindRepeating(&RemoteViewProvider::OnEmbeddingWindowResized, + base::Unretained(this))); + OnEmbeddingWindowResized(window->bounds().size()); + window->AddChild(embedded_); + + if (on_embed_callback_) + on_embed_callback_.Run(window); +} + +void RemoteViewProvider::OnUnembed() { + embedding_window_observer_.reset(); + embed_root_.reset(); + + if (on_unembed_callback_) + on_unembed_callback_.Run(); +} + +} // namespace views
diff --git a/ui/views/mus/remote_view/remote_view_provider.h b/ui/views/mus/remote_view/remote_view_provider.h new file mode 100644 index 0000000..9717d5f --- /dev/null +++ b/ui/views/mus/remote_view/remote_view_provider.h
@@ -0,0 +1,98 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_VIEWS_MUS_REMOTE_VIEW_REMOTE_VIEW_PROVIDER_H_ +#define UI_VIEWS_MUS_REMOTE_VIEW_REMOTE_VIEW_PROVIDER_H_ + +#include <memory> + +#include "base/callback.h" +#include "base/macros.h" +#include "base/unguessable_token.h" +#include "ui/aura/mus/embed_root_delegate.h" + +namespace aura { +class EmbedRoot; +class Window; +class WindowTreeClient; +} // namespace aura + +namespace gfx { +class Size; +} + +namespace views { + +namespace test { +class RemoteViewProviderTestApi; +} + +// Creates an EmbedRoot for an embedded aura::Window on the client side and +// updates the embedded window size when the embedder changes size. For example, +// allows app list in ash to embed web-based "answer cards" that are rendered +// by the browser. Note this works only with mus. +class RemoteViewProvider : public aura::EmbedRootDelegate { + public: + explicit RemoteViewProvider(aura::Window* embedded); + ~RemoteViewProvider() override; + + static void SetWindowTreeClientForTest(aura::WindowTreeClient* tree_client); + + // Gets the embed token. An embed token is obtained from one of WindowTree's + // schedule embed calls (ScheduleEmbed or ScheduleEmbedForExistingClient). An + // embedder calls EmbedUsingToken using the token to embed desired contents. + // The embed token here is from an aura::EmbedRoot that uses + // ScheduleEmbedForExistingClient for embedding part of an existing + // WindowTreeClient. |callback| is invoked when the token is available. + using GetEmbedTokenCallback = + base::OnceCallback<void(const base::UnguessableToken& token)>; + void GetEmbedToken(GetEmbedTokenCallback callback); + + // Optional callbacks to be invoked when embed or unembed happens. + using OnEmbedCallback = base::RepeatingCallback<void(aura::Window* embedder)>; + using OnUnembedCallback = base::RepeatingClosure; + void SetCallbacks(const OnEmbedCallback& on_embed, + const OnUnembedCallback& on_unembed); + + private: + friend class test::RemoteViewProviderTestApi; + + class EmbeddedWindowObserver; + class EmbeddingWindowObserver; + + // Invoked when |embedded_| is destroyed. + void OnEmbeddedWindowDestroyed(); + + // Invoked when embedder changes size. + void OnEmbeddingWindowResized(const gfx::Size& size); + + // aura::EmbedRootDelegate: + void OnEmbedTokenAvailable(const base::UnguessableToken& token) override; + void OnEmbed(aura::Window* window) override; + void OnUnembed() override; + + // An aura::Window to be embedded. Not owned. + aura::Window* embedded_; + + std::unique_ptr<aura::EmbedRoot> embed_root_; + GetEmbedTokenCallback get_embed_token_callback_; + OnEmbedCallback on_embed_callback_; + OnUnembedCallback on_unembed_callback_; + + // An aura::WindowTreeClient for test. Use RemoteViewProviderTestApi to set + // it. + static aura::WindowTreeClient* window_tree_client_for_test; + + // Observes the |embedded_| and clears it when it is gone. + std::unique_ptr<EmbeddedWindowObserver> embedded_window_observer_; + + // Observes the embeddding window provided by embedder. + std::unique_ptr<EmbeddingWindowObserver> embedding_window_observer_; + + DISALLOW_COPY_AND_ASSIGN(RemoteViewProvider); +}; + +} // namespace views + +#endif // UI_VIEWS_MUS_REMOTE_VIEW_REMOTE_VIEW_PROVIDER_H_
diff --git a/ui/views/mus/remote_view/remote_view_provider_test_api.cc b/ui/views/mus/remote_view/remote_view_provider_test_api.cc new file mode 100644 index 0000000..c3668ba2 --- /dev/null +++ b/ui/views/mus/remote_view/remote_view_provider_test_api.cc
@@ -0,0 +1,18 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/views/mus/remote_view/remote_view_provider_test_api.h" + +#include "ui/views/mus/remote_view/remote_view_provider.h" + +namespace views { +namespace test { + +void RemoteViewProviderTestApi::SetWindowTreeClient( + aura::WindowTreeClient* window_tree_client) { + RemoteViewProvider::window_tree_client_for_test = window_tree_client; +} + +} // namespace test +} // namespace views
diff --git a/ui/views/mus/remote_view/remote_view_provider_test_api.h b/ui/views/mus/remote_view/remote_view_provider_test_api.h new file mode 100644 index 0000000..49212fa --- /dev/null +++ b/ui/views/mus/remote_view/remote_view_provider_test_api.h
@@ -0,0 +1,29 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_VIEWS_MUS_REMOTE_VIEW_REMOTE_VIEW_PROVIDER_TEST_API_H_ +#define UI_VIEWS_MUS_REMOTE_VIEW_REMOTE_VIEW_PROVIDER_TEST_API_H_ + +#include "base/macros.h" + +namespace aura { +class WindowTreeClient; +} + +namespace views { +namespace test { + +class RemoteViewProviderTestApi { + public: + // Sets an aura::WindowTreeClient to use with RemoteViewProvider. + static void SetWindowTreeClient(aura::WindowTreeClient* window_tree_client); + + private: + DISALLOW_COPY_AND_ASSIGN(RemoteViewProviderTestApi); +}; + +} // namespace test +} // namespace views + +#endif // UI_VIEWS_MUS_REMOTE_VIEW_REMOTE_VIEW_PROVIDER_TEST_API_H_
diff --git a/ui/views/mus/remote_view/remote_view_provider_unittest.cc b/ui/views/mus/remote_view/remote_view_provider_unittest.cc new file mode 100644 index 0000000..f87a320 --- /dev/null +++ b/ui/views/mus/remote_view/remote_view_provider_unittest.cc
@@ -0,0 +1,169 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/views/mus/remote_view/remote_view_provider.h" + +#include <memory> + +#include "base/bind.h" +#include "base/macros.h" +#include "base/run_loop.h" +#include "base/unguessable_token.h" +#include "ui/aura/mus/window_mus.h" +#include "ui/aura/test/aura_test_base.h" +#include "ui/aura/test/mus/test_window_tree.h" +#include "ui/aura/window.h" +#include "ui/gfx/geometry/rect.h" +#include "ui/views/mus/remote_view/remote_view_provider_test_api.h" + +namespace views { + +class RemoteViewProviderTest : public aura::test::AuraTestBase { + public: + RemoteViewProviderTest() = default; + ~RemoteViewProviderTest() override = default; + + // aura::test::AuraTestBase + void SetUp() override { + EnableMusWithTestWindowTree(); + AuraTestBase::SetUp(); + + test::RemoteViewProviderTestApi::SetWindowTreeClient( + window_tree_client_impl()); + + embedded_ = std::make_unique<aura::Window>(nullptr); + embedded_->set_owned_by_parent(false); + embedded_->Init(ui::LAYER_NOT_DRAWN); + embedded_->SetBounds(gfx::Rect(100, 50)); + + provider_ = std::make_unique<RemoteViewProvider>(embedded_.get()); + } + + void TearDown() override { + // EmbedRoot in |provider_| must be released before WindowTreeClient. + provider_.reset(); + + AuraTestBase::TearDown(); + } + + // Gets the embed token and waits for it. + base::UnguessableToken GetEmbedToken() { + base::RunLoop run_loop; + base::UnguessableToken token; + provider_->GetEmbedToken(base::BindOnce( + [](base::RunLoop* run_loop, base::UnguessableToken* out_token, + const base::UnguessableToken& token) { + *out_token = token; + run_loop->Quit(); + }, + &run_loop, &token)); + run_loop.Run(); + return token; + } + + // Simulates EmbedUsingToken call on embedder side and waits for + // WindowTreeClient to create a local embedder window. + aura::Window* SimulateEmbedUsingTokenAndGetEmbedder( + const base::UnguessableToken& token) { + base::RunLoop run_loop; + aura::Window* embedder = nullptr; + provider_->SetCallbacks( + base::BindRepeating( + [](base::RunLoop* run_loop, aura::Window** out_embedder, + aura::Window* embedder) { + *out_embedder = embedder; + run_loop->Quit(); + }, + &run_loop, &embedder), + base::DoNothing() /* OnUnembedCallback */); + window_tree()->AddEmbedRootForToken(token); + run_loop.Run(); + return embedder; + } + + // Helper to simulate embed. + aura::Window* SimulateEmbed() { + base::UnguessableToken token = GetEmbedToken(); + if (token.is_empty()) { + ADD_FAILURE() << "Failed to get embed token."; + return nullptr; + } + + return SimulateEmbedUsingTokenAndGetEmbedder(token); + } + + // Simulates the embedder window close. + void SimulateEmbedderClose(aura::Window* embedder) { + base::RunLoop run_loop; + provider_->SetCallbacks( + base::DoNothing() /* OnEmbedCallback */, + base::BindRepeating([](base::RunLoop* run_loop) { run_loop->Quit(); }, + &run_loop)); + + const ui::Id embedder_window_id = + aura::WindowMus::Get(embedder)->server_id(); + window_tree()->RemoveEmbedderWindow(embedder_window_id); + run_loop.Run(); + } + + protected: + std::unique_ptr<aura::Window> embedded_; + std::unique_ptr<RemoteViewProvider> provider_; + + private: + DISALLOW_COPY_AND_ASSIGN(RemoteViewProviderTest); +}; + +// Tests the basics on the embedded client. +TEST_F(RemoteViewProviderTest, Embed) { + aura::Window* embedder = SimulateEmbed(); + ASSERT_TRUE(embedder); + + // |embedded_| has the same non-empty size with |embedder| after embed. + EXPECT_EQ(embedded_->bounds().size(), embedder->bounds().size()); + EXPECT_FALSE(embedded_->bounds().IsEmpty()); + EXPECT_FALSE(embedder->bounds().IsEmpty()); + + // |embedded_| resizes with |embedder|. + const gfx::Rect new_bounds(embedder->bounds().width() + 100, + embedder->bounds().height() + 50); + embedder->SetBounds(new_bounds); + EXPECT_EQ(embedded_->bounds().size(), embedder->bounds().size()); + EXPECT_FALSE(embedded_->bounds().IsEmpty()); + EXPECT_FALSE(embedder->bounds().IsEmpty()); +} + +// Tests when |embedded_| is released first. +TEST_F(RemoteViewProviderTest, EmbeddedReleasedFirst) { + SimulateEmbed(); + embedded_.reset(); +} + +// Tests when |provider_| is released first. +TEST_F(RemoteViewProviderTest, ClientReleasedFirst) { + SimulateEmbed(); + provider_.reset(); +} + +// Tests when embedder goes away first. +TEST_F(RemoteViewProviderTest, EmbedderReleasedFirst) { + aura::Window* embedder = SimulateEmbed(); + ASSERT_TRUE(embedder); + + SimulateEmbedderClose(embedder); +} + +// Tests that the client can embed again. +TEST_F(RemoteViewProviderTest, EmbedAgain) { + aura::Window* embedder = SimulateEmbed(); + ASSERT_TRUE(embedder); + + SimulateEmbedderClose(embedder); + + aura::Window* new_embedder = SimulateEmbed(); + ASSERT_TRUE(new_embedder); + EXPECT_NE(new_embedder, embedder); +} + +} // namespace views